Categories
Taiwan

Igniting Taipei

A few weeks ago with a couple of friends we started to organize the first Ignite Taipei. There’s still 5 weeks and a bit to go, but it has already been a fun experience. In many ways, starting a community feels very similar to how doing a startup would feel (I imagine). No surprise there, the startups I would want to create would want to have a great community. :)

So far it is mostly about choosing the place, the time, starting to invite people, keeping in touch with them, building involvement by others and keeping those “fans”. It’s shaping up nicely, but there’s a lot more to go, we are not ready yet.

Another connection I found with doing an business: the best way to build up one’s own enthusiasm is to be as closely involved as possible. I keep watching Ignite videos on YouTube and sharing them. Writing a blog about what’s going on. Talking to people about it and see what they are interested in. Since at the actual event I think I will be managing the technical issues, there’s one thing I haven’t thought about before: what kind of talk would I give? How would I use my 5 minutes / 20 slides to have an impact? Unless I know that, I cannot really recruit speakers well, cannot help them effectively and would miss out on the core of the things. Also, it does help to exercise my idea muscles [1].

Ignite talk brainstorming
What _else_ to talk about?

Here’s the copy of the brainstorming I had today while I was waiting for my lunch:

  • 30 day challenge: take different bus route I haven’t taken before
  • 100 uses of measuring time
  • Hungarian for dummies
  • Comparative tea-ology
  • Feynman’s spaghetti-braking experiment
  • “How to measure the high of the lighthouse with a barometer”
  • Camino de Santiago
  • Organizing Ignite
  • Geocaching
  • Version control systems for fun and profit
  • Rejection Therapy
  • Startupbus
  • Everyday physics
  • A very short introduction to <insert author’s name here> (e.g. Palahniuk, Vonnegut, Beckett)
  • Kitchen in a pot: the electric rice cooker
  • Long distance travelers of ancient times
  • 100 uses of a wiki
  • Open-source hardware
  • Movie stars’ movies before they became really famous
  • All those different ways of brewing coffee

These I think fall into two categories: things I know a little about, and things I know too little about but would use Ignite as an excuse to learn more. Actually, since I wrote up this list more ideas keep flowing in and I think I will have to prepare some of these, even without a plan to show them to anyone: why would one need an excuse to do something awesome?

Any more ideas to talk about?

[1] “Idea muscles” come from James Altucher, one of my favorite blogger/writer lately. It is the habit of being creative, or by his word:

Every day I write down ideas. I write down so many ideas that it hurts my head to come up with one more. Then I try to write down five more.

I’m not that good at this just yet. The list above is as long as it is because that’s where my page got full. Not as if there are no 97 other, empty pages in my notebook… Maybe I’m too pain averse, but got to overcome that. I actually long for the feeling of doing as many ideas that it hurts thinking more…

Categories
Programming Taiwan

Taiwanese fuel subsidy and the Global Price API

I might have gone a bit overboard with this. Again. It all started when I was reading how the Taiwanese government is planning to implement a fuel subsidy. It bothered me because:

  1. I’m not a big fan of subsidies, since then people cannot make decisions based on the real cost of things
  2. Subsidy comes out of someone’s pocket anyway, so ultimately everyone does pay for it
  3. Looking at the governing party‘s track record and the nearing elections (<1 year), this is likely to be politically motivated
  4. Fuel is pretty cheap compared to other places already, so it must be already heavily subsidized.

The points 1, 2 and 3 are opinions and generalizations. I had to realize that point 4 I just thrown in there without knowing whether it is really true – I just believed it is. Now here’s a good example for [Citation needed].

XKCD: wikipedia protester
XKCD: Wikipedia protester

Filling in the blanks

Yeah, what do I really know? I lived in Hungary and Britain before, and I remember there fuel was more expensive then in Taiwan. Also, it’s open knowledge that the US is pretty cheap, compared to most of the world, that is… But are there any patterns in the price, and what would I expect Taiwan’s level to be?

I was checking around for a while, fishing for the right keywords for the search (“fuel” / “petrol” / “gas”, depending where one’s from, as a starter). Found a couple of sites but they were mostly looking at price comparisons within a country (like Petrolprices for UK) or within a region (like AMZS for Europe, works weird – no real static link, click the UK flag then “fuel prices” in the menu on the left). After a while, however, I did come across a German organization, Deutsche Gesellschaft für Internationale Zusammenarbeit (GIZ) which in fact had a study about international fuel prices. Go ahead and check the 2009 version, it is very interesting to see all that data and some analysis as well. Historical trends, relative prices, some case studies too. I would have loved to see more analysis, but maybe next time, when I’ll be in the in a position to commission such research. :)

Anyway, looking at the Taiwanese data in from 2009, diesel is slightly subsidized while gasoline is, which means that they are somewhat – but not too much – below and above the US price, respectively. In the ranking, Taiwan is very much on the cheap end.

While looking around a bit more on their site, they have a Data preview for 2010/2011 as well. The more recent is the data the better. Took a look at that too. Now Taiwan is a bit above of the US price with both types of fuel, but still on the cheap end. All their data was in a picture, though, that’s not very handy… So did a little data entry, resulting in this datafile.

I was also thinking, whether the economy affects the prices, and if does then how? Wikipedia first for GDP/capita for all the countries of the world, but they were taking the data from the International Monetary Fund, so let’s go to the source. I checked out their data export tool and there were quite a few more fields to choose from. I went with GDP per capita, Implied purchasing power parity, Value oil exports, Value of oil imports (these last two are good catch:). The output is here. The bottom of the page has a download link, downloaded it into this file without modifications.

Next, had to write some analysis code for the whole thing as well, converting the data into suitable database, fixing some errors in the primary database’s data formats. So in the end I had a simple little script that does:

  1. Clean up some of the names (some Unicode errors originally), and fixes one: I do want to convert the original “Taiwan Province of China” into “Taiwan”…
  2. Fix formatting errors in the IMF  data: they used number formats of “12,345.00” instead of just “12345.00”
  3. Fill missing values with “-1” so it’s easy to filter out later
  4. Rank countries by fuel price, ignore countries that have missing economic data or missing price data
  5. Combine all this and print out on the console

(Scripts and data are shared in this git repo.)

Taking a look

I was looking around for some useful visualizer – something that can handle this much data better then an ordinary static plot. Fortunately, Highcharts JS seems to just the right thing…

The first plot I wanted to reproduce is the one from GIZ’s Data preview. Let’s see how it works out:

Instructions: “red”/”blue” countries are net oil exporter/importer respectively, hover over any of the lines to see which country it is, can click-and-drag zoom into area…

So yeah, Taiwan is down at 49 out of 161 countries, and just few net-importer (blue) countries ranking higher. Even those are mostly poor ones.

Now the second picture, how do fuel prices compare with GDP/capita – which I naively think to have some connection to economical power:

Instructions: note that the GDP scale is logarithmic, hover and zoom are the same as before.

Might be just my eyes, but it seems to me that there are two lines on this plot if one ignores the net exporter (red) countries for a second. From the middle to the right prices are increasing: the wealthier countries can pay more for the fuel. On the other hand, from the middle to the left prices are increasing again: poorer countries cannot really afford it. The cheapest (nominally) are the middle-to-poor, $1000-5000 GDP/person countries.

Bottom line: Taiwan is there at ~$18000/¢100, and if there are indeed these lines, then Taiwan is waaaay below the wealthy country line. Based on the economy, the price should be closer to ¢150. This suggest to me that the original assessment was correct: Taiwanese fuel is cheap.

Global Price API

All of this data-hunting and conversion and plotting should not be this much of a pain. I have a feeling there’s need and desire for open access for such information and that transparency would help people’s decision making – whether those people are in charge or part of the public (and should be “ultimately in charge”). Of course, I’m not the only one to say this, and I’m not even a very good one making this happen – just check out Hans Rosling’s TED talk.

I was thinking, how to build a globally accessible database of consumer prices? Fuel is a good choice because it’s universally needed and there are not too many kinds, one can compare apples to apples. On the other hand, there could be other items as well. Maybe recruit a few volunteers from a big bunch of countries so periodically they add more info to a database. Or fully crowdsource it, maybe even the item categories as well? Then build an interface that it can be easily queried and used by programmers and non-programmers as well. Or is there any such database already? Pitching version: “Archive.org for global price and other public data”. Not that I have a business model for this… I’m sure I’d prefer the same as SimpleGeo and completely open the data itself, but I know there are people who will still find opportunities – or make some.

Any thoughts on this? One selfish thought I have is that this would be lovely so I never ever again have to manually enter all the names of all the countries of the world. :) But I do believe there’s much more to this project.

Categories
Life Programming

Hacker learning Chinese

I guess when a hacker learns a language it is different from the way “others” do that. I guess this, because I think I’m a hacker, I’m learning a language and it feels different. I see two main factors coming in the picture:

  1. I’m connecting things in my life, so the things I do usually need some motivation or purpose behind them, without which they are abandoned. The activities I keep up the best are the ones that connect multiple different things.
  2. I want to do things as efficiently as possible. Hack the tools, hack the process to make it better. If there are no tools, make some. If no processes, come up with ideas.

Okay, these are pretty vague expressed like this, now let’s give the example that prompted this post: I’m learning Chinese. Living in Taiwan for two and a half years now, so “high time” doesn’t even start to describe it. Finally I got a tutor, and a good one at that, so twice each week I have a good session of chatting and learning. After each of the sessions we have at least 30 or 40 new words and expressions written down. Those would normally be just forgotten, so I take an effort (about another hour or so after the session) to type them into a Google Document, this very one on the picture:

Google Docs Chinese vocabulary
The Google Document that powers my learning (click to enlarge)

Enter the English expression, the Chinese original and the pronunciation in Bopomofo (which I prefer to Pinyin). This last is possible because of Yahoo Chinese-English Dictionary (one service that is generally better than Google’s own Translate, though I frequently need to use both). The other three columns I’ll came in just recently.

At the moment I’m up to 307 expressions, and that’s just not possible to practice from a spreadsheet like that. I remembered, though, checking out a fellow StartupBus participant, Pamela Fox‘s Google Spreadsheet Flash Cards some time ago. It was fun but followed a different logic than me so couldn’t make complete use of it. But then: why not make a new practice system for myself? This goes back to the precious points: 1) connecting programming and languages – in both I’ll learn something new and they’ll reinforce each other’s motivation, 2) use the exact tools that I need even if I have to make them (because it’s possible to do).

Also after having done Who Said That? (that is currently down due to the AWS fail), I was into guessing games: let’s make a vocabulary guessing practice app that uses the above spreadsheet that I have anyways. What format it should be? Well, for the very first test, to see how to interact with Google Docs and such, just made it as a simple, console-based python app, something like this:

Chinese learning console
The console app to practice me Chinese vocabulary (click to enlarge)

Each practice round has 30 questions, randomized, 4 possible solutions, with the pronunciation as hint. Simple, though very ugly in the inside at the moment (here’s the repo, I still need to write a ReadMe). It works and now I know what to look out for in terms of implementation (how to log in, how to get and update data, stuff like that).

The other 3 columns in the above spreadsheet are explained as well: they are keeping score such as the total number of times a word/expression is practiced, the number of good answers and the number of current good-answers-in-a-row. These provide a rough-and-ready way to diagnose and manage the learning process – until I come up with better ways. Anyway, right now I get about 50%-70% good which is more than I expected, but still a lot more room for improvement.

A list of improvements to the program that I’m thinking about:

  • Making it into a site, so I can use my phone on the go to practice. Also, potentially others can use it as well to practice anything based on any spreadsheet with “one side – other side – hint” structure.
  • I’m pretty sure this whole things could be done in a single Javascript powered page. I don’t know enough Javascript to pull it off yet, but I’ve seen that all the components separately, and that would make a very portable and compact solution.
  • Need to figure out some easier setup of the spreadsheet if this is to be used by others later. I cannot rely on them understanding what they way I was thinking. Maybe in-app option to add more fields?
  • I remember reading somewhere that the most effective practice is that I reduce the frequency of checking words that I know well. That’s where the last column comes in: as one has more right answers in a row, one can tast that word/expression fewer times. If there’s a mistake then go back to the original method and test it more until score builds up again. This can potentially be a very complicated algorithm, I got to think of a way that scales well (ie. it is not too bad compared to an ideal method but does not require extensive amount of calculation). Have some ideas, but they need more polish.
  • After watching Salman Khan’s TED talk this year it grabbed me just how much information is there in one’s actions (they do amazing feedback to teachers on how the students study), how much better you can understand why did people what they did if you have all those diagnostic information (ah, the temptation of Big Data:). To apply this idea of extended diagnostics I could have a logging system instead of keeping (a simple) score. From there the system could get: how much you practice, how are you doing / getting better, what are easier or more difficult words for you, what two words you mistake with one another, suggest things to practice more, suggest words from topics that you know well to extend your knowledge… And more (this was just a little brainstorming). I don’t think I’d have time to extend it like that, and ideas are a dime a dozen, but one never knows…
  • Adding more modes of learning not just multiple choice, multiplayer learning, more game mechanics (achievements, pins anyone? :)
  • If there are central datasets instead of self-provided ones, then the system can anticipate what are the difficult parts from other students’ performance before you.

Now, let’s just see how will my Chinese improve during all this hacking, since that’s the main point, isn’t it? :)

New Formosa Restaurant Signature Dishes
Some motivation for learning, loads of Taiwanese food :)

Ps: If you have any language learning tricks, let me know in the comments!

Categories
Life Programming

Hopped on a bus

It’s been about two weeks since I came back from the adventure that is called the StartupBus. Things just start to sink in, soon the glare will fade and see what remains of the total awesomeness that is the Bus. I think a lot will stick with me, it was just way beyond what I could have imagined and I can already feel the changes the trip & the people made to me. The best possible changes, to say. :)

So, the StartupBus in a nutshell: 6 buses from all around the US set off a journey, with about 30 “buspreneurs” on board each, who ideally don’t know each other or haven’t worked together before. First, whoever has some business/product ideas, can pitch to the others. Groups are formed and everybody starts to make their idea into reality – and have to do that frantically, since there’s only about 48 hours before the buses arrive to their destination. Sounds like fun? If it doesn’t, you should just give it a try :)

Palm Springs morning before heading out.

I had no idea what to expect and when I heard the pitches that Tuesday morning, rolling out of San Francisco on the highway, I was thinking to myself: what do I do here? What can I contribute? There are just so many amazing developers, setting the bar. But I could choose a project in the end, something that was close to my heart since I do love to travel: Fly By Miles (the site went back to pre-launch mode for a bit, but that’s where it will be ;) – a site that wants people to use their frequent flyer miles well and easily. Our team had 8 members altogether: 5 developers (with yours truly), 2 designers and a business strategist. Of course these are lines drawn in the sand, everyone chipped in a bit in each role.

I have to say, thos ~3 days are close to a blur now. Should have continued writing my journal but there was just no chance for that. We were mostly hopping from co-working spaces to hotels and back, all through California, Arizona, New Mexico and Texas. I should know where, I wrote the Android app that told the map where we all are. There were some very nice places, interesting scenery that I haven’t seen much of. There were challenges like walking up to people in Santa Monica and getting feedback on our project – and taking a video of it (before this I’ve never thought I could do that. But got our 3 recorded videos and a few people’s thoughts off-the-record). There was always something to do and I enjoyed being left to my own devices and coming back with a solution. Not the best solution usually, so there were usually more than one iterations for solving each of the problems I tried to tackle, but at least there was a good modus operandi: give Greg a task, some time, maybe a couple of Red Bulls and he’ll come back with something.

By the way, Red Bulls: don’t let them anywhere near me for the time being. Lost count at 7, but the shakes stayed for a couple days after I stopped so it must have been more than that. Haven’t had it since high school (which has been a while) and under this hackathon circumstances they are very addictive…

Startup bus life snapshot
Life on the bus: laptops, getting contacts on phone, powernaps… Intense and awesome.

Well, after a few hotels and sleepless/frantic nights, we arrived to Austin. Finished up a proof-of-concept, working prototype and got some sleep. The next days were about taking Austin in, with Ignite, with SxSW, flashmob, friends, places, food… There was some programming as well, since Fly By Miles got into the semifinals, then into the finals, held in the Hilton. It was great, I really enjoyed it, an albeit we didn’t win, there was a lot to take home. Also, since that was my last night in Austin, I haven’t actually slept (again) and it was surreal to leave the place at 5am. Missed our CNN interview, but well, if we do it right, there will be more than enough to make up for that. ;)

What do I think I learned:

  • Now I can code everywhere. In the park, on the curb, on the plane, on the bus… Though Taiwanese buses have more hectic drivers and their suspension is worse than the Bus was so better hold on to that computer. Haven’t been coding on a motor-scooter yet, but I will…. probably won’t try that. :)
  • It is worth knowing the popular tech in the field I’m interested in even if I’m not using it (yet). In our group Ruby on Rails was the thing – and I’m a Python hacker. It was quite confusing for the first time, but I can see the advantages. This stands for other fields as well: mobile development, databases, design, front end interface…. There’s a lot of interesting tech out there, and I believe that one should try things out before the need arises. That makes educated choices down the road.
  • Have a niche. I might be biased, but I think this is even more important than the previous point. Know something else than others. Networking, game development, Big Data, Python, functional programming, myriads of 3rd party APIs (Google, Twillio, …), and so on. Anything that excites you.
  • Be quick learner. Before the trip I had to (well, wanted to :P ) pick up Android development in a week. And it produced something that crashed fewer times than I thought it would. :) After coming back I wanted to pick up Django in a week because I was curious. There’s even a result (Wanna see? There will be a proper post about that). I believe everyone can do that, so no excuse for not learning a new things ever week.
  • Choose carefully in what things you rely on others. It is easy to get burned and few things are worse than having your fate in someone else’s hand.
  • Take note what people say, but don’t have to take them too seriously. Everyone’s been excited at the end of the trip and wanted to continue the project. Two weeks passed and 2 (and a half) people left of the 8. No hard feelings, that’s how things work and there will certainly time to work with them together.
  • Getting in touch with people is easy. Not just technically, but nothing should hold you back. Fire off that email to the big shot you met, talk to the 2nd level contact on Linked In if you need to… Most of them will love something personal, just keep it simple, honest, and no hard feelings if it doesn’t work out. This liberated me on so many levels
  • Startup life is a test on one’s liver. I’d thought it is a marginal issue, but better be prepared. Not sure what way (no, I don’t mean training), but got to.
  • The best is always what you have but it’s always good to look out for more. For example. the Silicon Valley bus was undoubtedly the best bus of them all! :D But that won’t stop me from knowing as many amazing folks from each of the buses and off the buses as well.
  • Silicon Valley at least was Mac World. Been an outsider with my Lenovo, but I don’t mind if I cannot share the power plug with the other 29 peeps on the bus. Penguin power!
  • Laptop stickers are cool. I’m late to the party to say that (seeing some of the laptops there) but anyways…. I got to be selective, though, otherwise just too many stickers flying around.
  • Now I just cannot stop the flow of ideas. It is not a question that I’m a “starter”. What I need to learn how to select the good ones (or, probably I should select the “ridiculous” ones, they seem to work the best), and how to be a “finisher”.
Todo list
Morning results of the todo list after a whole night of hacking

Probably there are more lessons, but that’s enough. Now off to do some practice. Let’s see what happens until next year’s Bus :)

Categories
Life Programming

The power of not caring

I’m reminded time and time again, that the best things I do come from fun and passion, not mere sweat and grinding teeth.

Recently I read about a project called The Startup Bus. It’s a bunch of strangers getting on a bus going from A to B, for 48 hours, in which time they build a startup company from 0 to launch. It looked very intriguing and I applied even if I couldn’t imagine going there (after all, it’s in the US and I’m in Taiwan). Wrote up an introduction that was… how shall I put it? Ordinary? Bland? (maybe even that’s generous). Then I started to hear from more and more people on Twitter that they got on it and I did as most people do when they cannot get something: started to want it :) On the other hand, looking at who got on I had no hope that I’d be selected, none at all.  So instead of revising the application I had, just gave it up…. but also just wrote another one application. In true nerdy fashion in a programming language. And made it actually run. Just for fun. It is not perfect (can see it on Github) and actually I cannot imagine that no-one else thought of it… When I was satisfied, just sent it in, closed the browser and walked out. Not even an hour passed, I got my invitation…

So I’m heading off to San Francisco this weekend to mingle with a bunch of very clever people, do a lot of programming, most likely things I’ve never tried or even imagined trying, go all the way to Austin, when maybe could pitch to possible investors. What will come out of all this, I have no idea. But certainly glad I “didn’t care” for long enough that creativity (no matter how shallow) started to flow.

For me this whole story is brings up a poem by Dallas Clayton:

Good/Bad

How a bad idea starts:
“That looks easy… I could do that.”
How a good idea starts:
“That looks fun… I should do that.”

I like this way of thinking a lot, I even got it on a bag to remind me. :)

Now all the preparation is on the way, I’m helping by making an Android app to be able to track the buses en route. I week ago I didn’t know anything about Android apps. But there you go, it’s working, more or less. :P

BusDroid running on HTC Desire
A little side project for the Bus.

… and soon I’m hoping to use the power of not caring for many other things in life.