Celebrating a (little more than) year of blogging...

My first blog post was published on April 15, 2017 and was so popular that it generated a whopping 2 comments. I can’t say that my others posts have been as popular though.

I started my blog in order to learn writing and express my creativity. Writing is an outlet of stress for me and there’s no better way to talk about something on an open platform like this.

While I thought my blog would be solely focused on IT, my blog became a multifaceted place with discussions on technology, philosophy, science and automotive. I feel the subjects have been a bit dry but stay tuned for more exciting blog posts and new subjects such as gaming!

My goal for this blog isn’t popularity, I don’t even run ads on this website at all. I just want to vent and hope someone will benefit from my tirades.

Some statistics about this blog so far:

  • 537 days since the first post

  • 14 blog posts not including this one

  • 3 comments

  • 12 likes

  • 230 viewers per month on average

  • 4 RSS subscribers

  • 31000 words approximately

  • Most popular blog post: Automatic Transmission Simulation in Games

  • Least popular blog post: Many of them have not been read this month...

  • Longest blog post: Why I left…

  • Shortest blog post: Drifting a Bus

  • Most readers are from the US, Canada and UK. Some significant traffic from Europe.

  • Apparently, the most popular way to reach this website is directly (which I find hard to believe), it’s more likely to be through search engines or social websites.

  • 0 dollars made from page views

My writing is still very imperfect, and at times, very simplistic. I’m hoping with practise I will come up with clearer, more informative and have better researched posts. Maybe I’ll be taken more seriously then, for now, it’s just a hobby.

Creating this blog has made me realize that I don’t need to create something perfect from the start but rather, every endavour is a learning experience on it’s own. Your first projects might be cringe-worthy and embarrassing, but one day, you’ll do something you’re proud of. I’m not there yet.

If you feel the need to express yourself I highly recommend blogging though you can also start a YouTube channel or maybe a podcast. I personally use Squarespace to build my website. Even though I’m a software developer, I honestly don’t have time to maintain a website through some complicated JavaScript framework and host it on a VPS in my spare time. Some website builders are free like Wix and others are dedicated to blogging only like Blogger or WordPress (well, it can do a bit more). If you’re a web developer and are brave enough to roll your own, go ahead. If you’re a bit more lazy you can host Jekyll statically on github.io.

Your blog can be focused on a personal aspect of your life such as your travelling adventures or a place to discuss your favourite topics in astrophysics. The Internet is all about freedom (maybe not some countries) and this your chance to let yourself out!

If you’d like me to talk about a certain subject or my opinion on a topic, feel free to leave a comment below.

How to Drift a Bus

This is another satire...

I traveled to Japan last year and got a chance to meet the Drift King himself. I was doing a track day and drifting culture is hot in Tokyo. I got a chance to speak to Mr. Tsuchiya and he told me a funny story about drifting something you wouldn't expect:

Hi, my name is Keiichi Tsuchiya, and I am the Drift King. I call this maneuver the "Omenibussu Duriftu" and it cost me my job and sent me into abject poverty.

I started doing this on rainy days tired from my 8 hour shift of hauling passengers around, I needed to relax and have a bit of fun. I would move the bus side to side and then turn hard and the bus would drift. Passengers screamed and complained as I counter-steered the slide. The complaints lead to me being fired ending my career as a bus driver.

If you want to try this yourself and risk your losing your wage, just do the following mods and follow these instructions.

Make sure you inflate the rear tires of the bus as much as you can and deflate the front ones. This will make the bus prone to oversteer. I convinced the maintenance workers to install nitrous on the bus telling them that the bosses ordered us to test out this new ethanol reduction system. I even convinced them to weld the rear differential as it would help getting out of sticky situations in snow.

I recommend you do this with 40 footer bus as an accordion bus may lead to fish-tailing. Use a track with plenty of run of area to prevent accidents or the rapid-transit road if you're brave enough. You'll need a rear-engined, rear-wheel drive bus for this technique (a bit like the Porsche 911).

First, accelerate to 60 kph, and then swing the bus left and right until you reach the corner. While you swing, keep accelerating until 100 kph. Then once it reaches the turn, accelerate hard and let the bus slide without adding steering input. Half-way through the slide, counter steer and reduce throttle. It will work every time, at least for someone skilled like me.

The simulation was possible thanks to BeamNG.drive

Clever Code

I recently worked on a proof of concept mobile application for an insurance company. It was simply designed as a tool for sales to demonstrate how a potential concept could work.

The statement of work seemed to be reasonable, a week to improve some functionality and change some branding. It also included updating the dependencies of the project and upgrading it to work with latest tool set.

It really seemed like a reasonable project until I was given the source code. I realized that what I had in hand was production quality code with hundreds of libraries included. I could barely understand the workflow of how the code lead to functionality, it seemed like sorcery was being used to generate it. I've worked on a dozen of mobile applications and it was generally easy to understand how they worked.

Obviously, this 3 year old project wouldn't compile with the latest tool set. I thought it would be an easy task to simply bring up the libraries to their latest version, but a ton of compiler errors were thrown. Why? The code heavily relied on paradigms from the older libraries and the newer ones have changed workflows completely.

I realized that updating the application would require major refactoring which wouldn't fit within the tight deadline. I won't give too many details as work is supposed to be confidential, but it was a very simple app with a few screens and extremely basic functionality.

At that point, I decided that I would rewrite the application from scratch. What took a team several months to do I was confident that I could do it in one day. However, I wrote very simple and easy to understand code. It's a proof of concept, a prototype. The source code is supposed to be disposable once the company decides to turn the PoC into a production quality application.

In one day, I had the prototype working with the same functionality, actually more, than the original version. My goal was very different, it was a PoC, not production software, it's supposed to be a prototype. One day's worth of work is not costly to throw out, but spending on several employees to do the same thing, but with way more complicated code is way more costly and even more when it comes time to maintain it.

Even production applications can be overengineered. Code can be very clever but an impossible mess to actually understand. Most developers don't realize that code is easier to write than to read. In several years, a simple bug fix will break the application because you can't remember how the asynchronous event system worked when it could have been a simple method call in a seperate thread.

Code is supposed to be of the same scope of the application, not more. Annotations, lambda expressions and so on are tools to help you write more readable code but only when it stays reasonable. A super clever implementation of lambda expression that spans the entire screen is much worse than a simple for loop which is what you really needed.

New developers want to show how clever they are with complicated code, however it doesn't impress anyone because no one understands it. As I progressed throughout my career, I realized that very simple code is way more elegant than clever black magic. As a result, I ended up with more maintainable code that I could come back to years later when it needed a simple bug fix and I was confident that it wouldn't break anything else.

My belief is that code should be as simple as reading an English article. Only a one pass reading should give you an idea on what's going on. If you need to reread the code several times to understand it, it's a bad sign.

When you do need to be clever because it's the only choice, it better be documented with plentiful of comments, that explain why and not how the code was designed that way. Whatever is needed whether it's diagrams, a separate document or even a video. The point is that the next developer understands it right away.

If you can recite the code and it sounds like English sentences, you're on the right track.

Burnout isn't about work...

A few weekends ago, I found myself doing absolutely nothing. I didn't watch movies or shows, read reddit, have any meaningful conversations or even eat. I took naps to escape reality and slept-in as much as I could, much to my detriment with even more fatigue and tiredness.

I thought I was having a routine depressive episode but I realized that my mood wasn't actually that bad. However, I really did want to do nothing other than sleep, complain and stare out the window. Nothing was interesting.

My creativity and brainpower was sucked out me until it was completely depleted. What really happen?

I often blamed work for this but I'm still functioning there and considered a high performing employee. I always have the energy to do something there, but come home all of it disappears.

While some say burnout is clinically similar to depression, I'm not that sure. Depression is quite a constant uniform feeling of hopelessness, dread, negative thought patterns and perhaps a physiological aspect. Burnout doesn't exhibit itself when have to work, it's when you don't.

For most of us, work is our liveliness, it's literally what keeps up alive, income and passion. We put all our effort into it because we have to otherwise we're not meeting deadlines or that next performance review won't be so good. You're forced to perform.

When the pressure is off, the mental energy spent to do work depletes any sense of motivation left for any hobbies, relationships and so on. At home, you don't have deadlines or clients to meet or sales pitches to satisfy. All those obligations are gone, you're free to decide for yourself save your errands like groceries and laundry, though even those can be neglected sometimes.

The end result is fatigue and self-neglect.

Unlike depression, burnout probably has no major physiological causes thought it's effects maybe. Neglecting your body with lack of food and exercise won't help the lack of motivation and low energy.

Few resources have presented reliable treatments for burnout. I don't think it exists because everyone experiences it in a different way. One solution may work for another but would make another's burnout even worse.

One constant factor between all these 'treatments' however I noticed is breaking the routine of life. Things won't improve if you do the same thing everyday. You to have things to look forward to whether it's exciting times or times for rest. I can be really anything.

For me, for example, I'm an introvert-extravert hybrid (leaning more on the introverted side). I like doing things alone but I need to go out and chat with people. I need to go out and enjoy the views, the restaurants, the malls, the parks and so on. Knowing these things are coming gets me excited, even a chat at a coffee shop. Being locked in drives me nuts but sometimes I want to be locked and left alone.

For others, vacation time might help 'recharging ones batteries' though one must be careful as vacation can be equally as tiring. Especially long trips and vacations relying on heaving planning full of activities.

I noticed that others simply like to retreat and escape. Binge on TV shows and movies, spend hours on Reddit and read fiction novels. That's also breaking the routine if all you do is work.

There really isn't a single solution for burnout and I really can't say I found the ideal one for me. I hate to say it, but the best solution is trial and error. My solutions ranged from changing the colour temperature of the lights at home to going on more meetups. Some did help and others didn't.

I don't believe that burnout is about self-worth or how one views one's self at an organization. That may be effect of burnout but not the cause. The reason for burnout is simply fatigue, lack of energy and motivation and one must find the way that works for them to help them restore that energy.

Please post in the comments in how you recover from low-energy energy and burnout? How did you keep the fire burning when you get home?  Do you hit up the gym, cook a fancy new meal, or take a day or two off and spend the day watching Netflix? These discussions are key to understanding this relatively new concept and how treat it.

How to Program and Make Software

Learning software development is one of the most frustrating endavours you can partake in. You see these sophisticated web apps and advanced operating systems and you want to do like them. You want to make a great triple-A game with your own amazing story. However, few realize the amount of effort into making these. These pieces of software are built by big teams with dozens of members who spent the past 5 years churning out code.

On top of that, it's not just about writing and understand code, but it's about writing it in a way that it can be re-used, easy to read and understand years down the line and easy to fix and maintain. Yes, you can make something work by copying code you don't understand and having a big giant mess of spaghetti, but it's not something that you call software engineering. At best, you're a script kiddie.

Like in any field, you need to start really small. Writing command line applications that add two numbers. Understanding the very fundamentals of how computing actually works, how code is converted into something the CPU understands.

Many want to become computer scientists and software engineers, but I honestly don't believe that academia is the best route for this. The knowledge they offer is often out-dated and doesn't really apply to the real world. In school, you get these lab exercises with perfectly commented code but when you start your job, things are really different and way more messy. Yes, you might need a degree for you next job, but an Arts or Math degree will get you far enough. To build software, you need to be passionate about it and teach yourself. You need to get deep into the books and learn by reading other people's cryptic code. Unlike other fields that have been the same for centuries, software changes every day. Just look how often your phone apps get updated and changed. It's not just about trends, it's about constant improvements.

Don't be discouraged when something doesn't work, keep trying until you get the results you want. Keep re-inventing the wheel until it is a well-oiled machine. You won't get there in a few days but trust me the ramp up will be quicker than you think.

You need to pick a path before you start on your adventure. Do you want to write games, cool web apps for budgeting or how about an advanced modeling and simulation library? Just like any other field, there are specializations and you can be good on as many as you want. The secret is time.

When someone asks me about where to start, I usually throw this list of resources with books and websites. Somewhere in there, you'll find something that tickles your fancy and will get you started on your programming adventure.

No Excuse List

http://noexcuselist.com/

There's a lot of free programming courses in there if you prefer lectures and interactive exercises instead of reading. Codeacademy and O’Reilly are really popular.

Freely available programming books

https://ebookfoundation.github.io/free-programming-books/books/free-programming-books.html

Basically anything related to computer science can be found here. There's even some IT related books in the list. Updated all the time.

Awesome Awesomeness

https://github.com/bayandin/awesome-awesomeness

A meta-list of useful libraries for different programming languages. Before trying to code something on your own, see if there's a library that does it already.

Pick your preferred method of learning and you'll on your way to make whatever you want. The sky is the limit, or perhaps your imagination.