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.

Inspiration: ACCA Ad Campaign

June 2nd, 2008 by benny

ACCA Ad Campaign

Seen in the Hong Kong Airport.

Taiwan!

May 24th, 2008 by benny

I just got into Taipei last night (late!). I’m here on vacation with two friends (one of whom speaks no chinese!) until the 31st. The trip should prove to be … interesting :) I have a lot to blog about, but as you can see, none of them have made it on here yet. I’ll probably have a lot of downtime traveling around the island so maybe I can sneak a few posts here and there and post them when I’m back online.

New Seedless Website

May 18th, 2008 by benny

It was raining all afternoon here so what better way to spend it than making a website? …okay, so maybe a lot of ways but I settled on remaking the seedless website.

Not much of a makeover since theres not much content, but it sure beats the hell out of the nothing we had before. love it.

Disaster Relief

May 14th, 2008 by benny

from my tumblr:

As you may have heard, there’ve been disasters in Myanmar and China. If you follow those two links, they list ways that you can help out. I encourage you to help out in any way you can.

Logical Design

May 13th, 2008 by benny

I 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:
iPod Touch

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:EARPHONE FAIL
    If they were on the same side, there would be no problem!

Did you know…

May 7th, 2008 by benny

you can watch a whole season of “How I Met Your Mother” in one day? Not sure why I know, but It’s true.

On Missed Opporunities

by benny

For 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 benny

For 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 benny

Since 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