It is remarkable that a human can create anything larger than what can be contained in a canvas, or on a single sheet of paper. Novels, cars, software...these are monumentally complex objects, and if their true complexity were ever to be appreciated, I doubt anyone would have the heart to attempt their creation.
Despite the inherent difficulty, people still create large works, and sometimes successfully. That success is rare and precious, and should not be taken for granted.
Whole Foods mixed message
Pink salt from the Himalayas. Millions of years old and harvested for
Whole Foods customers to the tune of about $16 per pound.
Whole Foods customers to the tune of about $16 per pound.
This is an example of a dilemma faced by Eco-tourists - they love
nature and want to preserve it, but they also want to hike in it and
enjoy it. But sometimes it's not possible to do both.
It's interesting to me that the same person who insists on organic
foods, recycled toilet paper and fuel efficient cars would buy
something so incredibly unsustainable as salt taken from the tallest
oldest mountains in the world.
Movie: How to Loose a Guy in 10 Days
This is an old RomCom, and I'm only reviewing it because it was, like so many recent movies, both entertaining and troubling. Entertaining because it is in part a comedy of modern manners. Troubling because of it's rampant misogyny. And because it was recommended by a female friend I find it even more troubling.
The women in this picture are portrayed almost universally in a negative light. No, I get the premise - I understand that Kate Hudson's character "Andy" is trying to act like a crazy woman in order to push her love interest "Ben" away for the sake of a magazine article. I'm not really talking about those antics. I'm talking about her "real" behavior as a vapid, image-obsessed, vain, self-serving and manipulative woman. The other women who surround her are equally ethics-challenged and quite weak. "Mrs. Lauer", wife to the De Laur diamond magnate, is the classic cougar, in all her tasteless glory. In truth her over-the-top performance worked comedically.
The only positive role-models for women would be Ben's compeition. Two women given only cameos who seemed cool, collected, and focusedl. Of course, they still get beat out by the man though.
It troubles me that "reproductive fitness" for a woman in this movie (and in so many others) has been reduced down to having the right weight, clothing, and make-up, and avoiding certain behavioral faux paus. What happened to intelligence, compassion, energy, and kindness? Indeed, in this regard men hardly fair better in the movie - "reproductive fitness" for a man is reduced to six pack abs, a full head of hair, and a well appointed New York apartment, and the ability to put up with an excess amount of abusive female drama.
As an added little kick in the ribs, the movie portrays vegetarians and vegetarianism in a harsh light: vegetarian food is apparently tasteless and unsatisfying, and those who serve it are ugly, judgmental, and rude.
The women in this picture are portrayed almost universally in a negative light. No, I get the premise - I understand that Kate Hudson's character "Andy" is trying to act like a crazy woman in order to push her love interest "Ben" away for the sake of a magazine article. I'm not really talking about those antics. I'm talking about her "real" behavior as a vapid, image-obsessed, vain, self-serving and manipulative woman. The other women who surround her are equally ethics-challenged and quite weak. "Mrs. Lauer", wife to the De Laur diamond magnate, is the classic cougar, in all her tasteless glory. In truth her over-the-top performance worked comedically.
The only positive role-models for women would be Ben's compeition. Two women given only cameos who seemed cool, collected, and focusedl. Of course, they still get beat out by the man though.
It troubles me that "reproductive fitness" for a woman in this movie (and in so many others) has been reduced down to having the right weight, clothing, and make-up, and avoiding certain behavioral faux paus. What happened to intelligence, compassion, energy, and kindness? Indeed, in this regard men hardly fair better in the movie - "reproductive fitness" for a man is reduced to six pack abs, a full head of hair, and a well appointed New York apartment, and the ability to put up with an excess amount of abusive female drama.
As an added little kick in the ribs, the movie portrays vegetarians and vegetarianism in a harsh light: vegetarian food is apparently tasteless and unsatisfying, and those who serve it are ugly, judgmental, and rude.
Idea: Annotated music streams
The KCRW Music Stream is a wonderful resource - it's a free, commercial free, internet resource for a constant stream of thoughtfully selected, interesting music. My only gripe with it is that it can be hard to identify a song that you like. It's true that the DJ announces the artist/track/album on occasion, however this is not terribly convenient. It would be nice if the player (iTunes in my case) could display this information automatically.
Note that KCRW provides track information on the web, but it's not very easy to get to. It would be better to annotate the stream such that the information is already available in the player.
One workaround is Shazam - indeed it's a strange day when one holds their iPhone up to the computer speaker to identify a song! (This reminds me of another idea I had that would use OCR to make a bitmap brochure site SEO friendly...)
Anyway, the economics would seem to make this workable. After all, if I like a song enough to click somewhere, I'm probably willing to buy the song. (Indeed, this is Shazam's business model, from what I can tell).
Note that KCRW provides track information on the web, but it's not very easy to get to. It would be better to annotate the stream such that the information is already available in the player.
One workaround is Shazam - indeed it's a strange day when one holds their iPhone up to the computer speaker to identify a song! (This reminds me of another idea I had that would use OCR to make a bitmap brochure site SEO friendly...)
Anyway, the economics would seem to make this workable. After all, if I like a song enough to click somewhere, I'm probably willing to buy the song. (Indeed, this is Shazam's business model, from what I can tell).
The value of greed, fear, and vanity.
Mortgages create fear, which in turn creates productive people, which is in the end good for everyone.
It seems that the most common motivations for success are fear and greed. Vanity and simple obsession follow a close second. Sheer joy in the work is perhaps the least common. In the west most people are motivated by fear - that is the true value of the mortgage culture. Instinctively people know that they need fear to function, to survive. While all people are motivated in the short term by greed, long term greed (usually mixed with vanity) is rewarded by the investor culture.
I make these comments without prejudice. In many ways I think any wealthy society owe fear and greed a debt of gratitude - without them, individuals and organizations could very well grind to a halt, too content for their own good. Indeed, there have been times in my life where I could have used a larger dose of fear to get me over a particularly difficult hurdle.
Consistent joyful motivation to excellence is quite rare. It is probably not possible without being an abstract thinker, and so able to derive pleasure and direction from an abstract ideal. The joyful motivation in its pure form seems more consistent with religious striving than with economic striving but n truth, I think that this motivation is shared by all at certain points in time. For example, the movie mogul (who is normally motivated by greed and vanity) may step back once in a while and appreciate the movie for the work of art that it is.
It seems that the most common motivations for success are fear and greed. Vanity and simple obsession follow a close second. Sheer joy in the work is perhaps the least common. In the west most people are motivated by fear - that is the true value of the mortgage culture. Instinctively people know that they need fear to function, to survive. While all people are motivated in the short term by greed, long term greed (usually mixed with vanity) is rewarded by the investor culture.
I make these comments without prejudice. In many ways I think any wealthy society owe fear and greed a debt of gratitude - without them, individuals and organizations could very well grind to a halt, too content for their own good. Indeed, there have been times in my life where I could have used a larger dose of fear to get me over a particularly difficult hurdle.
Consistent joyful motivation to excellence is quite rare. It is probably not possible without being an abstract thinker, and so able to derive pleasure and direction from an abstract ideal. The joyful motivation in its pure form seems more consistent with religious striving than with economic striving but n truth, I think that this motivation is shared by all at certain points in time. For example, the movie mogul (who is normally motivated by greed and vanity) may step back once in a while and appreciate the movie for the work of art that it is.
The Man is hosting a music festival!
The Man is hosting this years misnamed "West Beach Music & Arts Festival". Check out their rules:

I mean, really? You're going to host a 3 day music event and do not allow blankets or chairs? "No outside food or drinks" has a rather obvious economic incentive - but I fail to see the case against blankets. And what about the ban on "Professional Cameras"?
I wonder how many artists would play this "festival" if they knew the rules?
I mean, really? You're going to host a 3 day music event and do not allow blankets or chairs? "No outside food or drinks" has a rather obvious economic incentive - but I fail to see the case against blankets. And what about the ban on "Professional Cameras"?
I wonder how many artists would play this "festival" if they knew the rules?
Nice phishing attempt!
What gets you is the implication that someone has charged something to your paypal account - something that is all too possible, alas.

Sweet! Another request to use a photo
I realize it's not much, but this is the 4th time someone has asked to use a photo from my flickr stream. As an amatuer with very little experiene, I think that's just great. (I've no doubt that the really good photographers get that many requests per day - but I'm happy). Here's the image they like:

(For a book called "Superbikes", being produced in Japan.)
[Update: okay, I have to mention the irony here: this GS500 is in really really bad condition! If you look closely you can see the rust, and the tires are completely bald. There was a persistent oil leak that made riding it dangerous. I think it had something like 100k miles on it when I snapped this photo. It qualifies as a superbike only in the sense that it was super durable!]
(For a book called "Superbikes", being produced in Japan.)
[Update: okay, I have to mention the irony here: this GS500 is in really really bad condition! If you look closely you can see the rust, and the tires are completely bald. There was a persistent oil leak that made riding it dangerous. I think it had something like 100k miles on it when I snapped this photo. It qualifies as a superbike only in the sense that it was super durable!]
Why templates are just a special case of AJAX
I've been writing webapps with template languages for some time. Templates are a nice way to stay as close as possible to the original, static HTML. I've noticed that with Ajax in general, and jQuery in particular, one can get even closer to not modifying static HTML. I've also noticed that templating can and should be done on both the client and server.
There's a very nice Ajax architecture that basically dictates that you make a request against the server, retrieve meaningful data (rather than data embedded in presentation) as XML and then insert that data into the DOM. This is precisely how server-side templates work! The only difference is that the data is not serialized, and is generally some architecture specific form. For example, in Java the template data may be object graphs embedded in a HashMap.
A server-side template, then, could theoretically be replaced by an Ajax call, if the template worked on the client. For some years now, there's been XSLT support in all modern web clients, and XSLT can indeed be used as a templating language of sorts. However, XSLT is verbose, unwieldy, and therefore fails miserably in the only criterion that matters: does the architecture minimize the mutations you have to make to static HTML?
Actually, I think it would be a nifty thing to do client-side only templates, but for practical reasons I don't think such an architecture would fly (first, because some clients don't support meaningful programmatic execution of any sort, and second, because you'd have to take special care to avoid that initial loadind performance hit). Therefore one needs a solution that can execute in both places. XSLT can indeed work both server and client side, but as we've seen it's a less than optimal solution.
The approach I like is to use JavaScript for the templating language. Indeed, one codes the software as if it was client-side only Ajax, and then rely on runtime parameters to tell the server to exec that initial XHR on the server. This is made possible in a Java server by two pieces of technology, Rhino, and John Resig's env.js. It works, it's nice, and I'll write about it in more detail if there is interest.
There's a very nice Ajax architecture that basically dictates that you make a request against the server, retrieve meaningful data (rather than data embedded in presentation) as XML and then insert that data into the DOM. This is precisely how server-side templates work! The only difference is that the data is not serialized, and is generally some architecture specific form. For example, in Java the template data may be object graphs embedded in a HashMap.
A server-side template, then, could theoretically be replaced by an Ajax call, if the template worked on the client. For some years now, there's been XSLT support in all modern web clients, and XSLT can indeed be used as a templating language of sorts. However, XSLT is verbose, unwieldy, and therefore fails miserably in the only criterion that matters: does the architecture minimize the mutations you have to make to static HTML?
Actually, I think it would be a nifty thing to do client-side only templates, but for practical reasons I don't think such an architecture would fly (first, because some clients don't support meaningful programmatic execution of any sort, and second, because you'd have to take special care to avoid that initial loadind performance hit). Therefore one needs a solution that can execute in both places. XSLT can indeed work both server and client side, but as we've seen it's a less than optimal solution.
The approach I like is to use JavaScript for the templating language. Indeed, one codes the software as if it was client-side only Ajax, and then rely on runtime parameters to tell the server to exec that initial XHR on the server. This is made possible in a Java server by two pieces of technology, Rhino, and John Resig's env.js. It works, it's nice, and I'll write about it in more detail if there is interest.
A pretty sweet band: Lowen and Navarro
This band was introduced to my by a neighbor - who is the niece of Navarro. They have a mature, soulful vibe with some pretty tight song writing ability. They sound like they'd be a good live show.
Idea: Recover my stolen stuff (dot com)
Ok, so I just had a camera with lenses stolen, and I'm determined to find it. How can I do that? One thing is to register the SN with the national stolen goods registry (whatever that is - I could find no reference on the Internet).
Another thing I was going to try is to see if the combination of items was for sale in the usual places: craigslist, ebay, the recycler, and the local used photography places. But that's a lot of work, and I think that at least some of it could be automated.
So why not "recovermystolenstuff.com"?
Another thing I was going to try is to see if the combination of items was for sale in the usual places: craigslist, ebay, the recycler, and the local used photography places. But that's a lot of work, and I think that at least some of it could be automated.
So why not "recovermystolenstuff.com"?
My fetch
My supernatural animal companion would almost certainly be a camel. Ill-tempered, intelligent, and totally adorable, just like me!

What bands are appropriate for live music?
- Sigur Ros. NO!
- Yeah Yeah Yeahs. YES!
- Postal Service. Probably not.
- Tom Petty. YES!
- Jesca Hoop. Yes.
The girl at Native Foods
She is beautiful. Very short blond hair, lovely big, sad eyes, and full lips. But I realized today that I can't put her into a story. I can't describe her well enough to even put her into a song. It's as if the singularity of her wowing appearance has prevented my creative faculties from functioning. And I don't know enough about her to go on reality. Is she a princess? A damsel? A fighter? A gentle healer? Or perhaps a barwench? Or an office worker, or a stay-at-home mom? Or perhaps an academic? Introvert? Extrovert? Does she challenge the world intelligently and with heartfelt energy? Does she succumb to the listless malaise that sometimes afflicts youth when no clear path presents itself? Is she doomed to an ordinary existence? Is she cursed to live in interesting times? Is she a student? Is she a lesbian? A drug addict? A philosopher?
Here is what I think.
I think she is an artist. I think she stays up late at night, singing folk songs around a campfire with friends. I think she only takes one hit of the joint that gets passed around. She doesn't say much, she is in fact very quiet, but she keeps a journal and tries to releive her constant worry of the world through writing about it, but it doesn't really help. She is bored by her job, but likes the people she works with. She loves dogs, but is ambivalent about babies. She likes boys with tatoos and long, matted hair. She doesn't like boys approaching her unless invited, which she does with her eyes, which everyone tells her are beautiful. She talks with her mom on the phone when she's lonely. She thinks with nostalgia of her childhood and worries that they were the best days of her life. She was the youngest child and has already rebeled in the usual ways and found it dull. She has an older brother, who moved to Chicago. She missed him a little bit, and wonders what the future holds for her.
Here is what I think.
I think she is an artist. I think she stays up late at night, singing folk songs around a campfire with friends. I think she only takes one hit of the joint that gets passed around. She doesn't say much, she is in fact very quiet, but she keeps a journal and tries to releive her constant worry of the world through writing about it, but it doesn't really help. She is bored by her job, but likes the people she works with. She loves dogs, but is ambivalent about babies. She likes boys with tatoos and long, matted hair. She doesn't like boys approaching her unless invited, which she does with her eyes, which everyone tells her are beautiful. She talks with her mom on the phone when she's lonely. She thinks with nostalgia of her childhood and worries that they were the best days of her life. She was the youngest child and has already rebeled in the usual ways and found it dull. She has an older brother, who moved to Chicago. She missed him a little bit, and wonders what the future holds for her.
Through the looking glass: the wonderful world of widgets
I was playing around with Sproutbuilder which is a really cool TTW WYSIWYG widget authoring tool. Now that's pretty cool, but it opened my eyes to a bunch of other synergistic tools, like gigya, which is something called a "widget network". Presumably this means "widget distribution network". Anyway, it appears that this is the tip of the iceberg.
You may wonder, what is so interesting about widgets? Constrained space design! Being efficient with the pixels you get is a kinda cool problem.
You may wonder, what is so interesting about widgets? Constrained space design! Being efficient with the pixels you get is a kinda cool problem.
What does it mean for a company to issue new stock?
Meryll Lynch will sell $8.5B in new stock. What does this mean for the existing ML shareholders? It means that new investors will be getting a piece of the company, but they'll be paying for it, which means old investors really are getting something in return for the stock dilution - cash. As an investor you only want this deal if your company needs a liquid cash shot in the arm, such that if it can't get it then your (undiluted) stock becomes worthless anyway.
The best deal for existing owners involves issuing the lowest number of shares at the highest price such that it's enough to save them. How do you determine these numbers? Seems to me that these numbers are largely a function of the current share price, outstanding stock count, and the estimated cash needed to solve the problem. And I have no idea what that function is.
The buyer wants the most shares at the lowest price, because in the event of a recovery the upside is much larger.
Another way to analyze the correct price for a new stock issue is to look at a hypothetical buyout. If the company recovers successfully, how much would ML be worth to a buyer (assuming 100% of sellers would be willing to sell at approx market rate)? (I believe this number is called "market capitalization".) Let's say that ML is worth $20B now but has every reason to believe it should be worth $100B, which it was 6mo ago (I'm totally making these numbers up). If there are 1B outstanding shares, should an investor think about buying at $20 or $100, or something else? Well, $100 makes no sense as there's no profit in it, even in the best case. $20 is a good number because their shares will be worth the same as everyone elses when they "hop on board" and stand to lose (or gain) exactly the same. However, $28.5 may make more sense: that's because if ML's value is $20B then gets $8.5B in cash, the company is, strictly speaking, worth $28.5B. So perhaps the new investors should spend $28.5/share!
So I guess assuming the sale goes well, it's actually a really really good thing for ML owners to get that cash - they see an immediate increase in stock value, and have the jet fuel needed to get past a rough spot and toward that $100B mark.
The best deal for existing owners involves issuing the lowest number of shares at the highest price such that it's enough to save them. How do you determine these numbers? Seems to me that these numbers are largely a function of the current share price, outstanding stock count, and the estimated cash needed to solve the problem. And I have no idea what that function is.
The buyer wants the most shares at the lowest price, because in the event of a recovery the upside is much larger.
Another way to analyze the correct price for a new stock issue is to look at a hypothetical buyout. If the company recovers successfully, how much would ML be worth to a buyer (assuming 100% of sellers would be willing to sell at approx market rate)? (I believe this number is called "market capitalization".) Let's say that ML is worth $20B now but has every reason to believe it should be worth $100B, which it was 6mo ago (I'm totally making these numbers up). If there are 1B outstanding shares, should an investor think about buying at $20 or $100, or something else? Well, $100 makes no sense as there's no profit in it, even in the best case. $20 is a good number because their shares will be worth the same as everyone elses when they "hop on board" and stand to lose (or gain) exactly the same. However, $28.5 may make more sense: that's because if ML's value is $20B then gets $8.5B in cash, the company is, strictly speaking, worth $28.5B. So perhaps the new investors should spend $28.5/share!
So I guess assuming the sale goes well, it's actually a really really good thing for ML owners to get that cash - they see an immediate increase in stock value, and have the jet fuel needed to get past a rough spot and toward that $100B mark.
Earthquake
Just had an earthquake. Felt pretty big - initial jolt, then an extended period of gentle swaying (over a minute - indeed we may still be swaying).
How to Server-side Google Analytics
There are many users who surf the web without a JavaScript enabled client - particularly users of the mobile web, and some portal users. The question arises: how do you track visitors with Google Analytics (hereafter "GA") that don't have a JavaScript enabled client? I recently took a stab at this problem by reverse-engineering urchin.js and re-writing it in Java. But it didn't work. This is my attempt to rectify the situation.
A bit of background: GA is normally installed on a site via a piece of JavaScript that executes onload. The script (which used to be called urchin.js and now is ga.js) examines the page and generates an HTTP request for a GIF from GA with lots of URL parameters. Based on those parameters (and probably the request headers) GA recieves all of its data. So our problem is in correctly constructing that URL.
But figuring out how to correctly construct that URL is tricky, and it's mostly undocumented. Google has taken pains to wrap the API in object-oriented JavaScript - but this is little help if you need to call that API from another language. Plus, the script is "minified" - and therefore unreadable.
After a little research I found a troubleshooting page that describes the HTTP request URL in more detail.
This is very helpful, but not sufficient for creating server-side verstion of the ga.js script. In particular the following questions are begged by the documentation:
[It occured to me while writing this that other mobile web developers must run into the same issue, so I search for "mobile analytics". Some interesting hits. But remarkably it seems like other folks concentrate on doing things like log file analysis. I personally think that's a bad idea. It also occured to me that we could use another analytics software, like the open source piwik, that has a more open tracking API. However switching analytics providers is only a last resort.]
[Google is probably wise to not provide server-side access to their analytics - they'd have to support a few more languages, and integration is a lot more difficult making the support load higher.]
A bit of background: GA is normally installed on a site via a piece of JavaScript that executes onload. The script (which used to be called urchin.js and now is ga.js) examines the page and generates an HTTP request for a GIF from GA with lots of URL parameters. Based on those parameters (and probably the request headers) GA recieves all of its data. So our problem is in correctly constructing that URL.
But figuring out how to correctly construct that URL is tricky, and it's mostly undocumented. Google has taken pains to wrap the API in object-oriented JavaScript - but this is little help if you need to call that API from another language. Plus, the script is "minified" - and therefore unreadable.
After a little research I found a troubleshooting page that describes the HTTP request URL in more detail.
This is very helpful, but not sufficient for creating server-side verstion of the ga.js script. In particular the following questions are begged by the documentation:
- Most of the fields have to do with e-commerce, and can be ignored for basic analytics. Are they really optional?
- The fields that describe client capability are more problematic - can they be omitted?
- What use GA makes of the request headers, especially when the information is duplicated in URL parms?
- Why are encoded cookies sent at all? Can they be omitted?
- What is the "X10 data parameter"?
[It occured to me while writing this that other mobile web developers must run into the same issue, so I search for "mobile analytics". Some interesting hits. But remarkably it seems like other folks concentrate on doing things like log file analysis. I personally think that's a bad idea. It also occured to me that we could use another analytics software, like the open source piwik, that has a more open tracking API. However switching analytics providers is only a last resort.]
[Google is probably wise to not provide server-side access to their analytics - they'd have to support a few more languages, and integration is a lot more difficult making the support load higher.]
The stuff that got stolen this weekend.
Well, it appears that there's been a theft this weekend. All told, I'd estimate I lost about $9k worth of stuff:
Goodbye camera!

I filed a police report, registered serial numbers and the police have promised to dust for prints, but frankly I doubt they'll find anything - I have very little hope that my stuff will be returned, or the thief caught.
How do I feel? Pissed, mainly. I'm pissed at the loss, and pissed at myself for my stupidity - I left the door unlocked, thinking that my 2nd floor position would protect me, and believing in the basic decency of human beings. The camera and cash are replaceable - the watch is not.
Life kinda sucks right now.
- Photography equipment. Canon 20D + 5 lenses (two of them L lenses), flash, photo backpack, memory cards. Worth about $5k.
- Cash. $2k. I feel particularly stupid about this. I had this much cash because I'd returned a computer to Costco, and sold another via craigslist, and was meaning to deposit it in the bank.
- Perhaps worst of all, my father's Rolex. It was a rather beat up Submariner, I've worn it perhaps twice, but it was an heirloom. Worth $2k possibly.
- An unopened iPod Touch that I'd been meaning to sell on craigslist. $300.
Goodbye camera!
I filed a police report, registered serial numbers and the police have promised to dust for prints, but frankly I doubt they'll find anything - I have very little hope that my stuff will be returned, or the thief caught.
How do I feel? Pissed, mainly. I'm pissed at the loss, and pissed at myself for my stupidity - I left the door unlocked, thinking that my 2nd floor position would protect me, and believing in the basic decency of human beings. The camera and cash are replaceable - the watch is not.
Life kinda sucks right now.
Questions about Newport Backbay
Went kayaking in the Newport back bay today, and noticed a few things:
- There is grass growing in the saltwater. It doesn't look that healthy, but it's green and living. How does it live?
- The soil underneath is very dark and oily. Why?
- There's a lot of trash in unusual places. Why?
- There was a bird that flew close to the surface of the water, with it's mouth open, the lower half in the water. It had orange coloration around it's beak. What kind of bird was that?
- There was another bird eating a fish. It was white with dark coloring around your head?
Jing: A SnagIt alternative for Mac OS X
Wow! One of the big things I've been missing in the switch to OS X is an alternative to the excellent SnagIt, by TechSmith. And I have found it in Jing - a free (SnagIt costs $50) utility that is actually much better than SnagIt. Sweet! (Interestingly TechSmith makes both products.)
There are a couple of features that I rather like above and beyond SnagIt:
But overall I'm pleased.
[I would use Jing to show you how it works, but unfortunately it doesn't capture itself! ]
[I found jing by googling "screen shot osx" and reading a macrumors.com page.]
There are a couple of features that I rather like above and beyond SnagIt:
- A nifty sun on the upper left of the screen that invokes it.
- In-place editing of the image
- Coordination with IM, web, blog, and email. (capturing and sharing video is particularly slick)
- History! (This is an incredibly useful feature that shows all the captures you've recently done, whether to disk or to clipboard.)
- Crop.
- Capture window contents.
But overall I'm pleased.
[I would use Jing to show you how it works, but unfortunately it doesn't capture itself! ]
[I found jing by googling "screen shot osx" and reading a macrumors.com page.]
Top 10 concepts every programmer should know - a response
Alex Iskold of RWW blogged about what programmers should know. (Alex was a software architect with IBM). Here was my comment:
In the end I think that a laundry list like this isn't very useful: there's too much genuine specialization in programming these days (and quite a lot of fake specialization).
I left out some important roles though. Here they are.
There are other roles, like QA, support, product manager, project manager, team lead, and IT. Of these four product managers are rather an interesting role because a lot of people don't really understand why they are needed. What need do they fill? They are the distillation of "focus". They don't necessarily come up with the product, but whatever the definition turns out to be they work to make sure everyone understands the product, and makes sure that feedback gets to the right ears as development progresses, and after the product is released. They may also be tasked with tracking the performance of the product. If the team is focused (and small), and the performance of the product is obvious enough, a product manager isn't needed. The focus of the product manager is "functional clarity" and should be a great communicator, detail-oriented and understand the domain well.
The project manager serves a similar purpose as the product manager, but instead of answering "what?" they answer "when?", and takes action when things slip. Usually the team gives the PM a schedule they are comfortable with, and inform the PM about their progress as needed (usually at fixed checkpoints). Again if the team doesn't have a problem keeping schedules, a project manager isn't needed. The focus of the project manager is "the schedule" and might use a tool like MS Project. Ideally they've presided over similar projects so that they can spot missing or risky elements in the schedule.
Another role that is sometimes a bit confusing, is the team lead, or development manager. It's a confusing role because, at first glance, it seems like a conflict with the PM roles. This person hires, fires, mentors, grows, gives kudos and criticism, and assigns responsibilities, and chooses architecture. They are an experienced technical person with lots of skill and ability, and good communication skill. If a programmer has a technical problem, or if they make a technical mistake, the lead should help out. The lead also sets the tone for the culture, and has authority to define coding conventions and process. Setting policy, representing the team elsewhere in the company, and conflict resolution are key qualities. If the team has consensus on policy, and is always willing and able to help each other out, and no-one is ever hired or fired, no team lead is needed. Sometimes the technical aspects of this role are seperated into a high level technical role and delegated to a title like an architect.
You will notice that there is no mention of who defines the product in any of these roles. The prod manager clarifies. The proj manager babysits and worries. The team lead gets it done. Who is the product definer? The answer is: the guy with the money. They may choose to delegate that authority, and it often gets redelegated. Typically the investor picks a board who picks a CEO who might in turn delegate product definition to the product manager (for example). Or he may put a more complex policy in place for product definition. But in the end, the investor has some idea as to what they are investing in, and will generally be happy if they get what they paid for. (Of course they might also be happy if they get something they didn't pay for but which turns out to be wildly successful.)
Everyone wants to define the product. QA does, support does, even the sysadmin has a few ideas and pet peeves. The users sure as heck do. The product manager role exists to protect the development team (and everyone else) from constantly changing priorities, features, and demands. The risk for the prod man is that the CEO (or the board) will set a product definition policy and then repeatedly break it, undermining the prod man's authority and effectively making their role worthless. It often happens that product managers devolve into fall guys for inefficient and indecisive management. Basically, the people with the money have to have discipline.
Who should define the product? That's the million dollar question! At least in the software business, it's should be the person with the best grasp of the market (what's needed) and of the technology (what's possible). If you add to that the ability to get it done, and some money, you have a business. The definer has to understand the users and filter through their feedback. They have to understand what can be done. They have to understand the psychology of consumerism, and the entire gestalt of the product and it's position in the market, and in the mind of the user. And they have to be able to delegate! A completely specified product is the product itself, so it's impossible for a person to define everything for a complex product. In particular, the development team will need to make lots of little decisions, and possibly a few big ones, as they flesh the product out. (I commonly see two points of failure here: dev is not given authority to define product details, or dev is not being willing to define product details.)
How are products defined? If products were cheap enough, and the market large enough, we could create every possible product, release them all and go with the one that 'sticks'. We can make the product cheaper, and subsitute an expert opinion for the market, and approximate this approach using mockups and prototypes. So, the money champions an idea, requests a prototype, they give and get feedback on it, iterate, then finalize it with the product manager and authorize development. The users then get the "final" product and a similar, if slower, iteration occurs.
(This means there's a highly desirable pressure to minimize the distance between a mockup and production code - a great opportunity for architectural innovation!)
Know a craftsman by his tools. A programmer (text editor) cannot create a whole system - he requires at least a graphic designer (Photoshop), a business person (Phone), and an admin (bash & vi). They make it pretty, sell it, and keep it running respectively.
Furthermore, there is a useful distinction between front-end and backend programmers. The front end guy must know HTML CSS JavaScript regex XML JSON HTTP TCP/IP plus a handful of JavaScript libraries, coding conventions, browser quirks, and a few specific JavaScript libraries, and some human interface guidlines. A good design sense doesn't hurt, either. He'll be using a text editor + firebug + http proxy + a small set of command line tools like curl. (This could also be a Flash or GWT specialist).
The back-end guy must know Java (or Perl or Ruby or whatever) plus a variety of core libraries (like Collections, JDBC) and a variety of application frameworks (SpringMVC, Rails, etc), and of course be a SQL expert. He knows about REST, caching, and scaling. The more he knows about the OS (process overhead, security, etc) and network architecture, the better. This is the guy you seem to be describing in this article. He'll be using Eclipse and a database client, like SQLyog, and the build system.
The admin's primary goal is to keep the application running, but he has a lot of programmer-like qualities, mainly for doing ad hoc scripts. He should know everything about the db, the os, and the network. He lives in SSH, the command line and in configuration files. This is the cloud computing specialist (although certainly the backend programmer should know something about it, too).
In the end I think that a laundry list like this isn't very useful: there's too much genuine specialization in programming these days (and quite a lot of fake specialization).
I left out some important roles though. Here they are.
There are other roles, like QA, support, product manager, project manager, team lead, and IT. Of these four product managers are rather an interesting role because a lot of people don't really understand why they are needed. What need do they fill? They are the distillation of "focus". They don't necessarily come up with the product, but whatever the definition turns out to be they work to make sure everyone understands the product, and makes sure that feedback gets to the right ears as development progresses, and after the product is released. They may also be tasked with tracking the performance of the product. If the team is focused (and small), and the performance of the product is obvious enough, a product manager isn't needed. The focus of the product manager is "functional clarity" and should be a great communicator, detail-oriented and understand the domain well.
The project manager serves a similar purpose as the product manager, but instead of answering "what?" they answer "when?", and takes action when things slip. Usually the team gives the PM a schedule they are comfortable with, and inform the PM about their progress as needed (usually at fixed checkpoints). Again if the team doesn't have a problem keeping schedules, a project manager isn't needed. The focus of the project manager is "the schedule" and might use a tool like MS Project. Ideally they've presided over similar projects so that they can spot missing or risky elements in the schedule.
Another role that is sometimes a bit confusing, is the team lead, or development manager. It's a confusing role because, at first glance, it seems like a conflict with the PM roles. This person hires, fires, mentors, grows, gives kudos and criticism, and assigns responsibilities, and chooses architecture. They are an experienced technical person with lots of skill and ability, and good communication skill. If a programmer has a technical problem, or if they make a technical mistake, the lead should help out. The lead also sets the tone for the culture, and has authority to define coding conventions and process. Setting policy, representing the team elsewhere in the company, and conflict resolution are key qualities. If the team has consensus on policy, and is always willing and able to help each other out, and no-one is ever hired or fired, no team lead is needed. Sometimes the technical aspects of this role are seperated into a high level technical role and delegated to a title like an architect.
You will notice that there is no mention of who defines the product in any of these roles. The prod manager clarifies. The proj manager babysits and worries. The team lead gets it done. Who is the product definer? The answer is: the guy with the money. They may choose to delegate that authority, and it often gets redelegated. Typically the investor picks a board who picks a CEO who might in turn delegate product definition to the product manager (for example). Or he may put a more complex policy in place for product definition. But in the end, the investor has some idea as to what they are investing in, and will generally be happy if they get what they paid for. (Of course they might also be happy if they get something they didn't pay for but which turns out to be wildly successful.)
Everyone wants to define the product. QA does, support does, even the sysadmin has a few ideas and pet peeves. The users sure as heck do. The product manager role exists to protect the development team (and everyone else) from constantly changing priorities, features, and demands. The risk for the prod man is that the CEO (or the board) will set a product definition policy and then repeatedly break it, undermining the prod man's authority and effectively making their role worthless. It often happens that product managers devolve into fall guys for inefficient and indecisive management. Basically, the people with the money have to have discipline.
Who should define the product? That's the million dollar question! At least in the software business, it's should be the person with the best grasp of the market (what's needed) and of the technology (what's possible). If you add to that the ability to get it done, and some money, you have a business. The definer has to understand the users and filter through their feedback. They have to understand what can be done. They have to understand the psychology of consumerism, and the entire gestalt of the product and it's position in the market, and in the mind of the user. And they have to be able to delegate! A completely specified product is the product itself, so it's impossible for a person to define everything for a complex product. In particular, the development team will need to make lots of little decisions, and possibly a few big ones, as they flesh the product out. (I commonly see two points of failure here: dev is not given authority to define product details, or dev is not being willing to define product details.)
How are products defined? If products were cheap enough, and the market large enough, we could create every possible product, release them all and go with the one that 'sticks'. We can make the product cheaper, and subsitute an expert opinion for the market, and approximate this approach using mockups and prototypes. So, the money champions an idea, requests a prototype, they give and get feedback on it, iterate, then finalize it with the product manager and authorize development. The users then get the "final" product and a similar, if slower, iteration occurs.
(This means there's a highly desirable pressure to minimize the distance between a mockup and production code - a great opportunity for architectural innovation!)
OMG what was Adam Sandler thinking?
Adam Sandlers comedy album Stan and Judy's Kid
is the worst thing I've ever had the misfortune to hear. Not only is it slow, it is incredibly profane (expected) and incredibly unfunny (not expected). I'm a huge fan of Sandler's, and just love "What the Hell Happened to Me?" and a few of his other works - but this was just terrible. What's funny about a drunk Bostonian murdering his friends? Or a peeper getting caught by the police (really, that's it)? Or a smooth talking black man who seems to be successful with women - right until he refers to his penis with a stupid (usually disgusting) euphemism?
I literally threw this CD in the trash - I'm not even going to sell it back to a used CD store. The fewer of these things in the world, the better!
I literally threw this CD in the trash - I'm not even going to sell it back to a used CD store. The fewer of these things in the world, the better!
Subscribe to:
Posts (Atom)
