Avoiding too many classes in your HTML/CSS
Avoiding Classitis: A nice tutorial on reducing the amount of classes in your code for easier site maintenance. 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.
Avoiding Classitis: A nice tutorial on reducing the amount of classes in your code for easier site maintenance. Hat tip to CSS Beauty.
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.
Norway has to be one of the coolest places on Earth. I've been here for a week now, and I'm
definitely impressed. I didn't know what to expect when I left the U.S. - mostly because my
last trip to a non-English speaking country was to Russia in the mid-90s. When I went to Russia,
I thought it'd be a lot like the U.S. What I found was a beautiful
country that was struggling to survive. I wasn't expecting a whole lot from Norway.
I'd heard it
was modern, but I wasn't going to get my hopes up. When my laptop died on the way
over, I thought I was in for it. I figured they probably didn't sell PowerBook cords over here, so
I was screwed. Luckily, I was wrong. Unfortunately, I had to buy a whole new laptop - but it
has been quite nice using a faster machine (1.67 MHz / 1.5 GB RAM) this week, with Tiger and all that jazz.
This week has definitely been tiring. I've given a fair amount of presentations in my life, and
even done a few week-long training course. However, I've never talked as much as I did this week.
I did a total of 7 sessions on Spring this week, at 3 different companies and 2 different JUGs.
It was a lot of work, but it was also fun to meet so many enthusiastic Java Developers. Preaching the Spring gospel is pretty easy since it's
such a kick-ass framework.
So what about Norway? It's very modern. In many ways, it's more modern than the U.S. It seems
cleaner, the people are nicer, and apparently there's little crime and/or poverty. This is readily
apparent from the moment you get off the plane. There's a "bullet train" from the modern/cool-looking
airport into downtown Oslo. It takes about 20 minutes, and then you're wisked away into a historic city
by the sea. I dig the train.
I've been staying at the Hotel Stefan in downtown Norway Oslo, which is about 5 blocks from the main courthouse
and lots of historic buildings. I'm a block away from a castle too! The funny thing is all the
westernization - there's a TGI Fridays down the street and Star Wars is playing at the local theater.
Taxis are very cool - most of which are new Mercedes. The only downside I've seen so far is the beer is pretty expensive ($10/each).
I've taken a few pictures and hope to take several more while sipping on seome cold ones with the
locals tonight. I'll try to upload the whole batch later this evening or tomorrow morning. My flight leaves
at 11 a.m. and I'll be back in the Denver tomorrow night. The 16-hour flight home is going to be rough - good thing it's in first class. ;-)
I mentioned last week that my next professional endeavor was going to provide more time to work on AppFuse and Spring Live. Now I guess I should explain what my next big adventure is.
As most of your know, I've been writing Spring Live for SourceBeat. When I signed up with them in March of last year, their grand vision for the company wasn't just to write books - it was to become a training and consulting provider as well. They wanted us as authors to eventually write training that we could deliver on-site, as well as at our facilities in Denver. As far as consulting, they wanted to provide consulting in the true sense of consulting - where we give advice and help people implement open-source in their environments. Not the code-monkey kind of consulting/contracting, but rather the big dollar kind of consulting.
Now they've got an outlet for that venture.
Not only have they gotten funding for developing training programs and providing open-source mentoring to CIOs and CTOs, they've got the connections to make it work. Furthermore, we think we've established a team that will make this a tremendous success. Many of us have been independent consultants for quite some time - so we all have a certain desire to make things happen for ourselves without having any loyalty to a particular company, or person in charge. We've all decided to give up our independent status to build a company together - because we think this venture can actually provide more freedom than independent consulting provides.
If we do it right, we plan on doing training and consulting for a week or two per month, and then working on driving the open source movement the rest of the time. All of us expect to dedicate more time to the books we're authoring, as well as contribute more to open source projects. We also plan on writing more articles and trying to help out the community more - to promote open-source tools and make them easier to use through good documentation.
At this point, you might be wondering who "We" is. As of this point in time, Matt Filios is heading up the show. He's the current CEO of SourceBeat, and it's his ideas that've made SourceBeat a unique and fun publisher to work for. Starting this new company has been in his "idea bank" for quite some time, so it's great to see his enthusiasm and energy in getting this thing off the ground. He has a lot of connections and excellent business sense to make this new company a sure success. It's great to have someone in charge that you trust and feel confident about.
Having a business leader makes good sense for a company, but you also need a technology leader. For that, Bill Dudney has stepped up to the plate and will try to keep us focused and make sure we're not goofing off all the time. Bill's role is as Vice President per se.
From there, we're establishing a number of "Practice Leaders" that are experts in a particular area, and can provide training and high-level consulting for particular technologies. I will focus on my core expertise as the Spring and Web Frameworks Practice Leader. We have also added Bruce Snyder and Jeff Genender with their in-depth knowledge and expertise in application servers and databases, and will continue to add Practice Leaders in a host of areas, including operating systems (Linux of course), databases, and other applications.
The new company's name is Virtuas, and our headquarters will be in downtown Denver. Our new office is only a few blocks from my last contract, so I'm pretty pumped that I can continue to ride my bike to work. The best part about this new job is it's not really a job. It's starting a company, pursuing a passion, and doing the stuff I normally do at night and on weekends. I won't need to switch gears anymore when I go to "work", but rather just learn, promote and teach the technologies I'm passionate about. How cool is that?!
Mike Stenhouse's CSS Framework seems like it might be a good candidate for inclusion in AppFuse. In his article about this framework, he basically says that there are 6 basic layouts that "cover most of the blogs out there and most of the corporate sites as well". He shows you how it's possible to use a single XHTML page, and use CSS to achieve all of these layouts w/o changing your HTML. This is huge IMO because you can accomplish all the different layouts w/o changing your markup. Very cool. Hat tip to CSS Beauty.
I updated my Web Framework Comparison presentation today. Rather than updating the graph that shows today's job availability, I did one that compares today to 6 months ago. Struts is still the clear winner (and growing). Spring is definitely growing. Tapestry has about the same amount of jobs (9 vs. 8). WebWork lost 10 opening (down to 4) and the demand for JSF skills has grown as well.
Is WebWork a dying framework? I've heard folks complain about its small community, and there still aren't any books is only one book about it. Is that a jab at Patrick, Jason and Kris - or a jab at Manning? I'm not sure. The good news is WebWork in Action and WebWork Live should both be out this summer.
My search criteria for all of these was "framework and java" from the front page on dice.com. I did filter a bunch out for WebWork b/c there's some product called "WebWorks" that folks want to hire for.
In my own experience, these numbers are not as accurate as you might think. Since I gave my original presentation, I've been contacted a number of times to work on projects. It's about even between Struts, Spring MVC, WebWork and JSF. I haven't had a single inquiry to do Tapestry development. The bad part about Struts jobs is there's so many of them, that rates are likely pretty low (i.e. 35-45/hour), whereas the others can get you upwards of 80-90/hour.
So what do these numbers mean? Do they mean you should tailor your learnings and skills to the most popular frameworks? In a sense, it's important to do so. If nothing else, Struts skills are import so you can migrate all the Struts applications to your favorite framework. However, I don't think these numbers are that important when choosing a framework to start your project with. I think the most important thing in choosing a framework is passion. Which one do you want to work with the most? It's likely that your productivity will be higher if you're enthusiastic about the framework, rather than bored with all the skills you've accumulated using it. Then again, if you're motivated by productivity more than enthusiasm - using your skills to crank out applications quickly is probably a good idea.
You might think that the number of skilled developers for framework X is important too. I don't think it is. I think the most important thing is to hire smart developers. A good developer can come up to speed on any framework in 2 weeks and be highly productive in 4 weeks. If not, the developer isn't that smart or the framework isn't that good.
Just for kicks, I did some searching for other web frameworks as well:
Now the question is - what kind of rates are these skills getting? I'd like to know what the average Rails and ASP .NET developers make. In Denver, Java developers seem to make between 65-85/hour when they're experienced contractors.
TheServerSide has posted an interview I did with Dion at ApachCon last November. If you want to hear me ramble on about AppFuse, Spring Live and web frameworks - check it out!
In other news, I have some big (professional) changes to announce, but I'm going to wait a day or two and compose a good entry for it. Let's just say I'll have a lot of time to work on AppFuse and Spring Live in the near future (and get paid for it!).
It figures. I'm supposed to leave on Friday for Norway and I waited until today to check the expiration date on my Passport. It expired in January of this year. That gives me 3 days to try to get it renewed before my flight takes off. This site makes it look like it ain't gonna happen, but I'm hopeful. There's a fair amount of walk-in places in Denver that do on-site photos.
Let me know if you have any tips or have been through this process yourself.
Update: Thanks to David Carter's suggestion, I found American Passport and should have a new passport on my doorstep Thursday morning.
Update 2: Passport has arrived!
A week from today, I'm heading to Norway to do some training on Spring. It's going to be a good trip and I have my work cut out for me. I'll be talking about Spring, Hibernate, AppFuse, Acegi Security as well as Ajax and Spring Web Flow. I'll also be presenting at the two JUGs in Norway:
I'll try to post outlines for my presentations in the next week or so.