Port Shell Scripts to Python

make is a legendary tool to build software and is equally notorious at the same time. It is really good at what it does and has been forked many times to fix its many flaws and papercuts.

There are alternatives implemented with or without custom domain specific languages (DSL). Some are implemented in Python, such as SCons, pymake, Waf, BuildIt, and Invoke. Some are implemented in other languages like cmake, RAKE, Ninja, and Blur. The question to ask is: which would you use to solve what problems?

Read more …

What About DevScale?

The word DevScale has been rattling in my head for a while now. With my increasing interest in Raspberry Pi, FreeBSD, and Erlang -- combined with the rise in Internet of Things (IoT) -- the word DevScale has started taking a bit more shape.

Read more …

Package and Distribute Your Test Suite

Automated test suites must be packaged for installation and distributed just like your other build artifacts. They are not some special things that live in a code repository (repo) separate from the rest of your code.

My team was writing tests and keeping them all in a git repo. The repo would be cloned and then PyTest would run these tests. All users of tests - from developers to Continuous Integration (CI) and everyone else in between - would run steps akin to:

git clone git@github.com:username/testrepo.git
cd testrepo
git checkout main
pip install -r requirements.txt
py.test tests/

This worked for a while but was not a good fit as time progressed for these reasons:

Read more …

Why Learn Erlang?

I am a Pythonista by trade and passion. It was the first language - after trying C, Java, and Perl - that made me feel productive while loving the (admittedly beginner-crappy) code I wrote. I don't claim to be a Python expert but I have worked with it long enough to be well versed in it for most use cases. And yet I feel like trying my hand at another language.

I have dithered on the decision to pick a language and stick with it. My interest has been pulled in three directions over the past couple years: Go, Erlang, and Rust. I even tried my hand at each language for a couple days before life happened.

Read more …

Deciding What to Learn Next is Hard

I have an ever present restlessness when it comes to figuring out what to learn next. It's a source of agitation and sometimes stress. It's even more unhealthy when I feel that way at times when I can do nothing about it, especially during some much needed downtime.

Read more …

Missing the Point of Free Software

I have come across various myths about free and open source software or as some call it FOSS. Some of the more prevalent are:

  • FOSS is gratis and it is not FOSS if it is not gratis
  • It is not FOSS if it has a Cathedral development process
  • Creators and maintainers are obligated to include user patches in upstream source tree
  • Creators and maintainers are obligated to provide gratis support to all users on the users' schedule
  • Copyleft code is free software and permissively licensed code is not
  • Free software begins and ends at Linux or GNU (to some extent)

Read more …