Skip navigation

Mention freedom, and people think about political crusades. Anarchy and liberty. Protecting your own or giving it to others. But to me, freedom is all about choices- options. Infinite possibilities in the universe to choose from. Either none or all or some or one of them. Same Situation, Multiple Approaches.

Freedom holds the promise of self-actualization. To increase happiness through the options that life gives us. To improve ourselves with autonomy. And I feel that when life gives us challenges with many choices, it allows us to calibrate accordingly. When there are subtleties and nuances that can be used in a situation, we can then fine-tune our solutions to what they need to be. We avoid binary answers by seeking out shades of grey. By doing so, we become more competent and flexible problem-solvers. Freedom empowers us.

Ultimately, life really is about finessing difficult situations. And freedom allows for finesse.


Started listening to the Søren Kierkegaard course on Coursera tonight, taught by one Professor Jon Stewart from the University of Copenhagen. In the introductory video, Professor Stewart interestingly connects Kierkegaard’s alienation towards society and promulgation of subjectivism to the modern world, with our lives constantly changed by new technologies. He helpfully jumps into Kierkegaard’s use of irony in critique. Though he does not seem to be a native himself, Professor Stewart seems to pronounce the Great Dane’s name accurately – “k-yoohk-ard”, in a way that is almost like a fluid slurring. Almost like an eldritch, chthonic being from one of Lovecraft’s stories.

Still gold.

The first week focuses on Kierkegaard’s Socratic task – “The only analogy I have before me is Socrates.” – modeling himself after Socrates, as an enlightener (and a gadfly critic of contemporary thought). The biography characterizes Kierkegaard as a provocateur and a troll since his youth, demolishing the arguments of his peers, which nicely sets up his affinity for Socrates. The Greek philosopher is described as a ‘negative’ philosopher in that he did not present his own theses to advance, but rather operated by attacking the concepts of other thinkers. Kierkegaard utilized Socratic irony greatly in his work, but prior to the development of his own philosophy, he was fascinated by Socrates’ dialogues. Socrates would go around feigning ignorance in the presence of fellow philosophers, or in the case of Euthyphro, know-it-all blowhards who claimed moral superiority when they were simply dummies. By asking pointed questions, he was able to reveal that their intellectual finery were no more than the emperor’s new clothes. Though Socrates doesn’t present his own thesis or ideals through his trolling, Kierkegaard was still attracted to his philosophizing- instead of telling the reader what to think, his dialogues allows us to fill in the blanks through self-reflection.


The great wisdom of Socrates was that he was one self-aware to know that he knew nothing, unlike many supposed experts of his day. He had the true Rumsfeldian knowledge of knowing what he did not know. But I suspect with great wisdom comes less ignorance. He at least had a starter knowledge that made him versed enough in the subjects of ethics, piety, and so forth that allowed him to dissemble his victims’ arguments with lines of questioning. After all, a great cross-examiner in a court is not defined by ignorance, but rather a knowledge that masks itself in ignorance, that takes apart lies and alibis. Socratic irony is ironic because the one wielding it isn’t an ignoramus, but rather a cunning wit, undercover.

I wonder if we live in a world too drenched in irony. Socratic irony is but one manifestation of it.

What I’m reading now:

“Men have been killed in the United States in living memory for wearing a straw hat out of season.” – Hatless Jack: The President, the Fedora, and the History of an American Style by Neil Steinberg

1. Get into the habit of writing out code by hand. It doesn’t have to be good code- it might not even have to be code at all. Psuedocode, flow diagrams, even pictures are a good start. Get in the habit of designing the structure of your program in your head; conceptualizing programs (or even just a class, or a function) will allow you to better understand what you’re trying to accomplish, and really force you to ask yourself tough questions: does this logic make sense? Is there a better way? How do I do this again? For the latter, writing code out frees you from the tyranny of convenience: it forces you to remember basic concepts, making you less reliant on Stack Overflow or simply Googling for the answer. Not that convenience is inherently bad, but you want to maintain your own independent knowledge and ability. Try things out before you look for the right answer. It’s equivalent to learning a foreign language by immersion. It forces you to remember the syntax

Being able to write out code is especially helpful for CS courses with exams that ask you to program. If you’ve practiced scribbling out code, not only will be better able to recall concepts, you’ve also gained the ability to start writing statements without an IDE’s autofill doing that for you. (That is also why a text editor, particularly a command line Linux one, is preferable for some programmers. In fact, coding in Vim without internet on or documentation to check is pretty much the same thing as writing code out by hand, minus a bit of portability.) Start writing out code a lot on your own, and the blank page with only a function prototype at the top won’t look nearly as daunting anymore. Don’t be embarrassed on ashamed

Whether GitHub will really make tech interviews obsolete or not, a programmer needs to be able to think programmatically without a computer.

2. Never, ever, be afraid of looking something up for fear of looking foolish.

It’s not a very long one, but it’s one worth remembering: you’ve probably read enough. All too often, it’s too easy getting caught up on obsessing over documentation and tutorials and best practices and “the right way to do it.” Humans lived before the internet, before mass literacy, before cave paintings even. Not well, maybe, but they still found ways to advance without learning everything from someone else. So likewise, we could too, without getting caught up in a deluge of material that just keep telling you what to do, without you actually starting something and learning from your own experimentation, practice, trial and error, and just general experience. And if there’s something keeping you back, at least there’s a few basic steps you can take. No-brainers, really. The sort of tips that actually nudge you in the right direction, instead of similarly enslaving you to “more stuff you have to learn instead of actually doing the right thing.”

Now, if you’ll excuse me, I’ll be doing something this weekend, lest these inspirationally snappy “get off your butt and go do something” posts become the same thing they warn against- more reading material that one consumes and learns from instead of actually applying.

I’ve been writing a form letter in LaTeX with WikiBooks’ guide. To my dismay, the default formatting yields a huge top margin.

Fortunately, Eliezer Kanal at Shady Acres has found the fix in the \opening section within letters.cls. All I had to do was manually \setlength the \topmargin above the printing and the \textheight of the main text box, and it formats correctly.

I’ve been working through the sample applications in Hello, Android, 3rd edition by Ed Burnette. One of the example programs utilizes the Google Translate API, which was abruptly changed to paying developers only last May. Fortunately, Google is not quite yet completely indispensable to the Net, and so I substituted the web service calls to the Microsoft Translator API. Much to my chagrin, however, Translation returns XML string objects, instead of JSON (as Google Translate does)-

<string xmlns="">feliz</string>

Mobile Orchard mentions three different XML parsers for Android – the SAX (Simple API for XML), pull, and DOM parsers. I opted to use the second, the XMLPullParser for my app due to its relatively lightweight nature.

// parse to get translated text
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new StringReader (payload));
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
  if (eventType == XmlPullParser.TEXT) {
    result = xpp.getText();
  eventType =;

After the pull parser is created from the factory, it iterates through the XML in the while loop. In my case, I only wanted the element contents between the <string> tags, so I set it to search for TEXT. In contrast, the DOM parser would have to go through the entire DOM, and the SAX parser requires overriding several methods, both overkill for the one-element response I’m expecting.

For future projects involving more extensive XML parsing, I would have to consider these alternatives more. Like the pull parser, the SAX parser is event-driven, and so does not store anything in memory. While this is more efficient, it prevents random access to any part of the XML file if necessary. The DOM parser, on the other hand, does store the entire document in memory and that enables random access of XML nodes. SAX and pull parsers are different in that the former requires setting up callbacks; in Android, you would override four methods that are each respectively fired when the parser either arrives at the beginning of the XML document, at the start of an XML node, at the end of an XML node, or when it reads the XML node values. A comparison of the three XML parsers showed that SAX has the best performance, but pull parsers aren’t too far behind. Ultimately, what’s most important is for what purpose you need an XML parser for. Personally, I’d prefer to work with JSON.

Designer Miles Lennon makes this observation and suggests a solution for it. I definitely see this happening quite often- I think one cause is that most blogs are not built around a central premise, and so the blogger lacks the need to update. Lifestyle logs, travelogue, or review-based blogs seem to get more traction because their writers simply post what their daily life. No need to search for profound insight to appeal to an online audience. Autobiographical blogs seem to be wither away slowly on a predictable cycle, as Lennon notes:

1) Euphoric moment of inspiration
2) Pseudo-maniacal and self-indulgent perusing of domains
3) Careful consideration of theme and design
4) The inaugural post – “Hello world!”
5) The 2-4 post honeymoon phase
6) Waning and changing interests
7) Feelings of desperation and apathy from low engagement
8) Inevitable abandonment :(

Personally, my experience has been more about not simply writing down my thoughts in time for the blog. Or having huge trains of thought that I ride down the Trans-Sibir, only to dissipate once I get down to the keyboard. Often it’s caused by an unwillingness to put in the labor required- setting up an entry, committing half-baked thoughts into actual publishable words, maintaining some coherency (ha, ha). And of course, it’s always easy to get distracted by playing with fonts or layouts or metaphors.

Lennon and Mitch Matuson have built Postary, a minimalist blog app built atop of the Twitter API, designed to maintain interest in blogs at step four above. Instead of having bloggers get too deep, they can keep posting fresh posts instead of falling into the cycle of inevitable decline. Twitter’s ultralight nature definitely helps this; it seems similar to other apps that bypass the 140 character limit, while maintaining a sense of brevity. I confess that I do not actually intend to use it- I want to stave off abandonment of this blog. But I do appreciate Postary’s existence. As the internet continues to expand and grow denser, established formats may change over time. Not everyone can maintain a million daily views blog, nor does everyone want one. Microblogging apps, tools such as 750 Words, and even the new WordPress update provide users with nicely minimalist interfaces to pour out their thoughts. Writer engagement should come first.

So I may have been too focused on a single feature of Google+ in my previous piece, so I’ll continue where I left off. Rather than discussing a feature such as Hangouts, Sparks, and the like in detail, I’m going to focus on the big picture.The big picture is that G+ is severely lacking in user content. The utility of a social network from the user’s perspective is content. Users want to what they’re friends are doing or saying. Think of the badness of MySpace: tons of vacuous celebrity or upcoming film profiles with members but of little actual substances besides gaudy HTML templates and fake spammer accounts.

Based on current trends (again, barely researched and based more on intuition and surface impressions than anything), I don’t see Google+ becoming a viable direct competitor to the “trinity” of social networks it is supposedly replacing- Facebook, Twitter, and LinkedIn. My first reason is that users possess finite time, effort, and patience for social networks. On this point I defer to one infinitely more knowledgeable on this matter than me. The CEO of LinkedIn, Jeff Weiner, has summed up the dilemma: “All of a sudden, you say ‘Where am I going to spend that next minute or hour of my discretionary time?’ and at some point, you don’t have any more time to make choices.”

And it’s true. The existing social network ecosystem has different networks for different niches. FB for general casual social, LI for professional, Twitter for microblogging (or micro-Tumblring, which would be equal to picoblogging I guess), and never the thrain shall meet. Users do not possess the time to go on redundant networks- who bothers with having both Facebook and MySpace at the same time?

For Google+ to survive, it will have to carve out its own niche, or overthrow any existing social networks. To do so, it will need to offer unique content that will attract users and compel them to create new content. It quickly becomes a chicken and egg issue.

The second reason for the lack of user content is that G+ does not seem to offer many new features. New features allow users to generate new content. But the current offerings seem to be rebrandings of features found in different social networks, and on Google itself. The front page is simply the same as the Facebook newsfeed, LinkedIn updates, etc. Posting updates, sharing items, and so on is the same sort of experience we see in other social networks. The originally-touted killer app was privacy- at this point, Facebook has already covered that, by introducing the option to restrict who gets to see what update.

Despite any shortcomings in these features, Google+ can attract new users in other ways. First, is the weight of the Google brand and the very dream of a “better Facebook” itself. Doubtless many of the users who joined are people interested in checking out something that aspires to be the next social network, created by the titans of Google. Amazingly, the hoary “this is a Beta, invites only!” policy still propels viral transmission despite having been used again and again by Google.

Next, Google+ taps into all of Google’s other features by giving an improved dashboard and integration with other Google options. The company’s m.o. is to get its hands in as many pies as possible, creating a Google X for every thinkable service. (Though, unfortunately, not yet an ISP.) Google+ seems to not simply a social network, but a revamp of Google Profiles. Previously, Profiles were hardly a widely used feature, or a feature that lacked many uses. You create an online Googlecentric identity tied to your Gmail account and others that people can find, and that seemed to be pretty much the extent of it. With G+, your Google identity is actually useful for the other features of social networking besides discovery- you can connect with people, broadcast public statuses and posts to them, Hangouts, etc. By having a singular, defined identity, you can have all of your Google accounts consolidated to one location. Perhaps that is the reason why the system is named Google Plus, rather than Google Circles or Google Social or Google Faces or Orkut+. G+’s aim is not only be your social network, but a better way to access your Google everything’s. Ideally, this would improve your Google experience, encouraging you to spend more time on Google+, generate more user content, which would lead to more pageviews so the ad gods are happy and Google makes money.

But the first way does not guarantee user content- how many of these new G+ accounts translate to accounts that are actually used on a regular basis? And the second way may actually be a liability. Consolidation can lead to alienation. Consider the whole snafu with the real name policy. Even before that, mandating that Google Profiles are to be made public or deleted. This is Google micromanaging user behavior in order to drive consolidation of accounts. If you’re going to tie your Google Profile to a social network, we can’t have fake bot accounts now can we? Why not make it easier to track your Google content by attaching your real name to them? But despite these good intentions, this sort of policy only angers the public. Think random FB site redesigns, except worse because you’re dealing with privacy issues here.

That said, I do enjoy the integration with other Google products, particularly G+’s albums being powered by Picasa. One-click red eye correction beats slightly Orwellian automatic friend tagging any day of the week, and I’m surprised that Facebook hasn’t caught up yet with some limited photo editing functionality.

Behold the future of faces!

Possible futures for Google+

Despite my first reason, ironically, I do foresee G+ and FB coexisting despite users having limited time and effort. That’s because far from transforming into the “next Facebook”, I see G+ staying on as a niche network. Google+ will survive in the clanking Google juggernaut by becoming the “group Skype network,” the “Picasa network”, and perhaps as the “nerd network.” The former is because Hangouts and Picasa are superb, and G+ is a good enough frontend to access and manage those accounts as any. The latter is one of my gut impressions. Some of the most popular G+ posts were Tom Anderson’s thoughtful ruminations on how it fulfills some of his dreams for MySpace. This may be due to my own limited view, but I don’t see any public posts from entertainment celebrities on G+ yet.

Of course, maybe it’s just because the early adopters of G+, an actual viable alternative to FB, a Pallas Athena springing from the forehead of Page-Zeus himself, are nerds and savvy social network power users. Tom Anderson showing up and getting a lot of buzz is a natural consequence, as opposed to Kim K. or Kanye. I’m not sure who were the first big celebrities on Twitter, but I doubt it was Ashton Kutcher. Unless there is a mass exodus from Facebook, the biggest stars on G+ with publicly read and re-posted notes are likely to be the geek glitterati, the industry insiders, the web essayists.

My view is that most people will continue to use traditional, preexisting networks. G+ will survive, not only in the nerd/tech niche, but also through apps that allow for easy reposting on multiple networks. Think of the utility of Meebo, which allows you to be on multiple chat accounts of multiple protocols in one easy web app. Think eventually of a meta-poster that allows you to Share a story on Facebook, Twitter, LinkedIn, Google+ at the same time. Or Like, +1, InShare, Tweet, Digg, Reddit simultaneously. (Gone are the days where there’s a mosaic of share buttons on the bottom of every article!) Ultimately, the real killer app for social networking is to simply bridge all of your current networks together. The upcoming G+ API is only the beginning.

And that would be true consolidation, not simply a Google Profiles+.

I haven’t touched this blog for a few weeks, having been swarmed by pending tasks and priorities. I’m at critical mass right now in terms of work. As such, this will be a short entry-

I’ve been experimenting with some different lifehacking techniques, reading on theories of motivation and anti-procrastination articles. At this point, it’s a bit too late to implement a long-term plan. So I’m going to machete my own path through this thicket! Some thoughts:

1. Even with a deadline, breathing space is necessary. I thought of this approach during a jog- cleared my thoughts right out. There’s only so many hours a day you can remain concentrated and energetic enough to handle a project.

2. Go for short term accomplishments. It’s time to do this one-man Agile style. Achieve something, check to see if I’m on the right path, iterate. Getting this done correctly keeps me in the game- mastery is one of the big three of Daniel Pink’s motivators.

3. Focus on the here and now. Don’t dwell on external constraints. Focus on the achievements instead of the failings. Keep the morale up that way and remain driven.

4. Air out the brain. Cut out distractions.

Let’s see if this works. Wish me luck.