Someone responded to my post on things to learn in 2019 by asking how one finds the inspiration to learn all of the things. Well, my first answer was that those are just things I find interesting and may look into, but that’s not really an answer for the inspiration part. Software development is a very wide field, one where the amount of things you can learn increases daily, so it’s almost impossible to keep up with everything.
I had been eyeing Lucas Pope’s acclaimed indie hit Papers Please on Steam for a while, but finally bit the bullet on it during the last sale. The story of the game itself is interesting, as Pope was more or less a one-man team, doing the design, code, music and art for the game himself. If you’re not familiar, the game places you in the role of a border inspector in a fictional 1980s totalitarian state called Arstotzka, a thinly-veiled parallel to communist East Germany and similar nations.
A while back we were tasked with helping a client’s internal dev team to migrate their repositories from Subversion to Git. The distributed VCS seemed ideal for their situation - they had a very small in-house dev team managing contributions from external subcontractors. The main rationale was that their process of merging contributions from the external developers was extremely complicated and often resulted in conflicts that were challenging to merge. Before this, I hadn’t actually used Git too deeply myself (aside from cloning stuff from Github), and especially not in a team setting, so the training one of our other engineers gave them was a good opportunity for me to become familiar with Git as well.
Sipunin, from the root word “sipon”, referring to the common cold. It refers to someone who is susceptible to and often has the common cold. Certainly applicable to me. For as long as I can remember I’ve always had the cold all the time, especially during the earlier and later months of the year. (I’m sure selective memory lets me forget all those days that my nose was actually not clogged…)
I think that’s one of the reasons why it’s difficult to keep up a blog. Blogs feel a bit like they have to be long-form, highly profound, useful or informative pieces or prose that a wide audience can appreciate. We don’t have this same pressure when posting to other social media like Twitter or Facebook. I like to think of a blog (or this blog at least, at this moment) as a living, evolving thing, with each post capturing a single moment in a timeline, building upon previous thoughts, helping us see how the author’s thinking changes with time.
Here I am writing about Duolingo and keeping up streaks, then just a few days later, this happens: Ah crap I broke a 97 day Duolingo streak D: — Roy Tang (@roytang) January 6, 2019 There’s a problem with Duolingo’s streak notifications that I’m not sure how to solve. It send you a daily reminder at around the same time you did the work the previous day. If you’re unable to do it at that time, there are no further reminders later in the day.
One of the things about self-identifying as a “Full Stack Developer” or “Solution Architect” is that there’s no shortage of things to learn, and oftentimes it’s good for your career-wise to at least have some passing knowledge of a bunch of technologies. It helps that I really like the field as well. I try to make sure I study or learn at least one new programming language or framework every year (though I am willing to stretch that definition as needed).
Although I still primarily identify as a “Full Stack Developer”, during the past few years I’ve also found myself in a role called “Solution Architect”. The thing about being a solution architect is that there isn’t really a clear definition of the role, what it involves, or the scope of responsibility. I suppose it depends largely on the organization and the project. The role mostly involves making techical decisions on a larger scale, like project-wide or organization-wide, rather than on the micro day-to-day technical decisions involved in a typical software development involves.
A free web-based service I’ve found very useful over the past few years is IFTTT. The initialism is a bit unwieldy; it stands for “If this, then that”. It basically provides a way to “glue” different services and APIs together so you can set up some kind of automation. You set up rules with conditions and specify what to do when those conditions are met. One of my main uses for it was for social media cross-posting.
This year I had the dubious privilege of having to work with a C++ project again. Although my college education was in C, that was a completely different animal. I did self-study C++ for a bit back even before I was working, mostly because I was interested in game development even back then. I remember trying some OpenGL and/or DirectX stuff back with good old Borland Turbo-C++ during the DOS days and using the Dev-C++ IDE when I shifted to Windows.
Happy new year! Last year I posted some year-end statistics. That seems like a good way to recap the year, so let’s do it again. Random statistics from 2018: Work, Learning and Self Improvement: Hours worked: 1,163 (up around 50% from last year) Programming languages/frameworks learned: I’ll say 4. I’m counting: C++ which I revisited this year after more than a decade of not using it Go, which I used for the templating in the Hugo blog Flask, which I had dabbled in before but only used in a full-scale project this year Laravel, which I also used in a couple of projects this year Books read: 4.
New year’s resolutions are hard to maintain, so much so that people will make jokes about opening a gym that only runs during January, since most gym NYRs run out of steam by then. One of the best pieces of advice I’ve found regarding acquiring new behaviors comes from the first motivational books I ever read - The Greatest Salesman in the World by Og Mandino, which for some reason we had a copy of in our house when I was young.
New year’s resolutions are hard to maintain, so much so that people will make jokes about opening a gym that only runs during January, since most gym NYRs run out of steam by then. One of the best pieces of advise I’ve read on this is “Don’t break the chain”, most often anecdotally attributed to Jerry Seinfeld. This advice means that for a recurring activity, once you get a streak or chain going, as much as possible you should avoid breaking the chain.
Most of these are carried over from the 2017 checklist. Maybe an annual thing, eh? In no particular order: Greet your loved ones and friends and anyone else you hold dear. Maybe even those you disagree with Ponder why people give so much significance to the transition between an arbitrarily-chosen pair of 24 hour periods Take stock and reflect on the past year Think about what you’d like to learn this year or how you want to improve Count your blessings for the past year and be grateful Change your passwords Buy a new toothbrush Make a New Year’s joke (“If you must use fireworks of any kind tonight, at least try to limit your injuries to the left leg only.
I’m not a big believer in New Year’s resolutions, but here’s some suggestions if you’re into that sort of thing: learn a new language talk to strangers more often visit 12 museums (one per month) step away from your devices once a week (increase the duration every time) read at least 12 non-fiction books read at least 12 physical books write a poem; maybe write 12 poems walk in the rain travel somewhere alone learn to draw stop a fight walk two thousand kilometers make more puns find something you can change in your local community and try to change it figure out what it means to be happy start twelve new side projects finish one side project once a week, throw out a few things you no longer need These aren’t things I’m committing to, but they are examples of the sort of NYRs I’d be likely to take on.
I mentioned before how I’m not a fan of LinkedIn: I’m not a fan of LinkedIn, as it seems to be mainly a way to get harassed by recruiters who didn’t even bother reading my profile. Some number of years back, I added the following clause to my LinkedIn profile: Recruiters: if you contact me, please specify the position you are recruiting for, what city it is in, and whether you can meet the above asking salary.
If you’re looking for a New Year’s Resolution, why not try learning a new language? Since late 2014, I’ve been using Duolingo to teach myself new languages. Learning a new language not only helps when you’re travelling, but it unlocks different ways of forming thoughts in your brain, helping cognitive development (I may have made up that last part with absolutely no basis except my own speculation.) The first language I tried to study using Duolingo was Spanish, mainly because back then we had an upcoming trip to Europe (including Barcelona) planned in 2015 so the Spanish would have helped.
Some things I’ve been watching lately, aside from the usual TV shows I follow: I very much enjoyed Elseworlds, the Arrowverse crossover this year. I mean sure, a lot of it didn’t make any sense, but it was like a love letter to DC fans. I actually consider myself more of a Marvel fan than DC, but I still loved it! I wrote a spoiler-free review over on the Tumblr.
Two things I’ve learned over the past couple of months of daily blog posting: I have a lot to write about I might have too much to write about Since I use this space to help myself think through some things, I found that I sometimes have a tendency to write about things that maybe I shouldn’t write about publicly, either for personal privacy reasons, or for professional courtesy reasons.
Back during the early days of gaming (both PC and console), there weren’t many game releases, and I had a lot of free time, so whenever I got a new game, I usually managed to play a fair amount of it. Ever since the advent of Steam and its constant sales, this has been a lot more challenging, especially since I have had much less time for gaming since I started working.
Some random notes I had jotted down about Christmas: Filipinos love Christmas. Filipinos are well-known for celebrating the longest Christmas season, with decorations and Christmas songs starting to become common around September. The most well-known meme around this time is about the song Christmas in our Hearts by Jose Mari Chan, which is one of the songs malls often play during the season. Many memes leading up to December or even earlier imply Jose Mari Chan preparing to strike on unsuspecting Filipinos.
Gift giving is something I’m quite bad at. Okay wait, that’s not accurate. I’m fine with the gift giving. The real problem I have with is gift-buying. I’m not good at buying gifts for other people. The main problem I guess is that I’m not good at buying things in general, unless those are things that are of particular interest to me. And since my interests are a bit niche, there tends to be not much overlap with what gifts I think other people will appreciate.
A Nobel Prize-winning psychologist says most people don’t really want to be happy Interesting article, a quote: Kahneman argues that satisfaction is based mostly on comparisons. “Life satisfaction is connected to a large degree to social yardsticks–achieving goals, meeting expectations.” While I guess this is largely true for society as a whole, it’s something I try to avoid for myself, since comparison is the thief of joy. The article argues that satisfaction is different from happiness, which is fleeting.
Facebook is in hot water again, over controversial deals it made in the past that compromised user privacy. I have been considering for a long time to leave Facebook. These are the challenges: For many people, Facebook is the only way I have to contact them I don’t have a better place to share family pictures (again most of the family is on Facebook) certain follows/groups relevant to my interest are Facebook only Basically the network effect.
Donald Trump and Mark Zuckerberg are different people in vastly different positions, but I find it interesting the uncanny parallels their stories have taken them through. Like many non-Americans, I’m acutely aware of the shenanigans of Donald Trump, the current US president. It would be a fascinating story, if only it weren’t so bad for the world. His character arc is of someone who rose to the level of this own incompetence.
The other day I was passing through the QC memorial circle (as is my wont) and I decided to walk around the tiangge/flea market that’s often there. It seemd larger than usual that day, so I figured I should finally take a look. And in the process I remembered what I dislike about local flea markets: 90% of the stalls are selling some form of clothes (which I have no interest in browsing - maybe if these stalls sold something my size for once!
I’m a fan of unpredictability and randomness, and I easily get bored with regularity, repetitiveness or consistency. I once articulated this as a life philosophy to a friend - that I preferred a life with periods of highs and lows, like a sine wave, instead of a simple and boring flat line. This is why I often enjoy games like Scrabble or MTG. Basically competitive skill-intensive games that still have a significant element of random chance, so that the games while interesting, almost never play out the same way.
I’ve been playing MTG Arena for a good while now, a little bit during the closed beta, and now I think we’re still in open beta (?) because things still keep changing around. But I figured I could put in a little commentary about how this thing is going so far. I’m coming off the POV of a long-time Magic the Gathering player of course, with a little bit of comparison to Eternal and Hearthstone, the two digital CCGs I’m most familiar with.
It can be easy to get overwhelmed by all the stimuli that the modern world provides us. There’s a seemingly endless stream of problems to be overcome, bad news to be angry about, movies to watch, tv shows to binge, games to play, books to read, pictures to share, gossip to be had, new things to learn, challenges to be faced, and so on. And with all of these comes the pressure to make the most of your time, to make sure it isn’t “wasted”.
I read this article about how Bill Gates spent 5 years not watching TV or listening to music in his twenties while building Microsoft. Now, I’m pretty sure I watch a lot of TV, unapologetically. Quite possible too much. But I can’t help but wonder if maybe I would be more productive if I had the same kind of discipline Bill Gates had, and maybe that would increase the odds that I could focus and create something of consequence?
Sorry, a bit more doom and gloom this time: David Attenborough: collapse of civilisation is on the horizon I was visiting at a friend’s house recently and our discussion turned to the impending doom threatening the world. While I hold out a tiny bit of hope that maybe somehow human society and/or science will find a way to save us, he was not so optimistic. He reads and writes a lot of speculative fiction and his view is that we are inevitably headed towards an era of land scarcity and resulting wars due to climate changes.
When another person expects something from you by a certain date, be it a meeting, or a debt to repay, or a work-related submission or something else, and you are unable to provide it by the agreed upon time, you owe it to that person to tell him you can’t make it, explain why, and provide a plan for moving forward. It’s a basic courtesy. If you made an appointment to meet at a certain time and place, and it looks you’re not going to be able to go, message the other party and tell them.
For any nontrivial software project of at least moderate team size, there can be a significant cost to onboarding a new team member, especially at later stages when you are rushing to meet deadlines. The most signifiant cost is of course the communication overhead as described in the Mythical Man Month. Fun story, the CEO of a company once told me they would add more developers to a delayed project to meet the deadline and when I pointed out the increased overhead he said to me that it wasn’t a problem because they would just assign modules to those devs that have minimal dependencies so they don’t have to communicate so much.
This might surprise you, but I tried my hand at writing fanfiction back in the day. Most of it was Final Fantasy-related (as that was what I was really into back then) and the odd Ranma ½ one (mainly because I was a member of an anime-focused fanfic collective, called the “Nikholas F Toledo Zu” for inside joke reasons, writing under the name “Vector”). Anyway, I’m not exceptionally proud of the writings, but I like having all my work available on this blog/website/whatever, so I’ve added them at this link: Fanfiction.
I only recently found out about Github pages, which allows you to serve static content out of a Github repository, with a github.io subdomain. You can also point a domain name to it if you want (I haven’t tried that yet). It’s a quick and easy way to host a static site for free. Here’s mine: roytang.github.io and the corresponding repo. There isn’t really anything there right now, I just put up some links so I’d have something.
Friends will know I’ve been wanting to get a Macbook for quite a while now. I have chat messages as far back as 2016 musing about buying a Macbook Pro. I haven’t had a serious personal laptop purchase since 2008. (Side note: Qualifier “serious” because I do have a low-spec MSI laptop I think I bought for cheap some years ago that I’m not really happy with. It’s got a dead battery now, I should probably install it with a more lightweight Linux or something and maybe use it as a torrent device or such?
I recently found a stash of old DOS games we used to play, so I thought I’d write about the early days of PC gaming. My PC gaming career (such as it is) started way back in the MS-DOS era. It was an interesting time to be a gamer, to say the least. It was a time when you had to make bootdisks and fiddle around with files like autoexec.bat and himem.
Recently, Q&A site Quora announced that they got hacked. Quora is good reading, but it seems difficult to navigate and chance upon the really well-written answers. Or maybe I dunno what i'm doing — Roy Tang (@roytang) August 18, 2012 I started reading Quora back around 2012. My impression then of the site is that it encouraged insightful, well-written, story-like answers. This was opposed to other Q&A sites like Stackoverflow which encourared concise and clinical answers.
I must admit being a bit unconcerned with online privacy tracking by the large vendoers (Google, Facebook, etc). I mean, I do tend to use my real name as username after all, so most everything I do online can be traced back to me. I assume that anything I do on the internet can be figured out by other parties, so if something is important enough to me that it should be kept private, it shouldn’t go on the internet at all.
Via a blog post by Dave Martin, I read about Steven Pressfield’s quotes on “The Resistance” that keeps us from doing our work: The danger is greatest when the finish line is in sight. At this point, Resistance knows that we’re about to beat it. It hits the panic button. It marshals one last assault and slams us with everything it’s got. (Side note: I’ve put his books on an Amazon wishlist.
Last week I looked into sentiment analysis, basically it means analyzing text to find out whether it’s “feel good” or “feel bad”. My idea was to use this to analyze my public posts (specifically, on Twitter), to see whether I was trending towards being more positive or more negative. Unfortunately, when I tabulated the data, it was unexciting. No discernable trend of any kind, no plateaus signalling times of stability. Just wild swinging ups and downs as you’d expect from a normal, well-adjusted person.
China is setting up some kind of large-scale “social credit system” to rank and monitor the behavior of their citizens. Citizens with low scores can get penalized in various ways like being denied travel or access to top-tier schools and so on. It’s quite creepy, and the mere idea evokes the dystopian Black Mirror episode “Nosedive” where people use an app to rate other people. China’s social credit system might be even worse than the Black Mirror one because:
Looking at my archives, I was blogging regularly from 2005-2009, mostly because I was really active in competitive MTG during that time. Starting 2010, my blogging activity started to taper off, with less than 60 posts until 2015. I tried to revive the habit around mid-2016, posting at least once a week, but the writing slowed down again around April this year (coinciding with one of the more busy periods for me work-wise).
The other day I wrote about how I’ve been walking on a regular basis recently. While the regularity and the tracking are fairly recent, I’m actually not that much of a stranger to walking as an activity. Even back when I was in high school I would often walk all the way home instead of taking the bus-and-jeep commute route I was supposed to take. It didn’t take that much longer, and I often enjoyed the solace (and I got to save a bit of money, even as a child I was quite frugal~).
It’s December the 1st, there’s this image I often share on this day: It’s a really stupid pun that I won’t explain (but it maybe only works in a Filipino accent.) I love puns! The best puns are so terrible and so great at the same time. Puns are like a tiny puzzle that your brain has to solve and when you do solve them, your brain has that tiny flash of “A-ha!
Some things I’ve been watching lately, aside from the usual TV shows I follow: For some reason, I watched two biopics this month. The first one is Hidden Figures, about three black women who were instrumental during the early days of NASA leading up to the Friendship 7 mission piloted by John Glenn. The movie is fairly interesting if you are even remotely interested in either the challenges faced in black history or math and science or the early days of the space program competition between the USA and Russia.
I mentioned in yesterday’s post about my daily walks that my brother got me a Fitbit Charge 2 mid last year, I thought I’d write a quick review. (Actually, this is mainly an excuse to write down a story about how stupid I am.) Anyway, yeah my bro got me a Fitbit. Or maybe I paid for it. I don’t really recall. The point is, I had it and I’ve been using it regularly for the past year and a half.
These days the only real exercise I get comes in the form of daily walks. When I took a work hiatus in 2016, it was one of the daily habits I promised myself I would pick up. During that time, I wanted to hit the often-recommended daily target of 10,000 steps per day. (Tangent: I found out while writing this post that this number may have no scientific basis after all)
The aforementioned quote is attributed to Theodore Roosevelt. I’ve been thinking about this lately as I try to plan for what’s ahead and what I want. I think one has to be able to decide what one wants independently of what other people are doing. As a concrete example, it’s easy to fall into the trap of “Oh, this other person in my field did X and now they are making so much money, should I take that path as well?
During the past few years, I’ve started following more artists (mostly comic-book related) on social media. Seeing the occasional art post wander across my feeds is often a welcome respite from the terrible news in the world today. I thought I’d share some of my favorites! Jim Lee is a comic book icon and for me his very detailed and elaborate pencils epitomize 90s comic art and his style still heavily influences many newer artists today.