Development links for today

Coworker Mat Schaffer with an experiment with Maven and JRuby

Dan Moore!: Lesson learned: copying bytes from an OutputStream to an InputStream in Weblogic 8

Software is hard: Firecookie (thanks Jeff)

Mailing list archives: [HttpClient] Unsigned Certificates & EasySSLProtocolSocketFactory

Classic project management graphic: What The Customer Really Wanted

Dare Obasanjo: Fixing the HTTP Polling Problem: Some Thoughts on FriendFeed’s Simple Update Protocol (SUP)

Apple Support: Installing Python IDLE

Is Python More Fun Than Java?

I’m a long time Java developer who has been digging into Python these past couple months. Besides the fact that I expect it to be part of my regular tool belt – it is more fun! Brian M. Clapper shares some good reasons why in his piece “Why is Python more fun than Java?”.

In a similar vein, a poster to Hacker News asks What does Ruby have that Python doesn’t?

“Measure, don’t guess”

java.net: Java Performance Tuning: A Conversation With Java Champion Kirk Pepperdine:

While I’m all for performance planning, I’m dead set against premature optimizations. When is a plan a plan, and when is it premature? I guess it’s a little like the difference between art and porn: You’ll know it when you see it.

Spring 2.5 Brings New Features to Spring MVC

InfoQ: Spring 2.5: New Features in Spring MVC: As you can see there is minimal XML, no URI paths embedded in annotations, no explicit view names, the request handling method consists of a single line, the method signature matches precisely what we need, and additional request handling methods can be easily added. All of these benefits come without the need for a base class and without XML – at least none directly attributable to this controller.

Eight web development and programming links for today

Ted Dziuba – I’m Going To Scale My Foot Up Your Ass (via Comcaster Mr. Mat Schaffer): “If You Haven’t Discussed Capacity Planning, You Can’t Discuss Scalability” (Bingo!)

High Scalability: Flickr Architecture

Gustavo Duarte – Lucky to be a Programmer: “This analytical side is what most people associate with programming. It does make it interesting, like a complex strategy game. But in most software the primary challenge is communication: with fellow programmers via code and with users via interfaces. By and large, writing code is more essay than puzzle. It is shaping your ideas and schemes into a coherent body; it is seeking clarity, simplicity and conciseness. Both code and interfaces abound with the simple joy of creation.”

TechCrunchIT: : “Geeks and enthusiasts wearing WordPress t-shirts, using laptops covered in Data Portability, Microformats and RSS stickers lined up enthusiastically on Friday to purchase a device that is completely proprietary, controlled and wrapped in DRM.”

Shelley Powers: Painting the Web now DRM Free and on Kindle (Congrats!)

Spartan Programming: SendAnEmail case study (print it out!)

Official Google Blog: Our Googley advice to students: Major in learning

BitWorking: Python isn’t just Java without the compile

Google releases internal development software open source

Protocol Buffers are “a way of encoding structured data in an efficient yet extensible format. Google uses Protocol Buffers for almost all of its internal RPC protocols and file formats”. This will start some interesting conversations around work, as it should. XML doesn’t need to always be the choice when building server to server side data interchange.

For JavaScript developers, note that Google has not released a library, as this appears to be used, within Google, for server to server side, not server to client. In fact, according to Kenton Varda in the Google Group discussion shares that some internal projects serialize or parse Protocol Buffer messages in JSON format.

Google Open Source Blog: Google’s Data Interchange Format

Matt Cutts: Cool: Google Releases Protocol Buffers Into the Wild: To understand the other nice thing about Protocol Buffers, bear in mind that in the Google cluster architecture, there are many different types of servers that talk to each other. Question: how do you upgrade servers when you need to pass new information between them? It’s a fool’s game to try to upgrade both servers at the same time. So you need a communication protocol that is not only backward compatible (a new server can speak the old protocol) but also forward compatible (an old server can speak the new protocol). Protocol Buffers provide that because new additions to the protocol can be ignored by the old server.

Joe Gregorio: Protocol Buffers: They’re one of the first things you learn about when you start at Google and they’re used everywhere.

And a related Hacker News discussion.

ratproxy is “a semi-automated, largely passive web application security audit tool, optimized for an accurate and sensitive detection, and automatic annotation, of potential problems and security-relevant design patterns based on the observation of existing, user-initiated traffic in complex web 2.0 environments.”

It can be very difficult auditing XSS security issues and it is always good to find a tool that is well used and trusted.

Google Online Security Blog: Meet ratproxy, our passive web security assessment tool: We decided to make this tool freely available as open source because we feel it will be a valuable contribution to the information security community, helping advance the community’s understanding of security challenges associated with contemporary web technologies.

Beyond the Browser

Arpit Mathur, our Flash wiz at CIM, has posted a nifty summary of different approaches being taken to extend the browser’s capabilities to the desktop.

To the list, let me add a few more desktop development platforms, that are network leveraging:

Eclipse RCP

JavaFX

wxWidgets with Python

Firefox, irregardless of Prism, is already a capable sometimes-connected desktop application environment (witness Songbird – an open source project I might dig into, because I am just unhappy with the state of current mp3 players). However, Prism sure does seem interesting and worth keeping an eye on.

And while Arpit did cover the Flash side of things (Air), I love contemplating Flex+Python or Flex+Java approaches. Bruce Eckel’s article in Artima on the subject maps to the way I think. There is a lot of re-use and maintenance problems you solve when you layer an application that way.

An earlier project I worked on was a communications application that utilized a Flash UI hosted in a C# application. It worked intriguingly well.