Hello! I'm Mikey Gee, a software engineer by trade, and a lifelong resident of Los Angeles, California.
I discovered computer programming in high school, and knew right away I had found my calling. There is something magical about writing code and watching it work that fascinates me more than anything else. I currently specialize in front end development with the React ecosystem.
My other interests include sports (basketball, running, cycling, snowboarding / skiing), mindfulness, nature, animals, reading (non-fiction), movies / shows, investing, homes, and ₿itcoin.
I believe a healthy body and mind are the keys to making the most of our short lives. My top priorities each day are exercise, meditation, and reading. Politically, I believe that individual freedom and non-aggression are the principles that lead to the best possible large scale societies.
Do you want to change the world? How about beginning with yourself? How about being transformed yourself first? But how do you achieve that? Through observation. Through understanding. With no interference or judgment on your part. Because what you judge, you cannot understand.
What you are aware of you are in control of; what you are not aware of is in control of you.
Anthony De Mello
Work hard, be kind, and amazing things will happen.
The best way to reach me is by e-mail.
I am currently available for short term (3 months or less) or part time work only. There is no need to contact me regarding full time positions. If you have a smaller project or something not too time sensitive, I'd be happy to discuss working together.
I've never been into cars or driving. I've owned exactly one car in my lifetime, a stock 1999 Honda Civic. It served me well for 16 years. It was relatively cheap, fuel efficient, and got me where I needed to go. And it never broke down on me, despite my subpar driving skills that put it through 4 accidents.
Since 2011, I've lived within 2 or 3 miles of my workplace, so I started cycling to work. My car got less and less use, usually one or two short trips per week at the most. It seemed like a waste to pay for insurance and all the other costs of maintaining a car when I was using it so infrequently. Conventional wisdom says you need a car in LA, but with the rise of car sharing (Uber, Lyft, Zipcar) and delivery services (Amazon Prime/Fresh), it is starting to become more feasible to get by without one. As fate would have it, I got into an accident that while not too serious, caused enough damage to be a total loss. I was fed up with driving and didn't want to deal with it anymore. The insurance paid out $3500, and it was the perfect opportunity to try out life without a car. Instead of using the money to buy another car, I wanted to see how far it would take me using the alternatives. After 4 and a half months of this experiment, I've gotten by just fine and can confidently say that I prefer not owning a car.
Is a blog really a blog if you only update it once a year? Anyway for my annual site update, I'm doing a more personal post about my awesome cat River.
River was born on June 5, 2013. Her mom was a stray found on the street, and fostered by a kind woman named Wendy. After taking her in, she discovered the cat was pregnant and soon gave birth to 3 kittens, all female. Right around that time, I decided on a whim that I wanted a pet cat to keep me company. I had been living in my own place since 2006, and while I'm an extremely independent person, we all get a little lonely sometimes. I've always been fond of furry animals, but was never allowed to have one as a kid, so I didn't know the first thing about how to care for one. Luckily the internet exists now, and a cat sounded like the perfect balance of a fun and low maintenance pet. I scoured craigslist for a few days, and eventually came across a listing with 3 adorable gray tabby kittens. There were two left when I went to meet them, one was very hyper, the other very chill. I chose the hyper one, and took this picture with her.
So this is the second year in a row I barely avoided going a year without updating my site. Maybe I should just make this an annual thing.
This year I decided to spend part of my July 4 break updating my site to look better on mobile devices. It's pretty clear that mobile is going to overtake desktop usage pretty soon, if it hasn't already. When I'm at home, I do most of my browsing on an iPad now, unless I have something else to do that requires the desktop. I originally designed my site with only desktop in mind. The cool thing about updating for mobile, is that it encouraged me to simplify things, and overall I'm happier with the more basic and minimal look. I also added a light theme for easier reading. It's a pretty ghetto client side only implementation, so you might see some flashing, but for the most part it works ok. So go ahead, take a look at the site on your phone or tablet if you're not there already!
I've been developing with Backbone.js at work for about a year now, and it's been an adventure converting from a traditional Java server application to an all-AJAX single page application. I've run into quite a few challenges, especially with transitioning between views. There is not much information in the documentation about what steps need to be taken when matching a route and simulating a page change. Here are a few tips that might be helpful when getting started with switching views in Backbone.
My all time favorite TED Talk is Salman Khan on education from 2 years ago.
His book The One World Schoolhouse is also a great read. With the technology we have available to us today, there is absolutely no reason to continue with our fundamentally flawed school system.
Our current system is based on a model from Prussia, where the government mandated a standard education, and kids needed to be sorted and ranked to determine their role in society. That's why schools spend a fixed amount of time on a topic and give students varying grades. The more natural method of learning is the exact opposite of this. The grade should be fixed to "A" or mastery, and the amount of time needed to achieve this may vary among students. You should not be forced to move on to more difficult material until the prerequisites have been mastered.
Last year, I wrote a post about web scraping. The app I was working on was using PHP, so the HTML parsing code required a library that is probably not too well known. Since then I've started using node.js more, which makes scraping much easier. I thought I'd do another example with node, where it's possible to use the more common jQuery syntax for HTML parsing.
For this example, I'll be scraping song lyrics from LyricWiki. By exploring the site, I found that the URL pattern for a given track is http://lyrics.wikia.com/\[artist\_name\]:\[track\_name\]. So for this example, I'll pass the artist and track as arguments to my script.
I recently took a family vacation to China, and decided to rent a MiFi hotspot device so we could all share a cellular internet connection. This is a really great service for travelling internationally in a group. If you split the cost, it's very reasonable, and you don't have to deal with wonky hotel WiFi. It just works everywhere. I went through 3gsolutions and everything worked as expected.
One thing I forgot to take into account though is that when iCloud enabled devices connect through WiFi, they assume they have unlimited data and start backing up anything and everything. If the data plan is limited, as most of these services are, you'll start eating through your allocation fairly quickly. Thankfully we figured it out before I hit any big overage charges. So before you connect your iPhone or iPad, make sure to turn off iCloud backup and photo stream to avoid exceeding data limits.
It's pretty depressing to see that I haven't updated anything here in nearly a year. Obviously I'm not good at the whole blogging thing. I think I'm a decent writer, just very slow. I get overly self conscious at times and try to make things too perfect. I end up running out of time in the day and eventually abandon it.
Luckily(?), Twitter has forced my hand to do a site update, since they are nixing their public API and requiring authentication now. I opted to just use their iframe widget, which I'm not thrilled about, but it's easier to set up. Not that it really matters since I've tweeted 4 times in the past 8 months. I figured it was a good time to update the blog before a full year passed. Here's a lightning round of the past year:
I was working on my Jekyll blog page and noticed some funky output. It turns out that the content variable returns rendered HTML, and the truncate filter in Liquid was cutting it off in the middle of a <ul> element. I had previously thought the filter operated on the unrendered markdown content.
I wanted a way to just display the first part of longer posts for the blog page without breaking/invalidating my HTML. I googled around and found a couple of hacks, but they seemed unnecessarily complicated. It turns out that a split function was added to the Liquid filters a few months back, so what you can do is insert an HTML comment into your posts, split on the comment, and just display the first element of the resulting array. If you don't need to truncate, it will display the full post. I had to update my local Jekyll to get the (not so) new split function.
sudo gem update
NBA playoff season is here, one of my favorite times of the year. As always, I'll be rooting for my Lakers to win #17, and Kobe to win #6. I will be hating on Lebron and the Miami Heat. I seriously loathe that team, even more than the Celtics. Anyway, as much as I love NBA basketball, there are a few rules that really bug me, and could easily be changed to improve the game.
All of my rule changes take a cue from college basketball. The jump ball is such a silly mess. I don't know why they even bother with it. First of all, it's too hard to toss the ball perfectly straight and at the right height. Most of the time, the toss is horrible, and they either have to redo it, or whoever happened to be closer to the lopsided toss gets it. Other times, people will be jostling for position, and the ref has to stop and make sure there are no violations. And then even if someone controls the tip, there's often a lot of contact among the other players, and it ends up going to the other team. The solution to this problem is simple. Just alternate possessions like they do in college. It's much simpler and more fair than a jump ball. The height and jumping ability of players involved in a held ball shouldn't dictate who gets it. Neither should a bad toss.