Blogroll

After nearly 7 and a half years at my last job, I’ve finally moved on and gotten a position at a new company as a senior software engineer. It took about 2-3 months of serious job searching and even though people will tell you that it’s easy to find a job in the tech sector nowadays, it wasn’t that easy (at least for me). I had a lot of applications out and went to a lot of interviews. I’m going to try and distill a little bit of what I learned.

The tech interview is a complicated animal. You have the initial non-technical phone screen where the HR person basically asks you all the typical questions like “What made you decide to look for a new job?” or “What did you like most/least about your current job?” or the classic “What made you decide to apply with us?”

After that, you go through a tech phone screen where a fellow techie will begin to grill you on some technical questions such as “What tech stacks have you worked with in the past? What did you like/hate about each one?” or the generic “Tell me about a problem you’ve encountered before and how you solved it.” Then they’ll start going into some real tech questions that may or may not involve an online collaboration website service so they can see how you code. This can include the typical interview-style questions similar to “Write a function that accepts a string as input and determines if the string is a palindrome” or, if you’re lucky, the standard Fizzbuzz. If it’s an algorithm question and the company is an actual tech company, they will probably supplement the problem with questions about the runtime (big O) and then might change the requirements ever so slightly to see how you adapt to change.

If you’re lucky and managed to pass all the phone screens, you get invited for an onsite interview. This is the hardest part, but even if you don’t end up getting the job, making it this far is still rather awesome for most companies in my opinion. Besides, if you make it this far, a lot of tech companies tune their interview processes to weed out false positives, which means they get false negatives. In other words, they might have rejected you the first time, but that doesn’t mean you shouldn’t try again later. They might miss really good engineers, but at least they’re not hiring people who can’t do the job. An onsite will typically last half a day or the whole day. The onsite is your best opportunity to interview the company as well. Don’t think it’s just them asking you questions. This is your time to make sure this is the place you want to work for. I had an onsite which I breezed through early on in the job search and that set off red flags for me because it seemed like they were just hiring anyone they could. You don’t want to work in that kind of environment because you can’t trust if your coworkers are competent or not. Throughout the day you will meet with a bunch of different people, most likely members of the teams which they are thinking of placing you into. This is to make sure you “fit” into the team culture and meet their needs. Some companies will make you go around to all the different people, while others keep you in a single room and bring everyone to you. This is usually not a cakewalk. During the onsite, you will be talking (mostly re-answering all the questions you’ve answered during previous phone screens) and whiteboarding. In my opinion, whiteboarding is the hardest part of the tech interview process. You are given limited time, limited whiteboard space, and a lot of problems. They want you to write bug-free syntactically correct code (no pseudocode) to see how well you do under pressure. I find that the better tech companies mostly ask generic programming questions, but if the position requires specific knowledge of certain platforms/languages then I’m sure they focus on those specifics.

After the onsite, you’ll probably talk to an HR person who will tell you that the company will get back to you as soon as they’ve decided whether or not you got the job. At this point, if you got the job, they will probably let you know very quickly. If you don’t hear back from them, that is most likely a flag that you did not get the job and they don’t want to put themselves in a position of liability by telling you that (which totally sucks). You’d think the bigger companies would be better about this, but even they do it. If you got the job, then congratulations are in order. If you didn’t, don’t feel too down. Try and remember where you might have had difficulties during the onsite and focus on training yourself to not make those mistakes again. If you can get the HR person to tell you exactly what you need to work on, that’d be great. Unfortunately I’ve found that most HR people want nothing to do with you if you didn’t make it past the onsite. As soon as you’re up for another interview round, they’ll be your best friend, but as soon as they get a negative interview result, they pretty much just clam up and try to speak to you as little as possible from what I’ve noticed. Anyway, hopefully these notes help someone out there.

“You’re standing on the surface of the Earth,” Musk begins, according to the book. “You walk one mile south, one mile west, and one mile north. You end up exactly where you started. Where are you?”

This is an interview question from Elon Musk to job candidates. There appear to be two answers. The first, the north pole, is the obvious one. The second is not so obvious. At any point on a ring somewhere close to the south pole, you could walk one mile south, then turn and walk one mile west only to end up right where you started walking west (circumference would have to be 1mi), turn and walk one mile north to end up right back where you started.

Finally getting around to writing on this thing again. Some things have happened since I last wrote. I got engaged around the end of October last year to an amazing woman. Woot! We decided to give ourselves a wide berth for the wedding so we’ve set it sometime in 2016. I’m working on a separate site for the wedding engagement stuff. Mostly an informational static setup to show off some engagement pics (which have yet to be taken) as well as just general information like the who, what, when, where stuff. I’ll post about it later whenever it’s ready.

I’ve also started listening to hip-hop. It’s not like I never used to listen to it ever, but I’ve always been a rock guy. I could only take hip-hop/rap/r&b in small doses before. Now it’s all I want to listen to. I wanted to start something new for recording my experience while exploring the depths of the hip-hop multiverse, but realized that I already have this blog and should probably use it rather than start something else which I will slack on maintaining.

As for programming, I’ve downloaded the new Unity studio and am currently trying to learn how to make a mobile game for android. They’ve really put a lot of work into the studio and for the most part, you just supplement generated code with custom scripts which you can conveniently write in C# (some would call that cheating, but for a newbie like me, I call that awesome).

A little while ago, I created a recipe on IFTTT to link my facebook to this blog and turned it on to see how it went. Today I’ve turned off the recipes and have decided to write specific content for the blog. The point was to try and intersperse some of my social media posts with my blog posts, but in reality the blog just became a mirror for my facebook feed since I don’t post as frequently as I should.

IFTTT itself is still a rather useful service in my opinion. One of my currently enabled recipes turns my phone to vibrate mode once it’s connected to the wireless network at my office. Once it disconnects from the network, it puts the ringer back to full volume.

I really think IFTTT is on to something here. The ability to tap into events that happen in your daily life and use those as triggers to initiate actions is essentially an API for life. We just need to expand it and see what comes out of the explosion of apps and services.

I’ve been making a push lately to do more with linux. I shrunk my main Windows partition and installed Ubuntu 13.10 on there with the stock Unity interface. As usual, after a few days, small things would get to me about the interface and just linux in general. I just didn’t like the way Unity looked. The interface certainly looked nice, but the interaction just wasn’t quite there yet for me.

Then 14.04 came out and I started reading about Xubuntu. I’d never really tried a different flavor of Ubuntu, always going for the stock version because I figured if I had any issues, most support would probably be for the vanilla. For those that don’t know, the different flavors of Ubuntu are differentiated by the desktop environment they use. Kubuntu uses KDE, Lubuntu uses LXDE, Gnome Ubuntu uses Gnome (durrrrr), and Xubuntu uses XFCE. While the underlying system is the same old Debian-based Ubuntu in all, each feels very different. I went with Xubuntu over Lubuntu because I didn’t want just minimalism. I want some features too!

Rather than do a clean install of Xubuntu, I had just upgraded my Ubuntu system from 13.10 to 14.04 LTS, so I followed the instructions here and proceeded to install Xubuntu and get rid of some gnome dependencies I didn’t need anymore. After the installation, I rebooted, switched the desktop session to Xubuntu’s Xfce, and logged in. Beautiful. Just beautiful.

Xubuntu has a central startmenu type menu system attached to a panel at the top of the screen named Whiskermenu. It has a dock system similar to that of Gnome including a port of the panel indicators (mail, bluetooth, network, social, etc) that we’re all used to. The Nautilus file manager has been replaced with Thunar, a lightweight file explorer. It’s noticeably faster than Nautilus but that’s probably because most frills have been stripped out. I quickly realized that the Ubuntu software center looks nice, but is basically crap. Synaptic package manager blows it out of the water. For a dock, I’m using Cairo Dock (think osx dock) which is a bit weird to get used to at first, but works fantastically once it’s properly configured. I’m still using Deluge as a torrent client and apparently a lot of docks support Deluge via dock widgets that show cool things like total up/down speed, number of active torrents, etc. I’m using Google Chrome as my web browser, but for some reason it runs sluggishly in Xubuntu. The pages load fine, but any time you click on something or right-click, it takes ages for the application to respond. For video, I’m using SMPlayer, and for audio, I’m using Clementine. Both seem to work fairly well so far, but I’ll admit I haven’t given them a thorough run through.

Now to gaming. Still the number one reason I primarily used Windows at home. I installed minecraft which works amazingly well on linux. Then I installed Steam. Steam works surprisingly well on linux. I did have some odd little issues initially such as TF2 starting on the wrong monitor and the mouse pointer screen location differing from where it actually clicked, but after getting those squared away, everything just worked.

I’m still working on migrating over my software development process (editing everything with gEdit just doesn’t cut it) which has me trying out a lot of new programs. I will try and write another blog post detailing what I find, but for now, I’m going to just enjoy getting used to linux and Xubuntu!

As I get older, I notice my motivation to write blogs/social media has decreased significantly. Perhaps this is why products like Snapchat and Tumblr have largely escaped my attention. Shoot, I still use IRC, the dinosaur of internet communication. As for what I’ve been doing recently, I’ve put some work into a django port for thehardwareproject.org, tried out some new programs to replace ones I’ve been using for years (Deluge replacing uTorrent, etc), and am actively looking at starting up some new dev projects for 2014/15. I’ll probably try and redo trekktalk.com into something useful, and maybe give Android Studio a shot when I attempt my next android project.

So on the advice of my friend Luke, I bought Rocksmith a little while ago even though a new version is coming out in October (Rocksmith 2014). It’s actually a pretty good deal right now on Amazon (link) because for $25 you get the rocktone cable and the PC version of the game on DVD but comes with a steamplay code so you can install it via steam to have it on all your computers. I’m not exactly learning on Rocksmith since I’ve been playing off and on for around 17 years, but I’ve found it to be incredibly useful and pretty fun.

I think the best way to think of Rocksmith would be not as a video game, but as a practice or training aid. It’s not meant to be the teacher, god no. But it is a great supplemental tool for practicing and building up skills. Interestingly enough, your goal while playing is to keep doing each phrase perfectly so you can level up that phrase and get more notes (more points) until you reach the end game (master mode), which is no notes at all. This is an example of a song in normal Rocksmith mode. Excuse my crappy sounding D5.

I’m on twitch TV now and occasionally stream my Rocksmith sessions so if you want to check that out, click here. But yea, back to the main point. This is the future. I can totally see programs like this being used by music teachers to supplement home practicing. It’s not a bad idea since most music students would be younger and a video game might be better at holding their attention. Perhaps the days of dreading the practicing of instruments is over, but we’ll see.