• Fighting complexity in software development

      What's this about


      After working on different projects, I've noticed that every one of them had some common problems, regardless of domain, architecture, code convention and so on. Those problems weren't challenging, just a tedious routine: making sure you didn't miss anything stupid and obvious. Instead of doing this routine on a daily basis I became obsessed with seeking solution: some development approach or code convention or whatever that will help me to design a project in a way that will prevent those problems from happening, so I can focus on interesting stuff. That's the goal of this article: to describe those problems and show you that mix of tools and approaches that I found to solve them.

      Read more →
      • +19
      • 2,1k
      • 2
    • F# меня испортил, или почему я больше не хочу писать на C#

        Раньше я очень любил C#


        Это был мой основной язык программирования, и каждый раз, когда я сравнивал его с другими, я радовался тому, что в свое время случайно выбрал именно его. Python и Javascript сразу проигрывают динамической типизацией (если к джаваскрипту понятие типизации вообще имеет смысл применять), Java уступает дженериками, отстутствием ивентов, value-типов, вытекающей из этого карусели с разделением примитивов и объектов на два лагеря и зеркальными классами-обертками вроде Integer, отсутствием пропертей и так далее. Одним словом — C# клевый.


        Отдельно отмечу, что я сейчас говорю о самом языке и удобстве написания кода на нем.
        Тулинг, обилие библиотек и размер сообщества я сейчас в расчет не беру, потому что у каждого
        из этих языков они развиты достаточно, чтобы промышленная разработка была комфортной в большинстве случаев.


        А потом я из любопытства попробовал F#.

        Читать дальше →
      • Змея в почтовом ящике и при чем тут F#

        О чем это все?


        Это все про змейку. Все прекрасно помнят, что такое змейка: на прямоугольном поле движется змея. Находит еду — вырастает в длине, находит себя или границу поля — умирает. А пользователь может только слать команды: влево, вправо, вверх, вниз.
        Я решил добавить сюда немного экшна и заставить змею убегать от пакманов. И все это на акторах!


        Поэтому сегодня я на примере змейки расскажу о том, как построить модель акторов с помощью MailboxProcessor из стандартной библиотеки, на какие моменты обратить внимание, и какие подводные камни вас могут ожидать.


        Код, написанный здесь, не идеален, может нарушать какие-то принципы и может быть написан лучше. Но если вы новичок и хотите разобраться с мейлбоксами — надеюсь, эта статья вам поможет.
        Если вы про мейлбоксы все знаете и без меня — вам тут может быть скучно.


        Почему акторы?


        Ради практики. Про модель акторов я читал, смотрел видео, мне все понравилось, но сам не пробовал. Теперь попробовал.
        Несмотря на то, что по сути выбрал технологию ради технологии, концепция очень удачно легла на эту задачу.


        Почему MailboxProcessor, а не, например, Akka.net?


        Для моей задачи акка — это из орбитальной станции по воробьям, MailboxProcessor гораздо проще, да и входит в стандартную библиотеку, так что никаких пакетов подключать не нужно.

        Читать дальше →
        • +18
        • 4,8k
        • 5