Pretty radio buttons and checkboxes
Philip Howard has a nice tutorial on creating pretty radio buttons and checkboxes using CSS and Javascript. Nice work Philip. Hat tip to CSS Beauty.
The Angular Mini-Book is a
guide to getting started with Angular. You'll learn how to develop a bare-bones application, test it, and
deploy it. Then you'll move on to adding Bootstrap, Angular Material, continuous integration, and authentication.
Spring Boot is a popular framework for building REST APIs. You'll learn how to integrate Angular with Spring Boot and use security best practices like HTTPS and a content security policy.
For book updates, follow @angular_book on Twitter.
The JHipster Mini-Book is a
guide to getting started with hip technologies today: Angular, Bootstrap, and Spring
Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.
This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.
For book updates, follow @jhipster-book on Twitter.
Philip Howard has a nice tutorial on creating pretty radio buttons and checkboxes using CSS and Javascript. Nice work Philip. Hat tip to CSS Beauty.
Whenever I talk to developers in the Java community about Rails, the first question out of their mouth is usually "But can it scale?" Today, David has written a nice post titled It's boring to scale with Ruby on Rails.
The one thing that I see time and time again is that Java developers don't seem to realize that some of the highest traffic sites on the net are using LAMP stacks similar to what Rails advocates. IMHO, I don't think "Rails can't scale" is a valid argument. In fact, I don't know if there's any argument or way to put down Rails anymore.
As a developer, my guess is the rates for programming in Ruby developer are less than for programming in Java (unless you're a Ruby Superstar of course), so that's one reason not to program in it. However, since Rails is one of those new bright and shiny things, chances are you might be able to get high rates for it. As far as Enterprise Adoption of Rails, unfortunately I think that's still pretty far on the horizon. I think the hardest part is convincing management that they'll be able to find developers to support it. Mind you, I didn't say good developers, just developers. Period. This is information I've gathered from talking to my Java developer friends.
Try convincing a Fortune 500 company to program in Rails vs. Struts and they'll probably choose Struts because there are thousands of Struts Developers. Is this a good decision on their part? I don't think so. I think it's more important to hire smart people that can learn a technology, rather than hiring those that know a technology. Of course, if someone knows a technology really well, there's probably no harm in hiring them.
I think Rails can become a real contender in the Enterprise if managers can be convinced that it'll be easy to maintain Rails application. Remember that most of software cost is maintenance. Because of this, the whole "it's super productive to develop with" doesn't matter so much - does it? Are Rails applications easy to maintain? My guess is yes, but how do you convince CTOs and CIOs? Another thing I think Rails needs for Enterprise Adoption is good tool support. Drag and Drop type of stuff. Why? Because management loves that stuff (because then they can develop apps) and it's a great sales tool. ASP.NET has been successful because of Visual Studio, not because of its ease-of-use and simple syntax.
Will I learn Rails and use it to develop applications? I certainly hope to, but it's hard enough convincing companies to use something other than Struts - so I don't know if I'll have much luck in selling Rails. The one cool thing about my new job at Virtuas is its an open source company, not just a Java open source company. This opens the doors for me to learn about Rails (and others) and compare them to Java Web Frameworks.
Update: Aaron Rustad has written an interesting article for DeveloperWorks that compares Rails to Struts+Hibernate: Ruby on Rails and J2EE: Is there room for both?
I somehow stumbled upon Koders.com this morning, where they have a cost-of-development based on LOC in the project's CVS repository. Apparently, AppFuse has cost around $78K to develop. Here are a few other project costs I discovered:
Are these costs accurate? Probably not, but it's still an interesting indicator.
Howard has a nice little trick for setting the default submit button on a form. Basically, you just put the default button first, and then use style="display: none" to hide it. For the most part, I haven't had any issues with putting the default submit button first (i.e. "Save"), but I have noticed an issue when developing wizards (b/c "« Previous" is likely to be first). Nice tip Howard.
As part of my trip to Norway last month, I had an opportunity to update many of the presentations I've delivered at JUG meetings and conferences. Of course, there's not a whole lot to these slides because I believe the real value is seeing them delivered.
The presentation on Test-Driven Development with Spring and Hibernate (a.k.a. AppFuse) will serve as the basis for my AppFuse Tutorial at OSCON. If you're planning on attending that tutorial and would like to see any enhancements, please let me know. All of these are downloadable in PDF format.
Enjoy!
NOTE: I updated this site to the latest code from Roller's CVS this morning, so please let me know if you see any issues.
For the most part, I haven't used JDK 5 on any of my recent projects. You can compile and run AppFuse with JDK 5, but it doesn't use any JDK 5 features. After doing a code review at Bouvet last week and seeing how much cleaner their code is with Generics, Varargs and the Enhanced for Loop, I think it's time to dig in. I don't know how soon we'll start, but I think it's time to start creating a branch for AppFuse 2.0 - which will use these features. For AppFuse 2.0, I'd like to go whole hog, bleeding-edge and use all the stuff that's out there to make developer's lives easier. This includes JSP 2.0, Annotations (especially for Hibernate and Spring, as well as Tapestry) and all the JDK 5 features that seem useful.
Since most developers won't be able to deploy on a JDK 5-compliant server for quite some time, we'll continue to maintain the 1.x branch as JDK 1.4-compliant. I expect to release AppFuse 1.8.1 later this week (with mostly bug fixes + latest releases of Hibernate/Spring) and 1.9 in the next month or so. From there, we'll likely do 1.9.x releases with bug fixes and do all the major upgrades (i.e. Tapestry 4.0.x) in the new branch. Working with new features in JDK 5 should be a lot of fun.
I'm hopeful that we can get rid of XDoclet and we may even give Maven 2 a run for its money. Last week in Norway, I found that most Java developers were using Maven on their projects and I also discovered that many of the core Maven 2 developers are getting paid to work on it full time. There were even claims that Maven 2 is going to be twice as fast as Ant - which definitely intrigues me.
Later: I just realized the hardest part of this migration is going to be replacing AppGen. It currenly uses XDoclet templates for all the class templates - and we'll need a new solution based on annotations. Oh well, it's kind of ugly anyway, but it'll likely be difficult to figure out a new solution. Hopefully we can create some sort of tool that involves easy-to-customize templates and a GUI to drive it all.
I think my PowerBook has died. It figures - the one week in my life where I need it all week, and it quits working. The symptoms started happening yesterday as I was sitting in DIA, getting ready to come to Norway. The powercord wasn't lighting up when I plugged it into an outlet at the airport. At first I figured it was the outlet, and switched between a few different outlets. None of them worked, and I thought to myself "I'm screwed." Then I wiggled the connection where it connects to my laptop - and it lit up! "Phew, that was a close one", I thought.
I ran down my battery on the flight to Newark, and then found an outlet to recharge on my layover. No light. I tried 3 more outlets. No light. At this point, I figured it was my powercord and wondered if I'd even be able to buy one in Norway. I looked desparately around the terminal for another PowerBook user - hoping to buy a powercord off someone. No luck.
Now that I'm in Oslo, getting my PowerBook working again is my top priority. I found an Apple Store and I'm typing this from a PowerBook they have on display. Typing is a little difficult because it's a Norwegian keyboard and all the special characters are not on the keys I'm used to. I talked to the guy at the service desk and he tried the simple solution: using a powercord from one of the PowerBooks on display. No dice. Even worse, it seems to have fried the cord of the one on display!
My PowerBook doesn't seem to be totally gone - the light is still fading in and out on the front of it. But I can't turn it off (even after removing the battery), so I don't know what to do. I'm going to try searching Apple's forums and calling their support line, but I doubt either will work. Right now, it looks like I'll have to buy a new laptop (with a Norwegian keyboard) and spend the next 2 days re-creating all the training materials for this week. No power, no hard drive. Damn.
Luckily, I did send some of my presentations (in PDF form) via e-mail, so I haven't lost everything. I knew I should have backed up the Keynote files on a remote site before I left!
And so my adventure begins...
Update: I figured out a solution. Using a charged battery still works - so the Apple Store is charging mine right now. I'm on my laptop, with one of their batteries, using their wireless. Unfortunately, the only way to charge my battery is in a PowerBook. The guys at Bouvet offered me a PC laptop, but I'm so used to presenting on the Mac - I don't want to lose that comfort level. So it looks like the solution is to buy a new PowerBook.
The good news is I get a 25% discount on the price when I leave the country (hopefully bringing it inline with US prices), but the bad news is it has a Norwegian keyboard. I can remap the keys, so that's not a big deal (since I don't look at them anyway). So the question is do I go whole hog and get the 1.67 GHz 17" with 2 GB RAM - or do I get a 12" and give it to Julie when I get back? The problem with buying the "whole hog" is I'm afraid the dual G4 cores will be released in early June, and I'll be stuck. The problem with buying a 12" and giving it to Julie is she really doesn't want one and will complain we can't afford it (she's right too).
If I bought the 17", I I could try selling it on eBay right when I get back, and hopefully get it sold before the new PowerBooks are announced. If they're not announced - oh well, I got a new laptop (which I need, but not really). What would you do if you were in my situation?
Update 2: Right after posting the update above, the guy came over to me and we talked about 17" vs. 12" and RAM prices, etc. They close in 10 minutes, I chose the 17" with 1 GB of RAM (1 chip). It's something like 27,000 kroners. Yikes!
I'm pleased to announce that I'll be speaking at the Colorado Software Summit in October. I'll be doing a presentation on Spring and one on Comparing Web Frameworks. The abstracts are on my very own speaker page. I've never been to this conference, so I'm definitely looking forward to it - especially since it's only an hour away from my house. The only downside to the conference (for speakers) is you have to deliver each presentation 3 times. Of course, this is great if you're an attendee. Now I just need to figure out a way to get SourceBeat to sponsor my condo for the week.
I originally did my Web Frameworks Comparison (PDF) last year at ApacheCon. I'm looking to revamp it this year - so please let me know if have any suggestions for improvements.
Like a few others, I went and saw the Hitchhiker's Guide to the Galaxy this weekend. I took my parents (who were in town for a brief visit) and none of us had read the book or knew anything about it (except it's a cult classic). I've read a lot of criticisms about the movie today on blogs, but most seem to be related to the book vs. movie thing. IMO, the movie is rarely - if ever - going to be as good as the book.
We all enjoyed the movie and I laughed my ass off throughout. I thought the characters were great and the special effects were incredible. I'd see it again w/o reservations. However, I'm easy to please when it comes to movies - so you might want to take my opinion with a grain of salt.
For the past few weeks, I've been developing an application using Struts, Spring, Hibernate and the DWR project for my XmlHttpRequest framework. As you might remember, I used JSON-RPC for Ajax stuff on my last project. I found DWR to be much more full-featured and easier to use. This post is meant to capture some issues I encountered so others won't have to jump the hurdles that I did. For those of you that get bored quickly, here's a movie (QuickTime) of the app's Ajax features.
I've been using version 0.4 of DWR, and I haven't had a chance to try out version 0.5. When I first started using it, I ran into a ThreadDeath problem that was easily resolved by changing a log.debug message to System.out.println. I tried to reproduce this issue yesterday and couldn't, so who knows what that was all about. As far as configuring DWR in your webapp, that's pretty easy to do, and well documented. See the project's documentation or this Spring MVC HowTo.
Here are a few things I remember from my development experience.
All in all, using DWR was a great experience and I definitely plan to use it more in my projects. The client loves the app - especially since it's wicked fast and seems to work like a desktop app.