Archive for January, 2008
Looking for a Job? Change.
I was looking through Facebook pictures that friends of mine have tagged of me, and I recalled some of the encounters I’ve had with people about tagged pictures. I always hear about people detagging pictures of them on Facebook when they’re in the process of looking for jobs. I’ve thought about this a little bit, and I have an opinion.
I don’t think I’d want to work for a company that judged me based off of my Facebook photos. I should say that I don’t have any particularly bad photos on there, but there are a lot of photos of me being me. By that I mean making a fool of myself by playing air guitar on stage, running around with my shirt off, taking a shot (though I’m not a big drinker), or doing the other things that I tend to do. Anyway, the photos I have on Facebook are probably a decent representation of my personality, and I wouldn’t want to work somewhere that didn’t like my personality, even if they paid a lot of money. I’m not saying that everyone else should share my opinion here; I’m just stating my opinion. I’m happy with who I am, and if a company isn’t OK with my Facebook pictures, then I guess I won’t get hired. I’d want to work somewhere that was looking for personality as well as ability, motivation, etc, or I’d want to work somewhere that was purely looking for ability, motivation, etc.
And now for a collection of embarrassing Facebook pictures:
Rockin’ out to “Don’t Stop Believing” by Journey.
Doin’ my snowboard dance. This typically means better snowboarding. You should try it.
3 commentsCrunchtime
Redfin just got Techhhhhcrunched! We also just did a new release last night, so go take a look!
No commentsCreate RSS Feeds with PHP
I found a forums post about how to create RSS feeds in PHP. Turns out it’s pretty easy!
All you need to do is create an instance of a class, fill in some fields, and add entries via a function call. Once you’ve added all your entries, you call the output function and you’re good to go! You can either create a PHP file that dynamically serves your feed or create a PHP file that writes a XML file every so often with a cron script.
No commentsThe Difficulties of Working as a Product Manager while in School
I’ve been working part-time for Redfin and taking a full course load since September ‘07. It’s been hard. Recently I realized that my productivity at work has decreased an insane amount, and I think that I’ve known about this for a while now. I’m not sure why I never acted on it. My big boss, Bryan, called me out on it, and I’m really glad he did. Since his call out, my productivity has gone up a lot - at least I think it has ;). I wanted to shine some light on the difficulties of being a part-time product manager (PM) while taking a full course load.
You need to context switch. While I’m focusing on classes, either in class or while working on assignments, I have lots of things bouncing around in my head. I’m thinking about due dates, action items, exams, and everything else a student worries about. When I’m focusing on work, I need to be consumed with schedules, wireframes, work status, bug counts, and everything else that a PM worries about. For the first few months of my part-time work, I let myself focus on school projects and HST concerns far too often while at work. I always have a lot of things going on, but I would think and act on non-work related things at work far too often. Part of the reason for this was because my schedule didn’t really allow me to have much non-school and non-work time during the day. For example, if I needed to meet with a professor or an adviser, I would have to schedule my appointments right after my classes, forcing me to show up to work late. Sometimes I would even have to schedule phone calls (interviews) during work hours. Again, you need to context switch. What I mean by that is that you have to have times of the day when you do school work, and times of the day when you’ll do work. You can’t try to mix the two. You have to take all the shit going on in your head during school and put it away when you’re at work. You have to take all the shit going on in your head during work and put it away when you’re at school. You can’t mix these things. If you do mix them as I did, you won’t be efficient at either.
Checking your personal email at work periodically can also be deadly. Occasionally I would see important emails in my gmail box and act on them while at work. Bad idea. Checking your email at work makes it easy to mix work with other things, which mixes your thoughts up too much.
In summary, do work when you’re at work, and don’t do work when you’re working on school/projects/etc. If you set barriers between school and work and stick to them, you’ll be much more efficient and productive. Think about these barriers when scheduling interviews, appointments, and when scheduling your classes.
No commentsMore on a Viral Site
I made a post a week or so ago about how to make a viral site, and I wanted to add to my list of TODOs.
- Make the registration process easy
- Either require as little information as possible or use a social framework like Facebook Platform or OpenSocial
This great blog post describes a usability study that looks at the registration frequency for different types of required information such as email, password, address, etc. Go take a look if you’re designing a registration process.
Update: more here.
2 commentsIE6: The End Might Be Near
InfoWorld writes that Microsoft is telling businesses how to avoid a mandatory Windows update that will install Internet Explorer 7 in place of Internet Explorer 6. If you’re not familiar with IE6, all you need to know is that it’s hated by pretty much every single web developer. IE6 has all sorts of odd behavior, because Microsoft decided they were too important to follow web standards. As a result, most web developers need to spend time catering to IE6 bullshit, which usually tends to be tedious and annoying.
Keep your fingers crossed, and maybe we’ll actually see the end of a terrible, terrible product.
3 commentsWhister Was Awesome; Don’t Bring Weed
I spent the weekend at Whistler with 40 members of the Husky Snowboard Team, of which I am the president for. The weekend was absolute mayhem. The days consisted of awesome snowboarding - Matt, Koos, and I made some killer turns on Whistler on Saturday. Sunday was also a good day, but we nearly froze to death in the 20+ mph winds and ~10 degree Fahrenheit temperatures. Saturday night was fun - Matt and I had a night on the town and finished with some fun games at home. Sunday night was probably the most fun I’ve ever had at a bar. 30 of us stormed into the Amsterdam Cafe and took over their outdoor patio. We were all laughing, yelling, and cheers-ing all night. We would pick people out who were walking by the patio and just start yelling at them, “eyyyyyyy,” or “whose house? dawgs house!” or we would chant, “H.S.T. … H.S.T. …” It probably sounds like one of those belligerent, fraternity-esque drunk nights, but it wasn’t (I try not to have those). Everyone around us and all the people we yelled at were laughing and having a good time, and so were we. We took off Monday morning and made it back into the U.S.
You might be wondering why I didn’t say anything about Friday night. The answer is because I’m saving the best story for last. There were four of us in the car, one guy I knew, call him John, and two other guys that I met for the first time that day. I was driving John’s car because mine is in the shop, and we left the University of Washington at about 12:30pm. The car ride to the border was fine - we all got along and had a good time talking about this, that, and the other thing. We get to the Peach Arch at around 3:00pm, and the line to cross the border is pretty short. I ask for my passengers’ passports and get ready for a casual, easy encounter with the Canadian border patrol. Man was I wrong. The woman at the counter was drilling us. “Do you have any weapons?” “Where are you going?” “What are you doing?” “Do you have any alcohol?” “Do you have any weapons?” “Do you have any alcohol?” All of these questions were easy to answer, but she opened a can of worms with the last question, “Have any of you been arrested or convicted of anything lately?” I answer, “No.” John answers, “No.” One of the dudes that I just met answers, “No.” The other dude answers, “Yes.” The woman proceeds to ask him questions about his recent arrest, and through this interview I find out that this guy had been arrested for possession of marijuana about a year ago. The border patrol gets out a bright orange slip, writes some info on the card, and tells us to go inside.
There’s a pretty long line when we get inside, and the spirits of most people are definitely low. We wait in line until finally we get to the front and begin to get interrogated. The interrogation ends with the woman behind the desk asking me for the keys and requesting that we take a seat. We wait for a pretty long time until finally the border patrol personnel return. They asked us who the owner of the silver bag is, and the dude that got arrested a year ago responds. At this point, I’m thinking, “Shit. He brought weed.” I was right. The guy brought weed across the border and didn’t bother to tell us. Turns out no one got in trouble, not even him, but we had to wait at the Canadian border for three hours. After all of this waiting, they tell us that we have to go back in the U.S. and then back into Canada to proceed to Whistler. Shit.
We spend another 90 minutes waiting in line, getting our car searched again, and getting interrogated at the U.S. border. Luckily the wait to get back into Canada was only 30 minutes, though, making our total time at the beautiful Peace Arch park five hours. On our return back into the states, the border patrol officer knew that we had just been denied entry to Canada. He says to us, “Back so soon. What happened?” We tell him the truth and point to the guy that brought the weed in. The border patrol officer looks at the guy and says, “Why would you bring weed to Canada?! That’s like bringing sand to the beach!” Haha. Jokes on us.
The rest of the drive goes by just fine, and we arrive in Whistler at 11:30pm after leaving Seattle at 12:30pm. What a trip. Oh, and I also got pulled over in Whistler for drunk driving. I was driving slow because I thought the roads were icy, and apparently it looked like I was driving under the influence. I hadn’t had a sip of alcohol all day, so they let us go.
Lesson learned: if you’re driving across the border with people you don’t know, then make sure that they don’t have anything illegal on them. I told all of my passengers not to bring anything illegal, but apparently I wasn’t clear enough. I’m lucky that Canada is very lenient about drugs, otherwise I probably would have gotten arrested even though I don’t smoke weed and didn’t attempt to bring anything illegal into Canada. This was another addition to my bad luck lately, but it was followed by one of the best board trips I’ve ever been on. I’m happy to be back in Seattle.
1 comment“Generation Y”
Sierra just linked me to an incredible blog post about my generation, “Generation Y”. I think it’d be a good idea to read it if you’re around the same age as me (22). It’s one of those posts that inspires me so much that I can barely stay in my seat. It makes me want to hop on my bike and ride as fast as possible for a really long time. Go read it.
Update: Digg it here.
1 commentShit Happens
This is apparently the week of accidents. Last week I was in a bike accident, and this Sunday I nearly flipped my truck and managed to escape with only minor body damage. Monday, the day after my 360, someone slammed into my parked truck while I was at work in the morning. The woman said she fell asleep on her way to work. She scraped the whole side panel of my car and nearly took off my front-left wheel, which was turned into the curb to avoid rolling down the hill. She managed to put my car up on the curb as well, so she must have been driving pretty fast. She left her contact information on the windshield, so her insurance will take care of everything. I’m super glad that I was hit by a responsible person!
I got a flat tire on my way to work today as well, and I’m fortunate that Koos could pick me up and drive me to the bike shop seeing as how my truck isn’t drivable I found a lucky penny while I was waiting for Koos, so hopefully it will be the end to my streak of bad luck :).
Check these bad boys out:
3 commentsWar Story: Software Engineering a Startup
Disclaimer: I totally disagree with the post below, and I’ve written a response to it here.
I’ve published two serious websites: helpd.org and cellarspot.com. Each has a similar success story (there isn’t one), and they were both developed in very different ways. The code we wrote for Cellarspot is super scalable and robust, and the code Eric Fisher wrote for helpd is inline. I wanted to share my thoughts on which engineering approach I think is better and why.
Helpd
The code written for helpd is all inline PHP - the same, single PHP file has SQL queries, HTML, and AJAX request logic. There aren’t any classes, and there are only a few functions to simplify SQL queries. All the engineers out there are probably saying to themselves, “What are these dudes thinking? Idiots.” No. Eric wrote all of helpd in 90 minutes, which let us very easily and quickly test the helpd idea to see if it would take off. It didn’t, so only 90 minutes were wasted (we’re going to try to rework the site, so those minutes weren’t actually wasted). Inline PHP allowed us to throw something up insanely fast to see if the idea would work. Eric and I are both students making websites in our free time, so we want to get things shipped as fast as possible to see who they’ll do.
Cellarspot
The code written for Cellarspot is exquisite and is written in JSP using Spring MVC and Hibernate. We have a data access layer, a business layer, a search framework, and an index framework, etc (see the end of this post for references). We pursued Cellarspot in a software engineering class at the UW, so it was our job to write robust code. We definitely succeeded, but it took five of us three months to complete the site. Five people working an average of about 10 hours a week for three months adds up to 36,000 minutes. That doesn’t even include the first version of Cellarspot I worked on and the newest version I’ve been working on.
So what are the lessons learned here? First, I don’t regret spending so much time on Cellarspot, and the reason why is because I learned a whole lot about software engineering, design patterns, and teamwork by pushing for awesome code. I’m super glad that I learned these skills. However, I’m also super bummed that I invested so much time in Cellarspot only to see it not do well. I’ve thought up two different cases and what I would do in those cases if I were you:
Personal Project Startups
If you’re spending your free time on a project, then your time is valuable. If you’re looking to learn about engineering, then spend time writing awesome code. If you’re looking to create a website that could potentially make you millions, then write something quick and don’t worry about the code. Keep in mind that if your project turns into a 300+ person company and you chose to write shitty code, then the chances of having to rewrite most of your code is high. I suppose there are worse problems, though, like spending hours upon hours on a project that doesn’t go anywhere ;). I think you should also consider your future when deciding on how you’re going to engineer your code. If you’re planning on being an engineer in the future, then spend the time to learn how to write awesome code. If you’re planning on being a PM or someone else more business oriented, then write inline code so you can get your product off the ground quickly.
I think that I should also touch on programming languages. Languages like PHP and Ruby on Rails are great for getting a site up and running quickly. Languages like JSP are great for learning about engineering, but that’s not to say that PHP and Rails can’t be used for good engineering practices.
Funded Startups
If there are more than a few programmers at a funded startup, then write good code. Your peers will appreciate it, and the programmers that will use your code in the future will appreciate it even more. If there are only a few programmers at a funder startup, then you can probably get away with writing bad code, but be prepared to improve it later. I think that if you’re getting paid, then there is no reason why you shouldn’t spend a little extra time to write good, robust code.
I’ve spoken to a few Redfin engineers, and most of them are insanely frustrated and annoyed with the terrible code that was written by some contractors back when Redfin was first started. We’ve had to refactor over and over again at Redfin because of that shit-ass code. I’ll save contractor work for another post, though.
I think that I approached helpd and Cellarspot in the right ways. My first project taught me great programming practices, and my second project made me realize that you shouldn’t always write good code. It’s up to you to decide how you want to engineer your startup.
Software Engineer Resources
Update: I removed the “disgusting” adjective from Eric’s inline code. I suppose that I view all inline code as disgusting, even though his inline code was beautiful. The other advantage to writing inline code is that you can avoid dealing with multiple files. Eric also wanted me to be more precise and say that inline code is great for prototyping, which is exactly what we did with helpd. Sorry about that, Eric!
6 comments






