Sunday, November 23, 2014

NFJS 2014 (2)

They should call this the JavaScript, Architecture and Dev/Ops show.

I'm doing a certain amount of career soul-searching.  Is Java over?

In 2007 I went to Scott Davis' Grails presentation and thought it was the coolest thing I ever saw.  So, a long and winding 7 years later, I'm actually working in Grails.  Scott wasn't at this NFJS but I saw him a while back at Boulder Java User's Group and he was presenting on a JavaScript topic.

Pratik Patel has gone over to JavaScript.  Matt Stine went over to Dev/Ops.  And of course Bruce Tate went over to Rails some years ago.  These are the kind of people I look up to and try to emulate.

I really like Groovy/Grails and the Spring world.  I feel like I'm finally right where I want to be in my career after a somewhat bitter struggle, working with these technologies.

Anyway... the coolest cool new thing was Web Components and Polymer.  The way most web development is done is going to completely change in the next year or so.

The most crowded presentation I went to with people standing up in the back of the room was Neal Ford's talk on Microservices.  This sits at the intersection of Architecture and Dev/Ops where there seems to be a high level of interest.  Matt Stine's keynote Failure is the Only Option was also Dev/Ops-related.

Daniel Hinojosa's test-driven development talk The Walking TDD was good and drew a lot of interest.

I wasn't expecting much from Brian Sletten's talk about cryptography but this turned out to be really good.  Trust no one.

I dutifully went to Craig Walls' What's New in Spring.  I would have gone to the Spring Boot talk but I saw him give it at Boulder JUG a while back.  My sense is Spring continues to rock, but I'm focused on other things right now.

If I had to sum up NFJS 2014 (or the 1/5 of the sessions I went to, anyway) in one word, the word would be 'components'.  Web components, of course, and Microservices Architecture is all about modularity and components, and the same is true of Docker.


Web components

Thursday, November 20, 2014

NFJS 2014

My uber-cool employer is sending me to No Fluff Just Stuff.

This will be the 10th anniversary of my first time in 2004.

Hot topics in 2004 were dependency injection, object-relational mapping and web frameworks (which in those days meant primarily server-side).  Dave Thomas and Bruce Tate were among the speakers.  SOAP was alive and well and there were lots of XML-related talks.  Agile methodologies were new and exciting.

Some specific presentation topics included Spring, Hibernate, JDO, Struts, JSF, Tapestry, Ruby, Groovy, AOP.

It was totally mind-blowing for me.  My Java experience leading up to this was Tomcat, JBoss and Struts.  I thought EJBs and J2EE were the pinnacle of advanced enterprise Java.  I had tried Struts but reverted back to JSP for web development.  Back then I thought JavaScript was suitable only for cheesy effects that no serious developer would use.

I went on to use Tapestry in a project within the next year.  This was the coolest Java web framework of 2005 (you could use components that encapsulated JavaScript functionality without knowing anything about JavaScript!) but it didn't do well in the years that followed and is almost forgotten now.

Spring, Hibernate and Groovy had a big influence on me and (along with Grails) these are what I'm mostly working in today.

So, in 2004, NFJS exposed me to many ideas that were new and even revolutionary.  It also made me realize that I had been in a complacent backwater and was ignorant of a wide world of innovation going on outside the confines of my narrow career.

Comparing that with the program for this year, I can't help feel a little disappointed.  And I hasten to say this is no reflection on the NFJS presenters and organizers.  But the awesome creative ferment of a decade ago seems to have spent its force.

The one thing on the agenda that is somewhat new is Microservices.  There's plenty of good stuff. even the usual tough choices where more than one presentation I'd like to see are being offered at the same time.  But, there's not much here that is new since my last visit to Uberconf 2 1/2 years ago.

Did the excitement and innovation go elsewhere?  Is the whole industry in a slump?

The conventional wisdom lately has been that the actual Java language has become the COBOL of the 2010s, however lots of cool new languages like Groovy, Clojure and Scala run on the JVM. and the next big thing was probably going to involve a JVM-based language, possibly a functional language that would solve the concurrency problem.  I've been hearing this for about 4 years now and nothing much seems to be happening... these languages thrive in their little niches but there is no revolution.

Well, perhaps I'm being overly pessimistic and something from this NFJS is getting ready to knock my socks off.  Or, I'm just at a stage in my development where I don't need to be chasing the latest new thing so much as deepening my command of existing tools and frameworks.  I think I could spend the rest of my life mastering Spring framework and all the additional Spring projects.  Do we really just have enough of this stuff to the point where new languages and frameworks become superfluous?

Wednesday, September 3, 2014

Jasper Reports

I've been trying to work (again) with the Jasper Reports suite of tools (Jasper Reports Server, JasperSoft Studio).  There's a Community (free) edition, and a variety of non-free commercial editions.

It's getting incredibly frustrating, because for the most part the documentation covers the commercial editions, with only a short disclaimer at the beginning that some of the features described may not be implemented in the Community version.

I find I'm repeatedly being led down the garden path towards a solution to the particular problem I'm trying to solve, only to discover that the feature being described is not available in Community.

Wednesday, August 13, 2014

The Mac

My Uber-cool employer decided to get us developers shiny new MacBook Pros, so I'm in this environment more than a few minutes for the first time.  Here are my impressions so far.

It feels sort of like having a well-configured Linux laptop with a slightly idiosyncratic distro.  Everything works out of the box without a lot of effort e.g. installing drivers or working through things not quite working right on some particular hardware.

This hardware appears to have 'Optimus' graphics.  That's a slower Intel graphics processor plus a faster Nvidia processor with software to switch back and forth.  Of course that all works smoothly out of the box, compared with the ordeal I went through last year getting this working in Linux.  On the other hand, the last Mint 17 distro I installed on that hardware handled the Optimus setup effortlessly, so Linux does eventually catch up.

The 'spaces' (virtual desktops) feature seems cool at first, but after using it for a while I'm starting to feel like it's slowing me down.  So far I typically have about 6 'spaces' (virtual desktops) but that will probably grow as I settle into this environment and start really using it.

I feel like I'm wasting a lot of time hitting the F3 button ('Mission Control'), as opposed to just having the Workspace Switcher visible and available all the time.

I briefly researched focus follows mouse (sloppy) with autoraise, but this looks like way too much trouble, if it's even possible.

I like the way things are more consistent in the Mac world when it comes to the keystrokes.  I feel like I'm able to avoid using the mouse and keep my hands on the keyboard more.  It's not impossible to do this in Linux but each application has different keystrokes so it's more of a memory challenge.  The downside of this is I find myself focusing a lot on hitting the right fn, ctrl, option, command key, and it doesn't help that they switched ctrl and fn.

The keyboard is really pretty spartan... no number pad, no home/end/pg up/pg down.  This seems odd for what is in a lot of other ways a premium hardware product.  But hey, the keys that are there are backlit... ohhh shiny...

When it comes to installing software, so far I've been able to load everything I need, but it's kind of hit or miss.  Brew has some things, the Apple store has some things, and for many packages you just google 'macos package name'  and download some one-of-a-kind thing.  I'm used to working with a package manager like apt or yum so this seems kind of haphazard and irregular, like going back 15 years to the days of SLS Linux, except I don't have to actually compile the software.

I was looking forward to finally using TextMate after years of watching the presenters at NFJS and Uberconf use this cool tool.  I eagerly went to download it and to my horror discovered it is NOT FREE.  This is a big problem with the Mac.  There was some tool that claimed to solve the focus-follows-mouse problem but it was like $20-- I didn't want it that bad.  Information wants to be free.

One thing that really sets this apart from, say, Windows, is being able to get a Unix shell.  That is a real comfort factor for me.  Though the MacOS file system is weird compared to Linux and other Unix versions I'm used to.  Obviously they tried to make it more user-friendly (to newbies, that is).

One of my co-workers' new Macs died on him. It was less than 2 weeks old and this is one out of 5 we bought brand new.  He's a Mac guy and was already doing backups with Time Machine, so happily he didn't lose much.  But I find this rather shocking, given how expensive this hardware is.  I dropped everything when he told us and configured backups on an external drive.

There's a lot of possibilities I haven't explored yet, notably Boot Camp, but my impression so far is, cool, but I wouldn't quite spend my own money on one of these.  Which has always been a big issue since I drooled over the first Macs 30 years ago.

Monday, June 23, 2014


For  many years, Firefox has been my primary browser.  But about a month ago, I had enough.  They changed Firefox to make it just like Chrome.  All the menus are now hidden in a little box in the upper right hand corner.  The little box even looks just like the one in Chrome.  Chrome is what I use for work.  It's the best development browser.  But, I use it in spite of the look and feel, not because of it.  If I want Chrome I know where to find it.

Back in 2000 or so, my browser was 'Mozilla'.  Then the Mozilla corporation came out with Firefox and Thunderbird, and the browser formerly known as 'Mozilla' became 'SeaMonkey'.  I didn't care for Firefox at first.  I felt it was slavishly following the look and feel of Microsoft Internet Explorer (like it's now doing with Chrome).  But, eventually I got dragged kicking and screaming into Firefox, because of its support for plugins.  SeaMonkey supported some plugins, but Firefox had all the cool ones.  Then a bit later, Firefox came out with Tab Groups and I was really hooked.

I was a bit surprised to see that SeaMonkey is still around.  When I fired it up, it was like going back in time 10 years.  It has the big buttons and big, easy to navigate menus of the old days.  I really like this look and feel.

Plugin selection is decent.  It has AdBlock Plus, which I could not live without.  FlashBlock is missing.

In the old days, your browser was also your mail reader, which is true of SeaMonkey.  After I had settled in, I switched from Thunderbird to SeaMonkey Mail & Newsgroups.  Here, things basically work, but there were a couple of disappointments.  You can deploy the Lightning (Calendar) plugin, but it doesn't work.  I'm probably not going to stick with this just for that reason as I had a lot of birthdays and stuff in my Thunderbird calendar.  The other thing I noticed is the Move To -> Recent feature isn't quite as good as in Thunderbird.

SeaMonkey and Firefox obviously share a lot of code.  It leaks memory about like Firefox.

I hear good things about Pale Moon and have it in mind to try this browser when I get around to it.

Update: well, that was fun, but I went back to Chrome and Thunderbird.  The problems with the SeaMonkey mail reader in particular drove me back.

Update 2017: I went back to SeaMonkey again for 3-4 months.  This time I didn't try to use the mail reader but just used the browser part.  I really like this user interface with the bar with all the drop-down menus across the top.  Also, the memory leaks in SeaMonkey are much smaller than in Chrome and I found I could keep a SeaMonkey browser up for months, as opposed to having to restart Chrome once or twice a week.

Ultimately I abandoned SeaMonkey again for two reasons: the absence of a Sync feature (the Sync feature exists in the browser but the servers aren't there, or something; I couldn't get it to work), and a growing list of important sites (e.g. my bank) reporting that my browser is not supported.

Sunday, June 8, 2014

Mint 17

Wow, I guess it's a long time since I blogged.

I'm installing Mint 17 Mate on my laptop this weekend.

Last year I went through a lot of pain installing Linux on this hardware due to Linux support for UEFI still being in its infancy. I'm happy to say jumping through all those hoops is a thing of the past with Mint 17.  This was pretty much a routine install.

For the first time, I didn't need to do anything special with the window manager.  Usually I have to switch to metacity or mutter, but in this case marco just works.

I could not get either mintbackup or the dpkg/dselect technique to work this time, possibly due to all the additional repos, such as xorg-edgers, I had installed to get things working previously.  Or possibly I should say, after one 8 hour attempt to restore everything led to an unstable system, I was out of time to experiment with this.  I figure since this is a 5 year LTS release I'll have plenty of time to install all the packages I want, and I do still have the list of the ones I installed before to install manually as needed.

The xorg-edgers packages I formerly needed to get Bumblebee to work are now part of the standard repos.  See Nvidia Optimus on Linux Mint 17 - GT650M ASUS N56, for example.  This is now an easy and routine thing.

Suspend and hibernate work out of the box, yay.