Roy Tang

Programmer, engineer, scientist, critic, gamer, dreamer, and kid-at-heart.

Posts Comments Links Archives Resume About

:: 617 words

software-development

Hopefully by now most developers and project managers are well aware of¬†the mythical man-month and Brooks’ Law: Adding manpower to a late software project makes it later The idea is that communications overhead scales up quickly as you add more people to a project. Oftentimes it is counter-intuitively not worthwhile to keep adding more people to try to catch up. Some implications of larger team/project size may not be immediately obvious.

read more

:: 696 words

opinions

  At my old job I used to have this group of coworkers I had Friday lunch outs with. Inevitably, every Friday around noon¬†someone would message the others asking “where are we eating?”. Now, there are a lot of good places to eat around the area and we’ve all been working there a while so most of the time we don’t care where we eat and we’d say we’ll decide when we get to the elevators.

read more

:: 366 words

software-development

Just a list I’ve been maintaining for a while: (Disclaimer: This list in no way implies that developers who don’t exhibit all of these attributes are terrible human beings who don’t deserve to live. But working with developers who exhibit many of these traits will probably result in a better experience over the course of your developer career.) Laziness,¬†Impatience and¬†Hubris – from the well-known (notorious?) Larry Wall quote Communicates well; is able to explain and communicate his ideas clearly, especially to nontechnical people; able to write good documentation Understands the concerns with scheduling and project management and communicates clearly with the team to avoid problems.

read more

:: 483 words

opinions

“If you know the enemy and know yourself, you need not fear the result of a hundred battles. If you know yourself but not the enemy, for every victory gained you will also suffer a defeat. If you know neither the enemy nor yourself, you will succumb in every battle.” ‚Äē Sun Tzu, The Art of War I was reading a forum thread recently about learning competitive Street Fighter.

read more

:: 322 words

python software-development

So the other day I was reworking a Python script that I had been using for years on my home PC to manage and categorize some downloaded files for me. This time I wanted to add some smarter behavior to make it more able to figure out when to group files into folders without constantly needing manual intervention from me. To do this, I needed to persist some data between runs Рso that the script remembers how it categorized previous files and is able to group similar files together.

read more

:: 610 words

opinions

“Democracy is the worst form of government, except for all the others.” ‚Äē Winston S. Churchill In the current world political climate, it seems that in many instances democracy and the related values (equality, human rights, and so on) are increasingly taking a back seat to populism and increasingly authoritarian leaderships. One sometimes has to¬†consider whether authoritarian states would in fact be more effective in this day and age.

read more

:: 420 words

software-development

Because of the nature of the web and the fact that you should never trust user input, all the validation in a web application should be done on the server side. You can additionally provide validation on the client side (via JavaScript), but this is only a concession towards a better user experience and should not be used as a substitute for server-side validation. One would think that anyone with a basic understanding of how HTTP works would understand the above easily and any failure to practice it should be considered amateur hour.

read more

:: 248 words

Random statistics from 2016: 74 blog posts (total of 769 currently on this site, some imported from as early as 2002. The record for a single year was 148 back in 2008, but that was back when I didn’t do social media much so even short posts made it to the blog, delicious bookmarks were auto-posted here, etc.) 50,135 words written for¬†Nanowrimo 321 sketches submitted to r/sketchdaily Duolingo streak: 225 days Answers written on Quora: 427 Programming languages/frameworks learned: 4 Instagram posts: 390 Facebook activity: 218 statuses, 178 links, 164 photos, 31 videos.

read more

:: 261 words

opinions self-improvement

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¬†(“My New Year’s Resolution is 1440×900!

read more

:: 226 words

review gaming

Just in time for the end of the year, I finally finished Xenoblade Chronicles X, which I started playing around the first week of August (5 months!), with 120+ hours of game time. The game doesn’t have the best graphics (WiiU, etc), but I really like how it looks and how the world is built and all the different environments and the weird and sometimes absurdly large beasts. There’s a whole lot of stuff to do in-game.

read more

:: 291 words

software-development

In one of my most recent projects, a large system that had gone through a relatively long and unstable period of many, many changes due to sales demonstrations, different clients and whatnot, one of the “fun buffer tasks” I always kept around for devs was code cleanup. Because of the unstable nature of the project, there was always a lot of duplication, unused/unnecessary/obsolete classes/functions/files and so on. Unnecessarily large CSS files where most of the selectors were no longer really needed or JS libraries that weren’t actually used.

read more

:: 359 words

opinions

I traditionally try to save some time on the week between Christmas and New Year’s Day to do some cleaning up and decluttering of my stuff. One would assume that having more time meant I would be better able to organize my stuff and all that, but one would be wrong. My room still has stacks of books, toys, Magic cards and other stuff in random places. Or maybe I just have too much OCD that I want everything to be neat and organized, but I’m not industrious enough to make it happen.

read more

:: 581 words

software-development

Related: Learning new skills While many people working as programmers/software developers are happy enough specializing in a single programming language or platform, I generally consider it a better idea to have a wider toolset and the ability to easily pick up new programming languages as needed. The benefits should be obvious: when you have a wide variety of tools under your belt and are able to quickly learn to use a new tool, the number of work options you have increases greatly.

read more

:: 838 words

self-improvement

When Hanamichi Sakuragi from the manga¬†Slam Dunk tries to get into the basketball club, he insists he’s a genius who doesn’t need to practice the basics and instead wants to go immediately to doing spectacular things like Slam Dunks. Sadly, the vast majority of us cannot claim to be geniuses at anything, and we are forced to undergo a bit of hard work if we want to learn a new skill.

read more

:: 321 words

software-development

In any reasonably large software project, the system will be so large that no one developer will have a good grasp of the details of every function in the codebase. The tendency is for developers to specialize – that is, developers tend to focus only on certain parts of the codebase and become more familiar with that part, while not having much knowledge about the other parts. This tendency is self-reinforcing – once it becomes known that the developer is an “expert” in the given module, there is a tendency that he will be assigned the most difficult and urgent tasks or fixes related to that module, further cementing his expertise.

read more

:: 640 words

writing

Often I have these days where I’m supposed to be writing something or drawing something or coding something and I just can’t get to it. Some kind of mental block makes it difficult. And you try to focus your mind and clear your thoughts, but it just doesn’t help. Here are some ideas for how to get past mental blocks. Toss out ideas that weren’t working and start over.

read more

:: 354 words

software-development

I was in a meeting once with my boss (literally the CEO, a Malaysian) and some representatives of another company (Americans) where we were discussing the technical details of a possible future partnership. At one point, one of the Americans said to my boss that he was pleasantly surprised that I was openly speaking up independently of my boss and willing to correct him on some points when he didn’t quite get the technical details right.

read more

:: 1610 words

writing

As I recall, today was at least my fifth Nanowrimo attempt; the first one was sometime before 2003 (I would guess it was in 2000 or 2001 before I graduated from college), the second one was in 2003, then 2006, then 2011, then finally the fifth one this year. My best prior attempt was back in 2011, when I made it up to 22,000+ words. At just around 1am on the early morning of November 30th this year, I beat that record and have won Nanowrimo for the first time.

read more

:: 361 words

javascript software-development

In JavaScript, referencing¬†variables that are declared outside of a function’s scope can be tricky.¬†If you have code like this: var btn = document.getElementById("BTN"); var test = 1; btn.onclick = function() { alert(test); } test = 2; The click handler above retains a reference to the test variable even though it falls out of scope as soon as the script block finishes execution. When you actually click the button, the alert will show the last value of the variable when the block finished execution (2) instead of the value at the time the function was initialized (1).

read more

:: 191 words

opinions self-improvement

If a friend found out your work was horrible, would you want to know? Or would your feelings be hurt? If your coworkers think you’re doing something wrong, would you prefer that they keep quiet or that they call you out? As a leader, do you prefer to have sycophants who sing your praises or people who are willing to tell you that you have no clothes? Is your ego more important than doing a good job or¬†self-improvement?

read more

Roy Tang is a:

roytang.net is a personal site; I post about a random assortment of topics that interest me including software development, Magic the Gathering, pop culture, gaming, and tech life. This site is perpetually under renovation.