Roy Tang

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

Blog Notes Photos Links Archives About

All entries tagged software-development.

You can subscribe to an RSS feed of this list.

Jun 2021

  • Breaking Prod

    HBO Max caused a bit of a stir among its subscribers last week when they accidentally sent out an email titled “Integration Test Email #1” to some large number of their subscribers, which spawned a lot of clever commentary and snarky remarks on Twitter. A few days later HBO Max sent out an apology blaming an unnamed intern for the boo-boo, which spawned a lot of “Dear Intern” tweets with many commiserating with the unnamed intern by sharing their own stories of mishaps from their younger days.

    read more (306 words)

    Posted by under post at #software development
    Also on: mastodon twitter / 1 0 / 306 words

May 2021

  • Thoughts on Vue.js

    I’m not big on modern frontend JavaScript frameworks (mostly because I think web pages should use as little JS as possible), but when I do find the need to use one, my weapon of choice is Vue.js. I dislike React, but mostly because (a) my first experience with React was with mobile development using React Native for mobile app development, which I generally don’t like; and (b) I don’t like Facebook, which backs React.

    read more (656 words)

    Posted by under post at #software development
    Also on: mastodon twitter / 1 0 / 656 words

Apr 2021

Dec 2020

Nov 2020

  • I recently did a server migration since I moved to new hosting, The move was from managed/shared hosting to a VPS, these are some notes I took during the process, which I figure might be helpful if I ever tried to do this again. (And maybe someone else finds it helpful too). Links and references to helpeful resources are included. Setting up a webserver and WSGI container I already knew I wanted to use Nginx (managed hosting on the old server always used Apache), that meant needing to choose a WSGI container for the Django apps.

    read more (1073 words)

Sep 2020

Aug 2020

  • On Mozilla and Firefox

    Mozilla made the tech news recently for laying off a whole lot of people. (Official statement). People were alarmed and worried about the future of what is the last major independent browser and the open web, bit it looks like it isn’t that bleak. Most of the layoffs were to teams other than those working on Firefox, things like the experimental browser engine Servo, devtools, and MDN. The core Gecko team seems to be unaffected.

    read more (904 words)

Jul 2020

Jun 2020

  • Scraping Facebook

    I had been meaning to quit Facebook for more than a year maybe, but I kept putting it off. The main reason being that I like having backups of my own digital data (still very much a pack rat), and Facebook’s social media export is less than ideal, for me at least. Less than ideal why? It doesn’t include a lot of content I would like backed up, including: comments on my posts (there have been some good conversations with friends over the years I would prefer to preserve) things I’ve reposted from other people content of certain groups I’m members of (again, mostly for some interesting discussions over the years) pictures posted by other people that I’ve been tagged in For a while I looked around for scraper programs/scripts to this for me, but none really did what I wanted.

    read more (586 words)

Apr 2020

Mar 2020

  • Browsers and HTTP

    Drew Devault wrote a great post/rant about the reckless limitless scope of modern web browsers: I conclude that it is impossible to build a new web browser. The complexity of the web is obscene. The creation of a new web browser would be comparable in effort to the Apollo program or the Manhattan project. For the past year or so, I’ve been thinking about contributing to an open source project.

    read more (815 words)

  • Pure CSS Spoilers

    Edit 2020/04/17: A month and a half later, I found a better way to do this! I previously had some post that had some content hidden via spoiler tags, using a custom Hugo shortcode. Since I’m an old-school developer I was previously doing this using some Javascript run on load: let elements = document.querySelectorAll(".spoiler_header"); Array.prototype.forEach.call(elements, function(el, i) { el.addEventListener( 'click', function( event ) { let nextEl = el.nextElementSibling; let display = getComputedStyle(nextEl)['display']; if (display == 'none') { nextEl.

    read more (320 words)

    Posted by under post at #software development #css
    Also on: twitter / 2 0 / 320 words

Feb 2020

Jan 2020

  • Flask vs Django

Nov 2019

  • Is SQL a dying art?

    I was helping my brother check some database issues the other week, and he mentioned how impressed he was with how quickly I was able to come up with SQL queries on the fly. I told him that SQL was one of the skills I considered myself to have mastery over. This shouldn’t be surprising given my early career path: for most of my first year working as a software developer, I was working on reports which involved lovingly handcrafted (and oftentimes quite complicated) SQL queries.

    read more (365 words)

    Posted by under post at #software development #sql
    Also on: twitter / 0 / 365 words
  • What to do in a production crisis

    Despite our best efforts as software developers, it can still happen: production goes down. Or some sort of bug introduces catastrophic data error. Hopefully you have a support/DevOps team to handle the response. If not, the dev team themselves have to step in. This usual means a mad rush to figure out what happened and how to fix it, sometimes during off hours and maybe even into the early morning, all while facing pressure from clients and higher-ups.

    read more (441 words)

    Posted by under post at #software development
    Also on: twitter / 1 1 / 441 words
  • DevNotes: Python's yield

    I’ve been using Python for well over 10 years, and I still don’t have an intuitive mastery of one of its keywords: yield. Everytime I see it in someone’s code I need to stop and mentally remind myself what it does. I figured I’d write a devnote to help improve my recall. Typically, yield is used in a function with a loop, like so: def some_func(lim): for i in range(0, lim): yield i yield means the function returns a “generator” that can be used as an iterable in a loop:

    read more (172 words)

    Posted by under post at #software development #devnotes
    Also on: twitter / 1 0 / 172 words
  • A while back I found myself having to figure out how to compile/build/run a mobile application. The developers previously assigned to the project were no longer available to consult with, but they did leave behind some documentation. However, their documentation quality left a lot to be desired. The instructions they left basically amounted to: npm install ionic serve ionic codrova run android/ios Okay, first sign of trouble is that their instructions were basically commands that anyone who knew the app used Ionic would be able to Google.

    read more (725 words)

    Posted by under post at #software development
    Also on: twitter / 0 / 725 words

Aug 2019

  • Python: Markov Chains

    Back when I was still learning Python in 2008, one of the first “fun” scripts I wrote was a text generator using Markov chains. I’d run it against all the chat logs I had with people at work and serve the results from a webserver on my computer. THe results were often amusing and sometimes hilarious. Since I’ve been going through my old scripts lately, I thought I’d update that script to Python 3 (read: add parentheses around print params and use pathlib) and run it against all the posts on this here site.

    read more (162 words)

    Posted by under post at #software development #python
    Also on: twitter / 0 / 162 words
  • Devnotes: Python Pathlib

    Ever since I started learning Python back in 2008ish, I’ve been using it as my primary scripting language for various tasks such as processing log files, organizing my own file system, processing stuff on this blog, and so on. A lot of it is basically moving files around. In the days of Python 2, that involved a lot of imports of different libraries like os, shutil and glob. It can become a bit messy with so many imports, and I often can’t remember which import I need for a particular case and end up having to search for the documentation (or stackoverflow, let’s not kid ourselves here).

    read more (316 words)

  • Big news in online repositories this week is that Bitbucket is sunsetting support for Mercurial! This might be the death knell for Mercurial, although Git was already the super popular choice before. Back when I started using online source control for my personal coding projects I started out with Bitbucket over Github because they offered unlimited private repos and Mercurial (which I had already tried out before at work, so at first I preferred it over git).

    read more (279 words)

  • I recently found myself doing a really small project as sort of a proof of concept/demo for a potential client. It often seems that it might be a waste of time to do something like this since you don’t know if the project will actually push through or maybe the client will want something else. To kind of hedge my bets a bit, I decided to take the opportunity to try out some new technologies so that no matter what I at least learned something from all of this.

    read more (750 words)

    Posted by under post at #devnotes #software development
    Also on: twitter / 1 0 / 750 words
  • I decided to start doing small “devnotes” on developer stuff I’m doing so I can refer to them later (and also because I feel like I could use more technical content on this blog) Today is about PostgreSQL. I haven’t used it much beyond standard ANSI sql stuff. You won’t always have a graphical interface to access your database, sometimes you need to ssh to prod and query the database from the shell.

    read more (317 words)

    Posted by under post at #devnotes #software development
    Also on: twitter / 0 / 317 words

Jul 2019

  • I have a small mobile app that I wrote using React Native (henceforth RN) back in 2017, currently deployed on the Google Play Store and Apple App Store. Shortly before my US trip, I got an email from Google telling me about a required action: By August 1, 2019, all apps that use native code must provide a 64-bit version in addition to the 32-bit version in order to publish an update.

    read more (1080 words)

  • 10X Programmers

    The topic of the mythical “10x programmer” has been the topic of discussion recently on tech twitter, due to a thread listing out the supposed signs of being such a mythical beast. 10x engineers Founders if you ever come across this rare breed of engineers, grab them. If you have a 10x engineer as part of your first few engineers, you increase the odds of your startup success significantly. OK, here is a tough question.

    read more (1948 words)

    Posted by under post at #software development
    Also on: twitter / 6 / 1948 words

Apr 2019

Mar 2019

  • A Quick Twitter App I Wrote

    I wish I had a more concise way to describe it, but I really don’t. Some time ago this guy I follow on Twitter, visakanv wanted to know how to do a certain search: he wanted to know who a given famous person follows on Twitter, and among those, finds the one who follow him (visakanv), so he could network through them. I might not be explaining the concept too well, here’s the thread.

    read more (373 words)

    Posted by under post at #Software Development
    Also on: twitter / 0 / 373 words
  • Lies and marketing

    I mentioned before that as an engineer, I’m not fond of marketing. (Click to view full-size) 17 Mar 2019 5:56amClose Image credit: Dilbert.com (Disclaimer: Liking the Dilbert comics is not an endorsement of Scott Adams’ politics) It’s not that I can’t be good at salesmanship either. I have a good grasp of communication skills and think I have a decent chance of writing good copy.

    read more (320 words)

    Posted by under post at #Software Development
    / 0 / 320 words
  • If I could give some advice to someone starting out in their software development career, it would be this: Don’t stay in the same place too long. The first company I worked at, I stayed with them for thirteen years, which I now feel was way too long. I have to admit, the work was hard and challenging, but I was young and had a lot of energy and was willing to work the long hours.

    read more (480 words)

    Posted by under post at #Software Development
    Also on: twitter / 2 / 480 words
  • Another repost from my Quora answers, this time some info for anyone looking to move into programming. What are the pros and cons of making your career in programming? Pros: It is a very rewarding career financially. Software development often ranks in the top 10 highest-earning careers in most countries There is a lot of scope - you could be developing web applications, mobile applications, embedded applications, client-side, server-side, data analysis, artificial intelligence, games, etc It is very difficult to be bored.

    read more (459 words)

    Posted by under post at #quora #Software Development
    Also on: twitter / 0 / 459 words
  • Given my recent misgivings about Quora, I thought it might be a good idea to cross-post some of my answers from there into this blog, with some edits even. So here’s the first one! (stuff in italics were added during the cross-post) How can you read and study a large software project source code? Attacking a large, existing codebase that you are unfamiliar with can be a daunting endeavor.

    read more (393 words)

    Posted by under post at #quora #Software Development
    Also on: twitter / 0 / 393 words

Feb 2019

  • Reddit PH: Software Dev Q&A

    I had some free time the other day so I randomly decided to post in the PH subreddit’s regular afternoon random discussion thread, asking for questions about software development. I ended up typing some longish answers, I thought I’d copy them over to the blog in case anyone was interested. TBH I meant more like StackOverflow type questions with specific technical problems, but I ended up answering mostly career-related questions, which is fine, but disclaimer: I don’t claim to be an expert, these are just my opinions on things.

    read more (1124 words)

  • Hacktoberfest

    Last October I participated in #Hacktoberfest, sponsored by DigitalOcean and Github. It’s a “celebration” to promote open source activity, and basically you just need to submit 5 pull requests to any github repository, and they give away swag to anyone who completes the activity. Microsoft held a [counterpart celebration] where they only require you to submit 1 pull request to any Microsoft repository. I’ve always wanted to start participating in Open Source, but it’s a bit difficult to find a good place to contribute (other than logging issues of course).

    read more (494 words)

  • A while back I started a Twitter trivia bot as a weekend project. That bot is still up and running on Twitter, you can check it out there! But today, I thought I’d write about the answer-checking mechanism used by the bot. It was a bit interesting to me because it was the first nontrivial use I had for Django’s unit testing framework. I’m not too keen on unit testing web functionality (something I still have to learn), but this seemed an appropriate first use of a unit test framework for several reasons:

    read more (579 words)

Jan 2019

  • I’ve been working with Javascript for more than a decade. Last week while helping another developer debug a problem, I had to Google how to check if an element exists in a Javascript array, something superbasic, that one would expect most newbies to know. I’m sure I Google some superbasic thing at least once a week. It’s not embarassing or anything, it’s a common occurrence. I’m surely not alone. Just last night a tweet about this crossed my TL:

    read more (340 words)

    Posted by under post at #Javascript #Software Development
    Also on: twitter / 0 / 340 words
  • 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.

    read more (435 words)

    Posted by under post at #Software Development
    Also on: twitter / 0 / 435 words
  • Git vs CVS

    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.

    read more (702 words)

    Posted by under post at #Software Development
    Also on: twitter / 0 / 702 words
  • Tech to Learn in 2019

    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).

    read more (691 words)

    Posted by under post at #Software Development
    Also on: twitter / 2 / 691 words
  • Solution Architect

    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.

    read more (388 words)

    Posted by under post at #Software Development
    Also on: twitter / 0 / 388 words