Blog
Short Thoughts: I miss the old Internet
Maybe it’s nostalgia talking and looking at the past with rose colored glasses, but I miss the old, unmonetized, Internet.
The difficulty in learning a new Programming Language
Programming Languages come in all shapes and sizes. When attempting to learn a new Programming Language there are many hurdles one has to overcome, some easy and some very challenging.
Here I will explore what some of these hurdles are.
Use automated code formatting
Tabs or spaces? Newlines before braces? End every line with a semicolon, even if unneeded? Code formatting is one of those topics where discussions are endless and consensus is pretty much impossible. Everybody prefers things a certain way and sometimes it can be tough to find a middle ground where everyone is happy.
In this post I will argue in favor of using tools to enforce code formatting in order to ensure it stays consistent.
Short Thoughts: The existential horror of Progress Bars
Progress bars are UI elements that have been in use for decades. They are so commonplace that not only we don’t question them, but we also expect them to be there. However, are they actually any good? Do we need them?
Python Decorators
Originally described in the “Design Patterns: Elements of Reusable
Object-Oriented Software” book, decorators are a powerful design pattern that
allows us to extend or augment an object’s functionality. In this post I will
show with some practical examples how this can be achieved in Python via the
@decorator
syntax.
Short Thoughts: keep your tests simple
Writing good tests, whether they are unit, acceptance, integration etc, is hard. Few tests will run quickly but probably won’t cover much of the code, however, having high coverage doesn’t mean your tests are good either. The way tests are written also depends on what the software and it’s structure is. Notwithstanding, there’s one aspect that I believe always helps, simplicity.
Short Thoughts: Microsoft’s GitHub acquisition
It has recently been announced that Microsoft will be acquiring Github got USD 7.5b. The news was received by some with dismay as Microsoft has historically been seen as a threat to Open Source (Linux is a cancer, anyone?), while it was praised by others who consider Microsoft has changed. What will the future hold for Github and Open Source?
Python Classes, namedtuples and __slots__
Data types are needed in pretty much every program that needs to store and manipulate data. These types usually have little to no behavior and simply exist to keep track of information in a structured and orderly way. Recently, PEP 557 (Data Classes) was accepted, however, it won’t appear until Python 3.7.
In this Blog Post we will explore what options currently exist in Python 2.7 and 3.6 and how they differ from each other.
Text editors: which is the best?
Text editors are probably the most basic tool of every software developer, without them we would not be able to do our jobs. It makes sense then to try and find out what the best text editor is, doesn’t it? Is it Vim? Is it Emacs? Is it another? It’s important to first look at what we want in a text editor before we are able to answer this.
GDQ - Playing games for fun and charity
In a nutshell, speedrunning is trying to finish a game as fast as possible. There’s different set of rules for each game (called categories), but it always boils down to how fast a game can be finished.
Video games mean different things for different people. For some they are their day-to-day source of entertainment or it’s their competitive nature that speaks to them, while for others it may be childhood nostalgia. Whatever reason that may be, GDQ, the seven day speedrunning marathon raises incredible amounts of money for charity each year, and it only keeps on growing.
Code smell and a lesson learned
In an ideal world there’s always time and resources available to refactor code and to make sure it is as clean as possible. Even though it is well known that refactoring code helps with maintainability and thus reduces development costs in the long run, for various reasons refactoring does not always happen, or at least not until things start to fall apart.
In this post I will tell a little horror story that happened to me recently and that could have been avoided if we had stopped to refactor the code we were working on…
Amet - Flattening a Python dictionary as environment variables
I recently had to build an ETL job in Python that was initially going to be deployed on AWS. Little did I know that a last minute change from AWS to Heroku would cause me to change how the job’s configuration was going to be read significantly.
Cross compiling Go applications
I often write blog posts on different computers. Sometimes I write on my Macbook (which is where I run a local Hugo server to test things out), other times I SSH into my Raspberry Pi and write there until I am on my Macbook again. While writing my Why I learned Python blog post I asked some friends for feedback, however, I did not want to push an unfinished post to Github Pages, so I decided to serve my Hugo blog from my Raspberry Pi. I soon realized that I would have to install Hugo from source which could mean trouble…
Why I learned Python
About eleven years ago, after finishing my first semester in University I decided to learn how to program in Python. In this post I will talk about why I found Python interesting at the time as well as how it felt to me as someone with little programming knowledge.
Creating this Blog with Hugo
It’s sometimes a bit funny how trends come and go in tech. For a long time dynamic websites were seen as the way to go, no matter for what kind of content. Lately a lot of people have gone back to basics and (thankfully) decided to build their sites as a collection of static pages.
When I started this blog I decided I did not want to go through the hassle of maintaining a complex site and decided to use Hugo, a static site generator. In this post I will talk about my experience building my blog using Hugo.
Android Handlers, Loopers, Message Queues and communication between Threads
In Android applications, as well as in applications with a GUI in general,
doing work in the background is essential as we do not want the UI to be
blocked by long running tasks that may cause it to appear to be frozen.
The Android Framework provides a simple but interesting mechanism for
communicating with background threads via the use of the Message
and
Handler
classes. In this post I will attempt to explain not only how to use
them, but also how they relate to the Looper
and the MessageQueue
classes.
A simple Material Design ripple effect for any iOS view
Some time ago I had to create a background color transition animation for an iOS app I was working on. This animation was pretty similar to the ripple effect Material Design buttons have. I thought it would be a fun idea to go back and revise what I had done, change the animation so that it looks like the Material Design ripple effect and create a UIView category with it.
This blog post shows an implementation of this animation that can be applied to any UIView.
Hello World!
Hello and welcome to my personal blog!
I’ve been meaning to have a place to write and express my thoughts for a while now, so I figured I might as well start my own blog. My intention is to update this as often as I can with posts about topics such as Software Engineering, Programming or other interests of mine like Video Games.