<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Niels Bom</title>
    <description>The latest articles on DEV Community by Niels Bom (@nielsbom).</description>
    <link>https://dev.to/nielsbom</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F115811%2F3cd9fd4b-ed51-4632-be9f-e5c456531031.jpeg</url>
      <title>DEV Community: Niels Bom</title>
      <link>https://dev.to/nielsbom</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nielsbom"/>
    <language>en</language>
    <item>
      <title>Great(er) goals for the future of Elixir</title>
      <dc:creator>Niels Bom</dc:creator>
      <pubDate>Mon, 17 Feb 2020 22:23:47 +0000</pubDate>
      <link>https://dev.to/nielsbom/great-er-goals-for-the-future-of-elixir-4lcl</link>
      <guid>https://dev.to/nielsbom/great-er-goals-for-the-future-of-elixir-4lcl</guid>
      <description>&lt;p&gt;Dave Thomas gave this inspirational and funny lecture about how the Elixir programming language could play a big part in creating the future.&lt;/p&gt;

&lt;p&gt;The gist of this lecture is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;making Elixir and the Phoenix framework "just" a better Rails is a low goal&lt;/li&gt;
&lt;li&gt;Elixir/Erlang have roots in Prolog&lt;/li&gt;
&lt;li&gt;Prolog allows you to program extremely declaratively&lt;/li&gt;
&lt;li&gt;if the BEAM community (Erlang + Elixir) dare to do new things the BEAM languages could play a big role in the Internet of Things, ambient computing and a host of other things&lt;/li&gt;
&lt;li&gt;if we &lt;em&gt;don't&lt;/em&gt; do it, it may well be done (very) poorly by other technologies, including security flaws&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ZHx_1yWkSiA"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;(Thanks &lt;a class="mentioned-user" href="https://dev.to/rhymes"&gt;@rhymes&lt;/a&gt; for the tip on YouTube markdown)&lt;/p&gt;

</description>
      <category>elixir</category>
      <category>erlang</category>
      <category>iot</category>
      <category>future</category>
    </item>
    <item>
      <title>Use (free) Github Actions to automatically deploy your site (and do other stuff as well)</title>
      <dc:creator>Niels Bom</dc:creator>
      <pubDate>Mon, 20 Jan 2020 09:55:39 +0000</pubDate>
      <link>https://dev.to/nielsbom/use-free-github-actions-to-automatically-deploy-your-site-and-do-other-stuff-as-well-ol1</link>
      <guid>https://dev.to/nielsbom/use-free-github-actions-to-automatically-deploy-your-site-and-do-other-stuff-as-well-ol1</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/features/actions"&gt;Github Actions&lt;/a&gt; are a relatively new feature on Github. You can use them for free if you don't use it too much. For my purposes that's a lot!&lt;/p&gt;

&lt;p&gt;What are Github Actions?&lt;br&gt;
They basically allow you to "do stuff" with your code when you push new code to your repository. This "stuff" can be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;linting your code&lt;/li&gt;
&lt;li&gt;automatically reformat your code&lt;/li&gt;
&lt;li&gt;automatically upload your code to where you're hosting something&lt;/li&gt;
&lt;li&gt;and pretty much anything you can think of&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I currently use it to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/lgeiger/black-action"&gt;automatically reformat all the Python code in a repository to the "black" standard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/SamKirkland/FTP-Deploy-Action"&gt;deploy my static site to a staging or deploy location&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do check it out, it's easy to start with and super helpful.&lt;/p&gt;

</description>
      <category>github</category>
      <category>ci</category>
      <category>cd</category>
      <category>automation</category>
    </item>
    <item>
      <title>Which piece of code are you most proud of?</title>
      <dc:creator>Niels Bom</dc:creator>
      <pubDate>Wed, 24 Apr 2019 22:28:10 +0000</pubDate>
      <link>https://dev.to/nielsbom/which-piece-of-code-are-you-most-proud-of-1ln3</link>
      <guid>https://dev.to/nielsbom/which-piece-of-code-are-you-most-proud-of-1ln3</guid>
      <description>&lt;p&gt;We sometimes talk about terrible code, especially when we talk about the code we ourselves wrote not too long ago.&lt;/p&gt;

&lt;p&gt;But what piece of code were/are you particularly proud of? What did it do? And why are you so proud of it?&lt;/p&gt;

&lt;p&gt;I’ll start off.&lt;/p&gt;

&lt;p&gt;I’m still proud of writing some JavaScript some years ago, around 2011. There was a search field in a big page full of links (a famous Dutch portal website). This field could not just be used to search using Google but also visually show which links from the page were relevant.&lt;/p&gt;

&lt;p&gt;I’m proud of the code because it had to run through a big data structure on every key press and filter out the unnecessary data in it. The first implementation was very slow because it did a lot of DOM operations. For the second version I created a crappy form of what you would now call a virtual DOM, do all operations and then do way less operations, making the feature fast enough for production.&lt;/p&gt;

</description>
      <category>pride</category>
      <category>learning</category>
      <category>career</category>
    </item>
    <item>
      <title>Dark (lang): built with OCaml/ReasonML/Bucklescript, inspired by Elm</title>
      <dc:creator>Niels Bom</dc:creator>
      <pubDate>Thu, 11 Apr 2019 11:06:42 +0000</pubDate>
      <link>https://dev.to/nielsbom/dark-lang-built-with-ocaml-reasonml-bucklescript-inspired-by-elm-1o5e</link>
      <guid>https://dev.to/nielsbom/dark-lang-built-with-ocaml-reasonml-bucklescript-inspired-by-elm-1o5e</guid>
      <description>&lt;p&gt;Dark is a not-yet-released language/platform/toolchain about which I wrote &lt;a href="https://dev.to/nielsbom/dark-lang---removing-accidental-complexity-of-programming-con"&gt;a post&lt;/a&gt; before.&lt;/p&gt;

&lt;p&gt;Paul Biggar, the founder of Dark wrote another &lt;a href="https://medium.com/darklang/tablecloth-a-new-standard-library-for-ocaml-reasonml-d29a73a557b1"&gt;post&lt;/a&gt; in which he gave some details and shared open source standard library they use. (&lt;a href="https://github.com/darklang/tablecloth"&gt;Tablecloth&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Dark is using an &lt;a href="https://en.wikipedia.org/wiki/OCaml"&gt;OCaml&lt;/a&gt;-based tech stack, with OCaml on the backend. OCaml is a not-that-well-known language from the &lt;a href="https://en.wikipedia.org/wiki/ML_(programming_language)"&gt;ML family of languages&lt;/a&gt;, with languages like Clojure, Elm, F#, F*, Haskell, Idris, Miranda, Erlang, Rust and Scala. This family of languages is very &lt;a href="https://www.youtube.com/watch?v=e-5obm1G_FY"&gt;"functional"&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;On the frontend Dark uses an &lt;a href="https://en.wikipedia.org/wiki/Elm_(programming_language)"&gt;Elm&lt;/a&gt;-inspired architecture written in &lt;a href="https://reasonml.github.io/"&gt;ReasonML&lt;/a&gt;. ReasonML is some form of OCaml (same abstract syntax tree afaik) where &lt;a href="https://bucklescript.github.io/"&gt;Bucklescript&lt;/a&gt; is the tool that can convert ReasonML code into JavaScript. Bucklescript can also convert OCaml into JavaScript but ReasonML looks more familiar to people that already know JavaScript.&lt;/p&gt;

&lt;p&gt;Main points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OCaml is a great language, as far as I can tell&lt;/li&gt;
&lt;li&gt;the &lt;a href="https://guide.elm-lang.org/architecture/"&gt;Elm architecture&lt;/a&gt; is a great idea, the Redux part of React copied  it&lt;/li&gt;
&lt;li&gt;ReasonML is open source, but heavily supported and stimulated by Facebook, which has certain drawbacks I think&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Personally I've dabbled with ReasonML and ReasonReact but to me the tooling around it and the error messages through the 3 leaky layers of abstraction were a bit much. So I'm putting my money on pure Elm (which isn't without its disadvantages either).&lt;/p&gt;

&lt;p&gt;I'm looking forward to see more of what Dark will share.&lt;br&gt;
I'd also like to hear your thoughts.&lt;/p&gt;

</description>
      <category>language</category>
      <category>functional</category>
      <category>typing</category>
      <category>ocaml</category>
    </item>
    <item>
      <title>Dark (lang) - removing accidental complexity of programming</title>
      <dc:creator>Niels Bom</dc:creator>
      <pubDate>Sun, 03 Mar 2019 15:47:22 +0000</pubDate>
      <link>https://dev.to/nielsbom/dark-lang---removing-accidental-complexity-of-programming-con</link>
      <guid>https://dev.to/nielsbom/dark-lang---removing-accidental-complexity-of-programming-con</guid>
      <description>&lt;p&gt;So &lt;a href="https://darklang.com/"&gt;Dark&lt;/a&gt; is a programming language or maybe more precisely: an integrated ecosystem for writing and running code. Its features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a language&lt;/li&gt;
&lt;li&gt;a structured (?) editor&lt;/li&gt;
&lt;li&gt;a testing framework&lt;/li&gt;
&lt;li&gt;feature flags&lt;/li&gt;
&lt;li&gt;a database that is easy to use&lt;/li&gt;
&lt;li&gt;API-interface wrappers&lt;/li&gt;
&lt;li&gt;has built-in version control that semantically understands your code&lt;/li&gt;
&lt;li&gt;has a hosting platform (that you pay for I believe)&lt;/li&gt;
&lt;li&gt;a logging/error reporting system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And more?&lt;/p&gt;

&lt;p&gt;They haven't publicly given many details, just one &lt;a href="https://medium.com/darklang/the-design-of-dark-59f5d38e52d2"&gt;blog post&lt;/a&gt; and their &lt;a href="https://darklang.com/"&gt;homepage&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Some quotes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We want to make it possible to build a complete scalable app in an afternoon. We’ll make it 100x easier to build applications and bring the ability to write software to a billion people.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We’re creating a new programming language, tightly integrated with an editor, compiler and PaaS, to allow engineers to build distributed applications using high-level primitives. We abstract away individual machines and low-level distributed systems code to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate and run scalable infrastructure for you.&lt;/li&gt;
&lt;li&gt;Use APIs as easily as if they were functions.&lt;/li&gt;
&lt;li&gt;Remove the deployment step entirely.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;I remember reading somewhere that someone was already using Dark for a project (as a beta tester) but can't find that anymore.&lt;/p&gt;

&lt;p&gt;I really hope this turns out to be awesome 😎&lt;/p&gt;

&lt;p&gt;Update (2019-04-11) I wrote &lt;a href="https://dev.to/nielsbom/dark-lang-built-with-ocaml-reasonml-bucklescript-inspired-by-elm-1o5e"&gt;another post on Dark&lt;/a&gt;&lt;/p&gt;

</description>
      <category>language</category>
      <category>functional</category>
      <category>typing</category>
      <category>deployment</category>
    </item>
    <item>
      <title>Visual guide to functors, applicatives and monads</title>
      <dc:creator>Niels Bom</dc:creator>
      <pubDate>Sun, 25 Nov 2018 08:48:51 +0000</pubDate>
      <link>https://dev.to/nielsbom/visual-guide-to-functors-applicatives-and-monads-1dgn</link>
      <guid>https://dev.to/nielsbom/visual-guide-to-functors-applicatives-and-monads-1dgn</guid>
      <description>&lt;p&gt;&lt;a href="https://medium.com/@lettier/your-easy-guide-to-monads-applicatives-functors-862048d61610"&gt;https://medium.com/@lettier/your-easy-guide-to-monads-applicatives-functors-862048d61610&lt;/a&gt;&lt;/p&gt;

</description>
      <category>functional</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
