Welcome to Elliot's home on the web

I'm Elliot, an independent iPhone app developer. I have ten apps on the iTunes App Store published by my startup company, GreenGar Studios. I graduated from the University of Southern California in Los Angeles. I enjoy traveling around Silicon Valley and implementing awesome new iPhone apps. Read my blog, subscribe to my feeds, visit my websites, and finally, if you know in person, add me on Facebook.

 

Blog

Need: Better Tab Switching

I’ve been thinking about this for a long while, and today I found that Cédric Beust has put my thoughts into words:

What I really need is an extension that lets me switch to a tab by typing a few letters from either its title or its content. Just now, as I was starting to write this entry, I found myself having to find the article I linked above. I have currently about ten Firefox windows open and each of them has anywhere between one and ten tabs. Finding the correct window required a few Alt-Tab and quite a few Alt-~. And even then, the correct window popped up on my screen several times but I missed it because the tab I was looking for was the fourth in in a group of ten.
What would have been ideal: a text box where I can type “candy” and a drop down containing all the tabs that match the string I just type.
I’m aware of a few Chrome extensions that do this but all of them open a new window when you select the tab, instead of just taking you to the existing one, which defeats the purpose of the idea since it loads the page again and loses the position you were last reading.
Please let me know if you know of any extension that accomplishes what I’m looking for

Source: Firefox’s “Tab Candy”: pretty, but…

Anyone out there with experience building browser extensions? How feasible is this?

Posted in Travel on July 25th, 2010 Be the first to comment

Don’t fix the iPhone 4 antenna issue

I don’t think the iPhone 4 antenna issue should be fixed for two reasons.

1: It does not occur if you use a case. If you don’t use a case, you can hold the phone a different way.

2: It’s caused by the laws of physics. It’s like saying that your MacBook Air is easier to break in half, and therefore it’s flawed and should be made thicker.

No. That’s simply a side-effect of its design.

When you have external antennas, you can attenuate the signal with your hands. That’s the way this world is.

I, for one, like the iPhone 4’s thinnest-smartphone-ever design. And I use it with a black bumper case.

I don’t understand why everyone thinks a “bumper” is an acceptable fix. You can’t dictate how to use the iPhone, specially to all the users who don’t like bumpers, cases, etc.

You can’t use the iPhone underwater; it is not waterproof. You can’t put the iPhone inside a barbecue and expect it to survive. You can’t drive your car over the iPhone and expect your phone call to remain connected.

Whoops! I just dictated how to use the iPhone.

Sure, holding the iPhone in a particular way without a case is not a particularly hazardous way to use it. But my point is that there is plenty of precedent for “dictating” how to use the iPhone (or any other product, for that matter). It’s not a question of whether they can dictate; it is merely a question of in what way, and to what degree.

Posted in Travel on July 13th, 2010 2

iPhone 200 MB plan conflicts with voice mail?

Has anyone successfully downgraded from the Unlimited data plan to the 200 MB one?

It would lower my bill by $15/mo, as the unlimited plan is $30/mo and the 200 MB one is $15/mo. That’s a $180/year difference.

But the AT&T website says the feature conflicts with “Basic Voice Mail”:

The following feature(s) are in conflict with an existing feature:
DataPlus 200 MB for iPhone
To add the new feature(s) you selected, the following feature(s) will need to be removed:
Basic Voice Mail

I’m afraid to continue because it sounds like voicemail will be removed. Is this true, or is the website wrong?

Posted in Travel on June 18th, 2010 Be the first to comment

How to uninstall Openfire

You might, like me, see tons of launch failures in your OS X Console (an app in /Applications/Utilities).

To uninstall Openfire, just delete these files and reboot:

/Library/LaunchDaemons/org.jivesoftware.openfire.plist

/usr/local/openfire

/Library/PreferencePanes/Openfire.prefpane

Posted in Travel on June 9th, 2010 Be the first to comment

Computers Suck

They are ridiculously hard to use. It’s 2010. Computers should not still be this hard to use. Yes, computers are complicated. But end users should never have to see that complexity.

Dear Microsoft: please make your crap usable. In order to upgrade Silverlight, they force me to uninstall the old version first. That’s bad enough; but what’s worse is that they don’t provide an uninstaller. They can’t have the updater remove the old version automatically.

And they can’t show you how to do it in pictures and text. You must download a 3 MB video file in order to see how to actually do the uninstall. Furthermore,  you must close all web browsers before uninstalling. (This is nontrivial for newbies to do on a Mac, where clicking the red X doesn’t actually quit the app.)

This is beyond ridiculous.

It’s a good thing I’ve been using computers since the day I was born, because if I were new to the concept, this would take me hours to figure out. And I wouldn’t be surprised if a typical user just gave up 15 minutes in.

Skitch is close behind. Their software is called “beta,” even though it’s quite stable and lots of people use it. Heck, they even promote and market it like commercial software. Yet it has a beta timeout, so when the timeout expires, you can’t use the app anymore until you update. And the only change in the update is that they extended the beta time-out. And the update is 12 MB, a significant download for anyone on a dial-up connection (only 22% of the people in the U.S. subscribe to a broadband service).

Steve Jobs today said that computers are like trucks. They’ll still be around, and there are some tasks you really need a truck in order to accomplish. But the everyday consumer is quickly moving to cars. These cars will be ubiquitous, and the roads will be swarming with them. That means devices like the iPhone and iPad — where I’d definitely place my bets today. And I’ve been putting my time and effort where my mouth is: I’ve been developing mobile apps since 2002 (when I started using the Cybiko SDK).

Posted in Travel on June 2nd, 2010 2

Should companies have phones?

I’m reading an interview with Paul English, Co-Founder of Kayak.

He has some innovative ideas for running a company. Here are a couple:

The Red Phone: Paul found the most obnoxious, loud-ringing red phone he could find and plugged it in right in the engineering office.  About 30% of the time, when a Kayak web visitor saw a support phone number on the website, it was the number of that phone. The idea was to build a culture that was centered around the customer.

If you visit Kayak.com and hit the feedback button, you will get a response via email.  Kayak responds, individually, to every email.  That’s impressive.  What is crazy-impressive is that the email response comes from either Paul or someone on the engineering team.  He gets flack for using a $150k/engineer to answer support emails when the rest of the world is outsourcing it for $8/hour or something.  Why does he do this?  Because, when engineers respond to support issues, when the same issues arise time and time again, they are more likely to stop what they are doing and go fix the problem so that they don’t have to answer that same question again.  And, because it sends a message to the entire team that they take these issues very seriously.

Posted in Travel on May 10th, 2010 Be the first to comment

How to learn programming

“I hated high school. It was the worst time of my life. [Then] college … was just awful. When you’re in high school, everyone tells you, ‘There’s a lot of repetitive bullshit and standardized tests; it’ll all be better once you’re in college.’ And then you get to your first year of college and they’re like, ‘Oh, no– it gets better when you’re in grad school.’ … I couldn’t take it. So I dropped out. And I’m glad I did.” – Jamie Zawinski (jwz), one of the world’s best programmers.

I’m often asked, “How can I learn programming?” It’s a very difficult question to answer. Usually, when people think of learning, they think of classes. I have never known this kind of learning to be very effective.

I didn’t like high school. Virtually all of the things that made high school bearable were actually outside of school. Computer Club, FBLA, the Walnut High School Solar Car Team– all well outside of classes. High school would’ve been better without classes. But that’s only for a person like me. I definitely do not think this would work in the general case, because I was far from a typical student. I never fit in anywhere in high school. The only place I fit in was outside, in the solar car team.

So I quit, and went to college early, skipping my senior year. For some students, senior year is a time of celebration and relaxation, but for me, it would’ve been torture. I’m very glad I left.

College, as jwz stated above, wasn’t actually tremendously better, when it comes to the classes. Sure, they were more advanced. Finally, people who actually cared about getting stuff done. But they were still mediocre when it came to actual learning. I was happy in college, partly because of my expectation that I should be happy there. If college didn’t work for me, there must be something wrong with me, I thought. College is everyone’s dream. I have no alternative. So in my mind, I made it work. My attitude made all the difference. I was always optimistic, cheerful, and looking for the best in all situations.

Now that college is done, I can look back on it more objectively. The people were great. It’s often said that college is worthwhile just for the people. That’s probably true. But when it comes to the classes, they were objectively pretty bad. It’s not a matter of being ‘easy’ or ‘hard’. It’s a matter of what they focus on, the way they’re structured, and what they actually do.

80% of the programming knowledge I picked up while in college, I learned on my own.

It doesn’t surprise me one bit that students are dropping out of computer science, or not going into it at all. College seems to make it hard to do. I don’t think it has to be that way. There are a few key things that have helped me learn how to program:

1) Motivation

People say they want to learn how to program, but they flake. They don’t stick with it. They lack an all-encompassing passion. My programming is extremely highly motivated, though for good reasons: it’s earning money, my code has been used by well over 5 million people, and it’s a creative outlet for me.

2) Focus

You cannot overstate the importance of focus. Sometimes people think that if they work on something for an hour, trying to figure out how something works, or why something is broken, or how to fix some bug — one hour — then they give up. They throw their hands up and say they’re done.

That’s ridiculous.

You need to concentrate, and put nearly unlimited amounts of focus behind your work. One hour doesn’t even scratch the surface. Two hours? Four? Eight? Sixteen? Now you’re talking. Why not spend 100 hours? (Literally. Wouldn’t phase me.) Of course, the time isn’t what you should be looking at. Time doesn’t actually matter. What’s important is what you’re getting done, what you’ve tried, where you’ve failed, and where you’re going. It’s not uncommon to hack away at the same problem all night. Programming requires real thought. It’s not like digging a ditch or farming some land, where you just put grunt work into it. You have to actually use creative mental energies, and that requires real focus.

3) Other people

When you’re stuck and not making progress, point #2 (Focus) does not mean wasting your time doing the same thing over and over again. You try something new. And you try it quickly. One of the places to turn (and fairly soon, actually) is other people. College is good for this, but thanks to the Internet, it’s not necessary. The other people I’ve turned to, who have helped me the most, are all online. And I haven’t met most of them in person yet.

Greg Smith of DevCybiko was an amazing help back when I was learning how to program the Cybiko handheld computer.

People in the iPhone development channels on IRC were invaluable when it came to developing Brain Tuner.

It is truly amazing how much of my progress can be credited to people I’ve chatted with online. Keep in mind we rarely talked about superficial things. We got right into the guts of the problem, tossing back and forth actual code. That’s what you need: concrete code-level collaboration.

4) Learning by doing

Lastly, there’s no substitute for actually doing. Too many people think they can learn programming by watching videos, or listening to lectures, or reading books, or talking to others. Compared to writing actual code and seeing what happens, nothing else matters.

Because you’re trying to program after all, aren’t you? Don’t be afraid of the computer. Don’t be afraid of errors or warnings. Confront them directly and immediately. Learn what every little detail means. Don’t miss a single pixel. Your compiler is throwing you 138,275 errors? You are not doing anything wrong. My code contains errors like that every day. That’s the computer helping you. Rely on it and get comfortable with it. Read the documentation, search on Google, and, sometimes, just sit back and think. Thinking is part of doing, too.

If you can really nail these 4, I think you’ll be well on your way.

Dropping out of college would put you in good company, with Bill Gates, Steve Jobs, Mark Zuckerberg, Jamie Zawinski, and so many other top techies. But ultimately, I’m glad I went. Not for the classes, but for the people I met there, and the connections it provided. If you already know the right people and have the right connections, college might not be necessary. But for me, college was actually incredibly good, if you don’t count the classes. Sure, I succeeded in classes, with a >3.8 GPA and all. But what I appreciated most are my internships at JPL and Google, the opportunity to be TA for the iPhone app development class for both semesters it was taught, and gaining friends who span the globe– which is why I’m in Viet Nam right now.

Posted in Computer Tips, High School, Technical on April 21st, 2010 One

The iPhone could not be restored. An unknown error occurred (1600)

Here in Vietnam, an iPhone brought from the U.S. isn’t allowed to use the Vietnamese carriers out-of-the-box because it’s locked to the American network. That means we need to unlock it.

One of the several methods of unlocking the phone is to use Recovery Mode to restore using a modified ipsw file. Note that this is different from DFU mode, even though iTunes calls it same thing (iTunes will call it “recovery mode”).

You can tell the difference, though, by looking at the iPhone’s screen. If it shows a cartoon Steve Jobs saying something in Russian, or it shows a sync cable pointing at an iTunes icon, then it’s Recovery mode. If the screen is blank, it’s DFU mode.

To put the phone into DFU mode, hold down the sleep/wake and home buttons for 10 seconds; then release the sleep/wake button, but KEEP holding the Home button until iTunes recognizes the iPhone. Then you can depress the Home button.

To put the phone into Restore mode, disconnect it from your computer; hold down the Home button, then connect it to your computer. Keep holding the button down until an image appears on the iPhone’s screen.

If you get Error 1600:

Then you might be using DFU mode, when you should actually be using Recovery mode. Switch modes and try again.

Posted in Travel on April 15th, 2010 One

CoLoft Coworking in Santa Monica

I’m out here for the CocoaHeads LA meeting tonight, so I thought I’d stop in at CoLoft, a new co-working space in Santa Monica, CA, near Los Angeles. It was started about a month ago by founders Avesta Rasouli and Cameron S. Kashani.

It’s a very nice space, and it feels a little like the Hacker Dojo in Mountain View, where I spent most of the past month of my life. This is a place I’d like to come back to. I’m currently on their one-week free trial. Unlike the Hacker Dojo, CoLoft is actually a for-profit business.

Their wireless network is secured, whereas the Hacker Dojo’s Internet is unsecured and open. Speedtest.net reports a Download speed of 4.21 Mb/s, and an Upload rate of 0.72 Mb/s. Not bad — feels like standard broadband. Ping is 59 ms to the Los Angeles, CA server, a distance of < 50 mi away. Their ISP is Verizon Internet Services, and their IP is 96.229.79.x.

They offer parking in the back weekdays until 6 PM, when cars need to move to the street. Street parking becomes free at 6 PM — a lucky coincidence? I didn’t have any difficulty finding the place, nor finding parking. It’s a nice spot, and a very clean and new-feeling place.

There’s water and coffee, and a list of nearby restaurants (I think it’s provided by Yelp). They’re open for people to drop in and check it out. If you want to do that, their address is:

920 Santa Monica Blvd,
Santa Monica, CA 90401
coloft.com

Unlike the Dojo, I don’t see any couches here. It’s a retail space, and I don’t think they’d tolerate much sleeping (but I haven’t asked).

There’s some kind of women’s event happening here tonight.

I’m overhearing mentions of USC.

I also met Marvin, a web developer who’s doing freelance work for a company here in Santa Monica.

It’s a nice spot. It’s only 0.8 miles from the Apple Store, so I might walk over there later. The Apple Store is open until 9 PM, I believe, so I’d need to go soon.

I wonder if I could/should start a business like CoLoft, maybe somewhere else, far away (like Vietnam). What do you think?

Posted in Travel on April 8th, 2010 Be the first to comment

Restaurant Feedback

If I were running a restaurant, I’d want to collect some basic statistics on how much my customers enjoyed their experience. In many businesses, if the customer isn’t happy, then the company doesn’t want the customer’s money. This is more true in the Internet Marketing world than anywhere else, because word travels fast on the Internet, and there’s a lot of competition, so sellers need to do something to differentiate themselves. It’s not uncommon to see 100% guarantees (or higher).

When I leave a restaurant, though, the restaurant really has no idea how satisfied I was, other than the amount of the tip I left. If the receipt had a simple checkbox to say “I enjoyed this meal and would come back again”, I think restaurants might have a better idea of how they’re viewed by their patrons. If the customer isn’t satisfied, the restaurant has lost some repeat business, unless they do something to get the opportunity to try again and do better.

They can offer something like a guarantee. Perhaps they can offer a $2 off coupon to unsatisfied customers, and $1 off to satisfied ones (so they’ll come back just to use the coupon). They should collect some feedback on the receipts, because they are left in the bill booklet anyway, and there’s already a pen there (for signing off for a credit card transaction) so there’s not much friction to implementing it.

Posted in Travel on March 8th, 2010 Be the first to comment