Pages

May 10, 2013

Groovy Koans!

Lately I have found myself back in the learning spirit. It is a much needed change from the bit of a block I have been in for a while. I stumbled upon Groovy Koans and am hooked.

If you have never experienced any koans (there are koans for a lot of other programming languages) it is an interesting way to learn a new language. Each koan is designed to teach you a different aspect of the language by having you modify code in unit tests to get them to pass. As you pass through each koan the topics get more advanced.

So far I have only worked through the first 3 or 4 Groovy koans, but I am picking up things pretty quickly. The more I work and learn about Groovy I like how simplified it is compared to Java. I am really loving the auto properties and that it already has closures. I can't wait to get into some of the more advanced topics in the later koans.

**Side Note: Groovy Koans utilize Gradle for building and running the tests so you can get a nice preview of how easy it is to use Gradle over Ant and Maven. I am thinking Gradle will become my new build tool.


November 10, 2012

Codecademy

Earlier this year I started to get the itch to do some learning of languages other than Java and C#. I randomly came across a blog post about a site that had a developer pledge to do a coding assignment once a week for a year. It was called Code Year and it was pretty fun, but at a certain point I got busy with other things and fell behind by more than a few weeks. Last month I realized I was over 30 weeks behind and wanted to catch up. I made a pledge to do t least one assignment a day until I caught up.

I am proud to say that I have not only caught up on Code Year, but I have now completed every available training assignment on the site. So far I have learned jQuery, CSS, Python, and Ruby to a point where I can actually write meaningful code in each of them.  If you are looking to branch out I suggest you check out the site.

*Codecademy – www.codecademy.com

*Code Year – www.codeyear.com

May 2, 2012

I'm A New Guy Again

After a long period of thought and reflection, I decided to accept a position at a new company a month ago. It was hard to leave my old job as I had made quite a few friends, but it was time for a new challenge. A month in, I am very happy with my decision.

My new position uses a completely different technology stack. I’ve gone from maintaining older Struts applications with no ORM tools to now working with the following stack:

  • EJB
  • JSF
  • Seam
  • JPA/Hibernate
I had conversational knowledge of these, but had never taken the time to actually get my hands dirty and gain some experience. That was a fault of my own, but I am now knee deep in them each day and enjoying it.

So far I have only done some small things with each of these, but I will be starting a new project soon and expect to have this stack mastered by its completion. Wish me luck!

November 9, 2011

**Alert**:Removing Old RSS Feed URL

If you still use my old feed url @ http://feeds.feedburner.com/TalesOfTheBlackDilbert please update your news reader to point to my new feed at http://feeds.feedburner.com/MrWillSoftware.  The old feed will go away at the end of the week.

November 1, 2011

Moving Inside the JVM

I am becoming more and more interested in JVM languages like Groovy and Scala. I truly believe that these languages created to run on the JVM are going to slowly displace Java. Java is beginning to suffer from neglect as it has not been pushed forward like it should have been.  Closures still not being in Java is the perfect example. Too many developers have been calling for this feature and it is supposedly going to be in Java 8, but I will be surprised if it makes the cut. Groovy and Scala already have support for closures, so I figure if these languages are already pushing forward I am going to jump on the train rather than wait for Java top catch up.



October 5, 2011

Steve Jobs, R.I.P.

I just heard the news that Steve Jobs has passed away at the age of 56. I knew he had to have been ill for him to let go of reigns to his Apple machine and sadly I was correct.  My fellow nerds should take a small moment and reflect a little in his honor.

Though I often disagreed with the manner in which he made some of his decisions on developing applications for his platforms, no one can argue with the success he brought to Apple and what he has done to innovation. In my opinion, Bill Gates brought some respect to nerds, but Steve Jobs made being a nerd cool. Think about it. When have you ever seen people of all walks of life stop what they are doing to check in on an announcement being made by a man in jeans, a black turtleneck, and white sneakers?

Rest in peace Steve Jobs. If I achieve 10% of the things you did in your short life I will be overly satisfied.

September 10, 2011

The Big Flaw in the Android Experience

My team at work is starting to make a big push to start having more of a mobile presence. This meant that I had the privilege of being sent to a training course for iOS development (via Pragmatic Studio).  I had only done some minor Android development before this so I was fully prepared to give iOS and Apple the stink eye. Something strange happened though. The more I sat in the class and worked on writing apps for iOS, the more I started to see what I consider the biggest flaw in Android. What is that you might ask? Android does not have a common look and feel across the OS and apps.

The more I wrote apps for iOS, the more I realized how each app had a common look and feel.  Even though they had different styles, they all had similar behavior and button/field placement. I could easily pick up any iPhone and open an app I would know how to navigate and what to expect in the screen layout.  When I open my Android phone, it is quite the opposite. If I open 10 apps, I can expect to see 10 different screen layouts. This is annoying to have every app behave differently and does not provide a sleek UX . Google needs to get a handle on this somehow.

I know Google has refrained from going the Apple route of thoroughly reviewing all apps submitted to the App Store, but they have to come up with some solution to the UX problem if they truly intend to dethrone the iPhone. If it was me, I would just review apps to check for obeying UI and security guidelines. That would still give developers the confidence that their app would easily and quickly pass through the approval process and make users more at ease.

July 15, 2011

Your Career is YOUR Career

I've learned a very valuable lesson this year:

You are responsible for your own career growth!

For many years I would complain about not being able to work with newer technologies and not being where I thought I should be in my career.  What did I do about it? Absolutely nothing... I basically had a "woe is me" attitude about it all until I happened to have a conversation with someone at a user group meeting. He told me that it was my career and that it would be what I made of it. I could not depend on others to push me to the next level I wanted to reach.  If I wanted to continuously learn and grow with new technologies it would have to start with me diving into them and then find a way to teach those around me so that I could enlighten others. That was the moment the light bulb blinked on for me and I have not looked back.  I am currently going through and learning all the things I should have been learning all this time.  Not only is it making me more marketable, but I am relishing the opportunity to finally be taking the next step in my career.

As a side note, here are a few technologies I've learned that most developers need to be current, regardless of their language of choice.
  • IoC Container
  • ORM Framework
  • Unit Test Framework
Feel free to add to the list.

May 20, 2011

Happy To Have a Nook Color

A few months back I received a Barnes & Noble Nook Color a few months back as a belated birthday gift. I can honestly say it has enhanced my reading habits.  I have never been an avid reader, but I am really enjoying it.  I have been able to read a few technical books on the device and really like being able to quickly jump through the book to the various sections when I need to use it as a reference.  My back is slowly thanking me as well as I am able to replace some of my paper books with the electronic version. I look forward to seeing where the device goes from this point.  Regardless, I am glad to have it in my possession.

April 29, 2011

We Need Debt Collectors

I've been thinking a lot about technical debt lately. We all have that one piece of code or module that everyone avoids like the plague because it is essentially a big jumble of hacks upon hacks. This isn't that big of a problem if it is a small piece of code that is rarely used, but what do you do if that code is one of the main pieces of your application?

I have been in a situation like this and it is not pretty. That one piece of code turns out to be the most popular for customer requests. The developers know something needs to be done about it, but with all the requests coming in, they are not provided with dedicated time to fix it. So in turn, the time needed to fix the problems increase with each feature. The developers then decide that the time it would take to fix the problem is more than it would take to rewrite the module from scratch so they start down that road thinking they are in the clear. However, they just doubled their work as they must maintain the current module as well. You get the picture...

The moral of this is to avoid the shortcuts that lead to technical debt and if you cannot, do your best to recover the debt ASAP or you will back yourself into a corner.

April 15, 2011

iPad 2 or Android Tablet???

ALERT: This is a non-nerd post…

My wife will be returning to school in the fall to start working towards her PhD and I am thinking that she would benefit from using a tablet. I just can’t decide if I should get her the iPad 2 or one of the newer Android tablets running Honeycomb. We currently have Android phones and she seems to like hers, but until I get Honeycomb in my hands I have no idea how Android translates to the tablet.

So what does a tech guy do? He asks for input from other tech guys who have gotten their hands on the devices. So please share any opinions you might have on the iPad 2 or one of the tablets running Honeycomb. You can either respond to the post or let me know what you think on twitter at @mrwillsw.

April 6, 2011

Java Doesn’t Make Money Easy

I am currently working on writing a small loan payment calculator application for Android, and trying to be a good boy and use the java.math.BigDecimal class to handle the money representations. It took me a bit to get it going, but I am really wishing I had gone “old school” and just used an integer and done all the calculations at the penny level.

The BigDecimal class methods initially seemed to be pretty straightforward. You just call the add, subtract, multiply, or divide methods like you would if you were doing normal calculations. So I wrote my test case, implemented the formula in my LoanCalculator class, and kicked off my test full of excitement about being able to tie all of this in to the Activity UI I had all set up. Nothing but red and a big stacktrace.

Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

It turns out that when calling the BigDecimal.divide() method you need to specifically set the scale and rounding method so the object knows how to represent the decimal value in the cases where it is a repeating number, ex. 2/3 = 0.6666666666666…. I got that situated, got my test passed and moved on my way. I always wondered why I never saw BigDecimal used frequently and now I know why. Unless you pay attention to what you are doing and really read the API specification you will get errors and stacktraces that some devs would rather just avoid.

March 8, 2011

Shifting Focus


It has taken me some time, but I have finally found my way. I have decided that I am going to begin to focus on mobile app development. It is an area of software development that has kept my interest. It is something I can do away from whatever job I have to pay the bills and, should I become very strong in the area, can open me up to the quickly increasing number of mobile app developer positions available.

Currently, I am working my way through learning the basics of developing for Android. I started there because I have an Android phone, but I intend to also learn how to develop for Windows Phone as it will also help me learn Silverlight in the process. Luckily, I have a few resources to help me get started with both.

I am very excited about this and I hope to share things I learn.

January 29, 2011

Following the TDD Road

Like many people, I have not yet made my way down the TDD path. My current job does not use it and I don’t think it will any time soon and I have yet figured out how to get started on my own.  Luckily, I have found someone to show me the ropes and get me started. I am pretty excited about it. I will finally be making the jump into more current development techniques.  From what everyone tells me, once I get started with TDD I won’t be able to design/develop any other way. I’m psyched.

December 1, 2010

An App Idea? Brilliant!

I think I actually have an idea for an app to write. I'm not ready to share what it is yet because I need to completely wrap my head around what it is I want to do with it, but after the funk I've been in I wanted to share that I am starting to dig my way out. It has been a while since my creative juices have been flowing so it is nice to have this feeling again.

November 27, 2010

Windows Phone 7 Development

I recently went to a WP7 talk by Chris Koenig at the Fort Worth .NET User Group. It really piqued my interest as he went through some simple examples of creating apps for the Windows Phone 7 OS. I have dabbled in doing a little Android development and I have to say that Microsoft made the task of creating apps much easier than in Android. If you haven’t had a chance to give WP7 a look, I suggest you give it a try. History has shown that there isn’t much money to be made in the current market-based mobile app development, but it can provide a nice break from the monotonous work of the 9 to 5 job.

WP7 Resources Links
Chris Koenig WP7 Resources
AppHub
Blankenblog - 31 Days Of Windows Phone 7

November 1, 2010

What’s Next?

I have to admit I have come to a bit of crossroads when it comes to this blog and my journey in software development. I think I am in need of some sort of change. When you begin to feel like you are doing routine things over and over it means it is time to try something different. That is where I currently find myself. I have been doing normal Java development since the early 2000’s with only a few small detours. I think it is time for me to truly branch out and start learning the principles and practices of other technologies. Now I just need to decide what those technologies are… Any suggestions???

October 22, 2010

Book Review: C# 4.0 How-To

I have recently started to attempt to learn more about the latest .NET 4.0 release, primarily where C# is concerned. I have been primarily a Java developer, but have dabbled in C# from time to time so I like to see some of the new things the language has added. Luckily, I won a contest on Ben Watson’s blog for a free copy of his book, C# 4.0 How-To. I received the book a week ago and have slowly been making my way through it.

C# 4.0 How-To is a book is written in the cookbook style. It provides numerous examples of how to do the most basic things using the framework. It has examples on WCF, WPF, Silverlight, and even includes a simple example on using ASP.NET MVC. I have really enjoyed it so far.  It is not a book for someone just getting started with programming, but is the perfect book for someone like me who has experience with modern OO languages, but does not know the ins and outs of the .NET framework. I am pretty sure that as I get started with some personal projects I have in mind, this book will sit by my side the entire time.

August 21, 2010

PhoneGap

I have recently started looking into getting into the mobile app development craze. I was looking for something that would possibly make this easier as I have no background in that area. A friend of mine told me to take a look at PhoneGap and so far I am pretty impressed. PhoneGap is a mobile development framework that lets you deploy your app across all the different phone types. Basically, you write your app using html and JavaScript and then PhoneGap takes care of the rest. I am looking forward to digging into it a little deeper, but thought I would go ahead and share it so others looking to get started on mobile apps might have a little help taking the first baby steps.

Links:

Getting Started with PhoneGap

.NET Rocks! Episode - PhoneGap with Jesse MacFadyen and Filip Maj

May 18, 2010

I Have Found The Holy Grails

Lately I have been doing a lot more web and UI development than I normally do. I generally do my best to stay away from anything that interfaces with an actual human, but sometimes you have no other choice.  During this work I have touched a few modules developed with Struts 1, some with the old school Java code inside of  JSP scriptlets, and some using Ext JS with Java servlets serving up JSON data.  I didn't like any of them, so once I finished my tasks I set out to do some research on web development frameworks and have come to the conclusion that if I have my choice of frameworks to use, I would use Grails.

Grails just seems so straight forward to me. In one night I made it through the Grails User Guide, and was able to get a small app up and running.  I have more learning to do with Grails, but I think we are going to become longtime friends.

With that in mind, I think it might be useful to actually do some posts on the various components of Grails. Would anyone be interested in that? Right now I am thinking something along the lines of a series of posts where in the end a full Grails app will have been built.