Short-Form

Thurrott's commenters are amazing...by Taylor Stapleton

I'm not sure if this is worthy of a blog post or not. To be on the safe side though, I better get this down in ink. I was browsing around the internet today and stumbled upon www.thurrott.com. I don't know much about the site except that I assume the Thurrott in question is Paul Thurrott. Paul is someone I only know to be an intelligent and respected technology journalist. In my mind he is commonly associated with Microsoft and the TWIT crowd as well (not sure why, too lazy to research). Ok, enough blabber and on to the point.

So I'm reading a post on this site and then move on to the comments section for some heated juice. But heated juice is not what I found! The comments were..... constructive. They were valuable. People who wrote the comments took time to think about what they were writing. They included proper spelling, punctuation, well-formed ideas, and even facts to back up arguments! I was just so astounded by this paradise of intellectual comments that I feel like I have to tell someone. In the image are some examples of one of the first well-founded, respectable comment debates I have ever seen on the internet. This will definitely be a site I pay attention to in the future.

 

Sorting binary outcomes using std::deque. by Taylor Stapleton

Well at least I thought it was clever. Ok, so imagine you have a collection of things, and each of these things has a binary property. You need to take this list and order it such that all the items with their property set to 'true' should be first in the list. I'm sure there are a number of clever tricks to doing this, however, my new favorite is using std::deque. The only reason std::deque works well is because not only can it add elements to the end of its container in constant time, but it can also add elements to the front of its container in constant time (using push_back and push_front respectively). As an example, on the left below, I have a rudimentary inefficient method of doing this binary outcome sorting using std::list, and on the right, I showcase the std::deque method.

Get paid to earn your masters degree?by Taylor Stapleton

A huge campus with many buildings. A terrific amount of very smart people. Vague guidelines on project details. Learning new things everyday. Having been thinking about these symptoms lately, I have decided that working at Google is as close as I can get to getting paid to go to school. I loved being in college for the most part. Learning was awesome and being part of the college community was awesome. I loved my opportunities to teach other people too. For me, there were really only two drawbacks. First, general education courses are fucking useless in their current form (I'm a bit salty about this point because I still hold SO much resentment). Second, and perhaps more obvious, is that you have to pay a fantastic sum of money to attend most colleges. 

So basically I'm trying to have a little bit different outlook on my job. This is not to say my outlook was very poor in the past. I have just found a way to improve it. I always wanted to get paid to go to school and now I basically have the chance. And actually, if you think about it, this is a pretty world class education considering some of the technologies and peers that one gets to work with here. And instead of paying to attend a University, I'm instead getting paid handsomely for doing very similar work to the work I would be doing in school. So I guess I have a piece of advice to all those considering getting a masters degree in computer science.

Don't get a masters degree in computer science.

I think a lot of people would rightly freak out at anyone discouraging someone from higher-education. But let's talk about just a couple of specific points to consider. Grad school can be really expensive. You could end up paying a lot of money for that couple extra years of school. In some cases it might cost you 6 figures. Meanwhile if you choose to go to industry, you are guaranteed to instead earn six figures in that same time frame. In some cases you could be earning 6 figures/year right out of college. In terms of educational value, it depends on where you work. If you have the opportunity to work at one of the big companies like Google or Microsoft, you could be working with tools and technology that the educational realm wont get to play with for some time. But that isn't always true and should be carefully considered if important to you. A masters degree looks really good on a resume, but so does a couple years at a job and a possible title change. By my estimation, someone with the title of software engineer II has the equivalent if not more earning potential than someone with a masters. 

I don't have any eloquent way to end this post.

Where is Taylor this week?by Taylor Stapleton

This week I have the amazing opportunity of being able to attend GTAC. The Google Testing Automation Conference is taking place in the Google Boston office and I'm super excited to be here. I have heard a lot of cool things from a lot of cool speakers from great companies including Google, YouTube, Twitter, and Uber. They talk about how they go about conquering their unique and difficult software testing scenarios. I will have a bunch of blog posts to write once I gather all my thoughts about the speakers over the week so stay tuned for that. In the meantime, check out how gorgeous this office is!


Making work an inviting place to be by Taylor Stapleton

I recently decided that I wanted to give myself more reasons to be at work. Google has been pretty interesting so far in the way that nobody really cares when you are at work. If I wanted, I could totally get away with coming in at ten and leaving by four everyday. They call this "being results oriented", which is a fancy way of saying "as long as you get your work done, we don't care when or how." This proves to be a little difficult sometimes. I could come into work whenever I wanted and most the time I will be able to bust some stuff out in the hours I am there. However, if something comes up and I'm not very productive in the time I am there, I could see myself falling behind. Luckily I live with Leslie, my girlfriend with way more self control than me, who also works at Google and ill hold me accountable for work.

So to continue on the first line of this post: There is more I can do to make my workplace somewhere I enjoy being. I did three things to work towards this goal. First, I got my shit together and requested a new office chair that isn't squeaky. Second, I ordered a really nice pair of headphones for work. Last, and certainly not the most normal, I bought some turf. It is just a small piece of artificial grass turf. It's not the stuff you would find at a mini-golf range, it's pretty nice. The length of the individual "grass" fibers is pretty long which makes placing your feet on it pleasant. It adds a bit of color to my space, and like previously mentioned, it's great for bare feet.

A picture of the turf in question.

A picture of the turf in question.

In case you are strangely wondering which turf I purchased can be found here.

Why is compiling still a valid excuse for messing around?by Taylor Stapleton

Everyone knows it's OK to have a YouTube video up and playing on one monitor as long as you can visibly see something, anything, compiling on the other monitor right? Because it seems to be a widely accepted notion that you are going to spend a certain percentage of your day just compiling your code waiting to get all the juicy details on where you accidentally passed objects instead of pointers so you can fix them and compile again. It seems only appropriate that I kick this blog off in its early days talking about something that sincerely boggles my brain. Would someone like to explain to me why it's 2015 and there are still large companies and millions of developers who are waiting ages for code to compile to get compiler-style feedback about their code? 

Picture the scenario where I develop a piece of code. I'm not entirely sure if what I did is going to work correctly or not so I have to change context and hop over to my terminal, figure out whatever build command is going to run the compiler and linker on my code, and then wait some indeterminate amount of time for it to tell me in the most cryptic language possible what's wrong. Though it seems impossible, there are still huge companies working in this work flow (at Google there are still tens of thousands of developers writing c++ in editors that barely do syntax highlighting).  I mainly have observed this problem for languages like c, c++, and python but I'm sure there are many more scenarios where this is occurring. 

A snippet from Visual Studio 2013 giving code feedback.

A snippet from Visual Studio 2013 giving code feedback.


In the past I have had the pleasure of working in Visual Studio or to a lesser degree, Eclipse. In VS I mainly worked in its primary language, c#, and Java for Eclipse. Both of these tools did such an amazing job at giving instant code feedback. I can't even quantify how much more productive I was when working in those environments. Not only was I saving the maybe 10% of my day that I would otherwise spend compiling, but the ability to get instant feedback about the code's compilability (I'm going to pretend I just coined that term) helped me to stay perfectly in context with what I was working on without ever going away and losing focus.

So think about this: software engineers create mind-blowingly cool things every day. Most people on this planet couldn't possibly fathom the work they do. So can we all take a moment to think about how nice it would be to stop wasting even a small portion of our time on something as silly as compilation? It could take years, but would someone please develop some more excellent tools for instant code feedback? And for all the vim and emacs users out there, take this moment to possibly consider that working in a modern IDE with code feedback tools is a very valid way of life. God, what a ranty first post.