Entries for July, 2009

Off Matt Pond PA's Freep...

Matt Pond PA - Amazing Life

Amazing life
We've been given
I know that you had some troubles
I have had some troubles
We been wasted
We've been complacent
We've given in to getting through the days

I hear the doves
Singing in the trees
They call the dusk
Its colors nod to sleep
The coming dark
Can't hide what we can see
Can't hide what we can see

The algebra
Of innocence
Is lost in the bathroom mirrors
Practiced born and steady
Been complacent
We've been bad neighbors
We've been unfaithful in our prime age
To open up to see what happens next
To see our hearts
To risk breaking our necks
To chop it down
To follow there against
So we'll be young again

Amazing world
The ground that gives
I know that you had some troubles
I have had some troubles
We been wasted
We've been complacent
We've given in to getting through the days
I saw a star
Fall from a green sky
I saw you laugh
Your eyes were opened wide
I saw your skin
Uncovered in the night
Uncovered in the night

Download or preview:

Posted by roy on July 1, 2009 at 02:10 AM in Music | Add a comment

For those of you long-time readers, who bore the brunt of my long-winded poker entries from back in the Carolina days, will be happy to hear that Terrence qualified for the WSOP Main Event ($10,000 buy-in!) through a satellite tournament.

I was in Vegas Wed/Thurs with my parents, and was able to catch up with Terrence, Brigid (T's GF), and Peter ... I'm feeling pretty pumped for Terrence. If there's anybody I know who could do well at the WSOP, it's Terrence.

And he's decided to pick up his Tabulas poker diary to capture his experiences.

Check it out: http://terrence.tabulas.com

Good luck, Terrence!

I'll tell you one thing - talking to them about poker makes me want to train again; my game has diminished so greatly lately it's not even funny. (Un?)fortunately, my job keeps me quite busy where I couldn't realistically put in the hours to get good again. Oh well!

Posted by roy on July 4, 2009 at 03:04 PM in Poker | 6 Comments

When it comes to have extreme feelings, Tabulas has to best exemplifies the chasm of emotions I have towards it. The feelings mix from despair ("Tabulas sucks, why bother?") to guilt ("I should really fix it up") to hope ("I can really sense it's on the cusp of being a great site!").

The traffic logs really tell the story:

At its peak, Tabulas was handling somewhere in the vicinity of 2,000,000 pageviews per month. It's not an amazing feat, but it was something to be proud of. Since then, traffic has been slowly dying, as I've been neglecting work on the site.

I took a peek at the SVN checkin logs for Tabulas, and they are atrocious. There will be a flurry of activity once every six months (as was the case this past weekend), but then, silence.

And sadly, most of the dev work since 2006 has been around infrastructure and code cleanup. In terms of new features and the way Tabulas is positioned, it's been stuck in a quagmire since '06.

It's tough to watch sites like Facebook, Tumblr, and Twitter execute on strategy that slowly bleeds the community out of a project like this. Of course, part of the problem is that people simply grow up - the core community users who led to its widespread adoption don't blog as actively as they used to, and that always hurts. Tabulas never replenished with fresh members (which is what Facebook has been very good at doing, every year or two).

While I try not to be regretful of the decisions I've made, I question my decision making when it came to abandoning projects like Audiomatch and Tabulas. Looking back, had I been a little more mature in my decision making, I would have not taken the success of Tabulas so lightly; I would have hired a team, gotten some money, and taken a real crack at succeeding in that space.

So what's next? I don't know. Like always, Tabulas sits in a purgatory - I'm too proud of it to sell it, but too time-starved to do any meaningful work on it.

I do know that I immensely enjoyed hacking on Tabulas this past weekend - it was a refreshing change of scenery from dealing with real adult-like issues from work. I've mapped out a few ideas I want to pursue for Tabulas - being able to hack out a whole user directory in ~300 lines of code and in a day gave me encouragement that the code I've written for Tabulas isn't complete crap.

I mean, the work I did this weekend looks pretty good and is pretty functional:

I know I want to finish accomplishing the "dream" of Tabulas: a site which lets you share your stories, and where you can be exposed to the stories of other people.

So even if I'm exhausted from work, or I don't feel like hacking, I think I'll force myself (for this month and August) to work on Tabulas. That will be my goal.

Out of curiosity, for those of you are still using Tabulas ... why? I mean, some of you, I know, are stuck here by personal connections ... but is that all Tabulas has left going for it? (/me is geniunely curious) I know I still use it because it still beats the pants off of WordPress & LiveJournal in terms of personal publishing, but maybe there's something new that's better? (Tumblr doesn't count)

Oliver rockin' the Tabulas t-shirt.

Currently feeling: hopeful
Posted by roy on July 6, 2009 at 01:51 AM in Ramblings, Tabulas | 27 Comments

To supplement my healthy appetite for Akon, I also am listening to heavy doses of sisters Meg & Dia - I've been a long-time fan. I need to try to make it out to one of their shows one of these days.

I might be in love. <3

Chicks who rock = game over for me.

. . .

For those of you who enjoyed the catchy pop music of The Click Five, I present to you ... The Higher:

Posted by roy on July 6, 2009 at 10:54 PM in Music | 5 Comments

It's no secret that I've been quite busy at work lately. I face a daily barrage of decisions and questions... and I finally have a solution.

The idea came upon me when I ran into this Twitter site, "Roy_from_IT":

If one were to do a regression analysis on my Skype conversations, I believe a full 95% of them would involve one of these responses: "lol", "brb meeting", "hmm", "interesting..", or "what do you think the problem is?"

Imagine if I had a Skype bot that just randomly selected one of these answers and return them?! I bet I'd still be at least 80% effective at my job. Let's imagine...

The MindTouch office is humming with activity on a busy July day:

Like usual, I'm not at my desk (maybe people assume I'm in the front room on a conference call with a client, but maybe I'm just sitting in there, talking out LOUD TO MYSELF). Damien, in a rush to get an important answer about a client project, messages me on Skype:

DamienH: Hey Roy, the blog paragraphs fix didn't seem to work. I tried to change Wordpress' behavior to nl2br, but it didn't fix it.

He wouldn't expect an answer. Damien might even be thinking, "Well, I asked him the question, he's not at my desk. I can get a burrito!" Bzzt.

RoyK: What do you think the problem is?

Damien swivels and sees an empty desk. Confusion reigns.

DamienH: Well, I guess we could try to use CSS to fix the problem with paragraph breaks. That'd be a cleaner solution that wouldn't necessitate an internal fix inside WordPress we'd have to maintain. Thanks Roy!

Or maybe a group chat begins with Corey and Brian about something important:

BrianH: Yo Roy, ***** from ***** is such a douche. He won't respond to my emails.
CoreyG: This is really going to drag down my "support tickets close" statistics. I may just close it to keep our "average days open" number low.
RoyK: lol
CoreyG: You're right, we should try to solve the problem. Let me try emailing him again. Thanks, Roy.

Or maybe Guerric is working on some fancypants feature:

GuerricS: So I've got this killer new version of Deki Push I've been hacking on at home. Want to take a look?
RoyK: Hmm...
GuerricS: You're right, it's probably not polished, and import/export will deprecate it. I won't waste your time.

So easy!

Of course, people might pick up on these if they're too short. Maybe a more contextual answer will help.

JessicaR: So, I think we need a feature to make it easier to skin.
RoyK: Hmm, interesting. I think that's a great idea, but we just have limited resources. We should focus on what we can do in the immediate future. But we should definitely mark that down as an idea we should pursue in the future.
JessicaR: Thanks!

Of course, sometimes it's good to get people to be actionable.

DamienH: I just wrote this killer animated Ajax counter. Want to see?
RoyK: You should write a blog post on it.
DamienH: That's a great idea! Here it is.

Sometimes our Russian devs need a little help: (my script would have to send one message, wait for a response, then send the second one!)

DmitryA: Hello, Roy! What is polyglot function?
RoyK: Did you search the wiki?
DmitryA: Ahh. <goes away for five minutes>
DmitryA: _______________ (doesn't really matter what goes here)
RoyK: File a bug on it.

Or maybe one of the interns needs my help:

RickyN: Got time to help me with some code stuff?
RoyK: brb, meeting

No, wait. I'd do that when I'm actually sitting at my desk.


Posted by roy on July 8, 2009 at 11:28 PM in Foolishness, MindTouch | 2 Comments

Saw Arj Barker open for the FotC concert a few weeks back, and had to share this clip about Google:


Posted by roy on July 9, 2009 at 01:39 AM in Foolishness | 1 Comments

Posted by roy on July 9, 2009 at 09:15 PM in Ramblings | 3 Comments


My Arby's story of the night... as told in Twitter (read it from the bottom-up):

(Until July 12th, you can get a free Arby's sandwich)

Even worse, I think my locksmith was a bit inept (or something). Dude took 90 minutes to unlock my door. Oh well, that's life.

Now I'm tired, and my wonderful plans for the evening (hack on a MindTouch side project and pack for this weekend) are wasted. At least I got 'Frisco to look forward to this weekend!

Posted by roy on July 9, 2009 at 09:28 PM in Ramblings | 11 Comments

San Francisco was awesome. Definitely one of those cities I can imagine myself living in in the future (joins Seoul and NYC) - I'll have to make it up there again sometime! But now, I am exhausted and must sleep!

Posted by roy on July 13, 2009 at 12:08 AM in Travel | 1 Comments

Let me first say that this SF trip was the most refreshing trip I've taken this year - although I came back (physically) exhausted, I came back mentally refreshed. I certainly didn't feel this way when I got back from Tibet or even my Vegas trip with my parents. So, that's good.

. . .

I've always been a pretty decent multi-tasker. While I can do deep-thinking on one task (Tabulas didn't build itself!), being able to multi-task has been more valuable to me. Priding myself on multi-tasking, I had been trying to get to the source of why I had been feeling so mentally fatigued at work lately.

The conclusion I reached was that I had been engaging in far too much tactical/strategic context switching on a daily basis. Having to to do simple context-switching is tough, but when I had to constantly switch between the mindset of tactical ("how do we do it with the resources we have") and strategic ("should we do this?") decision, I got burned out.

It was made abundantly clear during my Q2 objectives review with the exec team that my decision-making process was starting to slant to the tactical decision far too much (either that, or I assumed the strategy was obvious from my tactics). This is worrisome - while getting things done on a day-to-day basis is important, I have to constantly remember where we need to end up as a team and as a company. For me, trying to execute on both have led to less-than-optimal decisions. I've also noticed that having a VP of Sales (strategic) and a separate Director of Sales (tactical) has been a big boon for the sales side of business.

While it's ideal to be both strategic and tactical, the reality is most people will fall into one of those two camps. (While it's perfectly OK to be tactical without being strategic, not being tactical when you're strategic is a DEATH knell!) Identifying whether somebody is a strategic or tactical thinker can help tailor a management strategy for either personality. As I was thinking about this, I realized that I'm probably a good tactical manager; although I trust people to make decision on how to execute, I am always hovering, and will nix ideas that seem strong strategically, but don't make sense tactically. (Basically I trust them ... but not all the way).

One thing is clear: I need to figure out a way to continue to devolve my responsibilities so I can step back into a more strategic role at MindTouch. But there is an internal reluctance to do this, as I've found directly wielding tactical decision making to be quite an efficient tool at implementing strategy; moreso than being purely strategic and relying on others to be tactical. Of course, that's not to mean that completely divorcing myself of tactical decision is healthy - all strategic thinker should be able to execute on their own ideas - after all, execution is a multiplier on ideas.

Posted by roy on July 14, 2009 at 01:56 AM in Personal, MindTouch | 5 Comments

I'm having a good day, but I just wanted to share this funny picture:

What a perfect photo!

Posted by roy on July 15, 2009 at 03:57 PM in Foolishness | Add a comment

Seems Obama's job rating is hitting the dippers. A lot seems to be going on these days: Iran and N. Korea getting fiesty, economy not recovering, taxing the richest earners to fund socialized health care, pushing an emissions cap-and-trade program that gives away 85% of its emission credits for free , wiretapping flip-flop ...

I have a lot of random thoughts, but I'm not strongly opinionated on any of these. I do think health care needs to be socialized, but I also think people need to stop trying to live forever (as the Times points out). Technological innovation will pull us out of this recession. Unfortunately, the surplus tax on the rich to subsidize health care might potentially drive enterpreneurship into the ground. My biggest fear is we pass some ridiculous health care package which doesn't drive health care costs down, but simply divert money away from the private sector, which then inhibits entrepreneurial growth, which then leads to us really getting our asses kicked by one of the BRICs.

. . .

I saw this linked recently, and it cracks me up:

It's funny on so many levels ... and of course, I love Shaq.

Posted by roy on July 16, 2009 at 10:42 PM in Ramblings | 1 Comments

There was a Slashdot article about the science of online dating. The article itself is rather boring, but one comment in particular struck me:

My opinion at my current age of 50 is that if a man is younger than 30 and has never lived with anyone for any length of time, he has no idea what he wants in a partner.

I can't imagine this situation would be any different for me - it will take some time to figure out the type of women I'd like to spend my life with. This seems like it'd be rather troublesome a few years down the line if I start dating ... I'll just be in the exploratory phase of finding out what I want, while the women I'd probably be dating are looking to settle down.

Future Roy, sucks to be you.

Future Roy, I hope you like sausages.

. . .

On Friday, MindTouch took the whole company go-karting. We went through qualifiers and everything - I got shafted on the qualifying run and ended up doing the "slow group" position race ... but I won that group rather handily. (Finished about 10 seconds ahead with an average lap time of 29 seconds)


(Both pictures courtesy of Aaron)

Posted by roy on July 19, 2009 at 03:51 AM in Personal, MindTouch | 6 Comments

A very nice, relaxing piano piece:

The sheet music (it's not a tough song to learn!)

Posted by roy on July 20, 2009 at 10:21 PM in Music | 1 Comments

There's going to be nothing groundbreaking in here. Just some very basic thinking.

The ideal structure for a company seems to be something like this:

The leader leads a small pack of independent-thinking people to a single goal. This is the dream for all "agile" companies. The benefits to this approach? True equality, a true forum for discussions, and the ability to quickly adapt. The problem with this approach is if you have one bad apple, it really brings everybody else down.

The other downside is this doensn't scale. The next approach seems to be something like this:

A leader communicates with a small cadre of individuals, who then relay the message onto their respective teams. The upsides to this approach: still relatively agile (Depending on the cadre of "inner" team members, this could be more agile, as the decision making of the leader is effectively multiplied), lowers burden of management on the core leader, and leaves specialized teams to execute to their specialty with clear ownership. This structure also has the benefit of "smoothing" over the weaknesses of individual team members. In the first case, the shortcomings of an individual are bared for all to see, in this scenario, a team leader can fill his team with mediocre players and still come out relatively ahead if they're a rockstar manager (see Rands).

Of course, cross functional communcation is important; oftentimes the inner cadre have their own communication channels:

This allows team leaders to strategize, and leave the tactical decisions to their teams. Team leaders can tap the experiences of other team leaders to synchronize activites. Be wary of making both strategic and tactical decisions, cause you're basically treating everybody like mules in that case, and what you really want is Henry Ford's approach to industry, which seems rather ludicrous in an information age.

Upsides to this approach? Still quite agile, still keeps single people in charge of driving the direction of the boat, and still leaves ownership of projects intact. The downsides? It breeds a "I'm a _____, and I'm not in charge of _____" mentality. Unless the connection between all teams is incredibly strong, this will lead to significant problems. For example, it'd be like two people building a bridge across a river from opposite sides; without good communication, you may end up with two pieces which never connect. Oops.

But what about this?

This is close to a "unified" company diagram as I could draw. Everybody communicates openly once the strategy has been laid down to accomplish a task. People perform cross-functional tasks to complete each project at hand. Everybody can tap any other resource at any time. Need marketing resources? Go for it.

The problem with this approach: "Success has many fathers, but failures have none." Be prepared to watch everybody disown themselves from a failed project. Miscommunications are amplifed significantly in this scenario as well. If the central strategic message is articulated strongly, then the risks of people working on non-critical tasks are lessened; otherwise, be prepared to be fighting tons of pet projects that seem strategic, but really aren't. It's very easy to get caught up in with the little things in a scenario like that - one person can effectively lure a bunch of people into working on a non-essential project, which gets harder to kill.

As a manager, this is a tough situation to resolve - you need to understand what your team is working so you can schedule accordingly. For a company that is working towards one goal, this absolutely seems to be the case. What I find helps in scenarios like the third is to have individual team members come up with their work items over a short period of time, and touch base to make sure their work items are inline with what you expect.

This is opposed to approach #2, where the team leaders would articulate the message, and work together on the tactical approach to achieve said goal with their teams. Input in the third scneario can come from many different directions, so the best you can really do is make sure the work being assigned and done fits your objectives (which should align with the corporate objectives).

Through this exercise, I'm trying to figure out the balance between where work items should bubble from - bottom or top. In all scenarios, it's critically important that a core strategy be articulated - this sets the framework for all the thinking. Good communication is an execution multiplier.

Which graph most resembles your work place? Which one seems to work best? I've gone thorugh all three at MindTouch, and am still on the fence. (We're currently at Stage 3, but I'm seeing a lot of problems with it - it's great for executing multiple small projects, but absolutely horrid at executing on strategic big-picture ideas).

Posted by roy on July 21, 2009 at 02:26 AM in Ramblings | 5 Comments

This is so incredibly peaceful:

While in San Francisco two weeks ago, I got to check out the California Academy of Sciences - which had an aquarium in it - it was pretty awesome. I'll be flying to Atlanta in mid-August, and I definitely want to check out the Georgia Aquarium while I'm there, which is billed as the "largest" aquarium in the world - it has 8 million gallons (although 6 million of those is for just one tank!). I can't wait!


Posted by roy on July 22, 2009 at 09:33 PM in Ramblings | 9 Comments

Head is swimming. Almost seemingly on cue, a lot more strategic discussions have been coming up lately. Hiring, product road map, etc. It's a pretty clear reminder how I've been failing at communicating back to the teams about the high-level goals. Everybody's been in "heads-down" mode with clearing out low-level work items for the past couple of weeks, but things are starting to clear up.

A process has been defined for getting acceptable updating messaging onto our corporate website that has been very successful over the last month. In the absence of a marketing department (how small we are!), I've been helping Aaron with the copy on the site. I feel like I've been doing a satisfactory job on the pages that are expected of me ... so I'm feeling better about my writing. Now that I don't need to micromanage the details of deploying those changes, I've been slowly removing myself from that process, which has allowed me to immerse myself back more onto the engineering side of things.

With the Minneopa release looming, I've been engaging in some pretty trivial bug fixes (31, though!), which has been a nice break from everything. I also managed to hack together a early prototype of <form> support inside MindTouch (blog post forthcoming on the dev blog!). As much as I like DekiScript for what it does, it is just misusing the technology if you try to accomplish any type of form control with it. And I do NOT like Javascript-heavy versions (accessibility, people!)

Along with the Minneopa release, we've got a pretty big feature delivery to a rather large customer, that is a bit stressful. It is unfortunate that one of the primary devs scheduled a vacation during July, and that OSCON was scheduled during this week as well. Their team is flying out to SD next week, so that'll be fun to have them in the office and work with them closely on getting this feature polished and ready for them. We've got our work cut out for this.

One of the major areas where I've been unable to really push forward with all this happening is professional services. While we have two other large projects outstanding, I don't feel like I've been able to make forward traction on them. It's really painful to be running these large deals basically through two people: me and Damien. Pete's been incredibly helpful in assisting on any deployment issues, but it's incredibly unfortunate that I need to keep tapping engineering resources to complete these projects. This is something that needs to be resolved in some way - as it's not sustainable.

I managed to get back into wearing more of the product management hat today, and it occured to me as I was doing some sketches and mock-ups of our solutions pipeline that we won't be able to execute on this without beefing up the front-end resources significantly.

Back around when Lyons was wrapping up, it was clear that marketing & professional services was our huge weakness. To that end, I siphoned off engineering resources - and the two resources which were most convenient were the UI devs (talk about the flexibility of web devs!). This essentially meant that any UI development ground to a halt, which was most inconvenient. I'm going to amend this by switching some of them back over to UI tasks, because it's clear to me that if MindTouch expects to deliver the high-quality turnkey solutions, there's no way we can avoid that without significant UI overhauls.

So I was sketching out mockups for one of our solutions today, and I kept going back to a navpane-less design. No left navigation! When I looked at our existing customer base who fit this solution, none of them used it, and I found myself reaching the same conclusion! I also found myself suppressing editorial tools completely from the UI when they weren't necessary, instead of showing them as a disabled state.

This leads me to a discussion of the Deuce design, which is my baby:

This design has been around for about 3 years now, and I still love it. (That says a lot). It accomplished exactly what it was designed to be: a simple wiki design that sits in the background. A ton of focus was given to the content designs to make sure that the design would never overtake the content. I love authoring content in it, and I think content (for the most part) looks fantastic in it.

But it was designed for content, not for dashboard views that are now becoming the primary focus of MindTouch. The more I look at our existing default skins, the less I see it possible to use these skins to present anything besides a wiki tool. The skins are too generic in their approach (they do a great job of the 80% case, but now we want to actually succeed in the 20% case!)

My original concepts were to take Deuce, and plug-in the solution templates into the content, but it's clear that is not working. The left navigation and additional editorial elements are just confusing. I'm still trying out a few more concepts, but I'm not sure if it'll work.

So I'm in a situation where I'm pretty sure that if we are to deliver anything sellable, we will need to come up with new skins that are targeted for each solution. Thematically, I would ideally like to keep the same simple aesthetics of Deuce in any future design for solutions, but one has to really wonder how maintainable that approach is.

Posted by roy on July 23, 2009 at 01:58 AM in MindTouch | Add a comment

"True individual freedom cannot exist without economic security and independence." - FDR

Interesting conversations about freedom, and a nice examination of how we live our lives, and how fortunate we are. 'Twas interesting to talk it out just cause it really crystallized my viewpoint of my life into a tangible statement.

. . .

I can't believe Obama acted so stupidly in involving himself with something so charged. Fatigue must be getting to the man.

. . .

I got to watch the San Diego Symphony Summer Pops "Video Games Live" performance today - it was the symphony basically covering video game music. It was awesome. One of the highlights - they had this kid playing Guitar Hero while the symphony played along ... awesome! 

I'll definitely be looking into going to more SD Symphony shows ... a shame it happened so late! My neighbor (now on leave) played the viola for the SD Symphony and was always trying to get me to go to one of their concerts. Oh, how stupid of me to wait this long!

I was personally quite partial to the live performance of this:

They actually got the original vocalist who did this at the concert. Nice!

Posted by roy on July 24, 2009 at 01:03 AM in Personal, Music | 10 Comments

SOO.... Cascada has a new album coming out. And as always, their songs are addictively painful:

This track totally reeks of Akon, but was not produced by him.

Posted by roy on July 25, 2009 at 01:18 PM in Music | 4 Comments

It had been a long time since I sat down for a long period of time and just hacked on code. Well, today was a change ... logged a good 8 hours in front of the computer working on something for MindTouch... and I got the mini-app wrapped up! (Which I'll proceed to talk about now - if you don't want to read the lengthy version, I'll be posting a summary of this on the MindTouch Developer Blog shortly).

Growing as rapidly as we've been, the MindTouch team has been shortstaffed, as our sales exceeded our capacity to handle projects on the professional services side. I've tapped engineers for projects, and we've gotten creative with project management (lots of people stepped in from time to time to help). While growing out the team to match capacity is one task, another task is to continue to excel at our projects. There are a whole bunch of goals that align with it, but the overall theme is to increase transparency into a project's lifecycle so that I can figure out if (a) we're scoping things correctly and (b) to create a baseline to start finding improvements in the process.

To that end, I decided to put together a MindTouch application which would solve one problem: tracking hours in a project. Because we don't bill hourly (but per-project), it is incredibly important we keep an accurate log of hours to make sure that we're not losing money on bigger projects.

How did we do it before? Well, like all things that grow organically, there was a wiki page that we just kept updated: (this is real, I kid you not)

Whoo boy! Well, now, I've put together a tool that looks more like this:

There's a live demo you can check out - this whole project took 8 hours from beginning to end (I took dinner, laundry, and cleaning breaks).

I'm a bit tired, so I'll just try to summarize some points:

  • Writing the functional spec for this feature helped the development of this mini-feature incredibly. You should always write a functional spec - there were so many times when I was deep in some code, then asked myself, "What did I decide about this user experience?" Easy to just jump back to the functional spec!
  • It's amazing the tools that are already in JavaScript and MindTouch to accomplish these tasks - if you tried to create this same application five year ago, it'd take you weeks. And it did take me weeks. 
  • The whole application is completely degradable - turn off JavaScript, and the whole thing still works. As it always should. It is NOT that much more work to do it this way - in fact, the natural progression for development is to make it work without JavaScript first, then add in the progressive enhancements... I can't understand people who keep writing everything JS heavy. Debugging that stuff is near impossible (although Firebug's console makes it a lot easier now! I <3 Firebug!)
  • It's fast. The whole app was designed with user speed in mind; if the activity takes longer than updating a wiki page, it has failed. And holding up to that metric, I'd say it's super fast.
    • As an amusing note, I actually spent about 10 minutes figuring out the order of the input forms. Originally it was: "Time, Task, and Project". I switched it to the current order because if you tab over to the <select> as the last element, you actually need to tab over once more to submit (you can't hit "enter" when a <select> is active). These are the important details!
  • This is just the beginning. Now that I've started getting my development mojo back, I may take a stab at fully porting Listfoo to MindTouch. There are two holes at MindTouch which could benefit from a modification to this script: daily activity dashboards & tasklists.
  • How does this technically work? Let me go from the bottom-up. The data store is mySQL (it utilizes the built-in database code in MindTouch and uses the existing database). The processing is handled in a MindTouch special page plug-in (/Special:TimeTracker) and utilizes a crapload of the existing PHP libraries (DekiForm, DekiResult, DekiPlug, DekiTable, etc...). jQuery progressively hooks up the UI optimizations. DekiScript/MindTouch API is used to render the pages inside a MindTouch page. Properties were used as the "customizing" endpoint - as the first example, the list of "active" projects is actually a page property. I actually like storing configurations through page properties - it lends these applicatoins being easily customizable by end-users ... and with import/export of trees as a new feature in Minneopa ... imagine how awesome it'd be to launch your own instances of these mini-apps!
  • And most importantly, shout-outs to the music I was listening to: Meg & Dia, Katy Perry, Cascada, and Lady Gaga... can you sense some odd pattern? 

Now time to fold three loads of laundry and get some sleep...

Currently listening to: Meg & Dia - The Last Great Star in Hollywood
Posted by roy on July 27, 2009 at 01:50 AM in Projects, Web Development, MindTouch | Add a comment

Facebook, for what it's worth, is very very good at not being feature-oriented in their approach (which risks forcing them into one type of application). They've managed to evolve their service time and time again to ensure they stay ahead of the curve. And while every rollout is risky, in the long-term, it's managed to keep the site "fresh." It's quite an amazing feat, really. What other sites have managed to evolve over a span of a couple of years like FB has?

. . .

Ballroom dancing: the graceful transition from one painful position to the next. I am seriously working muscles I never knew I had. Incredibly fun!

. . .

I was trying to make heads and tails of my credit card spending, and realized I have had a freakishly busy three months (China, NC, SF, Vegas...), which has led to some massive capital outflows from my banking account :( I'll need to slow down after Atlanta in August... no traveling until October!

. . .

A schwarma joint opened up across the cross-street from my place. For $6.50: chicken schwarma, fries, and a drink. This place is absolutely trouble.

. . .

I've finally gotten parking close to me! There's a garage right across the street from me, and for some reason, they never had monthly parking. But that's changed now - $190 for a garage spot with 24 hour access! While pricier than my spot ($160/month), my car will no longer by on a surface lot in a testy part of downtown. And every since the San Diego Hotel opened up next door, parking in front of my place has been impossible - I've had to carry groceries four blocks!

. . .

My sister got her first real-estate on the front-page of the Buffalo News. Congrats!

. . .

This week is gonna be hecka busy. Got big customers in-office to work with our team to launch their project ... and got visitors crashing at my place for the next week. While this may surprise most of you, I consider myself a bit of a lone wolf...

. . .

500 Days of Summer is an absolutely fantastic movie! I loved it so much I'll probably go catch it again next week.

Posted by roy on July 28, 2009 at 01:27 AM in Ramblings | Add a comment

I just got this email:

Dear Mr. Kim,

I hope you will understand why I would like to remain anonymous,
under the circumstances. I will walk away from this e-mail account
after sending this e-mail. I found your address at Network
Solutions, in the contact information for tabulas.com.

I've recently come across a blog hosted on your service in which
somebody, claiming to be a serial killer, confesses to having
committed two murders already, going into detail in connection with
one of them, and has announced his intention of killing again,
saying that God has ordered him to do so. Please do not simply
delete this person's account. I've already contacted the FBI, doing
so very quickly, before noticing where the user claims to be
posting from, and the Manila PD, where he claims to be committing
his crimes.

Your logs should have the IP address he used to post, and IP
addresses can be looked up, yielding the ISP the blogger used to
connect to the Internet, as I'm sure you know. The ISP, presented
with the IP address and time of posting, should be able to
determine which of its users had posted using that IP address. I'm
sure you wouldn't want to obstruct justice in any way, and leave
this person free to kill again, so please hold onto those records.
The url for the blog is


and the contents of his first two posts follow. Most recent post:


Note to Police:

If you need to get in touch with Mr. Kim, the contact information
listed for his domain name can be found at the end of this e-mail.
You now know everything I know about the blogger, but Mr. Kim will
be in a position to know much more than I ever could. I expect that
he will be of great help.

I checked out the blog (I am not going to repost the link here, because it's quite gruesome) ... and wow. There are some sick people in the world. Even if it's just fantasy (which is what I suspect) ... it made my stomach churn.

Unfortunately, Tabulas doesn't log IP addresses of its users... so this does make tracking this user difficult... (although I have an email address, which is probably good enough - pass the burden to Google!)

To this anonymous emailer: While I appreciate the heads-up, why did you also CC the Union Trib? :(

Posted by roy on July 28, 2009 at 07:19 PM in Tabulas | 6 Comments
« 2009/06 · 2009/08 »