PS Toolkit: Datepicker

In the first update to PS Toolkit in quite some time, I have added a datepicker tool to the arsenal. There are tons of options already available out on the web (mostly as jQuery plugins), but none of them quite fit my needs, so I built my own. PS Datepicker is simple to use, with a clean interface and a (fairly) robust code base. View the readme and download it here. »

Securing Your Site with SSL

Security on the web is one of those topics that can never be discussed enough, especially with all of the recent news about credit card fraud and user account breaches. However, as an independent developer with very little traffic (and let's be honest, nothing of particular importance on my sites), it has never really made economic sense to shell out several hundred dollars a year for an SSL certificate. I can't say enough good things about Digital Ocean, which I use as my hosting provider, and they recently started recommending a free SSL certificate authority called Let's Encrypt. Normally, I »

Custom 404 Page with Nginx

Setting up an Nginx server is pretty simple and most things work great out of the box. However, there are a few things that are not perfect and the 404 error page is definitely one of them. There's nothing wrong with it per se, but it is, well, a little bland. And if someone accidentally goes to an invalid link on your site, it just looks a little sloppy if they get that standard, boring error page. Making the error page itself is pretty straightforward; just create a standard HTML page with whatever error content you want on it (this »

Setting up Ghost (Revisited)

So, this is the third time that I've had to completely rebuild my personal site server, mostly due to things that I mess up when playing around with stuff I really shouldn't touch. Anyway, the blog on my site is powered by a nifty little tool called Ghost and I did a quick primer on custom Ghost themes awhile back. However, I wanted to re-explore the topic in a little more technical detail this time and I thought that I would put together a quick reference guide just in case I ever need to do this again (fingers crossed, but »

A Long-Awaited Update to PS Toolkit

As much as I love working with HTML and Javascript, there have always been a few things that have annoyed the hell out of me. One of those is the lack of options for styling select elements and a few years ago, this frustration led me to the development of what eventually became PS Toolkit. PS Toolkit is nowhere near complete, but when I was finished with the initial version, it contained three tools: a custom ps-dropdown element to replace select inputs, a ps-modal window that can be called simply and easily, and a ps-toast function that allows for the »

How do You Count Cows? With a Cow-culator!

Sorry, that’s a really corny joke from my friend who happens to be a dairy farmer, but it fits appropriately with the theme of this post. Earlier this evening, when I probably should have been doing homework, S was talking to me about a cool little game site that she found. is a simple game that plays an audio clip of the word “cow” in a loop while the user moves the cursor around the screen looking for an invisible cow. The trick is that the volume of the audio loop increases as the cursor gets closer »

Is It Running?

I'm getting ready to start my summer internship tomorrow, we are in the middle of working on an exciting new piece of software, and I have a million other unfinished projects on the docket, but despite all that, I decided to take a few hours and throw together a tool that I've been meaning to build for some time: a dashboard to test whether all of the websites and applications I have worked on are currently up and running. There are a ton of great tools out there already that do exactly this and more, but it was a fun »

Code Formatting with Highlight.js

Most modern IDEs and text editors include an extremely useful feature that most developers take for granted: syntax formatting. Having different elements of your code colored, bolded, italicized, etc. greatly improves the readability and helps important information stand out. Unfortunately, Ghost and most other online publishing platforms do not include any syntax formatting by default, so it's up to you as the user to implement syntax highlighting and make sure your code is more than flat grey text in a flat grey box. There are several options out there for syntax formatting, including Prism.js, Syntax Highlighter, several Wordpress plugins, »

Setting Up a Blog with Ghost

My blog (if you can call it that, with the number of posts I have made) has been supported by Wordpress since the launch of my site. Wordpress, for all it’s popularity, has some faults: it’s cumbersome, lacking in security in several key areas, and it is overused in my opinion. Besides, it’s just plain annoying and I’m tired of it, so I’ve decided to switch to a new platform, Ghost, which runs on Node.js and has rave reviews. Downloading Ghost is easy enough, once you find the site (, just »

Moving to NYC

So, I took the plunge and moved to New York City. This was not one of those “I quit my job and moved to the city with a hundred dollars in my pocket” stories, but in my world, it’s been pretty exciting. New York is definitely the place to be and I’ve longed to live in a large city again since leaving Hong Kong a few years ago. Last fall, I applied to a number of MBA programs and (surprisingly) received an acceptance letter from NYU Stern in the spring. I’m not sure if I have fully »