Skip to main content


I'm so done with C

I have a real soft spot in my heart for C, and I really do think there are still some valid use cases for C. However, in most cases, you should use something higher level. Case in point:

I was watching a video on C called How I program C. Here's a screenshot:

The video was highly recommended by someone. However, at some point he said (roughly), "I'd rather have 100 lines of C code that I wrote myself than 2 lines of mysterious code in a higher level language because I'll at least know exactly what's going on in the C code, so there won't be any bugs hiding."

It really made me think, where are bugs more likely to hide? 2 lines of Python or 100 lines of C? What about 2 lines of Go code?

Anyway, I was surprised that he said he said he only spent 20 minutes a year fixing memory leaks in his C code. Hence, I decided to peruse the comments on YouTube:

Yeah, ok, I'm done.

I finished Andrew Ng's Machine Learning course on Coursera

A few months ago, I was talking to my buddy, Jarek. He highly recommended Andrew Ng's Machine Learning course on Coursera. He suggested I take it. For some reason, I felt called to take it, so I did. It's one of the best courses I've ever taken.

I'm not going to lie--it was quite challenging. It's been a long time since I've done serious math like that. However, I think it was a perfect balance of rigorous yet still approachable and practical. Thank you, Dr. Ng.

I didn't think I'd be able to take the class given my already busy life. However, my wife suggested I take Fridays off to work on it. My bosses, Inanc and Eric, let me take vacation time every Friday in order to work on the class. It took about two full days per week to keep up with the class.

I'm also grateful to my co-workers, Mathilde and Arnon, for telling me I'd be able to make it through the course. However, I'm most grateful to my wife for not only encouraging me but also lett…

JavaScript: ForwardJS Day 2

IntroductionI went to ForwardJS. Here are my notes for day 2:Create Electronic Dance Music with JavaScriptWalmik Deshpande"When you go to a club or a party or a rave.. What is one of the most obvious things you notice about the music?"It's repetitive!"Since we are engineers, what comes first to mind when we see something repeating itself over and over again?"Automate the damn thing \m/"I've created a Node.js module called Scribbletune which has a very minimalistic API (only 3 methods). I'd like to showcase this module along with the options available to us today when it comes to creating music with JavaScript & Node.js right from the terminal. Using my module and regular JavaScript String and Array functions I will put together the structure of a Electronic Dance Music track and show how easy it is for you to start dabbling with EDM using JavaScript"Unfortunately, I missed this talk. I heard the demos were pretty awesome.One person told me…

JavaScript: ForwardJS Day 1

IntroductionI went to ForwardJS. Here are my notes for day 1:Livable CodeSarah Mei @sarahmei @LivableCodeShe's the chief architect at She's been doing software consulting for 10 years--half of her career. She runs RubyConf and RailsConf.She talked at a very high level about the software process in general such as the Capability Maturity Model, Conway's Law, the statement that there's no silver bullet, etc.There's the code, and then there's the team. She's focusing on the codebase.If you see a problem in your code, it's reflecting a problem in your team, and vice versa. is Brooks' paper on "No Silver Bullet".Software is more like theater people putting together a play than factory workers making cars.Software projects are never "done" these days.She talked about software architecture.New jobs are in application development. Rarely do they focus on the architectural concerns. The frameworks alre…

Dear new guy: Some personal advice from an old software engineer to a new software engineer

IntroductionDear new guy (or girl), I threw together this doc based on advice I’ve given to other people in the past. Hence, it wasn’t all written with you in mind, but hopefully, there are a few useful nuggets in here.First of all, beware of pride. Pride has been the downfall of countless individuals. Among other things, it prevents you from being open to contrary points of view which stunt growth.Second of all, you should know that you are talented and intelligent. However, these things are not enough to succeed. There are other things such as discipline, hard work, follow through, prioritization, graciousness, negotiation skills, networking, general communication skills, etc. that are all important for success in our line of work.Email and SlackThe keys to productivity are discipline and flow. Flow takes awhile to get into. Anything that interrupts your flow is disastrous for productivity.Email and Slack are destroyers of productivity. I find that if I read all of my email early in…

JavaScript: Porting from React Router v2 to v4 (with tips for Enzyme and MobX)

I recently ported a large app from React Router v2 to v4. It was hard. I jotted down some notes in case you have to do the same thing.First of all, start with the video, and look around in the Quick Start. The video will explain why v4 is better, and the Quick Start has a bunch of examples that you may find useful. I'm not going to duplicate all that knowledge. I'm just going to touch on some details.Here's a little utility to configure the default routing configuration:import $ from 'jquery'; /** * This is the default configuration for React Router v4. * * Usage: * *     <Router { ...getDefaultReactRouterConfig() }> */ export default function getDefaultReactRouterConfig() { const args = {}, href = $('base').attr('href'); // Make sure to strip the trailing slash from the base href; otherwise, it causes     // a double slash issue on route changes to the root route. It is also not     // possible to not have the trailing slash at the end of the base href,   …