Learning to Code: Week 19 – Server.c


Goals For This Week:

  1. Finish Problem Set 6 and 7.
  2. Decide next steps and pick a bootcamp to attend.
  3. Hit 30+ pomodoros.

September 16, 2016 🍅🍅🍅🍅🍅🍅

  • In hotel in the morning working on load function yet again.
  • Still working on load and parse. Yup.
  • Got load and parse and lookup completed. Calling it for today leaving only one function left – Indexes.
    • Complete the implementation of indexes in such a way that the function, given a /path/to/a/directory, returns /path/to/a/directory/index.php if index.php actually exists therein, or /path/to/a/directory/index.html if index.html actually exists therein, or NULL. In the first of those cases, this function should dynamically allocate memory on the heap for the returned string.

September 17, 2016 🍅🍅🍅🍅🍅🍅🍅

  • On the way back to Atlanta in a car for 8-9 hours. Laptop fully charged, let’s go.
  • I spent a lot of time writing my Parse function using the strtok function, however their were edge cases that required checking for multiple spaces in there so using strtok wouldn’t work since if you choose the delimiter, it will ignore ALL of them no matter how many are there. So it couldn’t check if there were 2+ in there.
  • However I could just traverse the entire line manually…hmmm.


September 18, 2016 🍅

September 19, 2016 🍅🍅🍅

September 20, 2016 🍅🍅🍅

    • If I decide to narrow down my bootcamps to only one city like SF, I’ll use this list and start paring it down from there: https://www.coursereport.com/cities/san-francisco-coding-bootcamps
    • Started a spreadsheet of various bootcamps.
    • I will need to reach out to individual students as well to get better, hopefully unbiased, reviews.
    • https://www.quora.com/topic/MakerSquare
    • Continuing to work on parse. Cannot seem to get query to be passed out of my function without it being blank or seg faulting.
    • Ok thanks to the last link I had from before I think I have it all working except the indexes function.
    • Problem with the indexes function is that the access function I was calling returns 0 if the file exists, not 1. Oops.
      • http://www.gnu.org/software/libc/manual/html_node/Testing-File-Access.html
    • I think everything is working correctly now. However there are still memory leaks I’m sure and check50 to test.
    • Check50 wasn’t passing due to one error and it was because I missed allocating one extra byte for an address. I think it’s all done now!!!

Behold! This is what I’ve been working on for ~20 hours…(wait for it)


  • Yeah, that happened…again.
  • Before I submit this I need to clean up my comments and code. Learning actual GDB helped tremendously. I spent a lot of time unable to debug my code since the visual debugger is useless for a running web server.
  • I stumbled across this gamified pomodoro/productivity timer for phones called Forest. It’s pretty cool and I think a few tweaks and they have a real winner on their hands. Perhaps make it free and offer more micro-transaction cool items to make the Forest cooler. Right now it has both, kinda.

September 21, 2016 🍅🍅🍅

Most software is not sold in boxes, available on the Internet, or downloaded from the App Store.  Most software is boring one-off applications in corporations, under-girding every imaginable facet of the global economy.  It tracks expenses, it optimizes shipping costs, it assists the accounting department in preparing projections, it helps design new widgets, it prices insurance policies, it flags orders for manual review by the fraud department, etc etc.  Software solves business problems.  Software often solves business problems despite being soul-crushingly boring and of minimal technical complexity.

I recently asked via Twitter what young engineers wanted to know about careers.  Many asked how to know what programming language or stack to study.  It doesn’t matter.  There you go.

Talented engineers are rare — vastly rarer than opportunities to use them — and it is a seller’s market for talent right now in almost every facet of the field.  Everybody at Matasano uses Ruby.  If you don’t, but are a good engineer, they’ll hire you anyway.  (A good engineer has a track record of — repeat after me — increasing revenue or decreasing costs.)  Much of Fog Creek uses the Microsoft Stack.  I can’t even spell ASP.NET and they’d still hire me.

You radically overestimate the average skill of the competition because of the crowd you hang around with:  Many people already successfully employed as senior engineers cannot actually implement FizzBuzz.  Just read it and weep.  Key takeaway: you probably are good enough to work at that company you think you’re not good enough for.  They hire better mortals, but they still hire mortals.

“Read ad.  Send in resume.  Go to job interview.  Receive offer.” is the exception, not the typical case, for getting employment: Most jobs are never available publicly, just like most worthwhile candidates are not available publicly.  Information about the position travels at approximately the speed of beer, sometimes lubricated by email.  The decisionmaker at a company knows he needs someone.  He tells his friends and business contacts.  One of them knows someone — family, a roommate from college, someone they met at a conference, an ex-colleague, whatever.  Introductions are made, a meeting happens, and they achieve agreement in principle on the job offer.  Then the resume/HR department/formal offer dance comes about.

Networking: it isn’t just for TCP packets: Networking just means a) meeting people who at some point can do things for you (or vice versa) and b) making a favorable impression on them.

Academia is not like the real world: Your GPA largely doesn’t matter (modulo one high profile exception: a multinational advertising firm).

In general, big companies pay more (money, benefits, etc) than startups.  Engineers with high perceived value make more than those with low perceived value.  Senior engineers make more than junior engineers.  People working in high-cost areas make more than people in low-cost areas.  People who are skilled in negotiation make more than those who are not.

Read a book.  Many have been written about negotiation.  I like Getting To Yes.  It is a little disconcerting that negotiation skills are worth thousands of dollars per year for your entire career but engineers think that directed effort to study them is crazy when that could be applied to trivialities about a technology that briefly caught their fancy.

Your most important professional skill is communication: Remember engineers are not hired to create programs and how they are hired to create business value?

Some of the best programmers I know are pathologically incapable of carrying on a conversation.  People disproportionately a) wouldn’t want to work with them or b) will underestimate their value-creation ability because they gain insight into that ability through conversation and the person just doesn’t implement that protocol.  Conversely, people routinely assume that I am among the best programmers they know entirely because a) there exists observable evidence that I can program and b) I write and speak really, really well.

Reached out to a few people that had completed bootcamps successfully on Reddit and got some responses.

  • One guy did well in Hack Reactor and said hard work and being in the top of your cohort will serve me well.
  • Another said that while MakerSquare is good it is taught by former students.

“I probably wouldn’t choose another bootcamp, but the instructors aren’t great. They’re past students.”

  • Iron Yard Atlanta:

“I enjoyed my time at the Iron Yard. I think the key is having reasonable expectations about what you should get out of it. That is different for everyone. I had some job experience and a college degree, so my expectations were around networking and learning new skills. I did find a very good job from one of the companies that sponsored a hack-a-thon at the ATV while I was there taking the rails class. I don’t use rails on this job, but I do use some ruby.”

    • Cleaned up my server.c code. You can find it all HERE. Fully submitted!
    • Only two problem sets left.

  • At this point while researching bootcamps I am unsure if I should do the intense Python course.
    • Right now as it stands:
      • My top bootcamps focus on Javascript.
      • To get into these bootcamps you must pass technical problems presented in Javascript.
    • So the question is do I switch to focusing all my remaining time on kicking ass at Javascript, or do Python THEN Javascript.
    • I feel like the answer is obvious, but I don’t know…