A classic Raymond Chen quote. :-)

A classic Raymond Chen quote. 🙂

“I normally toss my garbage on the sidewalk in front of the pet store, and every morning, when they open up, somebody sweeps up the garbage and tosses it into the trash. But the pet store isn’t open on Sundays, so on Sundays, the garbage just sits there. How can I get the pet store to open on Sundays, too?”

I highly recommend his blog. Even the overly-technical posts are well-written.

http://blogs.msdn.com/b/oldnewthing/archive/2010/03/11/9976571.aspx

Firefox 7 and Chrome 13 let you prefix just about any URL with “view-source:” and see the raw bytes.

Firefox 7 and Chrome 13 let you prefix just about any URL with “view-source:” and see the raw bytes. It works for GIFs, PDFs and other binary assets.

For example:

view-source:http://www.adobe.com/pdf/pdfs/ISO32000-1PublicPatentLicense.pdf

Since PDF is a quasi-ASCII format, you can easily find interesting details like this embedded in the markup:

rpierce

Microsoft Word – XMPPublicPatentLicense[Final].docx

It doesn’t work in Safari 5.0 or IE 9 — they don’t recognize the “view-source:” prefix. Not sure about other browser versions…

Have you used ccache?

Have you used ccache? From the Samba project originally, it’s a tool that carefully intercepts calls to GCC and returns cache object files if applicable; otherwise it invokes GCC itself and caches the results. It’s awesome when you frequently clean + rebuild the same project with only minor changes in between (e.g. autobuilds)

I just learned about a similar tool that works with Microsoft Visual C++. The readme recommends creating a cl.bat and putting it on the path, so it’s not clear to me how it would integrate with the devenv.com or the MSVS IDE. Maybe py2exe to make an actual cl.exe?

https://github.com/frerich/clcache

Expert-level problems

Expert-level problems

I’ve been teaching myself a lot of new programming languages and/or APIs lately (C#, HTML5, Cocoa, Adobe AIR). Something I’ve been thinking about a lot is expert-level problems. These are technical problems you encounter that you can’t solve unless you’re an expert at a particular technology. For example, here are some that I’ve battled:

* dealing with Unicode in Perl

* managing the thread-context ClassLoader in Java

* working with two different malloc implementations in C++

* making a standards-based webpage look pixel-perfect in IE

Expert-level problems are the bane of someone coming up the learning curve in a new technology. The biggest issue is that beginners don’t know how deep the problem is. Maybe it’s a little problem that you’ll be able to solve with a little learning, or maybe it’s a problem where you can sink a week of work and get nowhere.

I believe there’s no solution except to become an expert (or hire an expert). And, in my opinion, you can’t become an expert unless you’ve got a tangible goal and strong motivation to reach that goal (i.e. a job). When you’re just dabbling with a technology, it’s not likely that you’ll become an expert because you won’t have the time or motivation to dig to the bottom of those expert-level problems.

I just learned Jetty 8 was released last Thursday.

I just learned Jetty 8 was released last Thursday. Jetty is a lightweight Java webserver backed by the Eclipse Foundation. But the search below indicates no release announcements at all. No blogs, no headlines, nothing. Even the main Jetty page at http://www.eclipse.org/jetty/downloads.php doesn’t mention it.

I only found out about it via a serendipitous search on Maven Central: http://search.maven.org/#search%7Cga%7C1%7Corg.eclipse.jetty

What’s going on? Was this an accidental release?

http://www.google.com/search?q=eclipse+jetty+8&tbs=,qdr:w

Greg Tracy posted an interesting analysis of his Google AppEngine expenses.

Greg Tracy posted an interesting analysis of his Google AppEngine expenses. What makes his analysis more fascinating than the others I’ve read is that he discusses it from the point of view of keeping alive a philanthropic app that will suddenly cost a lot more money. One hope he has is that Google will “[p]rovide better pricing structures for philanthropic and open source projects.” I hope so too. Or alternatively I’d be interested in seeing a proliferation of compatible-but-weaker platforms to support the FOSS low-end of the Google or Amazon platforms. I suspect that developers like Greg would accept a cheaper platform that scaled more poorly if porting was easy (and porting back was easy too, if a business model emerges).

Originally shared by Greg Tracy

My thoughts on the App Engine price hikes. It hits me worst on the projects that have the biggest impact in Madison.

http://www.gregtracy.com/app-engines-place-as-a-developer-playground

Today I’m learning about the HTML5 geolocation API. It looks very simple to use.

Today I’m learning about the HTML5 geolocation API. It looks very simple to use.

However, as a user I’m disappointed that the browsers have no controls for tweaking location. Firefox and Chrome both think I’m somewhere on the UW-Madison campus (incorrect). This is my desktop machine, so I understand that the auto-determined location will be worse than my GPS-enabled devices. But why don’t they let me override that location?

Chrome/Firefox plugin recommendations or other workarounds requested!

http://diveintohtml5.org/geolocation.html

http://diveintohtml5.org/geolocation.html

This LWN article from last month (I’m behind on my reading…) talks about techniques to reduce TCP latency by…

This LWN article from last month (I’m behind on my reading…) talks about techniques to reduce TCP latency by adjusting the size of send buffers on the fly so they’re just big enough to keep the hardware busy but not too bloated, which adds latency.

I couldn’t help noticing, though, that the problem is primarily one where bandwidth-optimized work causes problems for latency-sensitive work. This is probably naive, but couldn’t the kernel detect the low-bandwidth, low-latency sessions automatically by simply noticing that they often have no data to send? In contrast, sessions that always have more data to send probably could tolerate waiting a few extra milliseconds to send that data out. It’s like at the grocery store, letting the guy with a couple items go ahead of you and your full cart.

Does that make sense?

https://lwn.net/Articles/454390/

https://lwn.net/Articles/454390/