Saturday, January 2, 2021

Read it or Throw it #217

  1. Train Your Own Neural Network (
    If you love reading about different learning strategies, then this piece I’ve written a few months ago rambles about pattern-practicing methods, emphasizing feeding our brains with many inputs.

  2. ZSA Moonlander: Next-gen Ergonomics
    Recently I’ve started using the Moonlander keyboard. This is a mechanical split-keyboard that is fully configurable. You can customize your own keyboard into layers so that each layer acts like a new layout.
    A common pattern is to configure the default layer with the English characters (QWERTY, Dvorak, Colemak) and have the upper layers dedicated each to some subject.
    Usually symbols (i.e @ # : {}[]$ …) will have a dedicated layer, sometimes combined with digits, other times having their own separate layer. Gamers like to have layers devoted to common gaming elements for boosting their gaming experience.
    Besides that, there are other perks. One of them is the thumb cluster - the keyboard is not only split into two halves but each halve has an extension targeted to the thumb finger. The thumb cluster is generally used for mapping Enter, Space, Backspace, Esc, Tab, etc.
    Another very cool feature is called Auto shift. A short press on an English letter will translate into a lowercase character, while a long press (even the duration is totally configurable!) will emit an uppercase character.
    It does take a few days to get used to, but once you overcome it - it’s truly a game-changer.
    It’s not the cheapest keyboard out there but I personally think that it worths it.

  3. Announcing Tokio 1.0
    This is a huge milestone not only for the Tokio project but for Rust in general. Tokio is a very dominant project in the Rust ecosystem and reaching the 1.0 milestone is a huge step forward for Rust maturity.

  4. Death of an Open Source Business Model
    I really liked reading this article. The author argues that the era of Software companies granting free access to their core is over in general.
    The author gives examples for companies that have chosen to Open-Source their code under MIT or similar license - only to later become a closed source or to adapt their license.
    I tend to agree with most of the content - there will always be exceptions but in general companies need to stay competitive and giving away free access to their core assets will in most cases make it much harder.

  5. Adding BPF target support to the Rust compiler
    The eBPF is the new generation of the old BPF bytecode that has been used for dealing with network traffic. It brings unseen advanced inspection and tracing capabilities into the kernel and running applications.
    The BPF programs are deployed into the kernel and are written in an ad-hoc bytecode. The are new initiatives to use Rust for writing tools that will output BPF programs instead of using a dedicated tool or writing plain C code (or mixing python with C snippets).
    Generating BPF programs using some ergonomic Rust API has very good potential. It reminds me of the high involvement of Rust in the Wasm (WebAssembly). Both Wasm and eBPF are still considered early-stage and it seems that Rust is in the path to being dominant in both domains.

  6. Isoflow - Create beautiful cloud diagrams in minutes
    A nice and free online tool I’ve found that makes it easy to draw architecture diagrams. It’s good to bookmark for future use.

  7. One year of Nushell
    Another Rust project that gains traction is nushell. It’s written purely in Rust with focuses on structured data in a way that resembles PowerShell.
    I’ll keep tracking its progress and maybe in the future, it’ll become my default shell.

  8. Taming the Mammoth: Why You Should Stop Caring What Other People Think
    This is a classic article that details why most of us care about what others think of us and suggests how to mitigate such irrational thoughts and unproductive resulting actions that stem from them.

  9. Recommended Book - Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones
    I consider this book as one of the most influential books I’ve ever read. It has tons of life wisdom tactics of how to form new habits and, more importantly, how to maintain them. This book made me think a lot about the way I manage myself and where I can get better by forming new useful habits.
    After you read it - please take a look at Hooked book. This book shares a lot of the ideas of the Atomic Habits but in another context, of how to design products that will make people use them habitually.

  10. Recommended Book - Practical TLA+: Planning Driven Development
    If you’re interested in an introduction to Model Checking using TLA+ (PlusCal if to be precise), then look no further. This subject is considered intimidating and this book walks the reader slowly through the subjects and explains clearly the concepts of TLA+.
    It uses a language called PlusCal which is compiled to TLA+ in order to ease the pain for a topic that is not easy regardless of the syntax.

To change is to improve. To perfect is to change often.
Winston Churchill

Friday, April 10, 2020

Read it or Throw it #216

  1. Vim and Emacs can be BFF
    My blog’s post trying to settle the “vim vs emacs” never-ending dispute.
  2. How Amazon Web Services Uses Formal Methods
    A very impressive article (from 2015) that reviews how Amazon used TLA+ on various complicated infrastructure projects. The nature of the described cases is high-scale complex distributed-systems. Such projects are notoriously known to be difficult to get right.
    Often they introduce evasive, intractable bugs. TLA+ assisted with avoiding many issues from the first place.

    Highly recommended reading!
  3. Why Don’t People Use Formal Methods?
    If you’ve found the previous article interesting, you’re encouraged to read this article too. I’ve added “Learning TLA+” to my TODO list :)
  4. Expertise is ‘Just’ Pattern Matching
    An awesome text giving a different angle about what expertise is. It argues that a core part of developing expertise on something is having a lot of patterns and being able to classify inputs into known patterns. The article fortified my own personal experience, especially over the last year.
    A very good read!
  5. Designing the Perfect Practice Loop
    In continuation of the preceding item is another eye-opening article by Scott H. Young about the importance of feedback loops. It’s not enough to feed yourself with patterns/data/exercises but being able to learn from mistakes by having good feedback is paramount. Otherwise, we may not make the desired progress we’d like to.
  6. I’m not feeling the async pressure
    A nice piece on how to make concurrent code more resilient by designing it with back-pressure in mind. If you liked the article, you should definitely consider reading the classic Release It! book.
  7. Math is your insurance policy
    The article argues that menial programming tasks will be replaced by AI and that future programming-languages will drift toward a more declarative-style paradigm. It’s a nice read and a wake-up call for any developer that does mostly a commodity job.
    However, I don’t see any radical changes in the foreseeable future. I think that that big changes eventually take more time than anticipated.
  8. The most important skill a programmer can learn
    How often do you clean up your code? This piece covers the importance of deleting redundant code or avoid writing unnecessary ones from the first place. See further The art of destroying software talk.
  9. System76
    I wasn’t familiar with the System76 brand until recently. The company manufactures its own laptops (more about that here) The machines Operating-System is Ubuntu, or Pop!_OS which is a Linux distribution developed by System76 itself.
  10. Recommended Book: Get Programming with Haskell
    Working on Rust made me “love the Type”. I wanted to dig more into the essence of Type-driven development and I figured that I must know the basics of Haskell. I doubt that I’ll ever write Haskell code for production, but learning a Haskell will expand everyone’s mental model for sure. There are many concepts that exist in Rust (that’s not a coincidence since Rust has been heavily influenced by Haskell), but seeing them in another language helps to strengthen understanding. You can skip the parts that cover libraries and tools and focus only on the abstract/mathematical content.
If something is worth doing, it is worth doing poorly until you can learn to do it well“ - Zig Ziglar

Monday, December 30, 2019

Read it or Throw it #215

  1. 2019 Summary
    My post summarizing my 2019 professional year.
    I’ve also added a Subscribe page to my blog!
  2. Announcing the Bytecode Alliance: Building a secure by default, composable future for WebAssembly
    This is a long read but a good one. The post starts with an announcement of a joint effort between leading companies that rely on WebAssembly to build the future of the internet and outside-the-browser infrastructure (Mozilla, Fastly, etc).
    Then the post proceeds with explanations on how using WebAssembly while employing a capabilities-based security model built-in will serve as a foundation to avoid much of the security vulnerabilities lurking almost any application nowadays.
  3. Join the beta: our new serverless compute environment gives you more power at the edge
    Fastly releases in Beta its new serverless platform named Compute@Edge based on Lucet, their in-house developed WebAssembly Runtime. We can start seeing right now the future of the internet. A CDN provider will cease to be merely a dumb provider of cached content, but it will transform to hosting full-blown applications. This is only the beginning, rest assured that more companies will enter this field. Not only traditional CDNs providers such as Akamai but also Cloud providers like Amazon.

    The boundaries between a Cloud to a CDN provider will become blurry. They will all run WebAssembly code and compete with one another for those who will get the chance to run our code. I predict that many databases, storage solutions, and other services will be available on the Edge too.

    Add to above the new emerging QUIC protocol as the next TCP and the Internet speed future seems bright.
  4. GitHub Universe 2019 TL;DR
    A very good summary of the annual event of GitHub Universe. The biggest announcement is that GitHub Actions is now publicly available for everyone!
  5. Visual Studio Online - Cloud-powered dev environments accessible from anywhere
    Microsoft Release VSCode as a Service product for public preview.
    It’s hard to predict whether it’ll catch or not but only time will tell.
    See also: Gitpod
  6. Execute Program: Learn programming tools fast. Then remember them.
    A new Spaced repetition based training for developers. The training is organized by courses. The platform has been created by Gary Bernhardt who is a very famous developer known for being innovative. It’s only the first footsteps and new courses will be added. I’m curious to see how this will evolve.
  7. Conventional Commits
    Did you notice people who use commit messages having patterns like:
    feat(...): new feature or fix: fixed the failed test...
    This is more than a phenomenon, but a well-defined git commit messages conventions. I think it adds more hygiene to the code, and I’ll consider using that too.
  8. Fourteen years after launching, 1Password takes a $200M Series A
    I’ve been using 1Password for a couple of years and I really think it’s a good product. The company refines and makes the product better consistently. It’s a truly remarkable story of a self-funded company that raises such a great amount of money for Series A - 14 years after having been founded!

    BTW, the 1Password team has rewritten part of their browser extension code in Rust! (compiled to WebAssembly that runs as part of the browser-extension).
  9. Recommended Talk: Rust’s Journey to Async/Await
    As always, Steve Klabnik condenses a lot of info (and history) elegantly and clearly into a great talk. This time, the talk outlines the evolution of Rust Async until today. Steve explains the trade-offs taken in Rust in order to reach the holy grail of having zero-cost abstractions futures.
    Rust async/await syntax became stable recently at the 1.39.0 release.
  10. Recommended Book: The Pragmatic Programmer: your journey to mastery, 20th Anniversary Edition (2nd Edition)
    Pragmatic Programmer is a classic. One of the most cited as “Must Read for every Programmer book”. I’ve never read this book. A few months ago, the 2nd edition has been published and I thought it’s about time I’ll read the book. Overall, I wish I’d read this book when I was at the start of my career. I think it would have helped me understand a lot of things faster, as opposed to learning them by nature. I believe that experienced programmers could also benefit from reading this book as it’s a centralized piece covering many aspects of a professional developer craft.

Success usually comes to those who are too busy to be looking for it.”
Henry David Thoreau

Friday, October 11, 2019

Read it or Throw it #214

  1. Relearning to Type
    My new post describing my journey to relearn to type. I won’t elaborate and just hope it will make you curious enough to go and read the article…
  2. SVM - Spacemesh Virtual Machine
    Another post of mine, but this time, a work official one.
    This post describes the first milestone of SVM (Spacemesh Virtual Machine).
    I’ve worked on the SVM project (first milestone) for the past 3 months.

    Here’s a link to the GitHub repository:

    If you know Rust or if you’re into Compilers and looking for a very challenging job and super fun! please email me at:
  3. Big Benefits when Your Product is Bootstrapped
    Oren Eini, one of the greatest developers on earth tells his remarkable story of bootstrapping his company creating RavenDB. A must-read article for entrepreneurs!
  4. Kubernetes and the Erlang VM: orchestration on the large and the small
    A great article by José Valim, the creator of Elixir about the similarities between KS8 and the Erlang VM. While KS8 orchestrates nodes, the Erlang VM does that same at the instance level. José also writes about how KS8 and the Erlang VM can complement each other in cases like Service Discovery.
  5. Tuple: A remote pair programming tool for discerning developers
    A new remote screen sharing product designed in particular for developers.
    The video on the site looks really cool.
    The tool is only for Mac users.
  6. How Many Words Does the Average Person Know?
    In the last couple of months I’ve worked almost daily on my English vocabulary.
    English is a gigantic language and I was asking myself how many words a fluent English speaker really knows. If you’re curious too, then read the article.
  7. gitmoji
    A cheat sheet to GitHub emojis.
  8. emacs or vim
    That’s funny. I will have my take about the endless war of emacs vs vim on a future post under my blog.
  9. Recommendation Talk: Rust, WebAssembly, and the future of Serverless
    A comprehensive summary by Steve Klabnik about Rust, the evolution of WebAssembly starting from asm.js to this day and the next generation of Serverless executing WebAssembly programs.
  10. Book Recommendation: Ultralearning
    A great book about applying innovative learning techniques by Scott H Young. This book will give you undoubtedly some food for thought. I know it made me think and reflect on the way I learn things. Highly recommended book!

Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.
– Alan Perlis

Saturday, August 24, 2019

Read it or Throw it #213

The second article of my new blog. This time a condensed post full of goodness about productivity principles with specific recommendations to Mac users.

Please forward it to colleagues if you liked it
Thank you!

Even though the article talks about exploring Rust only at Microsoft Security Response Center and not in more places within the company, for now, it's nonetheless a big accomplishment to Rust as the new alternative to the traditional system programming language like C/C++.

Microsoft won't be the first gigantic company to use Rust. 
Amazon relies on Rust for their Firecracker.
This is another positive sign that Rust has a bright future. 

In this blog post, Salvatore Sanfilippo (a.k.a antirez) goes low-level about the big forthcoming feature of Redis 6: Client-side caching.

The prerequisite for this will feature will be a breaking change on the redis protocol called: RESP3.
Existing redis client will have to go major changes in order to support these changes but I'm sure it'll worth it.

The new client-side caching will help applications gain better performance and be more real-time.
For some apps, it'll be a game-changer.

The Timber (check out this tool!) logging company released a new general-purpose logging collector agent likes Logstash//Filebeat/others.

Vector is written in Rust, and according to the site benchmarks it outperforms its competitors.
This tool comes with programmability for doing transformations of logged events using Lua.
Moreover, this tool has a detailed Roadmap filled with tons of goods.

A superb article about the nature of software development.
The article brings into the surface a lot of points that we see happening throughout our career.
This is a kind of article that should be re-read at least once a year.
The article is a long one but definitely worth reading!!

The open-source alternative to Google Spanner continues its growth.

Artichoke is an implementation of Ruby in Rust.
This is very cool!
BTW, there is also a more mature project of Python implementation in Rust called RustPython

Another new cool projejct is nushell. It's a shell (like bash/zsh/fish) but written in Rust :)

A Rust re-implementation of cloc that claims to be x100 faster.
loc will tell you how many lines of code has been written in your projects.
It will output stats per each programming language used.
There are usage flags like: "show LOC for each file" or "show LOC for by files regex"

I'm sure you're familiar with all these self-growing books.

The major problem with these books is that these books usually spread over way too many pages for providing a couple key messages.

Here comes Blinkisit to save us. It's a big archive of very short versions of most of these books.
Each book summary takes a couple of minutes to read. Most of the books also come as Audiobooks.'

I've already read about 30 short books like that in its Android mobile app.

This service costs mone, so you need to decide if it worth it for you.
Tip: look for a coupon on the internet.

"Good software, like wine, takes time"
Joel Spolsky

Friday, June 28, 2019

Read it or Throw it #212

My talk about the research so far at Spacemesh regarding Smart Contracts leveraging WebAssembly.

And here is a link to all the talks given at the Wasm on the blockchain workshop Berlin 2019

I'm thinking about starting my own blog...
So this is my very first blog post about why I think it's important to stay open-minded for new technological opportunities.

Many thanks for Omer Hamerman and Yuval Zalmenson for the feedback!

3. Waxosuit - The Cloud-Native Exosuit for WebAssembly
On the last issue, we had Fastly's announcement article about Lucet:

The wasm out of the browser explodes and now a new (still in its infancy) project called Waxosuit has been born.

Waxosuit is a WebAssembly runtime (build on top of wasmer) for running in the cloud wasm code. 
If I understand right, the vision is to equip the Waxosuit runtime with many capabilities (plugins) that could be used by the hosted wasm programs.

The big vision is to make the developer more productive since he/she will have a rich set of capabilities out of the box in the wasm runtime.
(for example, logging, monitoring, database integrations...)

It means a developer can write less code and rely on the set of these capabilities (high-level "system-calls like") 

This could have the potential to be the next generation of Heroku or next generation of serverless computing

Here is a medium post, Introducing Waxosuit by @Kevin Hoffman the creator of waxosuit

A very interesting article about the future of programming using dependent types
I hope that Rust will have some form of this in the future 

This is more like a mini-book about long-term memory.
It's a joyful read full with illustrations and simple explanations.

One of the topics covered for better long-term memory is by practicing using
the spaced-repetition technique. A few years ago I've given a lightning talk about this technique, here is a link (the talk is in Hebrew)

This is another mini-book about memory but this time on working memory.
If you liked the content of the above item about long-term memory, you'll surely love this one as well.

An article that reviews the positive effects of practicing the Dual N-back game on working memory (according to a conducted research)

Last time we had GitHub Package registry and now the former CTO of npm releases a Decentralized Package Registry called Entropic. 

This declaration is of high importance since it's a decentralized package registry.
Did it ever happen to you that the deployment of your service failed since your centralized package manager has been down? 

In the previous newsletter issue, I've added an item for Sourcegraph and GitHub has just released (still in Beta) its own Sourcegraph competitor (if to be delicate) and it'll be probably given the company another boost against the competition with GitLab.

Another product that should be worried for its future is Octotree (browser extension on top of GitHub)

GitHub also acquired another company called Pull Panda for streamlining the code reviews process

An eye-opening article about the nature of hiring people claiming that A Players will hire A Players, but B players will hire C players and so on.

I tend to agree with this. Usually, strong people will want to work with other strong people, since they understand they have something new to learn from them
(since no one knows everything).

This term has been coined by late Steve Jobs and here is the link to the original video of him talking about this.

"The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time."
Tom Cargill, Bell Labs