Saturday, February 6, 2010

Life with the Nexus One, part I

I bought a Nexus One directly from Google for full price, the week after it came out. I had been waiting for an Android phone for most of 2009, and the Nexus One looked like the phone for me.

A phone that doesn't suck too much

My primary goal for getting an Android phone was to find a phone that doesn't suck significantly more than the iPhone. I mean, let's face it: walled gardens suck. Also, you can't use it on any network besides AT&T without jailbreaking your phone. The way I see it, smart phones are computers, plain and simple. I wouldn't dream of buying a computer that wouldn't let me run whatever I want to run on it.

So the iPhone sucks, but then so do most Android phones. Look at how ugly and clunky the G1 and MyTouch are. And the screens are so small. And don't forget, you have to buy them from T-Mobile!

The Nexus One is the first of the current generation of smart phones that you can buy without a contract. It's an open platform. And nobody is trying to tell me what I can or can't run on it. The touchscreen is actually the same size as the iPhone, and the touch buttons directly beneath the touch screen give you some good contextual actions that you can take, so most apps are able to make better use of the screen real estate than the iPhone allows.

Don't get me wrong, the Nexus One still sucks. The battery life isn't what I would want. There's also a slight design flaw with the location of the speaker pointing towards the back of the phone. In loud environments, I find myself wanting to point the screen away from me so I can hear the speaker. Pretty annoying.

The Camera

The Nexus One comes with a 5 megapixel camera. I've had trouble sometimes with the automatic white balance making pictures more yellow than they should be, but overall it takes really great pictures, and the autofocus lets it take really close pictures, really sharp.

Autofocus combined with the 5MP camera leads to really fast decoding of bar codes and QR codes.

The Apps

As a Go enthusiast, I'm a little bit disappointed by the number of Go applications on the Android market. I haven't yet found a great app for recording Go games, although an open source app called "gobandroid" appears to be making some really great progress.

There are tons of both free and for-pay apps in the Android Market. I don't see any shortage of applications really.

Battery Life

The battery doesn't seem to last as long as the battery in my iPhone 3G did. I'm not sure what the reason for this is, but it could be due to a number of factors, not least of which is the fact that I'm always messing around with the phone. Background processing may account for some of that, but I don't really know.

Email

One of the things I really hated about the iPhone is the fact that it took me so many steps to check email:

  1. Unlock the phone
  2. Run the "Mail" app
  3. Select the correct email account
  4. Select the inbox
  5. Wait for the client to connect to the mail server
On my Nexus One, there's only one step, thanks to background processing and a helpful status bar:
  1. Press the "standby" button
  2. There is no step 2

The Verdict Thus Far

So far, I really love my Nexus one. I'm still discovering new apps and new things about the phone, but I really use it a lot more than I ever used my iPhone.

Thursday, December 31, 2009

New Year's resolutions, 2009 and 2010

Ok, wow. I made a New Year's resolution last year to write a blog entry every week. After falling hopelessly behind in February, I gave up on blogging entirely. Ouch, ouch, ouch.

Actually, I made two resolutions on this blog last year:

  1. Tweet at least once a day
  2. Post at least one blog entry a week on one of my blogs
How did I do with my other resolution? Pretty good, actually. Well, sort of. I certainly didn't tweet every single day, but that wasn't really the point. I was going for the daily average. According to TweetStats, I tweeted 587 times last year.

So one for two? Not bad. But what went wrong with that resolution that I missed on? I think it's pretty simple:

  1. Make a resolution you can stick to.
  2. Renegotiate your resolutions if you need to.
So yeah, a blog post every week is way too much for me, with all the other things I have going. And when I realized I couldn't keep up the pace, I should have simply changed my resolution to something attainable.

This year, I'm going to stick to a similar theme. It's about forming habits. And it's about social networking:

  1. One blog entry per month.
  2. Two facebook updates per week.
These are both things I can easily stick to, and can definitely overshoot if I try. But the resolution is about forming a habit, not so much about meeting a goal.

Oh yeah, and this post doesn't count towards the 12 blog posts I'm resolving to write this year!

Thursday, February 12, 2009

Branching after committing locally in git

Today I found out that one of my co-workers had a local commit that he wanted to undo, so that he could work on another task that he actually wanted his earlier commit to come after. His question was: How do I undo a commit but keep the files? The answer to that is simple: simply use git reset HEAD^ to point master to the commit before the current HEAD. By default, this leaves the checked out code alone, and it remains as uncommitted changes locally. git reset --hard will check out the previous changes and blow your commit away completely.

On the other hand, branches in git are essentially just pointers to nodes in the repository tree. So, consider doing this instead:

  1. git checkout master
  2. git branch new_branch
  3. git reset --hard HEAD^
What does this do? It creates a new branch that points to the HEAD of the current master, then resets master to point to the previous commit from HEAD. Once that's done, you can continue working in the branch, or make further commits to HEAD. Then, when you're ready to continue work in new_branch, you can rebase it against master and continue on your way as usual!

Sunday, February 8, 2009

Gaming Lunches at AT&T Interactive

I started a new job as a Ruby developer at AT&T Interactive (AKA YellowPages.com) in Glendale, CA, back on December 1st. While I've organized gaming lunches at my previous two companies, I've always been a little bit conservative, worrying about being too successful and not being able to handle too many participants. Ha!

Well, having too many participants is a problem I'd love to have. So, I decided to go all out on this one. I worked with HR to send out an allstaff email to get participants. I made up fliers with pull tabs giving the e-mail address to contact to join the mailing list. I hold the gaming events in the main break room, which has room for plenty of people. And I'm varying the games played from week to week so that we'll cover a wide variety of choices, and hopefully we'll bring more people out because of it.

So far, we've played Scrabble, Rummy, and Chess. Scrabble had the best turnout so far: 8 people. Chess was close, with 7 players. This week we'll be playing Hearts.

I have 35 people total on my mailing list so far, and hopefully I'll be able to build the events and get more regular players. These kinds of events need to reach a critical mass before they can be self-sustaining. The group has to be big enough to be able to lose a couple of people here and there and still have at least 5 or 6 attendees every week.

I'll be updating with my status periodically. Have you ever organized an event like this at work? I'd love to hear from you!

Thursday, January 1, 2009

New Year's Resolution: 365 Tweets, 52 Blog Entries

Well, 2009 is upon us, and for those of us who believe in them, it's time to make our New Year's resolutions. I have to admit, I've been one of those people who don't believe in New Year's resolutions. After all, if you're not eager enough to do something right now, you're probably not going to stick with it. Want to stop smoking? Do it when you're ready. That might be on January 1st, but it may just as well be on any other day of the year. So why bother making resolutions? And how do you make a resolution that's going to stick?

It's really refreshing to look at today as the first day of a completely new year where I can change important things in my life. Some of those things I wonder about, and others I just have to have the resolve to do, and they are in my reach.

Last year, I made a simple and attainable resolution that I hoped I would be able to stick with, and that would get me back into a habit that I'd been sorely missing: I resolved to read a novel every month. It's a resolution I was able to keep. I didn't have to work too hard to do it. I had about 50 minutes of reading time on the train every day during my commute from Pasadena to my job Downtown at the LA Times. I ended up reading 16 novels last year, up from only two novels in the previous five years.

Why did it work? I think it worked because all I needed was to form a new habit. I had plenty of time to read the books, it was something I truly wanted to do, and all I needed was to make a commitment to myself that I was going to take the time to do it.

This year I'm resolving to be better about social networking. Everybody I know is already involved with social networking, and I'm partly involved already. I know that if I improve my social networking, it will be good for both my personal life and for my career. I have a decent LinkedIn profile, a Facebook account complete with friends from high school I still don't talk to, a Twitter account, and several blogs that I haven't updated in a while. I'm picking two of those for improvement: Twitter and blogging.

For those of you who don't know Twitter, you should really check it out. It's a great way to stay connected to people around you, and of course it's a lot more fun, the more people you know who are active on Twitter.

So, this year, I resolve to:

  • Tweet at least once a day
  • Post at least one blog entry a week on one of my blogs
Good luck to all of you in the new year!

P.S. Yes, this blog post counts as my first of the year. Maybe this is gonna be too easy. I'm already 1.92% of the way there!

Tuesday, August 19, 2008

Yu Go Club

I've started a new blog for the Go club here in Pasadena, the Yu Go Club. You can find it here: Yu Go Club Blog In particular, I want to start writing about the future of Human-Computer Go. You can find my first article on the subject here.

Tuesday, July 15, 2008

Advice to a fellow developer

Here's my advice to a fellow Java developer who asked me how to learn Ruby on Rails. Having gone 100% Ruby on Rails since October of last year, I had a lot to say:
Join a local Ruby group if you can find one in your area. I would say definitely get the newest version of the Rails book, but wait a month or two if a new version is about to come out. Older versions aren't useless, but things change every day. Even the newest book will be missing things before ink even touches paper. I highly recommend Rails for Java Developers as the fastest way for you to get up to speed. After slogging through the Ruby and Rails books, I found RfJD wished I had read it first. They build on what you know from Java instead of starting you from ground zero, and that will save you a lot of time. Build a couple of VERY SMALL projects first before you launch yourself on a big project. Your first few projects will be very messy and hard to maintain, despite your best intentions to the contrary. Practice Ruby with simple problems like the ones at Project Euler. Ask a lot of questions. Shun the Rails Wiki pages. The information there is generally a mix of wrong AND out of date. Watch Railscasts videos. Suffer gracefully. Ask more questions.
Got any more advice to share? Post it here!