You are currently browsing the category archive for the ‘Work’ category.

4 years. During school times that’s the equivalent of getting a degree. 4 years of high school – high school diploma. 4 years of college – bachelors degree. Now, I’ve completed my 4 years of Amazon – my own degree of craftsmanship.

When I joined, the digital music division of Amazon in SF, it was about 15 people. It was actually called A2Z Development center then, and we couldn’t sport the official Amazon name. At least not until Amazon started collecting taxes in CA that is.

Now that I’m leaving, it’s I think around 250. Tremendous growth – obviously meaning a lot of investment from Seattle – and during it all we launched a plethora of products. I experienced a lot, but now it’s more akin to Amazon proper (Seattle) than the ‘little SF office that could.’ So I’ve bid ado to my friends there, and very excitedly head back to a small environment with the startup Jut.

I’ll be making some posts on products I helped launch. I’ll probably keep the posts pretty dry because Amazon is kind of draconian on their information sharing, but it’s always nice to share accomplishments of work past, so that’s what I plan on doing.


I like documenting the previous work that I’ve done, so I’m posting some of the pages from that I worked on. Much credit needs to go to Colin Felton, Karen Chu, and Maria Waters, the designers at PlayFirst, for the exceptionally attractive designs they came up with. Sadly, pictures don’t do justice to the full experience since much of a UI is how it reacts as you using it, but I don’t feeling like doing a video, and the site is already changing, so I’m a little late.

Front Page of PlayFirst (Dec 2009)
The global nav, which includes the left sidebar, was all coded up by myself. Not shown is that there could be a popup when hitting this page that would display a marketing video to users who hadn’t seen it. Big game launches would use this feature, but since it was slightly intrusive (as popups are), we only used it for promoting the best quality games.
Front Page of PlayFirst (Dec 2009)

All Games Page
The All Games page listed, of course, all the games for sale. There was a feature to include an image with a link at the top of the page for promotions. This could be a rotating set of images that would change each time you hit the page. Next to the front page, this was the second most hit page, and that kind of exposure could drive traffic for important new releases.
All Games Page (no hover)

The fun feature I built on this page was a pop over for the game images. It would seamlessly display more information over top of an image that you hovered over. This could include game description, pricing, buy/download buttons. These would open as you hovered over an image, and go away as you hovered away. As you might notice between this and the above image, the popup image was perfectly aligned with the main page image giving it neat effect when it faded and out.
All Games Page (with image hover)

There were a number of things to consider while doing this feature. First, you only want one loading and opeing at at time, and you don’t want one opening if you scroll and hover over while scrolling. Popup placement was a changing target too if you scrolled any as the popover still needs to render perfectly over top of the image even if it moved a little. On performance, when you’re tracking hundreds of potential target images to activate the effect, that’s an event that can drag on performance if done without consideration (one key to the solution being event delegation). For this page, I had to make performance adjustments as there were over 700 game images on the page, and even though the popup was an AJAX created popup (created on hover), the hover over and off effects needed to immediately load and reloading each time perfect on top of the image even after scrolling some.

Another feature that you can’t see on this page without using it is partial image loading. The 700+ games are in a table that is filtered with javascript as you select categories on the left sidebar, or type in a title in the title filter at the top. The page needed to re-render the images instantaneously, but also only load the minimum number of images for the viewport. As you’re seeing only 12 or so of the 700+ possible images at any one time, I’d only load those plus a few extra for when you scrolled. And then, as you scrolled, new images would populate themselves just outside of the viewport, so you’d always see something, but the page wouldn’t get slowed by trying to render so many images, including when you filtered them by category, title, or some other criteria. (Obviously, people with javascript wouldn’t see these features, but the page would still work).

Detail Page
The game detail page was completely redesign and I did all of the implementation work for this very important page. There’s a slideshow of game images, and possibly a link to a game trailer. The buttons, try it, buy it, buy with PlayPass, would change depending on the game’s status (pre-release, in beta, live, etc.), and the user’s membership status with the site. The tab selection would change as not all games would have all the tabs. I made the tabs with AJAX enabled content loading. For SEO purposes, there were uniques pages with URL for each tab view, but if you had javascript on, then the content would fade in place of the content for the previous tab.
Game Detail Page

Another view of the detail page. This time with a non-PlayFirst game.
Game Detail Page (non-PlayFirst game)

Not all of the pages that I touched, or features I worked on, but these were the key ones that I had a lot of impact on. Overall, I helped reduce page load times by up to 45%. Average load time for the site dropped from ~6 seconds to ~4 seconds. The main reason for this was optimization of the thousands of images used on the site. Use of sprites for buttons and other elements helped smooth over interactions and such. Lots of fun, but I’ve moved on.

I’m still here, even though I haven’t posted in a while. I’ve been working at a new company for the last few months that’s a small startup in the casual game publishing and development market (they make and sell video games online). I’m part of the website team that helps build the community and product publishing features (and any other feature or function of the website). It’s been a lot of fun so far, and it’s nice working for such a young company that’s also very driven and aligned well with its business needs.

I’ve been making a little controversy with some of my ideas as I’m still trying to build trust and gain acceptance of my positions on the team. That means I’m full of ideas and stories that I could write about, so we’ll see if I find the time and motivation to put some of it down on my blog. Until then, life is pretty good even after quitting my previous job during a market crash and now into the ensuing economic recession ahead of us.

I created a demo video of the application I helped build for my last company, which I no longer work for. They have a live version that can be accessed online, but since it’s a sophisticated tool that requires some prior knowledge, it’s easier for me to give people a general overview of the look and feel by using this kind of video.

I don’t show all of the application, just a couple main pages. At this time, some pages are old versions that aren’t of the latest internal version from when I left, and some pages are updated with new stuff that I had nothing to do with, but the video shows pages that haven’t really changed since I left. Since I can’t vouch for the quality or state of the application now that I’m gone, this video gives some general sense of the product.

Quality is pretty crappy being a Youtube video. I have a .mov file, but I can’t upload that here, so if anyone is interested in a higher quality, then let me know (~30MB file).

Overall, I’m happy with the product. I feel like I did a hell of a lot of work on it doing everything from UI Design, client-side coding to server-side and business logic coding to some database work as well. There’s plenty of points that could be improved, things I’d do differently if I did them again now, but such is the way with small companies and tight deadlines. The demo had been tested against IE5.5-7, FF2 (Mac and Windows), and Safari (Mac). I believe Opera worked fine as well. FF3 has a couple minor visual glitches, but probably not noticeable by someone not familiar with the product. FF3 came out after the initial design, and client work (and my boss’ priorities) kept me from fixing the issues before I left (UI Design was the least important thing to pretty much everyone, but me). C’est la vie.

P&L is a common concept for managing and running a business. It’s the bottom line as they call it. If your profits exceed your losses, then you’re making a net return and that means you can stay in business. However, while this is a simple yet good tool for broadly measuring a business’s operations, it’s a horrible tool for managers understanding employees. And yet, this is what most managers worry about measuring. Instead, the real P&L measure that holds value is measuring productivity and learning.

I recently quit my job, and one of the fundamental reasons for leaving my position as Software Engineering and Design Manager was a conflict with my boss, the President, as he didn’t seem to view business and management as I did. As one of two owners, he viewed the business through the normal P&L lens. Nothing wrong with that, but he then applied pressure on the rest of the staff based on profit measurements and not productivity and quality (learning) measurements. Don’t misunderstand me, you should try and align your staff with how your business makes money, but as Product manager my ability to influence profits depended on my ability to increase productivity and quality of deliverables.

Misunderstanding this is a fundamental misunderstanding of how people operate, and that ultimately determines how a business functions. Every person strives to find flow in what they do. Most people find the most flow during work hours in contrast with leisure time which is sometimes more enjoyable and relaxing, but often lacking in flow, which is itself a sign of high enjoyment.

Finding flow is a balancing act that is different for every person and every team. Balancing the line between boredom and anxiety, or too little work with too much work, and not challenging enough with too much challenge is key to building a team that’s both productive and capable of streamlining the current business model. However, productivity is only worth so much. For example, China might produce a ton of widgets, appearing highly productive, but is the quality of each widget good enough. Americans might not produce as many widgets, but if you look at both quantity and quality, then you can get a true value of productivity and in turn Americans might be more productive.

After you measure productive, from a business perspective, cost then becomes a differentiating factor making up your standard P&L measurement. Of course, there a many factors beyond price that differentiate a business from its competitors, but often times, this seems to be where people stop, and that gets handed down from the top to senior, mid, and other levels of managers and employees.

To see the flaws in this mode of operating, consider my situation as the engineering manager. When managing you have to worry about capacity and capability of your team. Your team might only be capable of doing low level work, but they have the capacity to do a whole lot of it. Or, they might be capable of doing high level work, system architecture or feature design, but therefore have a lower capacity for that work (although, many times higher capable people also have high capacities for doing work). You need people at all levels to make a business function.

My team was mostly low capable staff, but they had decent capacity for work. My problem was that I lacked staff capable of doing high level work. So, I needed to incorporate a level of learning for the staff I had. Either through traditional learning like going to school, or I needed to figure out a way to do training through work, which usually means giving a person a task just beyond their threshold of knowledge or experience. Establishing this struggle generally encourages growth, and as the person internalized what they’ve learned, their quality generally increases with the challenges they overcome.

However, that’s only the case if that person has time to internalize what they’ve done. And this is where the traditional P&L causes conflict. Generally speaking, it assumes that more challenges overcome means more profits earned. In software development, losses are generally fixed in payroll, so increased quantity increases profits. However, there are losses involved in this process that tend to go unmeasured, or at least unmeasured as a real expense to the business. If quality is low, then work usually breaks and has to be reworked adding cost at a future date. The earlier you fix a problem, the less it’ll cost to fix, so high quality to start is a way of reducing future expenses.

You don’t improve quality without incorporating a training program for staff. If people aren’t learning and growing, then they aren’t going to produce quality outcomes or increase current levels of quality. In my job, the President was pushing the staff beyond capability and capacity, and because of this, quality was dropping and problems weren’t getting solved adequately. Additionally, there was not chance of learning from the challenges because there was no chance for internalization, or true learning and understanding. Staff wasn’t getting any more capable and yet demand was increasing.

To the owners, who only appeared to see profits and losses, they couldn’t reconcile my requests to alleviate problems with capacity and capability, which in turn is a function of productivity and learning. Clients were happy for the time being, but internally there was struggle that would only come out in time having a negative impact on clients. It’s a very serious challenge, and sometimes it’s OK to sacrifice a little of one for the other (keep clients happy to keep the cash coming in, but reducing your ability to respond and increasing maintenance costs internally). However, you have to have a long term plan of how to get out of that situation as any business should ultimate find a happy medium between challenges and ease. Flow is key in every business, and you destroy flow as my previous company did without an active, achievable plan for resolving the real underlying problems.

What does all of that mean? If you want to be a good manager, you need to worry about productivity and learning, or capability, capacity, and quality. Productivity is a measure of current capability and capacity, and learning is a method for increasing future capability and capacity (as well as establishing a environment for flow). And not to forget, quality hangs as an umbrella over this whole picture as a shield from future expenses, but also as a result from learning.