Archive for the 'Open Source' Category

Books, Open Source, RIA

More on RIAs and a Silverlight book

With all my talk about Flex and AIR the other day, I’m surprised no one pinged me — hard — about other RIA options. Like OpenLaszlo, Silverlight, or even JavaFX.

Admittedly, I am curious about OpenLaszlo, especially since they started compiling both to Ajax and Flash. But I’ve never given them a fair shake. I’m not sure why, except a sneaking suspicion that they wouldn’t be around for long. That hasn’t proven to be the case thus, although we haven’t yet seen the shake-out from the open-sourcing of the Flex SDK yet. But again, that could just be me being unfair.

I’m waiting to see what happens with JavaFX. The client-side Java experience has been improving in recent years, and I expect JavaFX to help quite a bit. Once I sort out just what the hell it is. :) There’s a lot that fits under the JavaFX umbrella. I think the consumer JRE will quietly make people’s Java experience better, and I do have high hopes for JavaFX Script making client GUI development easier. But they’re nervous high hopes, like it won’t take long for the bottom to fall out.

cover of Silverlight bookSilverlight… Again, haven’t given a fair shake because I don’t develop in a Microsoft environment. The runtime may eventually become ubiquitous on Windows, but … well, I’ll just wait this one out and see. It’s like Mono: I’d like to look closer at it but just plain don’t have the time and am not motivated to make the time right now.

That said, I have every intention of reading a new e-book on Silverlight 1.1. O’Reilly’s “short cut” on LINQ was a great introduction, giving me a good feel for what can be done with LINQ. I hope the Silverlight book do be the same.

Java, Open Source

Darkstar and Wonderland

As soon as the Erlang book was released, I started to dig into Erlang and was enjoying stretching my brain, but I kept running into some of what Tim Bray has been going through. (That’s a really interesting thread, by the way. I’m looking forward to seeing what happens when he can run all that code on a Sun T2.) And all along I really wanted to be working more with Scala, especially the lift framework. They’re doing some really cool stuff, and I’d like to be contributing. But my time is limited, and what have I been doing with it?

Raising children, mostly.

But when I get a chance to do some coding, I’ve been diving into Darkstar and Wonderland. Darkstar is game server written in Java and recently open sourced by Sun. It’s essentially an app server for networked, multiplayer games, dealing with all the plumbing so you don’t have to. Wonderland is a multi-user 3D virtual environment that builds on top of Darkstar. Sun has used it to build MPK20, a virtual workplace that you’ll see in all the demos.

What have I learned playing around with this stuff?

  • My math skills are rusty. Java 3D programming uses math that I haven’t touched in about 20 years. I could use a refresher.
  • All that interesting work being done making Swing programming easier and more tolerable with JRuby? Yeah, Java 3D could use some of that. I might just have to do something about it unless someone beats me to it.
  • I’m enjoying writing Java. I’ve missed that. My day-to-day work with Java is nothing but frustration. This is different. It actually makes sense to use Java for a high-performance, distributed game server. And it’s fun! 3D virtual worlds? How could it not be fun?

I’ll write more as I explore further.

Java, Open Source, Programming, RIA

AIR Camp

Some years ago, right about the same time that I started to move into Java, it became clear that Macromedia was trying more aggressively to woo Java developers. ColdFusion was rewritten in Java, so it’s now an app running inside a servlet container / app server, allowing ColdFusion developers to tap into the rest of the Java platform. With the introduction of Flash remoting, they positioned Flash more clearly as a development platform for rich internet applications. They released Flex, making Flash RIA development a hell of a lot easier for programmers unfamiliar with or intimidated by a Flash toolset aimed squarely at visual designers. No more confusing timelines! Just sweet, sweet XML. ;-)

Pretty sure JRun is dead, though. No complaints here.

Since the acquisition of Macromedia, Adobe has been keeping up the pace, with new releases of ColdFusion and Flex. And now AIR, which I’ll get to in a bit.

I don’t know how successful the ColdFusion rewrite has been in getting Java developers to start using it. I’m not suggesting that my personal experience is any guide, but I know more CF developers who have been introduced to Java and to object-oriented programming in the last few years than I know Java developers who have discovered ColdFusion. I did give it honest consideration at work a few years back but was turned off by its being an expensive, closed-source platform. Remember, my background is largely in the open source world.

Because of that background and bias, I was more than a little bit pleased to see Adobe open source the Flex SDK. As I wrote at the time, Flex’s being open source meant that I would consider recommending it to my employer. This is still true.

My employer is in the process of rewriting their ERP from a Win32 client-server desktop app to a Java EE web application. A decidedly nontrivial undertaking, especially considering that the developers have little background or understanding of web apps. This lack of experience and skills makes it difficult to create a compelling HTML/CSS/JavaScript replacement for a desktop app. Browser environments are limiting. It is possible to bend HTML to your will, and well-implemented Ajax helps, but to make it, well, not suck requires skill. To make it really kick ass requires serious skill. If you’re lucky and well-funded, you can hire enough people with that skill to pull it off. If you’re a state agency… well, good luck.

I remain hopeful, though. I just set my standards absurdly high.

I should insert a disclaimer here. I am by no means speaking for my employer. I’m just exploring the type of situation when I think a Flash-based RIA would make sense.

It is no accident that Adobe has been pushing Flash for RIAs. Flash apps look cool. They can suck, too, sure. But with a toolset like Flex, creating something that at least looks and acts more than halfway decent is a hell of a lot easier than creating an equivalent UI with HTML/CSS/JavaScript.

I’m not trying to sell Flex as a panacea. I know enough not to believe that a technology will solve development woes. But I have played around with Flex enough that if I’m writing a network-aware back-office app, one that’s likely to do well as an RIA, I’m very likely to use Flex because it will be easier to create better UIs. (Insert warnings about forking the web here. Except that I’m talking about RIAs here, not crappy Ajax apps.

Enter AIR.

AIR is something new from Adobe — the second beta is being announced at this week’s Adobe MAX — for creating Flash-based desktop applications. As desktop apps, they have access to operating system resources that browser-based apps don’t. The AIR installer is damn easy to work with. But the magic behind the acronym (Adobe Integrated Runtime) is that you can build the app with either HTML / JavaScript or Flash / Flex. Your JavaScript code can use ActionScript APIs to access the desktop goodness or Flash components on the page, and vice versa.

Color me impressed.

So when I saw that Adobe was going on a cross-country bus tour this summer to evangelize AIR, I signed right up to learn more. Last week the on AIR bus tour came to Minneapolis. The venue was a great choice: the old Varsity theater in Dinkytown, which I honestly didn’t think was still used as often as it appears to be. Comfortable seating. Catering by the Loring. Toss in an open bar, and we were prepped for one of the finest vendor events I’ve attended.

Since I’ve been watching video from the tour all summer, there weren’t a whole lot of tutorial surprises awaiting me. But it was about what you’d expect: Mike Chambers walked through building an AIR app with Flex, Kevn Hoyt showing us an app built with HTML & JavaScript. Show a bit more whiz-bang techie goodness for the next couple hours, and we all leave happy, planning blog entries like this one.

Actually, I planned a better blog entry than this one, but I want more of a chance to play with both Flex and AIR before I write that.

I mentioned earlier that I don’t know any Java developers who have been drawn into the ColdFusion world. Likewise, I don’t know many Java developers who have been doing anything with Flex. It could just be that I don’t hang out with enough Java developers. It seems, though, that the scope is expanding, and Adobe’s setting their sights a bit wider than Java. Good news all around.

Books, Design, Open Source

Blender Book

There’s a Blender book! It’s published by No Starch, no less. Good people.

I haven’t done much with Blender, but I’ve been slowly moving toward doing so — more on that later, hopefully — so I am excited to see the book.

Blender is professional grade open source 3D content creation software. Perhaps you’ve seen Elephant’s Dream? Done with Blender. (Haven’t seen it? Do.) And the mark of professional grade software? A steep learning curve. :-) I doubt very much that I’ll ever have reason to become expert, but should I myself thrashing around in Blender not knowing what the heck I’m doing, the book will be welcome.

Open Source, Security

Two Top Tens

I spoke about the latest OWASP Top Ten at my local OWASP chapter yesterday. To be frank, I wasn’t entirely sure why. This is by no means the first time I’ve given a talk about or framed by the Top Ten — indeed, when I was supposed to be giving this talk at the April chapter meeting, I was instead doing so elsewhere. But I figured that if any group of people is going to keep on top of the OWASP Top Ten, you’d think it would be people who go out of their way to attend a chapter meeting. Sure enough, everyone was familiar with the basic document but not necessarily the 2007 update. So for better or worse, especially since I had only a half hour, I just did a quick diff and highlighted the important changes. It was perhaps too casual an approach, but that’s the mood I was in. If you want more detailed discussion, I can certainly provide that at great length.

Then Gunnar Peterson gave a rapid-fire version of the talk he gave in Helsinki on his top ten list for Web services security issues. Amusingly, in Helsinki he was also preceded by someone talking about the OWASP Top Ten. Gunnar possesses an impressive ability too make the much-maligned WS-* security standards seem reasonable. More than reasonable: self-evident. Always a pleasure, Gunnar, thank you.

Almost inevitably, discussion turned to the question of what can be done to “make” developers write more secure software. This always sets me on edge, largely because of the subtext that software security is just a developer problem. There’s no question that developers need to learn more about writing secure software, but it is also true that security is too infrequently considered as part of the requirements or design phase. This has been much on my mind lately, since in the absence of security requirements I’m being forced to write them myself, so expect more from me on this soon.

Java, Open Source

Eclipse Mylar

Coté pointed to Mylar a couple weeks ago and I gave it a shot. So far, so good.

Mylar is a sort of overlay on the Eclipse UI that lets you focus on and manage tasks. This is something I’ve struggled with for what seems like forever: how to manage my to-do list without breaking my workflow. Basecamp was never a good fit. Remember the Milk is a great little web app, but after a few months I found myself going there less and less, especially as I used Bugzilla more and more to drive my daily development work. Over the years I keep coming back to paper, but I kept feeling like bigger-picture to-do items got lost. For some reason I never became a GTD geek.

Mylar lets you manage personal tasks as well as those in a bug-tracking system. If I used it for nothing else, it would be the really nice face that it puts on Bugzilla, whose default web interface is pretty much crap. While working in Eclipse, all the bugs assigned to me are right there, accessible at a glance. I’m notified of any incoming bugs without having to switch context. This is what IDEs are for.

But the genius in Mylar is how it focuses the UI on the task at hand, hiding from view everything but the files you’re working on. If you’re editing a Java file, it shows only the relevant methods. Just not having to scroll up and down all the time looking for a particular file saves time. Or if it doesn’t save time, it saves frustration. Best of all, Mylar keeps track of what you are working on for a given task, so when you come back to a task, all the context is right there and you can focus in quickly. This context can even be committed back as an attachment to the bug-tracking system, to be shared with others. Cool! It can also support interaction with your version control system, but I haven’t played with that yet.
Mylar is not nearly so great for JSP as Java, but that could be because I’m using the MyEclipse JSP editor instead of the Web Tools Platform‘s. I’ll figure that out when it becomes painful enough.

Each feature in Mylar is small, but together they add up to a compelling overall experience. Since I’m already a to-do list kind of guy, it wasn’t that hard to make the transition to task-driven development, so I felt at home in Mylar right away. Try it!

JavaScript, Open Source

Firebug 1.0 beta

Not enough good things can be said about this. Joe Hewitt has released a public beta of Firebug 1.0 and announced that it will continue to be open source. Any donations he gets are well deserved. Firebug is amazing, and 1.0 just blows me away. It is an invaluable part of a web developer’s toolkit.

The network monitoring is a nice enough addition, because who doesn’t want to know more about how long files/pages take to download? But it goes one step further.

Firebug network monitor with image thumbnail

Hover over one of the lines to get not just the fully qualified URL for the request, but if the request is for an image, Firebug also displays any images requested, scaling them to thumbnails if necessary. A small touch that really makes a difference.

JavaScript debugging is better than ever. Conditional breakpoints (“break only if the variable has this value”), profiling… very nice indeed. HTML and CSS inspection and manipulation, Firebug Lite for using a Firebug console in browsers other thank Firefox… heaven.

I’m still putting it through its paces, but already the new version saved me a lot of time today during a big bug stomping session. Go get Firebug now.