Big four elements of branding for a software engineer in the early stages of your career

When I transitioned from physics to software engineering, it felt as if I was playing life on hard mode. Learning about academic computer science, coding, and taking coursework wasn’t the difficult part, though. What was challenging, and this often surprises people, was that I was often discounted because of my background. It was a bizarre situation where it was easier to pass interviews than it was to get them. The details of this are for another post, but this weird situation made it prudent to understand some core aspects of what profile recruiters are looking for. That is, among an ocean of resumes that pass the minimum requirements of a job listing, who gets picked to interview and why, when the choice is completely at the discretion of the recruiter? From my conversations with recruiters, some AB testing, and other surreptitious methods, I found that there were four factors that really stood out as good predictors that recruiters would want to network with you. These factors are part SEO and part unconscious biases.

Continue reading “Big four elements of branding for a software engineer in the early stages of your career”

Post-mortem of a strange bug: dependencies that aren’t what they appear to be

This is my favorite case study among bugs I encountered while working on a search engine at FactSet.

Some context is necessary: The front-end for this search engine is html-based, and it has a feature where charts are shown for some queries. For example, type in “price ibm” and a little chart might show the stock price over the last 5 years. It’s an attractive visual component and also a core part to this kind of feature (showing data in response to a query in addition to links). We have maybe 10 – 15 direct javascript dependencies, each of these having their own dependencies, etc. This chart is rendered by an internal charting library at FactSet. There’s a CDN for which we use a CDN resolver. This CDN resolver takes those script element source files and changes them to direct CDN links if possible. This CDN resolver is buggy so some dependencies are hard-coded to use the CDN directly. Managing these dependencies as they update versions is challenging. We promote devel to QA on Tuesdays. We have internal tools to quickly test the product, which is very close to a clone, but technically a similar imitation.

Continue reading “Post-mortem of a strange bug: dependencies that aren’t what they appear to be”

Programming oddities: Multi-threaded Hello World program

To run

g++ --std=c++11 -g -pthread [source-code-file]

Summary:
We spawn one thread for each character we wish to print and force all spawned threads to sleep with a condition variable. With the go() function all threads are woken up. Each thread has two parameters: the character it is meant to print and a value which forces synchronization among the threads so that the threads execute in a specific order. The synchronization value is the test condition for a while loop whose body forces the thread to go back to sleep, and the test evaluates to false when this synchronization value is equal to a global counter. Once a thread exits this while block, it prints its character, increments the global counter, and wakes up all other threads waiting on the condition variable.

Continue reading “Programming oddities: Multi-threaded Hello World program”

Genesis post

Dear reader,

If you have just realized the magnitude of your misfortune by stumbling into this strange place I am sure you doubtlessly have many questions. Like:

  • How did I get here?
  • Who are you?
  • What are your intentions?
  • Are you going to let me go?
  • How do I get home?

The first question has a simple but unsavory answer: You were simply unlucky. You probably were driven to the edge of sanity with yet another opaque and awesomely inscrutable compiler error and had an epiphany. That epiphany, at least for me, was that compilers couldn’t exist in a fair and just world. If compilers exist, so must the devil. In your desperate search for meaning in an unjust world, you probably slipped on a hyperlink and fell far into the deepest pit of the clearnet, where we made our chance acquaintance upon your awakening.

Continue reading “Genesis post”