JEE Developer Vato

My name is Andrew Rubalcaba. I am currently a JEE developer in the DFW area, using Java technologies such as Spring, Hibernate, Ibatis, Tomcat, ActiveMQ, and EclipseRCP. I am always looking to expand my technology horizons. This tumblr is a way to track my thoughts and ideas.

I have been developing for about 8 years. Mainly focusing on Java applications ranging from Web Applications, SOA applications, and a couple of RIA applications with Flex + Java.  Most of the time I spend my time developing the back-ends for these applications and while its great, my exposure to the front-end has been fairly weak. I can get around for the most part with some simple HTML stuff thanks to the tag support from some of the Java Frameworks that I have worked with in the past. Problems arise when I need to do simple things that involve CSS or JavaScript, this type of functionality usually has to be done by someone else. 

Starting in 2012 I have decided to dive deeper into the HTML, CSS, and JavaScript world to not only become more comfortable with these technologies but to expand my skill set.

The internet is full of information on getting started and with so much information out there, it is hard to narrow down a path that I would like to take. Enter Team Treehouse. I heard about this site on Twitter a while back from some of the developers I follow and I figured that I’d give it a try. Their site design is so clean and one of the things I love about it is how uncluttered the site is. Many of the other sites I have seen are excessively busy and have a ton of links to extra stuff that always distract me. That part is my fault though; I am very ADD at times and the less stuff on pages for me to click on, the better. Here is a link to my profile :-) http://teamtreehouse.com/arubalcaba

I have only been using the site for a couple of months but I really love their approach of watching a video and working on labs along side the speaker. At the end of the sections, you take a quiz and unlock badges. After a couple of badges you take a Mastery Challenge that involves you doing some work and the browser checking it to see if you’ve met the challenge. The nerdy badges you get along the way are a great way for you to track your progress. I try to do 2 or 3 badges a day.

I have also started reading “The Principles of Beautiful Web Design”; to help me come up to speed on Web Design concepts and how to better understand good design vs. bad design. A co-worker of mine recommended it and so far the way the author presents his ideas makes web design a very approachable subject even for someone who has no background in Web Design. 

So 2 weeks ago I was driving back from Oklahoma City reading the Spring in Action 3rd Edition by Craig Walls. I’ve known Craig for a couple of years now. I first met him at the Spring User Group in Dallas back when I was first getting into Spring.  When people ask me what books they should read to get an understanding on Spring I always recommend Spring in Action along with Spring Recipes book. OK back to the story. I was reading the book and reading the introduction where Craig talks about some of the people who helped make the book possible and him thanking others who have helped along the way. I was totally not expecting to see Andrew Rubalcaba among the names of people on there. I jumped up and told my fiance my name was in the book I was holding. Her response was “Are you sure thats you?” I’m not gonna lie I quickly thought the same thing. Luckily it was me.  Again I wasn’t expecting that and I think that made the whole thing even better.  So Craig Walls Thank you for the many years you’ve continued to put your time and effort into writing the Spring In Action books and thank you for shout out! 

Spring in Action

This was my 2nd year in a row attending The No Fluff Just Stuff conference in Austin,TX and the following is my review of the conference.

Day 1:

I started off Friday by attending a session by Venkat Subramaniam titled “Concurrency without pain in pure Java”.  Venkat went over a lot of the issues facing developers when developing concurrent applications with Java. For one it’s not easy, or for the faint of heart, and even the most senior developers don’t always get it right. Venkat is a master at spitting out quotes like Buddha dishing out wisdom. At one point he said “Doing concurrency with Java is like working with your mother in-law, its just waiting for you to fail”, the synchronized and suffer method as he called it. He then covered 2 approaches that are gaining traction in making Concurrency in Java a lot less painless, software transactional memory and actor based approach. He gave some real cool demos on using Akka within Java. I like that Venkat has about 2 slides and the rest is live coding showing you evolving code.

Next up I decided to go checkout Matthew McCullough talk about Game Theory in Software Development. I had originally thought about going to another talk but I’m glad I chose this one. My mind was blown away on Game Theory and how a lot of the concepts can be applied to the software development world. I’m going to have to checkout some more books on the subject as it could help on day to day interactions with other teams in my organization and future engagements with clients on side projects. :-) If you guys ever have a chance to hear Matt speak don’t pass it up. He hits up a lot of conferences and user groups around the world. He spoke at JavaMug a while back on Git and you can tell he’s passionate about the subjects he chooses to cover.

After the Game Theory session I went to “Cascading Through Hadoop” by Matthew as well. I’ve been interested in Hadoop ever since last NFJS conference in which Matt gave an introduction into it and lately seems to be exploding in the Big Data realm. Cascading is basically a cleaner and simpler api for writing Hadoop jobs. Again Matt did a great job in covering this topic and you could see a lot of people in the room having “Aha” moments. 

Day 2

Day 2 started off again with Venkat on “Programming in Functional Style” in which he covered how to do Functional Programming with Java and Groovy as well. This was a great topic because Functional Programming goes back in helping to solve the concurrency problems that exist today. Thats why languages like Clojure and Scala are really gaining traction right now because they do this very well and run on the JVM.  This first session lead into his second session in which he talked about Scala. Scala is also in the same space as Clojure although it supports both Imperative style of programming and Functional style of programming. Again Venkat gave great live code demos of Scala coding. He did stress a good point on using Scala, that is “there is what you can do with Scala and what you should do with Scala”, meaning we need to train our minds to think in a more functional style of programming. He did talk about a guy who stayed with him for a week and trained on Scala. I thought that was pretty cool. I compare Venkat to being like a programmers version of Tyler Durden from Fight Club and developers lining up to train with the master. 

Session 3 of the day was a Git Workshop with Matt. I’ve used Git here and there on projects but its always good to pick up extra bits of knowledge from these types of workshops. Again, Matt did a great job.

Session 4 of the day was Securing Spring with Craig Walls.  I’ve worked with Spring the last 5 years but the Spring Security part has always been one of my weakest and Craig went over how easy it is in Spring 3 to setup Security.  He even scared us by showing us the old way of doing it back when it was known Acegi. Great job Craig.

Day 3:

For Day 3 I started off in the Improving Java with Groovy session by Ken Kousen. Ken did a pretty good job of pushing his Manning Book and showing us places where Groovy can help in making life easier in the Java world.  I’m definitely going to be checking out a lot of his recommendation especially the IO and XML stuff in Groovy.

The second and final session for me was on REST by Brian Sletten it was part 2 of his 4 talks on the subject. Brian brought up a lot of good points when it comes to Security and I know this is a big issue with a lot of people who don’t fully understand REST and come from the SOAP world. He covered things like OpenID and OAuth. Another good thing he brought up in this talk is plan and design with the future in mind. This can be applied to not just doing REST services but software development in general. Many times we as developers just start coding and fail to see what lays ahead. Brian is great speaker and passionate about the subjects which he covers.

Other Highlights

Some other highlights for me included running into a co-worker of mine from the Verio days and being able to network a little more with the strong Austin Tech community. I saw many familiar faces from last year including my good buddy Rodrigo Gomez, Nate, and Kevin.

Another highlight was that I was able to have dinner with some of the speakers. Topics ranged from Software Development, Economics, and Mormonism.  I realized I have a long way to go in my career but hopefully I’m on the right path. 

Conclusion:

The conference is definitely a great way to stay up to date on technologies and methods to make a developers life more productive.  The sad part is that some of these things are hard to implement in certain shops that shy away from change. Luckily there are side projects we can take on to implement some of these tools.  

I woke up this morning and booted up my laptop to check my Twitter feed like every other morning. I usually use the Hootsuite Dashboard to check Twitter. As I went to the page I got a message saying the site was down. No Biggie. As I was checking twitter on the main site I started seeing the stories coming about Amazon’s EC2 service being down. Throughout the day all the nerds on my twitter stream were making EC2 jokes and doom predictions. Some even joked that this was Skynet’s way of disrupting the system before the takeover. Foursquare, Quora, Hootsuite, and I’m sure tons of other startups, were down most of the day as a result of EC2 outages. A lot of peoples frustrations were due to the fact that Amazon wasn’t doing much to communicate with customers as to what was going on and so customers were in the dark for most of the day. I’m sure a lot of companies out there are now going to start asking the question if they should stay with Amazon or move to another platform. A lot of those affected by the outage are young startups that simply don’t have the capital needed to run their own data centers. One thing to keep in mind when handing over this type of control to an outside provider is always keep a plan B in the back of your mind. At least have something ready to go should the need ever arise. Cloud Providers aren’t perfect and they will have outages, and I’m sure as demand for cloud services increases, we will seem more outages here and there. Build Plan B Drills into your plans and simulate outage situations. Don’t wait for the rainy day to hit and then find yourself down for a whole day unable to service your customers.

Amazon will have to figure out a better system for contacting customers on outages and figure out how to minimize situations like today. This is new technology ground being covered and Amazon has done a great job so far. As with any new ground being covered, issues will arise but so shall the solutions to those issues.  

A couple of months ago I was in Austin for a Data Conference and I kept hearing the word DevOps. I didn’t pay much attention at the time thinking it was just a cool word to be used for the day but as time passed I started seeing it pop up in other places. Most recently Dzone has posted a couple of interesting articles on the subject. 

So what is DevOps? This is the best definition I found.

 … the Devops movement is characterized by people with a multidisciplinary skill set - people who are comfortable with infrastructure and configuration, but also happy to roll up their sleeves, write tests, debug, and ship features. These are people who making connections, because they can - because they have feet in multiple camps, they can be ambassadors, peace makers, facilitators and communicators. And the point of the movement is to identify these, currently rare, people and encourage them, compare ideas, and start to identify, train, recruit and popularize this way of doing IT.  —Stephen Nelson-Smith

Right away I started thinking back to 8 years ago when I started in the IT Industry as a Java Developer. I was working for a company that was full of great developers. We would have these meetings with IT Operations and they would end up turning into heated debates where it was IT Ops vs IT Dev. The amount of time wasted in these debates was insane. We would go back and forth through a couple of meetings before a consensus could be reached as to what was the best decision. IT Ops saw our Dev Team as reckless Cowboys that had to be watched. Fast forward to today and its pretty much the same story, but with the whole DevOps movement it seems things are changing! I hope I get to work with these type of people soon because they could greatly increase the speed at which Dev Teams deliver solutions.

This past week VMware and Springsource released a new player into the PAAS(Platform As A Service) cloud world, Cloud Foundry. In the Cloud World you basically have IAAS(Infrastructure As A Service) and PAAS. IAAS providers Amazon EC2 Service and Rackspace.  PAAS providers include Google App Engine and Amazon Beanstalk. What I like about PAAS options is that it allows developers to focus more on the development aspect without having to worry too much about the infrastructure that their applications will be running on.  That headache is handled by the provider. OK enough about that.  

So what is Cloud Foundry all about? Its a new platform that allows developers to deploy their applications on. The platform offers allows you to deploy Spring, Grails, Ruby on Rails, and Node.js applications on to it. I’m sure as it gets more popular you will start to see support for other type of frameworks.  Cloud Foundry also offers application services such as MySQL, MongoDB, and Redis. Your application can then take advantage of these services. Other services such as RabbitMQ and Gemfire are coming soon. Cloud Foundry also gives the users the ability to run in either Public Clouds or Private Clouds. You can install Cloud Foundry on your internal network and have a Private Cloud going on within your firewall. Then you got the people over at Rightscale that have created a ServerTemplate to allow you to run Cloud Foundry on EC2. For more info on this checkout Rightscale’s Page. The following image gives you a nice view of what Cloud Foundry has to offer.

Cloud Foundry Image

These are definitely great times to be a developer with so many options and configurations to choose from in the Cloud World. If you want to get started with Cloud Foundry I suggest you signup for an invite. If you are a Java Developer, download the latest STS and get to coding. Here is a nice link with more info on STS + Cloud Foundry Integration. Even Spring Roo has some great support for the new platform. If you want to start looking at some sample code be sure to checkout the Git Repository with some code goodies in there to help you get started. I hope you guys get a chance to checkout it out and play with it. I’ll def be playing with it in my spare time and hoping to get some of my own examples going. 

This past weekend I made my way down towards Austin,TX for the Big Data Day Event. I first heard about the event from a former JavaMug Speaker who tweeted about the event. I was able to get the early bird deal and paid only 50 bucks.

The day started off with Jonathan Ellis going over Cassandra  . He did an awesome job in introducing the project to all the noobs in the crowd but most important he gave great examples of when and why to use Cassandra. Seems Cassandra is perfect when you are running to scalability issues and trying to use solutions like memcache aren’t helping much. The best pieces though come with the Why?

  • Fault Tolerant - It seems Cassandra was built with this problem in mine. Data is replicated throughout the cluster and use can use commodity servers instead of high priced machines. A failed node is expected but can be replaced very easily.
  • Decentralized - this is important because you never know when your data center might go down or get completely wiped out. You can have your data distributed throughout several nodes in several locations. 
  • Elastic - Cassandra is made to scale at a linear level and so the more machines being added, you don’t have to worry about the performance.

Next came Steve Watt with an introduction to Hadoop/Map Reduce. Steve runs the Big Data User Group in Austin and works for IBM. He also has a blog that really helps you get up and running with Hadoop. This talk was great because Steve used visual examples on how Map Reduce works. He was using stacks of papers to demonstrate and this really help me understand Map Reduce a little better. You could see a couple of people in the audience have the ahh-ha moment as well. Steve walked the audience through downloading and installing Hadoop on their own machines. If you missed it you can refer back to his blog and he has a post on it. This talk also made me realize I need to get me an extra laptop and load it up with some form of Linux and improve my Linux skills. Most of the people in the audience had Macs or they were running Linux. 

Matt Ray went on after Steve and he talked about Devops for Big Data. He talked about an awesome tool called Chef and walked us through using it to manage clusters of Hadoop. I’m still fairly new to the whole Big Data world but you can tell tools like this will make it easier to manage and configure Hadoop Clusters. Chef can be used with Amazon EC2 instances to quickly spin up instances of Hadoop Clusters.  For more info checkout 

https://github.com/infochimps/cluster_chef/blob/version_2/README.textile

Next up was Flip Kromer talking about Wukong which is titled as Ruby for Hadoop. For those of you Ruby peeps that want to get into the Big Data world with Hadoop you will probably start with WuKong. I haven’t worked much with Ruby but the examples Flip presented seemed pretty straight forward and I will def try to come back and visit this project.

The rest of the day was covered with more talks with topics like Pig and Nutch

I walked away from the event with a piqued interest into the Big Data world and with an understanding of why its important. Steve mentioned in his talk that the demand for Data Scientist and people with knowledge in these technologies is exploding.  A lot of the problems these technologies are trying to solve in my opinion will become more and more important to businesses as data expands and we the users try to make sense of it.  

This past week I embarked on the journey to attend my first ever SpringOne 2Gx conference.  The conference is split up into a couple of tracks mainly focusing on Spring, Groovy/Grails, and pieces on Infrastructure for Spring and Grails apps. Spring One was done by the same guys who do the awesome No Fluff Just Stuff tech conferences all over the US. I paid for the conferences out of my own pocket because I really wanted to attend.  I see it as a long term investment because the stuff I learned and the people I met at this conference was more then worth it.  

I arrived Tuesday afternoon and already the hotel was buzzing with all the developers checking in. Later that night we heard from Rod Johnson as he took the stage for the opening keynote. He expounded on how he had trouble coming up with a title and subject matter for his keynote. He wasn’t sure what he really wanted to talk about. As he was reflecting on the topic he decided to make it about where he sees Springsource heading for the next 10 years.  Spring Framework is 10 years old already and in those 10 years it has drastically changed the Java landscape, for the better of course.  With Oracle purchasing Sun Microsystems a lot of developers out there are worried or waiting on the sidelines as to what direction Oracle will take with Java.  Springsource though will remain true to the core vision of why Spring was created in the first place: Portability and Productivity through Innovation.  This message was echoed throughout the conference as the week went on.  

Rod’s keynote touched on a couple of up-and-coming Spring Projects.  

  • Spring Mobile - is a project that will make it easier for Spring developers to provide support for different client types like iPhone and Android platforms.
  • Spring Social - this will allow for Spring Developers to integrate social platforms like Facebook and Twitter more easily.
  • One of the most exciting things announced was work being done to make it easier to work with data grids like Gemfire and Ehcache. This will be achieved by again providing a level of abstraction to work with these technologies. I hope I get to play with this on future projects.
  • Code2Cloud - A project that is being created in conjunction with Tasktop. Code2Cloud will work with GIT and Hudson to provide developers with a more streamlined development and collaboration process. For more info on this project please checkout - http://www.springsource.com/code2cloud. A demo of this product was given and it looks really promising. 
  • Collaboration between Google and SpringSource continues to improve Spring Roo GWT Addon, making it easier to deploy to Google App Engine. Again Portability is the key here. Spring framework doesn’t care what container you deploy to.
  • Spring Data - is a project to work with popular NoSQL datastores and Java. Again Spring will provide a level of abstraction to make it easier to work with NoSQL. For more info checkout - http://www.springsource.org/spring-data
  • Another exciting project is Spring Payment API.  This project is being developed in conjunction with Visa. This will allow for Spring developers to integrate with a wide range of payment services. For more info on this project checkout - http://www.springsource.org/spring-payment

The Greenhouse Project was unveiled at the keynote and this project sought to showcase the multi-client and social work Springsource has been working on. The iPhone people got a chance to play with it.  The Android people will have to wait but I’ve been told that part of the project is very near completion. Oh yeah and I bumped into Spring Creator Rod Johnson in the lobby and he informed me a Spring Roo Addon is coming out for Android as well, I seriously can’t wait for this! I asked if I could take a picture with him so that I can show to my kids in the future. 

Groovy and Grails got a ton of love as the conference went on.  Almost all the developers I talked to were going to the Groovy and Grails talk.  Its great to see those 2 technologies taking off as well.  The excitement and tenacity of these developers is amazing. At the Spring Awards Gradle was given an award for being one of the Top Projects.  Inkchaser (https://www.inkchaser.com/) were also given an award for developing an awesome site done with Grails.  This was a great success story and I hope more and more production sites start to use Grails as well.

I attended a ton of sessions mainly all on the Spring track. I will try to cover my session highlights separately but for the moment I just wanted to give a high level overview of the conference.