<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.2">Jekyll</generator><link href="http://www.hhandoko.com/feed.xml" rel="self" type="application/atom+xml" /><link href="http://www.hhandoko.com/" rel="alternate" type="text/html" /><updated>2022-11-20T04:25:14+00:00</updated><id>http://www.hhandoko.com/feed.xml</id><title type="html">Reverie</title><subtitle>Personal blog of Herdy, a software engineer based in Singapore. Focusing on web technologies, interested in distributed computing, concurrency, and the actor model. Scala, Kotlin, Java, Gleam, Elixir, Swift, Nim.
</subtitle><author><name>Herdy Handoko</name></author><entry><title type="html">Beginning Scala Programming</title><link href="http://www.hhandoko.com/posts/2017/07/27/beginning-scala-programming.html" rel="alternate" type="text/html" title="Beginning Scala Programming" /><published>2017-07-27T02:45:58+00:00</published><updated>2017-07-27T02:45:58+00:00</updated><id>http://www.hhandoko.com/posts/2017/07/27/beginning-scala-programming</id><content type="html" xml:base="http://www.hhandoko.com/posts/2017/07/27/beginning-scala-programming.html">&lt;p&gt;&lt;img draggable=&quot;false&quot; class=&quot;emoji&quot; style=&quot;margin-top:-3px&quot; alt=&quot;👋&quot; src=&quot;https://twemoji.maxcdn.com/16x16/1f44b.png&quot; /&gt; &lt;em&gt;Hello! If you’re already sold on Scala, feel free to skip to the &lt;a href=&quot;#but-where-do-i-start&quot;&gt;getting started section&lt;/a&gt;&lt;/em&gt; &lt;img draggable=&quot;false&quot; class=&quot;emoji&quot; style=&quot;margin-top:-3px&quot; alt=&quot;👋&quot; src=&quot;https://twemoji.maxcdn.com/16x16/1f44b.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;why-do-you-use-scala&quot;&gt;“Why do you use Scala?”&lt;/h3&gt;

&lt;p&gt;…is a question that came up more and more often as people are gaining more awareness of the programming language. I normally spoke of my own personal experience, but for the most part, Scala is my go-to language because it offers me flexibility in how I can express my thoughts into code. ‘&lt;a href=&quot;https://medium.com/@mb/code-is-prose-18461ee400e7&quot;&gt;Code is Prose&lt;/a&gt;’ is certainly very apt here (more on this later).&lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;but-there-are-other-more-elegant-programming-languages-out-there&quot;&gt;“But there are other, more elegant programming languages out there…”&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://www.lihaoyi.com/post/WartsoftheScalaProgrammingLanguage.html&quot;&gt;Scala is not perfect&lt;/a&gt;, but it is pragmatic. I am enjoying the expressiveness and flexibility it offers while being able to tap into the rich and diverse JVM ecosystem. It does strike a nice balance between: usability, community size, and employment opportunity &lt;img draggable=&quot;false&quot; class=&quot;emoji&quot; style=&quot;margin-top:-3px&quot; alt=&quot;😜&quot; src=&quot;https://twemoji.maxcdn.com/16x16/1f61c.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;java-has-lambdas&quot;&gt;“Java has lambdas!”&lt;/h3&gt;

&lt;p&gt;But Scala is much, much more than lambdas. Interesting things can happen when you have a language that combines &lt;strong&gt;Object-Oriented&lt;/strong&gt; (OO) with &lt;strong&gt;Functional Programming&lt;/strong&gt; (FP) approach, complemented with a &lt;strong&gt;rich type system&lt;/strong&gt;. Pattern matching, Algrebraic Data Types (ADT), and monadic comprehensions are some &lt;em&gt;very useful&lt;/em&gt; constructs that do not exists ‘natively’ in Java.&lt;/p&gt;

&lt;p&gt;To give a very quick example, observe the following Scala code:&lt;/p&gt;

&lt;div class=&quot;language-scala highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;sealed&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;trait&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Drink&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;object&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Drink&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;object&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Coffee&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Drink&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;object&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Tea&lt;/span&gt;    &lt;span class=&quot;k&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Drink&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;object&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Soda&lt;/span&gt;   &lt;span class=&quot;k&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Drink&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;whichBrand&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;Drink&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;Drink._&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;d&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;match&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Coffee&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Starbucks&quot;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Tea&lt;/span&gt;    &lt;span class=&quot;k&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Dilmah&quot;&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;//case Soda   =&amp;gt; &quot;Coca Cola&quot;&lt;/span&gt;
  &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Note that match against &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Soda&lt;/code&gt; has been commented out. When compiling the above as-is, the compiler will throw a warning:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;match may not be exhaustive. It would fail on the following input: Soda
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;A combination of pattern matching and ADT provides exhaustivity checks during compile-time. Of course, this is only one of many useful features available in Scala.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;i-heard-scala-code-is-impossible-to-read&quot;&gt;“I heard Scala code is impossible to read!”&lt;/h3&gt;

&lt;p&gt;It depends, I think there are some contributing factors here:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Scala is highly contextual&lt;/strong&gt;&lt;br /&gt;It will be challenging for Scala beginners to identify these contexts (e.g. the use of symbols, implicits, syntax styles), but once learnt it’s quite amazing how a concise piece of code can carry so much information. I highly recommend going through Manabu Nakamura’s slides on ‘&lt;a href=&quot;http://gakuzzzz.github.io/slides/readable_scala/&quot;&gt;Readable Scala&lt;/a&gt;’ presented at &lt;a href=&quot;http://2017.scalamatsuri.org/index_en.html&quot;&gt;Scala Matsuri 2017&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Scala code moulds according to the engineering culture&lt;/strong&gt;&lt;br /&gt;Because Scala is flexible, from &lt;a href=&quot;https://github.com/jsuereth/scala-arm/wiki/Basic-Usage&quot;&gt;syntax styles&lt;/a&gt;, choice of libraries, to architecture, it’s not uncommon for new developers putting in non-trivial effort to match and adapt to the existing team’s culture. Regardless, have mentoring and / or pair programming in place.
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Scala evolves relatively quickly&lt;/strong&gt;&lt;br /&gt;Scala releases are highly iterative and changes faster compared to languages such as Java. Syntax styles, design patterns, and libraries that were considered best practices three years ago might already be outdated now. Developers (new and experienced alike) need to pay special attention when using Scala code found in blog posts and StackOverflow responses. Check the publish date &lt;img draggable=&quot;false&quot; class=&quot;emoji&quot; style=&quot;margin-top:-5px&quot; alt=&quot;👌&quot; src=&quot;https://twemoji.maxcdn.com/16x16/1f44c.png&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;why-should-i-learn-scala&quot;&gt;“Why should I learn Scala?”&lt;/h3&gt;

&lt;p&gt;So let me reiterate again the &lt;em&gt;why&lt;/em&gt; in hope of convincing you to learn Scala:&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;center&gt;Scala helps you write expressive and maintainable code without sacrificing usability&lt;/center&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Consider that most of the time we (developers) spent reading code as part of an effort to write new code. Despite the Scala ‘tax’ for new developers, code which is moulded to solve the particular problem at hand is more readable and leads to better long-term maintainability. You will also be able to leverage familiar tools when writing code and after deploying it to production: access to mature and proven Java libraries, toolkits (e.g. profiler), and IDEs such as Eclipse and IntelliJ IDEA.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;As an aside: I didn’t seek out to learn Scala, rather it began as an exercise to keep a hobby project up-to-date (Play Framework 1.2 to 2.x migration); though I am glad it has allowed me to learn FP concepts, actor model, reactive systems, and many others. Perhaps this is a story for another blog post some other day.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;but-where-do-i-start&quot;&gt;“But where do I start?”&lt;/h3&gt;

&lt;p&gt;…you ask? Being a general purpose language, Scala materials out there can cover anything from concurrent programming to recommendation systems. I hope to address various different categories separately in the future, but here are some good resources to get you on your journey:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#i-just-want-to-give-it-a-quick-spin&quot;&gt;I just want to give it a quick spin…&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#how-to-run-it-on-my-machine&quot;&gt;How to run it on my machine?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#i-am-a-java-developer&quot;&gt;I am a Java developer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#i-want-to-learn-more-scala&quot;&gt;I want to learn more Scala&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#i-need-to-level-up-in-scala&quot;&gt;I need to level up in Scala!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#where-can-i-find-other-scala-developers&quot;&gt;Where can I find other Scala developers?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Last but not least, check out &lt;a href=&quot;https://github.com/lauris/awesome-scala&quot;&gt;Awesome Scala&lt;/a&gt; for a community-curated list of awesome Scala libraries.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h4 id=&quot;i-just-want-to-give-it-a-quick-spin&quot;&gt;“I just want to give it a quick spin…”&lt;/h4&gt;

&lt;p&gt;Skip a bunch of installation steps and just get right to coding! Both websites are free, but requires you to link your GitHub account to unlock the entire functionalities.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Head over to &lt;a href=&quot;https://www.scala-exercises.org/&quot;&gt;Scala Exercises&lt;/a&gt; and try out the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;STD LIB&lt;/code&gt; exercises (ignore the others for now).&lt;/li&gt;
  &lt;li&gt;Play around with &lt;a href=&quot;https://scastie.scala-lang.org/&quot;&gt;Scastie&lt;/a&gt;, a web-based interactive Scala editor.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h4 id=&quot;how-to-run-it-on-my-machine&quot;&gt;“How to run it on my machine?”&lt;/h4&gt;

&lt;p&gt;Well, it doesn’t surprise me if you think Scala is awesome &lt;img draggable=&quot;false&quot; class=&quot;emoji&quot; style=&quot;margin-top:-3px&quot; alt=&quot;😁&quot; src=&quot;https://twemoji.maxcdn.com/16x16/1f601.png&quot; /&gt; Depending on what you want to do next:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Install Java SDK 1.8 (I recommend &lt;a href=&quot;http://www.azul.com/downloads/zulu/&quot;&gt;Azul Zulu&lt;/a&gt;), to run your application.&lt;/li&gt;
  &lt;li&gt;For interactive console / REPL only:
    &lt;ul&gt;
      &lt;li&gt;Install &lt;a href=&quot;http://scala-lang.org/download/&quot;&gt;Scala&lt;/a&gt; binaries.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;To start writing Scala applications:
    &lt;ul&gt;
      &lt;li&gt;Install &lt;a href=&quot;http://www.scala-sbt.org/&quot;&gt;SBT&lt;/a&gt;, the de-facto build tool for Scala projects, and / or&lt;/li&gt;
      &lt;li&gt;Install a text editor or IDE with Scala support, I highly recommend &lt;a href=&quot;https://www.jetbrains.com/idea/&quot;&gt;IntelliJ IDEA&lt;/a&gt; for a no-fuss setup (community edition is free).&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Note: You can start writing Scala applications just by downloading Java SDK and IntelliJ IDEA. IDEA can take care various mundane tasks such as downloading SBT and Scala binaries as part of its workflow when creating new Scala projects.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h4 id=&quot;i-am-a-java-developer&quot;&gt;“I am a Java developer”&lt;/h4&gt;

&lt;p&gt;I’m glad to hear that, it means you are already familiar with the Java ecosystem and should have a head-start in Scala programming. However, besides learning the language, I would also recommend you to spend a bit of time to learn SBT (Scala Build Tool). While you can use Maven or Gradle for Scala projects, SBT will be a far more pleasant experience:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/shekhargulati/52-technologies-in-2016/blob/master/02-sbt/README.md&quot;&gt;SBT: The Missing Tutorial&lt;/a&gt; gives a quick rundown of SBT basics.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.manning.com/books/sbt-in-action&quot;&gt;SBT in Action&lt;/a&gt; covers SBT in depth, from extending your project workflow to creating plugins.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/meloniasty/awesome-sbt-plugins&quot;&gt;Awesome SBT Plugins&lt;/a&gt; lists various plugins to enhance your SBT capabilities. Also check out &lt;a href=&quot;http://www.hhandoko.com/notes.html#sbt-plugins&quot;&gt;the list of SBT plugins I’m using&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h4 id=&quot;i-want-to-learn-more-scala&quot;&gt;“I want to learn more Scala”&lt;/h4&gt;

&lt;p&gt;That’s great! I can point you to a few resources to help you improve your Scala knowledge:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://atomicscala.com/&quot;&gt;Atomic Scala&lt;/a&gt; is a good ‘&lt;a href=&quot;https://en.wikipedia.org/wiki/Soup_to_nuts&quot;&gt;soup-to-nuts&lt;/a&gt;’ introductory book on Scala.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.horstmann.com/scala/index.html&quot;&gt;Scala for the Impatient&lt;/a&gt; is a comprehensive introduction to Scala with useful exercises.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.manning.com/books/scala-in-action&quot;&gt;Scala in Action&lt;/a&gt; takes a practical approach in learning Scala.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h4 id=&quot;i-need-to-level-up-in-scala&quot;&gt;“I need to level up in Scala!”&lt;/h4&gt;

&lt;p&gt;Once you have an understanding of basic Scala concepts, now it’s the time to explore Actors and the functional side of Scala:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.artima.com/shop/akka_concurrency&quot;&gt;Akka Concurrency&lt;/a&gt; covers most of the core concepts in Akka actor model programming.&lt;br /&gt;&lt;em&gt;Note: Google for updated examples as the ones in the book contains a few bugs and hasn’t been updated.&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.manning.com/books/functional-programming-in-scala&quot;&gt;Functional Programing in Scala&lt;/a&gt; (a.k.a. the Red Book) is pretty much a reference for developers exploring the pure-FP approach in Scala.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.coursera.org/specializations/scala&quot;&gt;Functional Programming in Scala Specialization&lt;/a&gt; is a good course to explore FP concepts within Scala, delivered by Prof. Odersky himself.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://stepik.org/course/ThCS-Introduction-to-programming-with-dependent-types-in-Scala-2294/&quot;&gt;Introduction to programming with dependent types in Scala&lt;/a&gt; is an FP course which covers type-level programming in Scala, suitable for developers already familiar with type systems and experience in FP concepts.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.manning.com/books/scala-in-depth&quot;&gt;Scala in Depth&lt;/a&gt; takes you further into more Scala features and eases you into advanced FP concepts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h4 id=&quot;where-can-i-find-other-scala-developers&quot;&gt;“Where can I find other Scala developers?”&lt;/h4&gt;

&lt;p&gt;Learning is much better together!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://gitter.im/scala/scala&quot;&gt;Scala on Gitter&lt;/a&gt; is the official Scala channel on Gitter messaging platform.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;irc://irc.freenode.net/#scala&quot;&gt;#scala on IRC&lt;/a&gt; for various Scala-related chat on IRC.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://scala.space/&quot;&gt;Scala Space&lt;/a&gt; shows various Scala-related groups near you, such as Meetup groups.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Referenced blogs, docs, and presentations (A-Z):&lt;/u&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;em&gt;‘Code is Prose’&lt;/em&gt; by &lt;strong&gt;Matthew Bischoff&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;https://medium.com/@mb/code-is-prose-18461ee400e7&quot;&gt;https://medium.com/@mb/code-is-prose-18461ee400e7&lt;/a&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;‘Readable Scala’&lt;/em&gt; by &lt;strong&gt;Manabu Nakamura&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;http://gakuzzzz.github.io/slides/readable_scala/&quot;&gt;http://gakuzzzz.github.io/slides/readable_scala/&lt;/a&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;‘Scala ARM (Automatic Resource Management) Basic Usage’&lt;/em&gt; Wiki page by &lt;strong&gt;Josh Suereth&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/jsuereth/scala-arm/wiki/Basic-Usage&quot;&gt;https://github.com/jsuereth/scala-arm/wiki/Basic-Usage&lt;/a&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;‘Warts of the Scala Programming Language’&lt;/em&gt; by &lt;strong&gt;Li Haoyi&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;http://www.lihaoyi.com/post/WartsoftheScalaProgrammingLanguage.html&quot;&gt;http://www.lihaoyi.com/post/WartsoftheScalaProgrammingLanguage.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Updates:&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[2017-08-03]&lt;/strong&gt; — Added community resources and incorporated feedback from fellow developers&lt;/p&gt;</content><author><name>Herdy Handoko</name></author><category term="posts" /><category term="beginner" /><category term="scala" /><summary type="html">Hello! If you’re already sold on Scala, feel free to skip to the getting started section “Why do you use Scala?” …is a question that came up more and more often as people are gaining more awareness of the programming language. I normally spoke of my own personal experience, but for the most part, Scala is my go-to language because it offers me flexibility in how I can express my thoughts into code. ‘Code is Prose’ is certainly very apt here (more on this later).</summary></entry><entry><title type="html">Hello World!</title><link href="http://www.hhandoko.com/posts/2017/03/30/hello-world.html" rel="alternate" type="text/html" title="Hello World!" /><published>2017-03-30T00:56:05+00:00</published><updated>2017-03-30T00:56:05+00:00</updated><id>http://www.hhandoko.com/posts/2017/03/30/hello-world</id><content type="html" xml:base="http://www.hhandoko.com/posts/2017/03/30/hello-world.html">&lt;p&gt;So after almost two years (&lt;a href=&quot;https://twitter.com/scalawilliam/status/842505338809008128&quot;&gt;and a bit of a nudge&lt;/a&gt;) I finally gotten around to publish a blog.&lt;/p&gt;

&lt;center style=&quot;margin: 40px 0&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;you can skip the Jekyll and start with a plain index.html ;)&lt;/p&gt;&amp;mdash; William Narmontas (@ScalaWilliam) &lt;a href=&quot;https://twitter.com/ScalaWilliam/status/842510741848576000&quot;&gt;March 16, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/center&gt;

&lt;p&gt;After all these times, I just came to a realisation that there is a practical need for one. &lt;!--more--&gt; Besides recording my thoughts and sharing some knowledge, I’m thinking of using it as a wiki to store:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;notes on development configuration (e.g. SBT plugins, desktop setup, etc.),&lt;/li&gt;
  &lt;li&gt;links to useful articles and perhaps my thoughts on it, and&lt;/li&gt;
  &lt;li&gt;tracking of side-projects and experimentations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stay tuned!&lt;/p&gt;</content><author><name>Herdy Handoko</name></author><category term="posts" /><category term="update" /><summary type="html">So after almost two years (and a bit of a nudge) I finally gotten around to publish a blog. you can skip the Jekyll and start with a plain index.html ;)&amp;mdash; William Narmontas (@ScalaWilliam) March 16, 2017 After all these times, I just came to a realisation that there is a practical need for one.</summary></entry></feed>