David R. Heffelfinger

  Ensode Technology, LLC


So you want to become a technical author?

Last month at the JavaOne conference I had the opportunity to participate in a birds of a feather session titled "So you want to be a published technical author?". I was glad to share my experiences as a published book author, unfortunately the session was only 45 minutes and we had  5 people plus the moderator in the panel, so we didn't have time to cover everything we wanted to. Here are some things we covered during the session, plus a few more things that were left unsaid.

How do I get noticed?

The easiest way to get noticed is to blog about the topic you are interested in writing. Personally, the way I got discovered was when one of the articles I wrote for my own web site was linked to from The Server Side. My advice to aspiring authors would be to blog about your topic of choice then submit your own blog posts to Reddit, Hacker News and other popular technology sites.

Is it profitable?

Not directly. Yes, you'll get some extra cash, but not enough to live on. However, the fact that you are a published author will increase your demand as a programmer a lot, allowing you to charge higher rates. Also, being published opens the door to other opportunities that further increase your exposure, such as speaking engagements and invitations to write articles for high profile publications. A quote I read somewhere that deeply resonates with me: "You don't write books for the royalties, you write books for the consulting fees".

How do you find the time to write?

Very few technical authors write books for a living, for most of us that is something we do on the side. Since we have a full time job we have to write on nights and weekends. Personally, I have a home office in my basement where I go on the evenings to work on my books.

What topics should I write about?

Something you are passionate about. Personally, I tend to pick open source projects such as NetBeans and GlassFish and write about versions that are still in development and have not been officially released yet. I try to time the book publication to match the official release of the project in question. This approach has the risk that things I write about may change in the final version of the product, however the trade off is that your book will cover the latest version of the technology in question.

Why is it so hard to find Java talent?

One common complaint that I hear from my clients and recruiter friends is that it is very hard to find good Java talent.

I am fortunate enough to be on the other side of the coin, I have been working with Java for several years now, I have authored several books on Java and have been a speaker at Oracle's JavaOne conference on more than one occasion, so I'd like to think I'm one of those hard to find good Java developers.

Being on the other side of the coin, I am bombarded every day with emails from recruiters interested in my services, I am fortunate enough to be able to be selective about the projects I work with. In my experience there are three things that drive me away from accepting a project. Here are my suggestions on things you can do to attract top Java talent.

Make it easy to apply

It is mind boggling to me the number of companies that require me to go fill out some long, convoluted form just so that I can apply for a job with them. I have several other companies that are dying to hire me, don't make it a hassle for me to apply for a job for you. On a similar note, many companies require me to fill out some form made in Word that duplicates all the information that already exists in my resume.

If you want me to work for you, don't make it a hassle for me to apply.

Be flexible with your tax terms

For quite a few years now, I've been an independent consultant, in order to do this, I had to incorporate, hire a payroll service, and get insurance for my business. I already have an infrastructure in place to run my business, therefore I only take Corp-to-Corp (C2C) contracts. A lot of companies do W2 only, or want a permanent employee only. Again, I have several potential clients that want to hire me and agree to my terms, your chances of hiring me are slim to none if you are unwilling or unable to do a C2C contract.

Your project has to be interesting

I'm not going to pull any punches here, a lot of the Java projects out there just suck, plain and simple. If what you want me to do is maintain an old J2EE application using Struts 1 and Spring 1 or 2, I'm not going to be very interested in your project. You need to modernize your infrastructure if you want to attract top Java talent. I have actually researched the topic on modernizing legacy server side Java web applications, and wrote a series of articles for the Oracle Technology Network (OTN) a while back on the topic. The articles focus on Spring to Java EE migration, but the same concepts apply to J2EE to Java EE migration. If you need help modernizing a legacy project, drop me a note, this will certainly be an interesting project and I'll be happy to help.


Screencast and Code for my JavaOne Java EE 7 / HTML 5 Presentation

Earlier this week I had the pleasure and the privilege to give a talk at the 2013 JavaOne conference. The session was very well attended and liked.

In the session I gave a demo on how to develop JSF applications using HTML 5 friendly markup, that is, no JSF specific tags, instead using regular HTML 5 input fields with JSF attributes to bind user input to a CDI managed bean. I started the application using a sample Websocket application included with NetBeans as a base.

Then I finished the demo by adding developing a Java EE Websocket server endpoint that returned a JSON containing data to populate the JSF/HTML5 page, and finally added some Javascript to the page to parse the JSON and populate the page.

After the talk was over, a number of attendees asked for the source code to the demo. I wasn't expecting to be asked for the source code, so I hadn't uploaded it anywhere, but since there was demand for it, I just uploaded a zip file containing all of the demo source code. Feel free to download it and use it as you please.

Additionally, if you weren't able to make it to the talk, I just uploaded a screencast of the demo to Youtube, you can find it here, or, even easier, embedded below.

If you would like to learn more about Java EE development with NetBeans, please check out my Java EE Development with NetBeans video course.



My New Java EE Development With NetBeans Video Course is now available

For the past several months I've been diligently working on developing a Java EE Development with NetBeans video course.

 The course has just been published by Packt Publishing and is available for download at http://www.packtpub.com/java-ee-development-with-netbeans-7/video.

It covers all of the most popular Java EE Technologies and APIs including JSF, Facelets, EJB, and JPA, as well as many NetBeans specific tips and tricks to boost productivity.


NetBeans Tip: Quickly opening windows without memorizing keyboard shortcuts

When working with NetBeans, sometimes I need to open a window to look at some information (breakpoints, output, etc). Windows can be accessed by going to the "Windows" pull down menu, then selecting the appropriate window, or, most windows have a keyboard shortcut (ctrl+1 for projects, for example).

The "Window" menu has several submenus, and it is not always entirely obvious where a specific window may be (the "Terminal" window, for example, is under "Output").

 NetBeans Window Menu

 Sometimes I would like to open a window, but I'm not sure exactly where it is located, and I don't know it's keyboard shortcut.

Fortunately NetBeans has a "Quick Search" text field at the top right, and typing the name of the window makes it appear in the search results, therefore, if I want to open the "Breakpoints" window, for example, all I have to do is type "Breakpoints" in the quick search

NetBeans search window


Java One JSF with NetBeans BOF Demo

I had the pleasure of being a speaker at this year's JavaOne conference. One of the sessions I participated was a Birds of a Feather (BOF) session on JSF development with the NetBeans IDE.

During the demo I showed how a complete, nice looking application can be developed in only a few minutes using NetBeans.

For the benefit of those that couldn't attend the session, here is a video of said demonstration.

For those that want to learn more, I wrote a book on NetBeans and Java EE.



Trying to keep an open mind in the Spring Vs Java EE Debacle

One common criticism of my Spring to Java EE Migration article series (see part 1, part 2, part 3 and part 4) is that the article uses an old version of Spring against a modern version of Java EE. There's a reason for that, since project using older versions of Spring are the most likely ones to be looking to migrate to a newer technology stack, be it a newer version of the Spring Framework, Java EE or something else.

Nevertheless, truth be told, I've been focusing on Java EE projects for the last few years, and the times I've used Spring have been when maintaining legacy applications that don't use modern versions of the Spring framework.

Trying to keep an open mind, I bought Just Spring by Madhusudhan Konda for my Kindle Fire. The book uses Spring 3.0, versus Spring 2.5 in my article series. I decided to go for this book since it is a quick read (just over 60 pages), I didn't want to have to go through a 300+ behemoth of a book just to see if my opinion of Spring was outdated.

Quite frankly, the book did little to change my opinion in the Java EE vs Spring debacle. Although annotations get a brief mention in Konda's book, most of the examples still use XML configuration, and the seemingly endless XML needed to do anything nontrivial in Spring is one of the main reasons I'm not a fan of the framework.


To learn more about Java EE development, please check out my own books, Java EE 6 with GlassFish 3 Application Server and  Java EE 6 Development with NetBeans 7.



tar failing with error message "file changed as we read it"

Today I'm upgrading my laptop to the recently released Ubuntu 12.04 Precise Pangolin.

Even though I have my /home directory in it's own partition and the installer shouldn't wipe it out, I'm erring on the side of caution and backing up my home directory before beginning the installation.

I'm using the Linux tar command to compress and back up my home directory, but for some reason after waiting for several minutes the command kept failing with the following error message:

"file changed as we read it"

After googling for a bit I found the solution to the problem, using the --ignore-failed-read flag for tar took care of the issue.

tar --ignore-failed-read -ztvf backup.tar.gz /home/myhomedir

did the trick. 

Spring to Java EE Migration Article, Part 4

The fourth and final part of my Spring to Java EE migration article series has been published.

Spring to Java EE Migration, Part 4 

Part 4 compares equivalent functionality in Java EE and Spring, covering topics such as MVC design pattern implementation, data access, transaction management, and dependency injection. 


Spring to Java EE Migration Article, Part 3

Part 3 of my Spring to Java EE migration article series has been published.

This part covers how to tweak the NetBeans-generated JSF user interface and compares the Spring and Java EE versions of the Pet Clinic application. 


Spring to Java EE Migration, Part 2

Part 2 of my Spring to Java EE migration series has been published. 

This part of the article shows off NetBeans Java EE capabilities, such as automatically generating JSF pages, JSF managed beans and Data Access Objects (DAO's) implemented as EJB session Beans. 


New Spring to Java EE Migration Article Series

For the past few weeks I've been working on a new article series for the Oracle Technology Network. The topic of the series is Spring to Java EE migration using the NetBeans IDE. 

Part 1 of the series was just published. In this part we begin migrating Spring's sample Pet Clinic application to standard Java EE APIs such as JavaServer Faces (JSF) and the Java Persistence API (JPA), while showcasing time saving NetBeans features such as JPA entity generation.


Ordered a Sony Xperia Play from Amazon

Amazon has a deal going on for the Sony Xperia Play for one cent ($0.01) with a two year contract with Verizon Wireless.

I was already with Verizon and fairly happy with them, and my old Motorola Droid was starting to show it's age (the power button sometimes doesn't work, I have to press it multiple times to turn the phone on or off), so I decided to give it a go.

For those that don't know, the Xperia Play is the so called "Playstation Phone", that has a built in game pad and several exclusive titles. The XPeria play also has stock Android 2.3 (Gingerbread). I'm not a fan of Android skins like Sense UI and others, since having those skins make the phones harder to upgrade for the manufacturer, since they have to update their skins for every new version of Android.

As far as the Sony Xperia Play goes, I am primarily interested in getting a Stock Android Gingerbread device for 1 cent, plus it is a nice hardware upgrade for me. The fact that it has a built in gamepad and exclusive games is just gravy, at least it will give me something to do during my daily bus and train commute.


Kevin Mitnick's "Ghost in the Wires"

I just finished reading Kevin Mitnick's new book, Ghost in the Wires, on my Kindle.

I remember learning about Mitnick by reading about him on Slashdot via the "Free Kevin" movement several years ago.

Mitnick's life story is quite interesting, and the book is full of several interesting anecdotes.

He explains how he was able to figure out a way to travel for free on the bus as a kid; illustrating how he had an ability for social engineering from a young age.

Mitnick then goes on to tell the story explaining how some friends from high school introduced him to phone phreaking, making long distance phone calls for free. 

He also tells a story on how he was able to defeat the security of the computer systems in the college he was attending, and how his professors asked him to secure the system as an "honors project" or face expulsion.

The book is full of several stories detailing how he was able to break into several computer systems, steal cell phone service, monitor phone calls (including FBI lines), obtain new identities and other clever and "less than legal" activities. Mitnick had an ability for social engineering, that is, he could easily dupe people into giving him information that he shouldn't have. He would call companies and pretend to be a coworker or customer, and more often than not he could convince the other person on the line to do something for him or provide some confidential information, including usernames and passwords.

All in all, Ghost in the Wires is a very interesting read, and very much worth it for anybody interested in computers or security.


James Gosling, Father of Java, Leaves Google

A while back, there were news all over the blogosphere about James
Gosling, father of Java, leaving Oracle shortly after the database giant
bought Sun Microsystems.

Gosling was unemployed for a while, but in March 2011, he went to work for Google. Today he published a new blog entry, announcing that he left Google to join a company called Liquid Robotics, a company that makes an unmanned ocean vehicle called the Wave Glider.

surprised that Mr. Gosling decided to leave Google after less than six
months of employment; nevertheless I wish him the best of luck in his
new endeavors. I'm sure Liquid Robotics will benefit greatly from the
positive public relations of having the father of Java join their
company, and I'm sure they are hoping his tenure will be longer than the
one he had at Google.


« December 2022

© David R. Heffelfinger