Photo processing service needed

No comments:
Basically I need a service where I can mail in my film, have negatives developed, scanned, and then uploaded to Flickr into my account. A 5MB scan or higher would be good, with no correction. I don't care about getting the physical negatives back. Does a service like that exist?

Book Review: The Brief Wondrous Life of Oscar Wao

No comments:
The Brief Wondrous Life of Oscar Wao The Brief Wondrous Life of Oscar Wao by Junot Díaz


My review


rating: 5 of 5 stars
What an amazing book. I don't normally go for Pullitzer Prize winners, Oprah Book club stuff, but this book was amazing. The book is not fantasy or science fiction (although you could argue there's a dollop of urban fantasy) but there are quite subtle inside references throughout to LOTR, Dune, the Watchmen, and Akira. This was just the icing on a vibrant, multi-lingual narrative that was so juicy Jonot could have kept me interested describing how grass grows, in real time.

Of course, the actual story was much more intense than the growing of grass. The central character, Oscar, is perhaps the ultimate nerd, the ultimate ne'er do well outsider, and Junot goes to great lengths to put him in his time and his circumstance, and manages to pull in 3 generations of his family and the terrible history of Trujillo and the Domincan Republic, and the life of DR immigrants in New Jersey.

The narrative begins and ends with Oscar, but Junot does something only the best authors can - he interrupts his narrative, sometimes quite abruptly, introducing new characters who manage to hold one's interest even more than the last characters. What makes this even better is that the new characters are often younger versions of supporting characters in previous pages, and this time seen in a very different (always more sympathetic) light. It's as if he's explaining "how they got that way". This is particulary true of the mother, Beli, who is first presented as a terrible force in Oscar's life, hard and relentless, and later painted as a little girl, conceived at the tail end of her great families fall, taken in by monsters, saved by distant family, and destroyed by her powerful ability to love.

I feel like I should say "This book changed my life" but really, it hasn't. I am relieved to report that this book does not have any life lessons, except perhaps for the oldy but goody that you should be grateful for what you have, especially something we take for granted, political freedom. Bush may have been bad, but let's face it, he was no Trujillo. I think that our own complaints sound very tinny and small next to the brutality in this book.

Live your life, speak your mind, and maybe you can write a book like this someday, my love.


View all my reviews.

An exciting time for Books

2 comments:

I think this is an exciting time for books - to be a reader, an author, a publisher, or a retailer. There is a new focus on learning, which means reading. Brick and mortar retailers have wisely made the bookstore a "destination" rather than a place to convert greenbacks into stacks of bound paper: bookstores are way more comfortable and fun than in my childhood. Online retailers have made any book accessible, and has given new life to the used-book market.

And it turns out that books, and the people who love them, are a grand opportunity to network with books. It's like the days of Usenet rec.arts.sf.written, but much better. In particular, I get a great tool that helps me describe what I read, and what I thought, and based on that description can connect me to others. Usenet never did that.

And internet retailing didn't stop with Amazon. People with great heart, skill, and determination are giving Amazon's book business a run for it's money.

Spreading out, focusing in

No comments:

It seems that the internet has recently exploded with new services. Some of them are very compelling. Using them seems simple enough: sign up, start using it. Goodreads is my new favorite tool of this sort.

However if you repeat this often enough, a few serious weaknesses arise. Most glaring is the need to remember usernames and passwords for each service. These are a hassle to remember. Each service has it's own interface, which is a double-edged sword - on one hand different data requires a different interface, but on the other it's a lot to learn. Also, each service has it's own data - your own content, and social graph data. This doesn't become an issue until you want to switch services or, ironically worst case, using two services side-by-side.

Data-duplication in a Web 2.0 world is a nightmare.

That's why Web 3.0 is going to be about focusing in. Aggregation is the first step. And indeed, perhaps that's the way to go - aggregate and integrate until your happy.

Idea: Movie age disparity finder

No comments:
It's weird how the movies pair really old guys with super young girls. I want to do a survey to see if the gap is trending up or down (I think it's trending up, big time). Inspired by Liam Neeson and Famke Jenson in Taken (12 years difference).

Some of the information is out there: character name, actor name is on imdb. Actor birth date is also on IMDB, wikipedia, or other sources. What's harder is to know who is romantically linked to whom. I might have to ask the world for input on that one.

To make it more fun, you can tell the site which characters you wished would have hooked up (but who didn't). It's a nice, fun, drag and drop exercise. A quick poll of teens at the coffee shop seemed to like the idea.

The rise of internet bartering

No comments:
That was odd. I wanted to install Stuffit 9 Premium (which has some nice features like segmentation) which is ordinarily $50 (but which somehow comes with the Mac?) and Smithmicro said it was free. But I had to accept an offer. This offer was brokered by a company called Trialpay - and I could select anything from a credit card sign up, a subscription to the Economist magazine, or a trial of "Blockbuster Total Access".

Actually, I think this was extremely well done. Early attempts at this sort of thing were incredibly crude and offputting, often forcing the user to go through many pages of worthless offers. In this case they only had 6 pretty good offers.

The rise of great expository videos

No comments:
I've been seing more and more really great exposition on the internet, especially through videos. Speed drawing is perhaps my favorite (and it's a very interesting and informative exercise to consider what it would take to create a "Speed coding" video!), but I've seen some very effective teaching videos (this one about recycling, the enviroment, and ecology from Japan).


History of the Internet from PICOL on Vimeo.

Now here is an interesting video. I really like this style of exposition - iconic, abstract, always in motion, with cool spacey music in the background. And of course a nice British accent doesn't hurt. The subject is rather interesting, too - the very early technical development of the Internet. But what is most interesting is the attempt to standardize the iconography with "PICOL icons". What's not clear is if this is just the author, Milah Bilgil, to "standardize" something, or if this attempt is real. Of course, standardizing the iconography isn't enough - would be authors also need good, inexpensive tools to play around with this stuff. It's not clear to me if Flash is overkill for this sort of thing, or if its "just right".

A really neat thing

No comments:
Sometimes it is hard to transform non-linear thoughts into linear text. This is one of those times. I've been struggling with the concept of "smoother" transitions from concept to implementation in software, such that information is not lost in the transition. Take, for example, the use of unusual typefaces in a web page. If you create a raster, you've lost information - the original text.

The other day I ran across SIFR, which does in-place rasterization of type. This is consistent with smooth software development along ever decreasing entropy. Interestingly one of my favorite sites, hulu, uses it.


Drag and drop of page elements - the ubiquitous use of absolute positioning!
http://www.roxer.com/
http://javajosh.roxer.com/ocjug (with domain support!)

Oh, and here's one that uses sifr, called doodlekit. (really great site design, but requires a native plugin to work, which I am loathe to install. See the techcrunch review that puts it side-by-side with some other tools, including Google Pages). What's shocking is that they charge so much for their service. $14/mo is really too much for a one-time use of a tool, and occasional other uses. The free version sucks because it plops ads on your page. I basically think this is not a viable thing).

But I love the idea of drag-n-drop through-the-web design.


How to design this code?

No comments:
I want to write a JavaScript function that effectively "widgetizes" a section of the DOM that contains other widgets. For the most part these widgets represent some sort of input from the user. In particular, text boxes, selects, and other Widgets. I've kind of done it, but there are a few niggles, some of which are rather philosophical. In the spirit of the interwebs, I'd like some input.

Here is the code so far. Still needs onchange support, and...
  1. How should the application programmer select the composite node? Passing an ID as a string is easy, but not very flexible. I'd rather accept an arbitrary DOM elt. A jQuery programmer is going to want a plugin, which means using an arbitrary selector. [Update: Resig recently posted a bit of code that had to deal with this exact issue. He accepts both. It remains to be seen what this means to make this into a plugin.]
  2. How should I determine if focus is trapped "inside" the composite? Currently I'm tagging all descendant elts with a unique tagging class, but I find this modification of the DOM distasteful. Am I being too picky - does it really matter if elements have an extra class? Is there a way, with jQuery or with basic JavaScript, to ask if a particular elt is an ancestor of another elt? One interesting possibility is to use the "offsetParent" property - apparently divs become offsetParent by default, although this approach might fail under certain layout circumstances.
Thanks.

The truth behind medical paperwork

No comments:
Someone I know asked me to join her at her therapy session today, primarily to discuss communication styles. I agreed. The councilor greeted me kindly, said how much good stuff she had heard, and then handed me a (rather thick) sheaf of papers to fill out. Needless to say, I was nonplussed. I smiled and asked her why it was necessary for me to fill out this paperwork, explaining that I have an aversion to such things, and after all this was a one time thing. She said it was for her "integrity" because this paperwork is required by her various associations. She also said that her lawyer said she must have it filled out. She questioned me about past experiences with paperwork - playing the 'why' game with me. At one point I asked her what she would do with the paperwork when I filled it out, and she said "Oh, I'll file it away for 8 years and then throw it away."

So she wants me to do work that she'll then throw away. How respectful of my time and efforts!

The truth is that paperwork serves only two purposes: to get the service provider paid, and to limit their liability. And because the payment often comes from a 3rd party (the insurance company), an inordinate amount of paperwork is required. Another, more egregious purpose behind paperwork is to limit the service providers liability. It is more egregious because lawyers have to guess how lawsuites might play out, and because they can go in many different directions, there's a lot of paperwork generated. Actually the more general way to put it is that paperwork should limit the eventual harm suffered by either party (although in some cases it increases harm, such as imposing punitive late fees).

Repetative, unnecessary paperwork one of the worst symptoms of our medical system.

One should justify paperwork, rather than justify not having paperwork. It's not easy to fill out a complicated form, especially if it's packed with technical jargon. The requested information is often not at hand, and even if it is, one has to painstakingly write it neatly in the boxes. Also, the action is asymmetrical, meaning that the service provider doesn't have to fill anything out for you, but you have to fill stuff out for them. It is demeaning because, as in my case, you are asked to do work that will eventually be thrown away. Paperwork is the worst kind of work - it's just rehashing known information into new blocks, and agreements that can't be fully understood.

In this case there are privacy concerns which are substantial - what if I apply for medical insurance and the councelers billing department submitted my "claim" for pscyhological treatement such that my premiums got adjusted?  Or what if the billing department decides to bill me for the visit by accident?

It makes me very sad that otherwise rational people let bearucratic habits trump their common sense. The fact is that I should have been able to sit in with my friend that one time without filling out any paperwork whatsoever, because the only potential harm was to my privacy, and I felt sufficiently covered by confidentiality priviledge.

Why it isn't so surprising that "furniture" is the keynote speech at the Java Symposium

No comments:
At first when I saw it on the schedule I thought it was a joke. Sure, the Java Symposium isn't exactly the biggest or best conference, but keynote speech about furniture? Really? But after thinking about it for a while, I realize that the issue is actually important enough for a keynote, even though I disagree with Neal's thesis. So why is furniture is the subject of Neal Ford's keynote at this year's Java Symposium? He will talk about "the frustrations of modern knowledge workers in their quest to actually
get some work done, and solutions for how to guard yourself against all
those distractions." He's going to rant against cubicles, save the everyday Joe Programmer from his frustrations, and I think that's great.

But I'm not sure if I agree that a shared workspace is causing Joe Programmer's troubles. Sometimes I like being in a shared space. Sure, if I am hot on the trail of a great idea, and thick in the implementation, then yes, by all means, I want an office and a closed door. But alas, the opportunities for such development are relatively sporadic. The reason is that, once the code is done, working, and checked in, you get to describe it, support it, test it, explain it, defend it, tweak it, deploy it, demo it, profile it, document it, and discuss it. These other activities require communication and an office actually gets in the way of those tasks.

Communication is the core benefit of being in a shared workspace. But sharing energy is another. The energy of the place can keep you going in the middle of the day when you might be sagging and loosing focus. It's kind of like working out in a room of people vs doing it yourself. Working in an office means you get some good peer pressure to at least pretend to work when you're sitting at your desk. This is why I, and many people I know, enjoy working in a coffee shop. In fact, I'll even dub this "The Coffee Shop Effect".  (Of course, it works the other way around, too: if everyone is depressed about something, like a bad quarter, it's easy to get pulled down with everyone else. Luckily in a coffee shop people are usually jacked up on caffiene, and there is no shared earnings report, so that's nice.).

I also want to point out that being in an office doesn't necessarily reduce distractions: IM and email have a way of ignoring physical barriers. I've yet to meet a product or project manager that shied away from opening the door at any time. Of course, it's possible to close the digital doors too, and coworkers no matter their title need to respect one's space, but an office alone doesn't solve these issues. E.g. it takes more than changing around furniture to cultivate a nice atmosphere.

So basically I think that companies should provide both types of environments. There's a huge economic pressure to keep expensive programmers focused and productive for more hours in the day, but there is a certain maximum (for myself it's only possible to be in "the zone" for a max of 4 hours per day - when I go past that and look at my work, I have to admit it's not great). And for semi-focused work, a shared space is actually better and more fun.

The rise of expository videos

No comments:
I've been seing more and more really great exposition on the internet, especially through videos. Speed drawing is perhaps my favorite (and it's a very interesting and informative exercise to consider what it would take to create a "Speed coding" video!), but I've seen some very effective teaching videos (this one about recycling, the enviroment, and ecology from Japan).


History of the Internet from PICOL on Vimeo.

Now here is an interesting video. I really like this style of exposition - iconic, abstract, always in motion, with cool spacey music in the background. And of course a nice British accent doesn't hurt. The subject is rather interesting, too - the very early technical development of the Internet. But what is most interesting is the attempt to standardize the iconography with "PICOL icons". What's not clear is if this is just the author, Milah Bilgil, to "standardize" something, or if this attempt is real. Of course, standardizing the iconography isn't enough - would be authors also need good, inexpensive tools to play around with this stuff. It's not clear to me if Flash is overkill for this sort of thing, or if its "just right".

Just go see Wicked

No comments:
http://www.wickedthemusical.com/img/wicked_splash.jpg

(We had front row, center tickets at the Pantages with the original cast! The principles are great singers AND great actors - sitting that close you can see the real tears on Elphabas face. The story is really nothing like the book, but it's amazing all the same.)

The true cost of evaluating EC2

No comments:
Back in July I was evaluating Amazon's cloud computing platform, EC2. I figured, why not? It's only $.10/CPU hour. Starting an instance, connecting with a browser, SSHing in would cost me less than a cup of coffee, and would be good practice. The experiment went along, I deemed EC2 too difficult to provision and use for my purposes, and forgot about it.

Today I got an email from Amazon saying I owed them about $7 for web services. I vaguely remembered seeing this before. I always thought that it was saying that I owed $7 for that one time I tried the service out: way too much, of course, and something I kept meaning to call amazon and find out about. Today I read it more carefully: turns out I've been billed about $7.50/month since I tried the service out. (Finding this out was much harder than it should have been: AWS billing and usage interface is truly awful. I ended up just doing a search in gmail for "amazon web services billing statement" and summing the amounts.)

Concerned, I used Amazon's contact form (they don't have an actual email address). I received a form letter back explaining how to cancel EC2 and S3. This was odd for a couple of reasons - first, I didn't ask how to cancel anything, I asked to understand why I had been charged for the last 6 months. I also asked for instructions on how to figure out how much they have actually charged me for. Not having my questions answered, my first instinct was to reply to the email. Turned out that the "from" address doesn't accept email. Then I read carefully and clicked on a buried link within the email itself that "no, this did not answer my question", and clicked on link that asked them to call me. Much to my delight (and surprise), I was talking to a service rep within 2 minutes (via a neat 'click to call' service called estara from atg). An apologetic, very nice women (Tessa) was completely unable to address me issue, she told me she'd have to forward my request to the web services team, as she wasn't able to help me.

Lessons: I've already "cancelled" EC2 and S3 although since I had nothing provisioned I'm not sure what that means. Hopefully it will stop new charges, at least. I realize now how dangerous it is to allow Amazon to have my credit card number, and I've removed all banking and CC information from Amazon. If I had seen a growing amount due over the last few months I would have realized sooner something was wrong. But because they just pay themselves with my CC, it didn't register that I was getting a receipt, not a bill, all this time. Second, I'm concerned that someone may have my Amazon information. Third, I have to check my bank and cc statements more carefully. Finally, if I play with EC2 again it's going to be on a different Amazon account.

It's still a mystery exactly what Amazon was billing me for: $7.50 is enough for 75 hours of a small instance, a wierd number. When I find out I'll update this post.

Update: 6 Jan 2009 I finally received a response from "Luke":

Greetings from Amazon Web Services.

I have been notified of your recent inquiry regarding your AWS charges. I have taken a look at your AWS account. These charge is due to a non-attached Elastic IP address associated with your account. Elastic IP addresses that are allocated to your account but are not associated with an EC2 instance will accrue a $0.01 charge per hour. You can view your Elastic IP addresses with this command:

> ec2-describe-addresses

Any elastic IP addresses that you associate with your account remain associated with your account until you explicitly release them. To ensure our customers are efficiently using elastic IP addresses, we impose a small hourly charge when these IP addresses are not mapped to an instance. When these IP addresses are mapped to an instance, they are free of charge. You can use the EC2 API command line tools to release the Elastic IP address with this command:

> ec2-release-address <ip-address>

I also see that you have closed your AWS account. These usage charges have ceased as of your account cancellation. Please note that any applicable charges for January 1 and 2 will be collected at the end of the month.

Regards,

Luke



Wow! What awful customer service on so many levels! First, their emails look like invoices, not charges. Second, they don't explain anywhere what the charges are for. Third, when a customer goes to great lengths to find out what's going on, they don't offer to reverse the charges that obviously should never have been charged. Fourth, they never did answer one of my basic questions: how can I find out for myself what I'm being charged for? Fifth, they don't apologize or take note of the horrible messaging that started this whole mess. The icing on the cake is the last sentence, assuring me that I'll still be billed for the two days in January I didn't use the IP - gee, thanks, Amazon.

I've responded with another email asking for a refund and complaining about their messaging and customer service. For God's sake, do NOT evaluate EC2 unless you really know what you're doing!

Month, Amount
7 $1.32
8 $6.51
9$7.42
10 $6.53
11 $7.45
12 $7.42
Total: $36.65

[Update: they refunded my $36.65. But I found a better bookstore, Better World Books.]

Buddha, women and the neutrality of meditation.

No comments:

Got into a conversation today with my girl about Buddhism and women. It's disturbing lore, because Buddhist nuns are treated as second-class citizens in the Sangha.

And that's not ok with me.

The real irony is that gender simply doesn't enter into the Buddhist description of suffering - there is no male suffering or female suffering. Indeed the solution, the eight-fold noble path, is often described as "universal". This inconsistency strikes me as incredibly unfair, not to mention inconsistent with the rest of the Buddhist teachings as I understand them. Even saying that he was "a man of his time", as the article linked to above does, doesn't excuse this inconsistency - although one could claim that he was taking a big enough risk by ignoring caste, and to take on sexism would stress his nascent movement beyond breaking. But that is being incredibly generous.

According to this story, the Buddha exhibited the supernatural gift of seeing into the future. His judgment was based on this supernatural 'knowledge', which turned out to be false. This brings his conclusion into question. It is time that we separate the brilliant, accomplished experimental psychological insights from the cultural instincts far removed from modern reality. Meditation cultivates non-reaction, dispassion, and ego-lessness. It is genderless. I find it interesting that the Buddha's mistake was tied up with a supernatural power.

There is some hope for those whom dogma matters: the five hundred years have more than elapsed, it is time for a new policy for women who would take vows.

He-Man and the Masters of the Universe!

No comments:
Wow. It's amazing to watch these old cartoons again. It's pretty amazing to watch them and observe one's own reaction. The childish delight is still there, but it's buried under layers of critical thought. The overall affect is nostalgic but fundamentally unsatisfying.

Hulu is now offering offsets in their embedded videos; here's the introduction of Cyclops and his gamma glasses:

A neat musical device: the TuneStudio

No comments:
TuneStudioBelkin TuneStudio combines a bunch of neat devices into one: it's a hard-drive audio recorder (using your iPod as the drive), it's a line mixer, microphone pre-amp,  a USB audio interface, and a condenser thrown in for good measure. It looks good and although it retails for $250 you can pick it up at Costco for a mere $180.

I skimmed the user manual and discovered a few shortcomings, though. It doesn't run on batteries and requires a 12v 1.25A power adapter - this thing sucks a surprising amount of juice! While it records 16 bit 44KHz stereo audio, it does not maintain a distinction between it's 4 channels - basically this is a 4 channel line mixer attached to a 2 channel (left and right) USB audio interface. (The audio gets recorded to the ipod as "Voice Memos" - which then sync to the PC via iTunes). You can't avoid doing the mixdown.

Some might say that using an iPod as the hard drive here is gimmicky - Belkin could have released the exact same device with a built-in hard drive. But I think there's a legit reason to do it this way - this is a semi-casual device, and it's pretty neat to be able to use all that storage on your iPod as musical tape. How cool would it be to record a local band and then listen to the jam on your iPod on the way home? And as for making podcasts, it makes a lot of sense to preview your podcast on the target device. And also, it makes a lot of sense to get the audio onto the PC with iPod sync rather than connect a new device to the PC - it fits people's existing workflow better. Finally, it may be possible to couple the TuneStudio with some custom iPod software, providing an extensible and very powerful mixer platform based on, say, the iPod Touch. (When will Ableton port Live to the iPod Touch anyway?)

Why Internet TV isn't mainstream yet: notes from the bleeding edge

No comments:
Using hulu for about a year, and it generally rocks. Good replacement for cable/satellite television - I've been watching House, Fringe, 30 Rock, and The Colbert Report regularly. And the occasional SNL skit. The big NBC morning and news shows are chopped up into topical pieces so you can just watch the interesting bits. Hulu provides a news feed of  videos, although this is a very active feed so it kind of dominates the "all feeds" mode in most news readers. Still not sure if it's possible to subscribe to a feed-per-show. Very good audio/visual quality. Very annoying if your network goes down or slow. Nice to link to and embed videos in the blog, facebook. It's just neat to be able to link to a completely new part of one's life: the TV one watches. Hulu (and services like it) allow you to comment on it, criticize it, share it. Unfortunately some videos expire, making those URLs useless after a time, and meanwhile your commentary does not expire which creates a problem large enough to be noteworthy. It's particularly bad with hulu because they only warn about expiration when it's approaching. YouTube does not suffer from this problem (for example, consider the music video "Ooh Yeah" - it expired on hulu but is still live on youtube. OTOH YouTube audio and video quality is generally a lot worse than hulu, although this may be changingn with youtube's recent support for HD content). Really don't mind the Hulu commercials at all - they are short (15-30s) and, at least for TV episodes, they fit the narrative somehow (I remember feeling a bit awkward watching Firefly on DVD without commercials). It's cool to watch an hour show with 5 commercial breaks of only 15s each!

Ripped DVD, and video podcasts. Ripping a DVD is actually really nice if you have the hard-drive space, and if you have the time (HandBrake takes at least 2 hours to rip a movie). The biggest benefit of this method is reliability - the movie won't skip or stop if your network becomes slow or unreliable. It's also convenient: you can use the excellent "Front Row" application on the Mac (or the lesser Windows Media Center on Windows) to watch these movies, which is currently not possible with Flash-based streaming players like Hulu or YouTube (one tip when using HandBrake with Front Row: plop your movies into the iTunes Movie folder so that they appear in the Front Row menu.) I've only watched a few video podcasts - I downloaded some iPhone SDK videos, but was actually annoyed (and continue to be annoyed!) that they appear in Front Row movie menu along side "Harry Potter and the Chamber of Secrets". The quality of these podcasts remind one that they are designed to be viewed on a video capable iPod, and not a large computer monitor. That said, there are some television shows made available in this format, such as the Rachel Maddow Show on MSNBC. A small drawback is that the iTunes store is the go-to place for this kind of content, and I still don't feel comfortable surfing the web with the iTunes store. One reason I don't like the iTunes experience, for example, is that I can't easily link to podcasts!

Gaming. Gaming is more and more a viable alternative to passive TV watching. PC gaming is limited in the living room because of akward controls - the mouse/keyboard doesn't work on the couch. Ironically these are the controls that make PC games (and applications) so compelling. Modern consoles have many of the features of PCs (like wireless internet connectivity and web browsers) but the controls and interfaces are designed to work in the living room, a huge plus. The consoles are generally capable of movie and audio playback (the PS3 is a very good blu-ray player, for example). I don't have a console in my apartment, in part because I don't have the space but also because adding another box would increase the complexity of my simple setup considerably. (Of course if everything supported HDMI it would be a different story).

Cable, Satellite, and TiVo. In some ways Hulu is like a TiVo - in both cases you can only watch stuff that's already been broadcast. In both cases you watch fewer commercials. And indeed TiVo addresses several weaknesses of Hulu: first, it doesn't depend on strong network connectivity AND it caches the entire show, which ensures smooth playback. Second, the interface and controls are designed for the living room. Of course, TiVo is very expensive (the box, the TiVo service, and the cable service all cost money - the latest TiVo costs $600), but Hulu is essentially free. Also, TiVo box is not a generally useful PC and so is limited to doing one thing only. And it's proprietary nature means you pay a lot more for storage than with a PC. There are some HTPC projects out there that are frankly rather exciting, but aren't really ready for primetime.

Apple TV. I don't own it, but I think it's an interesting idea. Apple TV is a hybrid device: it distributes the PC "signal" to the living room (photos and music), but also serves as a signal source providing Hulu-like movies and TV shows - for a price. The ability to rent movies and TV shows with immediacy is an interesting idea, but one which obviously favors Apple's balance sheet. I think it's a bad proposition to spend $230 to give a company a turnstile in your living room; call me old-fashioned. It seems to me that the cable/TiVo solution is a better value, especially for those who watch a lot of TV. (Admittedly, most cable companies also put a turnstyle in your living room with Pay-Per-View!)



[Update: what is boxee? I don't know but I've signed up for the alpha]

John Resig and what we can learn about Useful Blogging

No comments:
John Resig is an inspiration. His blog is ultra-useful. It's clear, informative, and often cutting edge in the JavaScript/jQuery/browser space. His posts are often accompanied by helpful graphs and, more often than not, usable code and workarounds. I have been a fan of jQuery since I started using it this summer, and have continued to be impressed with it's creator's output. Even when he posts an opinion piece, it is on topic and respectful. The important question arises: what makes his blog so useful and how can we emulate it?

Consider a recent post about the accuracy of JavaScript timing. Now, an ordinary blogger would have posted something like "I ran across some odd results in my Dromaeo testing. Anybody know wassup?" But John went deeper, did a lot of testing, graphed the results, and posted what he found. Heck, he even included a graphic explaining normal distributions. (Basically, JavaScript timing in Windows/IE is very coarse - results are rounded to the nearest 15ms.)

By comparison my own blog is a bit of a ramble. It's true that I'm not so single-mindedly interested in browser programming. My programming interests run the gamut from scalable software architectures, front-end architectures, programmer productivity, prototyping, web design, and data design. And of course there's a sizable amount of personal items in this blog stream. But even so I daresay the overall quality of the blog has much room to improve.

I would like to create a new blog that is more like John's - focusing purely on my core technical interests, designed to be useful and educational, rather than just an invitation to discuss. It needs a new, simpler URL - like javajosh.com/blog. Since I only have about 30 (valued) readers a month I don't think the transition would be too bad. And I can always continue to post personal and "off topic" things to this blog. (An important question is what to do with on topic posts to the old blog, but I can tackle that one later.)

A demo of jMaki: yet another unnecessary abstraction

No comments:
Doris Chen posted an screencast of jMaki in use (with Netbeans and Glassfish). It's unnecessary because a) jMaki isn't a good idea, b) the tooling looks cumbersome, and c) the end result looked really bad.

jMaki isn't a good idea because it's a taglib that tries to normalize the use of many javascript libraries by abstracting over them. In principle it reminds me of Apache's commons logging api, which is designed to abstract away the differences between Sun's logging API and log4j. This pattern of bad idea pervades the Java platform, unfortunately. Successful projects use succesful implementations, not just APIs. It's important to know Tomcat, not just the servlet APIs, and it's important to know log4j, not the commons API. And it's important to know jQuery and it's UI plugins, not jMaki. To do real work you're going to have to know the underlying JavaScript library anyway, so why bother with an abstraction that will just get in the way?

The Netbeans tooling looks rather cumbersome. I've been (re)reading Donald Norman's "The Design of Everyday Things" and was struck with how unruly Netbeans looked in the screancast. It's all the little things Doris has to do - find an obscure menu item to check that a plugin is installed, center the dialog box on her screen, search through a list of completely unrelated plugins to enable the one she wants, etc. Or when she drags a widget into the JSP and has to right-click and "format" the badly formatted text every time. Since when does dragging stuff create text? And why can't it format itself?

The final blow was that the end result looked (and sounded) like crap. The fish eye widget was layed out wrong, and the google map was too large and also layed out wrong. Putting sound in the page was just a bad idea - that's like adding blinking text. (Just because you can doesn't mean you should!)

Apologists would say (at least) that I'm nitpicking. At least the tools worked; and none of those things I mention are show stoppers, and any programmer who can't deal with a few tool quirks doesn't deserve his salary. And as for the end result looking bad, this was a programmer's demo, not a designer demo - it can all be fixed with some CSS edits later, done by a web designer.

My response is this: the tools work, but encourage errors. They encourage small errors of setup and use. But they encourage a much larger error: the tooling's "map" of the system is not that of the programmer's (or at least not this programmers). I fail to see what a JavaScript abstraction has to do with SVN, and yet these things are presented together in a dialog. I fail to see how a collection of text is a "widget" or why dragging would create text. And yes, I fail to see why I need a JavaScript abstraction in the first place that appears to do little more than substantially increase the complexity of my system.

I feel that IDE's are little more than glorified text-editors, and begin to fail when they themselves introduce abstractions. In a subtle way, the tooling begins to dictate the programmer's mental model of the design- and runtime of his system. In this case, it's nice that Netbeans can easily add a taglib to your web project. But it's not nice that this capability is expressed as a "plugin". It should be expressed as a macro or script: a macro that adds a jar or two there, a line of code to web.xml there, and adds some new JSP specific snippets (particularly taglib declaration and taglib instances). It may even remind you that you'll have to redeploy to get the effect. One concrete difference between a plugin and a script abstraction is that the Netbeans plugin method requires that you select the "plugin" on project creation.

The end result should look good because this kind of programming is all about the front-end. Widget positioning and sizing is not a trivial problem to be swept under the rug! Either jMaki or Netbeans needs to take better care to provide better defaults. And too, programmers are (hopefully) wary of these "slap it together" demos - everyone knows (or should know) that slapping stuff together is the easiest part of programming. It's fitting it all together professionally and solidly which takes time, effort and skill.

Illustrator Ninja

No comments:
Here is 40 hours of illustration condensed into 7 minutes by the remarkable Chad Pugh:


iPhone Invisible Shield Review

1 comment:
invisible shieldI scratched the screen of my iPhone a bit on my keys, and resolved to get a screen protector. I purchased the Invisible Shield from amazon.com for about $12. I followed the directions closely, and almost immediately noticed a reddish discoloration, and some subtle mottling - not bubbles but subtle irregularities in texture. I also noticed that the touch sensitivity of the screen was reduced. On two occasions keys that I did not intend to press were pressed and held - and it was the backspace key (which resulted in the loss of two fairly long text messages). Last night I removed the Invisible Shield. The difference was remarkable - my iPhone screen was brighter than it had been in 3 months, and the touch screen deliciously responsive. It was like getting a new iPhone.

I estimate that the cost to produce what is essentially a sticker has got to be very small - less than $1, which makes the asking price of $12 very high. (products of this nature are generally marked up by a factor of 5 or 6 - 12 is very high).

Given all of this, I cannot recommend the Invisible Shield. Given the pace of technological progress, it is better to endure the occasional scratch and eventually replace the device, especially if the usability of the device is reduced by that protection. I think that my iPhone's screen can last 4-5 years if I can manage to avoid putting my keys in the same pocket as the phone!

This is a photo of the removed Invisible Shield, clearly showing the reddish discoloration. Frankly, against the white napkin it looks much more dramatic than on an iPhone.