Real World Prince of Persia
0This guy is freaking amazing. Check out this Russian free climber. It’s like watching the kung fu movies except all the moves are real. Via Will Price.
This guy is freaking amazing. Check out this Russian free climber. It’s like watching the kung fu movies except all the moves are real. Via Will Price.
I want to be a good REST citizen. I really do. But it’s not easy.
GET is supposed to be idempotent and side-effect free. Excellent. I’m all for it.
So here I am putting together a little app and I need to design my Web API. The right thing to do is:
PUT http://parand.com/sessionid/currentState (change state)
GET http://parand.com/sessionid/currentState (get state)
Neat. One URL for both. (Btw, is the session ID in right place? Should it be http://parand.com/currentState/sessionid instead?)
Now to actually make it happen. The API will mostly be called from Web browers (AJAX!), and thankfully XMLHTTPRequest supports PUT. Good.
But how does the backend handle PUT?
Hmm. I’ve handled GET and POST plenty, but how does one do PUT? Apparently with something like this on CherryPy.
So I need to plug in this new piece of code as my main controller, which makes me nervous. But more than anything, I just don’t want to think about this. This is just plumbing for my silly little app, and I want to think about the app instead of how to handle PUT. I’m sure handling PUT is built into CherryPy, but I can’t seem to find it.
Btw, notice how CherryPy’s philosophy is that GET and POST should be transparent to the developer:
It doesn’t matter whether the parameters are sent with a POST or a GET, or if they’re a small string or a large file that’s being uploaded. They always end up being converted to a regular python string and they’re passed as an argument to the function. It’s all transparent to the developer!
Did I get that right? Isn’t that very not REST?
Now that I think about it, I’ll probably have visual basic clients also, and possibly plugins to various Office products. Do those do PUT? I know they do GET.
Anyway, I’m trying to persevere and keep on my little quest to do PUT. But the trouble is, these little guy keeps calling me:
http://services.parand.com/setCurrent/sessionID
http://services.parand.com/getCurrent/sessionID
Bad, bad. I try to ignore them, but there’s this little voice that keeps telling me I could’ve implemented my API already if I had just gone with GET from the beginning instead of all this digging around.
So I’m sure there’s an easy way to do PUT, but it’s eluding me, and I’m very tempted to just GET on with it. To all the RESTians out there, how about putting together guides that spell out exactly how to implement PUT (and all the rest of the REST recommendations) on all the different back-end (and front-end while we’re at it) technologies out there? Philosophy is good, but particality is driving.
It seems to me that I should like XSLT, be waxing philosophic about RDF and how it will be the future of everything, and be into XQuery (or at least XLINQ).
But in truth I don’t get any of them.
XSLT: It seems to me transformation is complex. It appears it requires a programming language. It strikes me I know a couple of those already. It strikes me that XSLT is yet another, and that I would rather use one I already use for everything else to do my transformation too.
It’s just odd to suddenly jump into a weird XML dialect to do transformation when I do everything else in some other programming language. Domain specific languages and such, I know I should be into it, but I’m just not.
RDF: Ok, so I know next to nothing about RDF. At least I know nothing besides the basic syntax. I feel like there’s a big aha moment waiting for me in RDF, but it just doesn’t seem interesting enough to invest in getting there.
I really feel bad about not getting RDF, because all the cool kids seem to be into it.
XQuery: The idea here is to have yet another XML based programming language? And this language is better than Python, Perl, or Ruby because?
I don’t feel bad about about not knowing much about XQuery. Seems like a sideways idea.
XLinq: This made a big splash but seems to have quieted down. I tried to get excited about it, but again I just didn’t get it. Take a look at Uche’s XLINQ examples in Amara. Amara looks a lot more interesting to me than XLinq.
Try Ruby is very cool. It’s a Ruby prompt in your browser, with step-by-step instructions for which Ruby commands to try and what they do. Very effective way of learning.
The Ruby people really have an amazing knack for marketing their language effectively. I’ve never seen any other group pay so much attention to and provide so many tools for people to adopt a product. These guys are out-doing highly paid professional marketers in a big way. I’m very impressed. I wonder if there’s a correlation between people who gravitate to Ruby and people who care about how ideas are presented. The man behind the big resurgence of Ruby, David Heinemeier Hansson, recently made a presentation entitled “Pursuing beauty with Ruby on Rails“. These guys seem passionate about presenting ideas with beauty and understandability.
I’ve been thinking about and looking for a script-only http server. That is, a server that’s optimized for producing dynamic content, invoking a script on every invocation.
I tend to think of the serving of static and dynamic content as different things. One is basically a file system while the other is a service provider.
In a past life I spent some time as a Web app performance optimization “expert”. One of the basic techniques was to separate the serving of static from dynamic content. You could do this by setting up a bank of servers to serve your images, style sheets, and html pages, and another to serve scripts. Many good reasons, including:
There are other practical matters. For example, I have access to several servers with high bandwidth that I can serve static content from, but only one server with limited bandwidth that I can serve dynamic content from. This is an easy situation to get into: you can get very cheap hosting of static content, but dynamic content costs you more, and your choice of how you serve dynamic content (ie. root access) costs you even more.
Which brings me to the point: I was expecting that by now the major scripting languages would offer their own built-in http servers, if for no reason other than convenience. I see that that’s not the case - the assumption is still that the scripting engine will be plugged into Apache, ala mod_perl, mod_python, etc. This means the servers are all fat and there is no separation of dynamic and static.
Meanwhile, you have fastcgi, which basically is a way of setting up a separate bank of servers for dynamic content. The request goes from Apache, thru fastcgi, to the dynamic execution engines. Ruby on Rails, for example, makes use of this. It’s nice because it gives you the separation, allows you to scale your script engines separately from your static engines, and makes your module pluggable into any http server that supports fastcgi.
But fastcgi is an extra layer I’d like to get rid of. Why not have a native server built into the scripting language, obviating the need for fastcgi? What value is gained by having dynamic requests go thru Apache on their way to my serving engines?
Well, there’s the resolution of the URL to the script to be executed. Apache figures out what needs to be invoked and invokes it.
But is that a good thing? Check out mod_rewrite. Check out the forums on cherrypy. People want more control over how the URL is translated to what’s invoked. We are living in a REST world after all, and parsing the URL is very meaningful.
To be fair, Apache offers a lot. It takes care of everything for you so you only have to write your scripts. It’s standard, it’s everywhere, and people know how to operate and tune it.
Still, I’m convinced it’s cleaner to have a separation. Have the request hit my scripting engine from the start, skip Apache all together. Give me full control over URL parsing.
Ruby On Rails, as usual, appears to have the lead in this. They ship with a built-in http server, which means you can get up and running in no time. They’re also offering lighttpd as a choice, meaning you can skip Apache. They continue to use fastcgi, which is probably a fine thing to do.
IBM shuts down their public UDDI registry. Via Bill de hOra.
It’s about time. I can tell you the exact point I lost interest in UDDI: it was the second advisory board meeting and I was struggling with the enthusiasm expressed by the board for adding features and categorizations while the basic directory was failing to get traction. A gentleman who shall remain nameless was waxing philosophic about how UDDI would be used to track shipments and trucks as they made their way across the country. It was such a huge moment of disconnect - I just wanted a directory of services - that I realized UDDI is not for me. The U foiled us; we tried to be Universal not in acceptance and reach, but in scope and features.
Went to Christmas at the Prado in Balboa Park. Very nice.
Listening to the monologue between Christmas carols, I really understood this idea for the first time:
Christians (at least some subset) really believe that Adam committed the original sin, that every child is born of sin, born a sinner. It’s a stain that can’t be cleaned, it’s there from day one, and it’s the reason that Christ died.
That, to someone who didn’t grow up with it, is a completely bizarre world outlook. I don’t mean that in any offensive way - I’m just saying it’s very strange to an outsider.
I don’t know if this is Islamic, Bahaii, cultural, or simply the influence of my parents, but I always believed that a child is born with a clean slate, free of sin. As she grows she builds a coating of sin, but that can be washed off. The child is born in the image of God; she is perfect, and life is a pursuit of perfection, of being God-like.
I’m not saying one is better than the other, but they certainly are different. Being born perfect or being born quite imperfect in a way that you can never fix, that must have a big effect on your life outlook.
I’m no expert on this, so please feel free to correct where I have gone wrong.
For quite a while now I’ve been unable to log into my Adsense account. As a result I’ve stopped using Adsense ads.
Here’s the problem: some time back I attempted to log in as I had always done before, using the email address I had used to signup to Adsense with, which is not my gmail address. I got this:
Welcome! You’re signed in to Google Accounts under the email xxxxxxx@excite.com and your Google Account password, but this is not a valid AdSense login. If you’re an AdSense advertiser, try signing in using your AdSense email and password. Or, sign up for AdSense.
Strange. I hadn’t changed my password and I was typing it in correctly. I noticed it was recognizing me via my gmail ID, so I tried that, putting in my gmail ID and password.
Welcome! You’re signed in to Google Accounts under the email xxxxxxx@gmail.com and your Google Account password, but this is not a valid AdSense login.
That’s true, but I’m not able to get in with my regular AdSense login, so what do I do?
I navigated the feedback pages and sent in a request to get access to my account. Two weeks, no response. So I sent in another message. This time I got a message telling me I should make sure I’m not using my gmail address for my non-gmail login. I wish I had thought of that.
I pretty much let it go and forgot about it, figuring Google doesn’t want my business (which is perfectly reasonable; I’m generating almost no revenue).
Then last week I get an email from Google titled “Tips and Information on how to get the most out of AdSense”:
We’ve noticed that you’re not showing contextually targeted Google ads on your pages through the AdSense program at this time. We’re following up to see if we can help you to get started again or to maximize your site’s potential with AdSense.
Yup. Excellent. How about letting me log in?
If I try to log in now I get:
Welcome! You’re signed in to Google Accounts under the email xxxxxxx@excite.com and your Google Account password, but this is different from your AdSense account email and/or password. If you’re an AdSense publisher, try signing in using your AdSense email and password. Or, sign up for AdSense.
Same if I try my gmail account.
I think this is the same problem being discussed over on search engine watch.
I just noticed John Battelle’s favicon.ico (the little website icon you see in the browser address bar) is very similar to mine - a close crop of his eye with glasses. Was it always like that? It’s not the world’s most original idea, but I’m surprised the two are so similar. Perhaps I unconsciously copied him.
Tivo has some great things going for it. The basic functionality is very useful, and it’s simple enough that even my wife will use it. Most of my TV viewing is through Tivo.
However, it feels like a completely dead product. It really hasn’t changed or added any new functionality in 5 years. It’s absolutely ridiculous that I have to buy one of the few approved USB devices to get ethernet connectivity. It’s almost 2006 for god’s sakes. My cell phone has better net access than my Tivo.
What I’d like is the ability to have all my media (photos, music, movies, and TV) play on my TV regardless of what computer they’re stored on. I’d like access to email. I want a Web browser. I want a Web cam. I want Skype Instant Messenger. I want to be able to check out IMDB on the upcoming movies.
I want do download movies, store them on my drive, and view them when I want. I want to get rid of all the physical media, all the CDs and DVDs littering my house.
I want to be able to messenger my family such that if they’re watching TV they can get a little icon of me beeping at them, and push a little picture-in-picture window open on the TV where I can talk to them, they can see me, I can see them.
I want a voice interface so I can say the music I want to listen to instead of pecking away at the miserable on-screen keyboard.
It should all be there on my TV. The point is that the TV is there in the family room, easily accessible, and used by all the family members.
This stuff is all doable. In fact, I don’t think any of it is really all that complicated. All it takes is a small, attractive, quiet computer by the TV, and some good old geek time.
Problem is I don’t really have the geek time to hobby this. A professional geek should be doing this for me. Tivo should be doing it for me. But somehow they’re happy with the feature set they had 5 years ago.
And yes, I realize music and photos can be accessed via Tivo today, but not through my Tivo, because I haven’t bought the silly approved USB dongle, because I never have the list of compatible devices with me when I’m thinking of buying it, and because I refuse on moral grounds to deal with such ridiculous nonesense as requiring a handful of approved devices for net access in 2006.
So anyway, somebody build my geek box for me.
This fatwallet thread on Sennheiser headphones has some excellent information on headphones. It also points to the MAD Winamp plugin project as a way to get significantly better MP3 decoding quality. I just tried it, and it does provide amazingly better quality. It’s very easy to setup. If you use winamp, go grab this right now and give it a try.
I asked a few post ago why Java is still slow despite the papers claiming technically it should be as fast or faster than C. Here is a page that claims to explain why, and why it will remain so. I can’t say I’m smart enough in these topics to know who is right, but I know what I see - Java is still slow.
Update: And here is James Gosling commenting on the same thread, basically saying Java is now as fast as C, faster than GCC. Hmm. Would love to believe that. Perhaps I just need to add “-server” to my optimizations and suddenly I’ll get a 5x performance improvement. Hmm.
I’m looking to buy a new TV. My research has mainly involved browsing the TV section at the local Costco, and of course scouring the Web for reviews.
[Update] I ended up buying the Sharp 65DR650 from Costco. It’s a monster - really a nice big screen. I’ve been largely happy with it. Not as bright as an LCD or plasma, but a beautiful HD picture. My dad bought an Akai and had the lamp blow out after 1 1/2 years, so it looks like lamps burning out after warranty are par for the course. Overall, I’m happy with the Sharp, no problems so far.
A couple of friends have the Samsung 56″ DLP. They all like it, although more than half have had to have someone come out and repair it. My own browsing of the aisles led me to believe that LCDs are the best looking displays, followed by plasmas, followed by DLPs. Costco has some nice plasmas that are comparable in price to the DLPs, but I’ve been scared off by the rumor that plasmas quickly lose their luster and picture quality.
Anyway, Costco has a $500 off deal going on for the Sharp 65″ DLP 65DR650, ending up at $2500 including shipping. That seems pretty good to me, given what I’ve heard of large TVs’ reliability issues and Costco’s excellent return policy. I looked for reviews everywhere with no luck. Here’s what I’ve been able to find:
http://www.hometheatermag.com/rearprojectiontvs/1005sharp/
http://forum.ecoustics.com/bbs/messages/2/143579.html
The professional review makes it seem pretty good, so I think I’m going to go for it. I can always return it if it doesn’t work out. Before I do, any words of advice? Anyone out there have this thing?
UPDATE: Fatwallet thread on this deal. According to one poster,
Consumer Reports rated the 56″ Sharp as excellent HD picture quality, very good DVD picture quality, fair s-video picture, and fair non-hd picture.
From someone who bought the TV:
TV looks good, I am pleased, more so than I expected. The monster screen is really astounding to look at. I’d rate the picture quality about similar to the reviews noted earlier (out of 10)
SD TV - Fair 6
DVD - Very Good 7-8
HD TV - Very Good 7-8I have yet to run a game system through it, so I can’t comment on that. Not quite as good picture quality as my Sony Grand Wega LCD-RP, but the screen size and price make me happier I have it instead of my Sony which recently broke after 2 months (thanks to the Costco return policy, another reason this is a good deal in my eyes!)
Another TV stand which appears to work for this TV (see measurements) can be found on the costco website here, let me know what you all think? While it sits on the ground just fine, it really should be about 2 feet above ground for ideal viewing so consider that a stand would be recommended when buying this TV.
The contrast ratio IS low compared to other DLP sets (as mentioned earlier). I only looked briefly and saw one DLP set with 2000:1 and another with 10000:1, I’m no expert so do your homework and determine if its important enough for you. Hope this helps!
Thread from AVS Forum. One guy who has it says:
I have a 65dr650 and think it is great. I have had it for about a month now. My only complaint is the codes for the remote, to switch inputs it has 1 button for every 2 inputs. Or 1 button to scroll thru all inputs. Doesn’t work well when programming a universal remote. Other than that TV is very good for a good price.
Forget 5 times, you should be getting paid 300 times that other guy. From the Wall Street Journal, via Kedrosky:
One top-notch engineer is worth “300 times or more than the average,” explains Alan Eustace, a Google vice president of engineering. He says he would rather lose an entire incoming class of engineering graduates than one exceptional technologist. Many Google services, such as Gmail and Google News, were started by a single person, he says.
I keep running across pieces like this DeveloperWorks article called Java theory and practice: Urban performance legends revisited, discussing the performance benefits of Java - that it is in fact faster than C or C++.
The article makes some convincing arguments. In fact most of the arguments I hear are convincing. However, performance of real-world java apps still leaves a lot to be desired, and certainly is leagues behind C/C++ apps.
I’ll give you an example. I’ve personally been involved in two projects that essentially involve creating a Web proxy that does various fancy things. One version in Java, the other in C. The Java version tops out at maybe 200 simultaneous requests per second, while the C version is somewhere above 1000/sec. The Java version is actually a second generation, optimized rewrite of an earlier Java version that brought about significant performance improvements. Still, it lags far behind the C version.
You can try this yourself. Grab Axis and gSOAP. Write a simple service in each. Now throw load at them. Lots of load. You’ll see the same thing: gSOAP will be many times faster than Axis and handle much more simultaneous load.
Perhaps Java is very fast but people tend to write slow, inefficient programs with it? I have a theory that the fact that it’s easier to write code in Java than C leads people to write more code than they would in C to do the same function, which ends up causing bloat and slowness.
I don’t have a religious axe to grind here - I’d be very happy if Java was in fact very fast. However, pretty much everything I see in practice points to Java being much slower than C/C++. What’s your experience?
Perhaps this is meant to be in jest, but it’s an awful way to argue evolution versus intelligent design. The basic argument appears to be that “No Intelligent Designer — God or otherwise — would design a [human] that is this ridiculous.” The article points out various supposed flaws with the design of humans.
Two counter-points. First, intelligent design does not argue that the creations have to be perfect. It simply argues that designs of sufficient sophistication must have been produced by an intelligent designer. If you’ve worked in software you know very well that plenty of very intelligent designers have created plenty of extremely flawed systems. Second, the supposed flaws listed are not real flaws. The scrotum, for example, seems an example of excellent design. Instead of building a complicated design to cool just one part of the body, simply distance that part from the rest of the body.
There’s plenty of evidence for evolution and against intelligent design. Let’s not give the IDers something to shoot down by making flawed arguments.
Interesting speculation about Google’s use for the dark fiber it’s buying:
http://www.pbs.org/cringely/pulpit/pulpit20051117.html.
Cringely got it wrong. I have hard evidence that Google is actually working with an alien species (their interest in NASA is simply to mask their secret communications). The “shipping containers” Cringely mentions do not actually contain computers; in fact, they’re filled with ALIEN BRAIN MATTER. The dark fiber forms the elongated alien appendages and the central nervous system. GoogleBase, of course, will be the main alien base, as in “all your bases are belong to us”. Google is finally revealing what I’ve known for years: AI is not Artificial Intelligence - it’s Alien Intelligence… They’re amongst us… they’re everywhere… I … garble garble garble…
I was reading Philip Greenspun’s blog and ran across this gem:
Managers of software development projects tend to be so incompetent and lacking in information that they can’t recognize and reward the strong contributors (this results in the best programmers getting paid only 20-30 percent more than the mediocre ones (compared to a 500 percent ratio in most areas of law, for example)).
500 percent? I didn’t realize there was already a blueprint for such significant difference in compensation. Law is comparable to software engineering in many ways, so perhaps we can bring the compensation methodology over too.
Actually, law typically has a much larger “sales” oriented aspect - people who make partner bring in business. So perhaps it’s not so comparable.
I have 76 feeds I read regularly (as in daily or so). Of those, I invariable hit Kedrosky’s first. It’s not alphabetically at the top, so it’s actually indicative of what I like reading.
I’ve been trying to figure out why I gravitate to Kedrosky first. For one thing, I’ve met him, so I can put a face to the words. But I’ve met plenty of the other bloggers I read too.
I think he’s got the right ingredients:
I look at my own blog, and I’m missing most of these ingredients. Perhaps Paul has a more interesting job than me. More likely, he’s a more interesting person than me.
Actually, my job is pretty interesting, but most of the juicy stuff I can’t blog about. Perhaps another difference between having a regular job and a VC job.
What do you like reading? Or, more precisely, what do you read frequently? Have you picked out any patterns or characteristics in blogs you read most frequently?
If you look up cheap bastard in the dictionary, you’ll find a picture of me.
That is, my methodology for buying computer equipment is to aim for the “sweet spot”, which to me means the cheapest technology that’ll do what I need. The thinking being that today’s top of the line is 6 months later’s “sweet spot”, and I’m willing to live with 6 month old technology.
Which brings me to the laptop I’m writing this on. A couple of months ago I wanted to buy a personal laptop, having been unable to convince my wife to part with hers. I scoured the net for deals, almost going for a Dell. But then I ran across this deal on a decent laptop for $450 after rebate.
It was too good to resist; 6 pound laptop for $450, with the next contender in the same weight class coming in at well over $600. I bought it.
It’s really quite a nice laptop. An Acer 3002LCI, with 15″ XGA display, 40G hard drive, built in 802.11g. Light. Large and wide, resembling the powerbook. I got lucky and got one of the “upgraded” ones, which means a better processor (AMD 3000+) and DVD writer instead of reader. All of that for $450 is nice.
The downsides: only 256M memory, and atrocious battery life (as in 30mins).
The laptop itself feels solid - more solid than most of the Dells I’m used to, not as solid as the Compaq I have from work. The keyboard is good, display is good, everything is pretty much good. I haven’t done any benchmarks, but it feels very fast, faster then my work Compaq which is a pentium 1.6 mobile, I think.
Now, if I were to add in the cost of the extra memory I really should buy to make this thing sing and the cost of a decent battery, it’ll add up to over $600, but let’s ignore that for now.
Anyway, the main point of this post is, Acer looks like it produces a pretty solid product. I’d never touched it before I bought this thing, but so far I’m pretty happy. If you see a deal don’t be put off by the non-brand-name. I recommend the Acer Aspire 3002 as a nice light laptop so long as short battery life is not an issue for you.