With two kids, a startup, a huge queue of books to read, and few time-consuming hobbies I don't time to play computer games. Only in rare cases when I do long-term travel, or during Christmas might I play one or two classic SNES or Sega Mega Drive (Genesis) games. I used to play these on my laptop via emulator, but then switched to the phone due to portability issues (I don't always take laptop with me during travel). Last year I got myself a handheld console running RetroPi. I love old games that didn't rely on gigabytes of memory in the video card. And this is why Bijan's blog post about his experience recreating old breakout game for web caused quite a bit of nostalgia in my head.
It's great to find the person sharing same love to that segment of games:
Breakout was my favorite Atari game. I grew up during the Nintendo era of video game history, so the Atari 2600 console was a little before my time. But games like Breakout felt timeless in their appeal. I also remember being blown away by some sort of "fancy" Breakout version in the arcade. I only recently found out that was a game called Arkanoid.
And I particularly love Bijan's writing style. It's not yet another tutorial on Elm, but a rather interesting weekend read even if you're not into gaming. He talks about the history of the original game, about the game design in general, how small features can have a big impact on the end result, about music, pixel art, static assets, and so much more. It's like a game studio in one person in one article. I highly recommend this.
Moving to a new stack is hard, especially if it's not as popular as some well-known frameworks backed by huge companies. So how do you convince your management to migrate to Elm? Here's Kaspar sharing his thought process of why he decided to gradually move to Elm from more popular alternatives. I like that he also highlights the downsides too (although most of them look like upsides to me):
- Small pool of available developers (but more experienced)
- Can't leave bugs in the code and deploy it like you could with regular JS (because most likely your code won't compile)
- As a developer you will spend less time on maintenance which means less work for you (as a result you can lose your job)
The above article goes hand in hand with the series of articles written by Riccardo Odone about migrating from Angular to Elm.
Often times I browse Github, and go through repositories to learn new patterns, to see how people structure and scale large code bases. This week I found three active and popular projects that were partly written in Elm.
Meet Diffuse, a browser-based music player that connects to your cloud storage to play your files. You can keep your (well, because with streaming service you just rent them) files on S3, Azure buckets, Google Drive, or Dropbox, or even IPFS! Then host the UI anywhere you can host static files, and voila! You've got a lovely music player for yourself.
Another project that caught my eye is Sharry - a self-hosted file-sharing app. It supports both registered users to upload files and share them with everyone else via hard-to-guess link, and also allows anyone to send files to the specified registered user via similarly hard-to-guess link.
As it usually happens with my special issues, a day or two after I send out that email on specific topic, I tend to find lots of new interesting projects, articles, and news on that particular topic. In this case, I found an interesting active project called Gingko. Gingko is a "tree-based" writing software that uses a novel (well, at least to me) way of organizing thoughts. Have a look at the video:
And for the quote of the week, here's one from Augustus De Morgan about mathematics (which I think can be applied to game design, and pretty much any other aspec of life):
The moving power of mathematical invention is not reasoning, but imagination.
Enjoy the last days of November before the Christmas craze arrives.