We will eventually be iPhones? (a followup)
June 30th, 2008 by bennyA follow up to In the Future, We Will Be iPhones
I’ve had a few discussions with a couple of friends about the my post and the iPhone in general. More often than not, the reaction towards the iPhone is negative:
Give people the choice. Never think that a closed platform is an advantage. (via ericgar)
I still maintain that having a closed platform initially is good. I really feel that the mobile platform has taken far too long to take off. It really is a very powerful platform that will definitely change the way we work.
But I truly believe that if they had an open SDK, there’s a big risk of it stalling the mobile platform even more. Hear me out
The number of applications initially will be relatively small, just because it’s a young device/SDK. Because of this, the impression that these first few apps make really do matter. Applications like Loopt I think will really wow people, and I think he caliber of the first batch of apps should have this effect to jolt the software industry to think harder about mobile devices.
In one of the stackoverflow podcasts I listened to today (don’t laugh), Joel Spolsky shares my sentiment. He describes the difficulty of programming for devices that may or may not have touch styluses, that may or may not have GPS, that may have a wide screen or a slim screen. That affects the overall quality and leanness of the application.
He goes on further to say that Google Android might fail because it is open. He speculates that a lot of people who are excited about Android are not the general population, but sup3r 1337 h4×0rz who will be more interested in porting rxvt over to Android than they are creating solid, useful applications. I tend to agree. I’m not saying there won’t be amazing apps for Android, but the fact that only good application developers that are developing software for consumersare allowed to release software in the AppStore make it the rule, not the exception.
There are some others saying that Apple could have done a lot more with the iPhone. They could have included more apps by default, they could’ve included video conferencing, they’ve could’ve done a lot. That’s absolutely true. I thought it would’ve been really awesome if they included video conferencing. But I’m not sore about that. Why? If you look at the smart phone market right now, what’s there that is as exciting? Windows Mobile hasn’t done anything exciting in how many years?1 Palm software is butt ugly. Blackberry software, industrious and boooring.
So people can complain all they want about the iPhone software/firmware, but it’s the only one that has stepped up and created more than a slight buzz amongst the general public. They can say they’re not treating users right, but don’t the users of Blackberry/Palm/Wndows Mobile deserve a little care from their software developers? They aren’t treating their customers right if they leave their software stagnant and un-user friendly. Windows Mobile is on their 6th version, and its nowhere even close to where the iPhone is with its second version.2
All that said, I hope that the iPhone SDK will not remain closed. To grow, to progress, Apple will have no choice BUT to open the SDK up. Being closed off will hurt them like it has before. I think Apple is doing the right thing for now, in this situation. But once they’ve made their point, they have to adjust.
Shabadoowop3
In the future, we will be iPhones
June 27th, 2008 by bennyI couldn’t think of a better title. Or maybe it should’ve been…
Why I Think the iPhone is Important
But hey, it's my blog. I do what I want.
Nonsense aside, I truly believe that the iPhone is making great strides in the mobile space. For one, I feel like it is the first smartphone that makes people want to buy one. Have you ever been that excited about a new Palm smartphone (maybe except the Centro, which came out after the iPhone)? There have been some pretty cool phones, especially HTC ones, but the exposure of those are limited to gadget freaks. As the iPhone gains popularity, the mobile platform will be more widespread and available than ever.
In addition, I feel that it is improving the state of mobile platforms not only through sheer proliferation, but also giving people a great platform to develop on.
“The big advantage Apple has with the iPhone is that they control the entire product, top to bottom. The case, the chipsets, the OS, the user interface.”…. “Google’s dependence on hardware and carrier partners puts the final product out of their control — and into the control of companies whose histories have shown them to be incompetent at design and hostile to users.”
Now, I’ve heard many people whine that this is disadvantageous to the user. Yes, you’re at the mercy of Apple. Yes, it’s a closed SDK. But the major advantage of this is that because the specs are exactly the same across all iPhones, superior applications can be made for them.
I was really excited about Android was announced. It was a great idea. It has become apparent, though, that this model is flawed. Why?
Developers working on android apps are put in a position where they need to guess and program for different physical UI scenarios (none of which actually exist in the wild, yet):
Does the target phone have physical buttons?
What is the button configuration?
Does it have a touch screen?
What about different resolutions?
What sensors do you code for? camera? accelerometer? proximity? touchpad?
[via]
As an Android developer, I feel like you have to take into account of these factors. You need to degrade gracefully, have switches for a bunch of features depending on hardware. I feel like you can make a leaner, more powerful, robust application when you know what you’re working with.
Combining a visually superior UI and a consistent development platform, iPhone and iPhone apps will become wildly popular and push the mobile environment to the next level.
Shabowza.
3 Things I Love About You, Firefox
June 24th, 2008 by benny- You don’t crash (yet). Thank you. That makes me happy.
- When I move you onto my second, smaller screen, you know this. You readjust, and I appreciate that.
- You finally understand me. When I zoom, the pictures should zoom too, not just the text. You really know my soul .
PS: Laura, this does not change the way I feel about you.
Back, back, back it up
June 9th, 2008 by benny“… now wiggle with it.”
I’m not entirely sure why, but I’ve recently been hit with a fear of loss of data. This should have hit me earlier as I’ve lost three hard drives in the past two or so years. And I know it’ll happen again. Mostly it was because I was a college student and anything but ‘free’ was too expensive.
And it’ll, more likely than not, happen to you to. Of course, hard drives have gotten better through the years, but the failure might not be hardware related. Other things could happen: fire, theft, dog ate my hard drive, leprechauns, etc.
So because of my fear of leprechauns stealing my hard drive, I decided to look into the alternatives (read: read a lot of blogs) and found Amazon S3. It’s not free, but now that I’m making money, I figure it’s ok to spend a couple bucks to save my important data (pictures!). It’s basically Amazon offering their own storage space to us common folk. I looked at a few other options, such as Mozy, that looked very similar to Amazon’s service. Ultimately, I figured that Amazon has created and maintained many, many Data centers throughout the years, so your data is probably safe with them.
The service itself doesn’t provide an easy way to drag and drop your data, but there’s a piece of software called JungleDisk that makes your Amazon storage space look like another drive so that you can drag and drop! It works on Windows, Mac and Linux.
Now how much does it cost? No, it’s not free, but it’s pretty affordable. Most of the charges come from how much data is sitting on their servers, as well as how much traffic goes to and from their servers (uploading/downloading). Here’s a breakdown of my costs so far:
- Initial Cost: Amazon: $0, JungleDisk: $20
- Initial Upload: Amazon: $12
- Storage Cost: Amazon: $6 (40gb of photos)
So far, it’s cost me $38. So not “cheap” per se. But that’s only the initial startup cost. It now costs me around ~$6 a month to maintain what I have now, and I imagine it’ll only go up by a couple of bucks every half year or so.
I won’t go into the details, but eventually it’ll be cheaper to have an extra external hard drive (and even a RAID system, you still won’t have the reliability and replication that you’ll have with Amazon. And those leprechauns, don’t forget the leprechauns.
Logical Design
May 13th, 2008 by bennyI love how little design decisions can make a huge difference. The tangible changes may not be big, but the impact is enormous. Here are two examples of good design and bad design:
Evernote Login: Remember Me
I’ve recently been checking out Evernote (watch the video) recently and it seems pretty cool so far. If you want an invite, I have 10 of them :). It’s a pretty handy piece of software to keep track of random crap you encounter.
The login page looks pretty standard, username, password, remember me and submit. The beauty in the design here is subtle, but extremely useful. If you want to click the “Remember Me” button, you don’t have to click the tiny, tiny box. If you click the text, it checks the box too. This essentially quadruples the area that you can click!
It may sound obvious. It’s pretty logical to have the text be clickable, yet so many websites don’t let you do it. I don’t know how many times I’ve had to chase down that little checkbox just to select it. Making the text after it clickable is very simple to write in code; there’s really no reason it shouldn’t be clickable.
iPod Touch: Layout
A couple months ago, it was finally time to retire the iPod I had since high school. I had been waiting for a touch screen iPod to finally replace my old one. So far, I’ve been back and forth whether I really like it or not. Overall, though, I’m fairly happy with it. A lot of it has to do with it being gorgeous
One thing that has annoyed the bejeesus out of me is the placement of one of the buttons. It wouldn’t be such a big deal if it had more than two buttons. The iPod is shown below:

Now, this is a big problem when I want to do something craaaazy, like … put it in my pocket. The big problem is: which side goes down?
- On/off button - wrong. If it goes down first, it can potentially continually turn on and off whenever I sit down or even when I’m walking. I’m pretty sure there were a couple of times my iPod died much earlier than it should’ve because of this
- Earphone jack - also, wrong. This causes the base of the earphones I use to tear. Exhibit A:

If they were on the same side, there would be no problem!
On Missed Opporunities
May 7th, 2008 by bennyFor anyone who has known me for more than, I don’t know 10 minutes, would know that I am really lazy. I very much believe in the converse of the physics law “things in motion tend to stay in motion.” ie. if I’m sitting my ass in a chair, pretty be damn good to get me out of it.
However, recently, I’ve been oddly productive. I don’t mean at work either, but like in real life. What I’m referring to is some of the side projects I’ve been working on (exhibit a and exhibit b). Now, here’s a revelation I’ve come upon: It feels good to do stuff.
How does this relate to missed opportunities?
Muxtape.com has been getting some buzz around the net. It’s a pretty cool concept, upload a few songs, and be able to play the songs as well as link it with your friend. Simple problem, simple solution. Not trying too hard at all. It’s one of those ‘Web 2.0 startups’ that are bound to be bought out by a Google or Yahoo-types.
A few years ago, I had started develop this site called “hearphone”. Simple idea: upload a few songs, be able to play it, share the link with friends. Sound familiar?
I think part of the reason why I’m, you know, doing things is that it sucks that you miss an opportunity like this because you’re lazy. If you have a good idea, why not go with it? It sucks to regret not putting in the extra little bit to keep going.
Updated (05/08/2008 @ 9:37 AM): my thoughts about other “Mixtape” websites here.
new bwong.net
April 30th, 2008 by bennyFor the two (rss) readers of this blog (according to my feedburner), exciting z0mg 1337 soop3r h4z0r n3wZ!! THERES A NEW BWONG.NET.
Yeah, I know, I don’t care either.
But I’m going to talk about it anyway. So the other day I thought “instead of sitting on my lazy ass, maybe I’ll do something productive,” which lead to the new bwong.net. Over the years, I’ve had grandiose ideas of what bwong.net would be. I could have a lot of things like projects I’m working on, books I’ve read, pictures, videos, A WINDOW INTO MY SOUL, peanuts, music, tiny kitten, and the like. Then, I realized that was all ridiculous. Why would I need a whole complicated website for myself? I have at most 3 things that are interesting about me, and those could be summed up in 1.734 sentences.
So I opted for a simple, straight to point design (if you can even call it a design). It has all I really care to share about me on the internet, and points you to places where you can browse if you’re intruiged. The only thing that is a bit interesting about the page is the “I currently dig” thing. It has nothing to do with digg, but is kind of a weird love child between digg, twitter and my tumblr.
So I wrote a quick little script in PHP do keep these little snippets of things I’m interested in, links I’ve found, categorized with little tags. The script only took an hour or two to write and couldn’t help thinking of DHH’s post about the Immediacy of PHP. Anyway, if anyone is interested in how I did it, it might be fun to write up, but only if anyone cares.
Anyway, that’s all. Enjoy, and I don’t care what you think, I think its pretty.
Cedict Sqlite Database
April 27th, 2008 by bennySince my last post (3 hours ago), I felt like the data in Unihan was great, but basic. Most Chinese “words” consist of more than one character. For example, the word “adult” is “大人”. And what do you know, there’s a database for that too! It’s called CEDict (wikipedia entry) and surprise surprise, its a flat file like the Unihan database is. This time, it’s a bit nicer to use:
Traditional Simplified [pin1 yin1] /English equivalent 1/equivalent 2/
中國 中国 [Zhong1 guo2] /China/Middle Kingdom/
I’ve written a(nother) quick python script that’ll convert this file into a(nother) sqlite database. Enjoy!
#! /usr/bin/python # # A script to parse the CEDICT file into a sqlite # database. # # Author: Benny Wong <bwong.net> # Date: 2008.04.27 import re from pysqlite2 import dbapi2 as sqlite columns = ['Traditional', 'Simplified', 'Pinyin', 'Definition'] f = open('cedict_ts.u8', 'r') p = re.compile('(.*) (.*) \[(.*)\] /(.*)/') conn = sqlite.connect('Cedict.sqlite') cursor = conn.cursor() cursor.execute("DROP TABLE IF EXISTS Cedict") cursor.execute("CREATE TABLE Cedict (" + ", ".join([i + " TEXT" for i in columns]) + ")") for line in f: if not line.startswith('#'): tokens = p.match(line) traditional = tokens.group(1) simplified = tokens.group(2) pinyin = tokens.group(3) definition = tokens.group(4).replace('/', '|') cursor.execute("INSERT INTO Cedict (" + ', '.join(columns) + \ ") VALUES (?, ?, ?, ?)", \ [traditional, simplified, pinyin, definition]); f.close() conn.commit()
PS: <3 Regex
Unihan Sqlite Database
by bennyOnce upon a time I wrote an extension for Firefox where you could highlight Chinese characters and be able to right-click and “Pinyinize” the characters. It would then take the characters into Pinyin, the phonetic representation of those Chinese characters.
Now, the only way I could do that was to pretend to make a request to pin1yin1.com and parse the HTML page that comes back. That’s a silly way to do things. There should be a way/service where I could make a query, and have the results come back in a known schema, in JSON or XML or otherwise.
I haven’t been able to find one (if you know, let me know
) so I thought I’d see if I could make my own. I haven’t gotten that far, but I found out what database they were using. pin1yin1.com uses the Unihan database. The problem with that is is that its a flat text file where the lines look like:
<Chinese Character> <Key> <Value>
like:
U+340C kDefinition a tribe of savages in South China
It’s totally unusable in most situations so I decided to write a quick python (thanks Hila!) script to do this:
#! /usr/bin/python # # A script to convert/pivot the Unihan.txt file into a sqlite # database. # # Author: Benny Wong <bwong.net> # Date: 2008.04.27 from pysqlite2 import dbapi2 as sqlite charmap = {} keys = set() keys.add('Character') f = open('Unihan.txt', 'r') for line in f: if not line.startswith('#'): tokens = line.split() key = tokens[0].replace('U+', '') if not charmap.has_key(tokens[0]): charmap[tokens[0]] = {} unichar = tokens[0].replace('U+', '0x') unichar = unichr(long(unichar, 16)) charmap[tokens[0]]['Character'] = unichar.encode('utf8') charmap[tokens[0]][tokens[1]] = " ".join(tokens[2:]) keys.add(tokens[1]) f.close() keystring = ", ".join(key + " TEXT" for key in keys) conn = sqlite.connect('Unihan.sqlite') cursor = conn.cursor() cursor.execute("DROP TABLE IF EXISTS Unihan") cursor.execute("CREATE TABLE Unihan (key TEXT, " + keystring + ")") while len(charmap) > 0: key, values = charmap.popitem() columns = ",".join(values.keys()) cells = '","'.join(values.values()) sql = 'INSERT INTO Unihan (key, ' + columns + ') VALUES ("' + key + '", "' + cells + '")'.encode('utf8') cursor.execute(sql) cursor.execute("CREATE INDEX key ON Unihan(key)") for key in keys: cursor.execute("CREATE INDEX " + key + " ON Unihan(" + key + ")") conn.commit()
I haven’t worked with python much, so if this code is crappy, let me know and how to fix it
I’m seeing when I’ll have time to actually create the service (if anyone’s interested!) but yeah, here’s the basis that I’m going to be using.
You can easily port this database over from SQLite to MySQL, PostgreSQL, etc. by using “.dump;”
Enjoy!
