Pages

December 16, 2008

Hello Netbeans

After using Eclipse for many years, I am slowly making my way to using Netbeans full time. It is pretty easy to import current Eclipse projects into Netbeans (tutorial) and there are so many tutorials on the Netbeans project site that it just makes it very easy to learn new technologies. I am already using it to aid in my learning of JSF (yes, I know I am behind).

If you are still using Eclipse and have not tried the latest versions of Netbeans, I recommend you download it and give it a try. It has come a long way and is slowly becoming a tool for ALM.

November 21, 2008

Task Distribution in Legacy Application

I have been tasked with optimizing a legacy application that runs as a data calculation process within a J2EE web server. I was told that it was designed in such a way that multiple servers could be used to distribute the processing among the different servers. However, after getting into the source code I found that the data to be processed is not truly distributed among the servers and in fact they all try to process the same data simultaneously.

I need to create a true distribution of data for the various servers, but the servers do not know about each other and the current architecture is not equipped to add this feature. The only solution I have is to randomize the order of the data so that it is unlikely multiple servers will process the different pieces of data simultaneously. I think that it is a bit of a crude solution, but I feel like my hands are tied.

In an ideal world, I would modify the architecture so that it would mirror the MPP model of parallel processing. This would allow the data to be easily segmented for each server. Has anybody done anything like this before? I would love to hear about it and how you implemented your solution.

September 25, 2008

How Did I Get Started In Software Development?

I am following the lead of many other software development blogs and answering the following survey questions that have been floating from blog to blog for a while now. Here we go...


How old were you when you started programming?
I think the first time I remember writing a program was in the 6th grade. I took a class where we did some programming in BASIC, but I didn't get hard core into programming until I was 18 in college. So I guess you could say I got a late start.

How did you get started in programming?
Going into college I thought I would give the Computer Science and Engineering department a try. I was intrigued at the thought of writing software so I took a leap of faith and it worked out for me.

What was your first language?
My first language was C. I learned it in my introductory programming course at University of Texas -Arlington. I think I just showed my youth there...

What was the first real program you wrote?
Hmm... I wrote many small Hello World programs as I learned C and C++, but the first meaningful program I ever wrote was in my second year of college. I had to write a program that was a discrete event simulation of the checkout process at a local Costco. I had to model the entire process and help determine the ideal number of checkout lines that should be open during peak hours. That was the first time I got the light bulb moment in my head and thought I might be pretty good at this.

*Side note* Obviously my results were never passed on to Costco or any other wholesale store as the lines are always so unbearable...

What languages have you used since you started programming?
Wow, I've used C, C++, VB, Perl, Java, C#, and even a little Groovy. I've somehow seemed to find myself in a position where people ask me if I can do something for them in another language and I can't make myself say no. I see the language being used as more of a tool because the actual business logic is the same regardless of the language used.

What was your first professional programming gig?
When I was in college I got hired to work in the IT department for the Army Corps of Engineers. I was able to work on some of the business applications they used in-house to work with data in databases. They were nothing big, just your basic CRUD applications.

If you knew then what you know now, would you have started programming?
Yes, I would still have gone into the software field. I just would have started my own company a long, long time ago. I think that would have saved me a lot of stress and put a lot more $$$ in my tiny pockets. ;-)

If there is one thing you learned along the way that you would tell new developers, what would it be?
Get the GoF design patterns book fast and learn it. This advice could have saved me a lot of time spent on refactoring and rework in the beginning of my career.

What’s the most fun you’ve ever had… programming?
That would be my senior design project back in my years as an undergraduate. We designed and built an automated baby monitoring device that included a motion pad, and A/V that could be automatically streamed to a remote computer if predefined settings were met. Those late nights in the lab only reinforced my love for this field.

That was a lot of fun. We often forget about those times when we are first introduced to something we enjoy and love. I know I had forgotten about a lot of things like that lately. I am slowly finding my way back to that and with that new ideas are coming. I am sure I will be sharing some of them soon. Stay tuned...

August 26, 2008

Why I Love Java Way More Than .NET

So tonight I just spent two hours trying to add a simple library to a .NET project so I can simply cast an ActiveReport object as the child class my team uses to represent reports. The library could be added to the project very easily, but when I would try to build I would get an error stating that the referenced library did not have a "strong name," meaning the library had not been signed. So I changed the library to digitally sign itself when it was built and then did a new build of the project... Same error this time, but for another library that was being referenced in the referenced library. As I daisy-chained my way through all the libraries, updating them to have a digital signature I began to wish that I was back working on a Java project.

In Java, all you need to do is set your classpath to include all the libraries you need. There is no need to sign your libraries and I am very thankful for that. I have got to find a way to do more Java development at work because dealing with all this .NET mess is starting to drive me crazy.

July 29, 2008

Bringing Java to the .NET world

I was killing some time the other day when I stumbled across a pretty interesting open source project named ikvm. With ikvm, you can take Java byte code and convert it into the .NET CIL (.NET code all compiles down to CIL. Yes, Microsoft stole the idea from Java, haha). This means that all of the nice open source Java libraries we use can be converted by ikvm and used in .NET applications.

ikvm is fairly simple to use as well.

You want to convert an executable jar to a Windows application?
ikvmc -target:exe application.jar

Output: application.exe, a Windows console app
Note: GUI applications should use 'winexe' for the target.

You want to convert a library? Easy.
ikvmc -target:library awesomeLibrary.jar

Output: awesomeLibrary.dll


You can even use ikvm to run Java programs as it is basically a .NET implementation of the JVM.

I found all this pretty amazing since there are products on the market right now that charge in the thousands of dollars to do what this project does for free. I tell you, this new age of open source development is kicking ass!! This project brought us that much closer to having .NET and Java code coexisting and playing nice with each other.

July 9, 2008

Drools, You Found Me Too Late!!!

Tonight I went to my local Java User Group meeting and the topic was the use of Rules Engines to handle business rules execution, more specifically Drools. Well as I sat there and saw how simple it was to move the business rules out of the main program logic and pass the buck to the engine I had a flashback to my senior design class in undergrad.

My senior design project was a baby monitoring device that extended on the popular Angel Care baby monitor. We added the ability to stream audio and video from the baby to any computer on the local network in addition to the lack of breathing/movement alerts the monitor sends. Well as you can imagine, there were all kinds of if/else statement logic throughout the code to handle the many different scenarios. Basically, our code was ugly and hard to read. If we had been able to use an engine like Drools we could have moved all this logic into external rule files and loaded them in at run time and had nice, readable source code. Also, it would have been a lot easier to update the rules when we found errors (of course we found tons... it was our first real hardware/software engineering adventure after all).

So I will be adding Drools to my list of things to research and learn. I am already envisioning a use for it on the job if I can get enough people to buy in and get on the band wagon.

July 4, 2008

I Am "Android"-ing

So I have been working through the Google Android tutorial and I have it actually working somewhat. I'm starting to understand the mechanics of it all and how one would create an application with the various screens that are needed. Once I get the tutorial completely finished and have a better understanding I will probably start creating a small app of my own to get some more experience. Either way, I have learned a lot about developing an Android app in the past week and I look forward to learning more.

June 29, 2008

I Be... S-C-J-P

So I just made it home from the SCJP exam and I passed!!

I am not quite sure what it means for me yet as the certification is not really required for most jobs here in the US. I just hope I will be able to skip out on some of those stupid Java programming tests you have to take on job interviews. More than anything I was excited to know that my ability to cram knowledge in my brain in a short amount of time is still active from my days in college. I literally studied for the exam over the past week and was unsure if I was really prepared going into the test.

Oh well, this is done and I just have to wait for my score to be reported to Sun so I can access the certification manager site. I'll let you know if there is anything special going on there.

June 26, 2008

Java Is Where the Heart Is

As I was studying for the SCJP exam I realized how much I enjoy working with Java. I can still remember when I first started learning Java back in 2002 while I was in college. I had finally "mastered" C++ and was looking for a new challenge, when surprisingly my university added a Java course. So not only did I get to learn the language that would be the launching pad to my software engineering adventure, but I would get to knock out a course elective at the same time.

A lot has changed in Java since then, but it still remains my "go-to guy" when I am starting a project. So from this point on, I will be leaving .NET at work and spending my time with Java. I think I will be able to do a lot more as far as contributing to the Open Source community by spending more of my time with Java and that is the direction I am headed.

Anyone have any suggestions on a nice Open Source project to join to get my feet wet???

June 20, 2008

Google IO Sessions Online!!

If you are one of the people like me who were not fortunate enough to make it to Google IO, then you need to go check out the online sessions as Google has posted video and slides for all of them!!

June 15, 2008

Java Certification

Around this time last year I got the crazy notion that I would drop $200 to get a voucher to take the Java Certified Programmer exam and get become a Sun Certified Java Programmer and eventually get the Developer certification so I could have some padding on my resume. Well a year has passed and I still have not used my voucher and it expires the end of this month. So I finally have scheduled my exam and will be cramming in Java semantics into my head until then. I have no idea why I thought this would be a good idea as the Programmers certification is nothing more than a test and does not involve the test-taker to actually write any code.

So we will see if I pass or not even though I have been programming in Java since 2002. I think I should be okay though and once I pass I will be able to use the SCJP gif in my email and on here, haha.

June 13, 2008

Firefox 3 Download Day... June 17, 2008

The long awaited release of Firefox 3 is coming on Tuesday, June 17 and Mozilla is trying to break the record for most downloads in a day. Firefox 3 is bringing a lot of performance updates, most importantly the end to all the memory leak issues!!! So click the image below and go pledge to do a Firefox 3 download on June 17 and help be a part of history!!


Download Day 2008

May 17, 2008

Possible Next Project...

I've come to the conclusion that I need a nice side project to do this summer. I spent most of last year working on a simulation for my thesis. It was done in C++ with the simulation framework created by my professor. The entire time I worked on it I wished there was a Java version of his framework so I wouldn't have to deal with all of the pointers and memory allocation/de-allocation issues that come with C++. At the time I wanted to create a nice Java simulation engine and framework to use for any simulations I, or others, might do in the future.

Now six months have passed since I finished my thesis and I still feel like I want to create the framework so I am going to do it. I will be creating a nice, simple, and easily extended Java discrete event simulation library and engine. This will be my first real experience with building software for the "community" so it should be something I will be able to use to further increase my craft.

After attending Dallas TechFest and getting to interact with some of the speakers in the time since, I've realized that I need to put my knowledge to good use. This means becoming active in some of the local user groups, attending more conferences, and creating projects that can be of use to others. Just going to work and doing the limited amount of development that happens in an office environment will not get me where I want to be. I have to take my craft and career development in my own hands and take them to the next level.

I Am Ubuntu!!

After months of delay, I finally have Ubuntu installed on one of my machines. I grabbed an old laptop that was collecting dust, popped in the install CD, and a boot and double-click later I had a computer with a nice Linux OS. I had a little problem getting my Broadcom 43xx wireless card to work with Ubuntu, but it only took a search of the large Ubuntu community forum to find a solution.

Here's a screenshot of my Ubuntu I took while I was doing some research for some work I plan on doing with Groovy.


So far, I really like Ubuntu. There are a large number of apps readily available to be installed at the click of a button. It also doesn't hurt that Ubuntu comes with Open Office, Pidgin, and Firefox already installed and ready for use. I've yet to find anything that I can't do with Ubuntu that I could do with Windows. I can't wait to get into it in more detail.

So if you have an old PC laying around, load it up with Ubuntu and you'll have a nice Java development machine ready to go. I know I already have plans for some nice Java apps I am going to be able to develop on this machine!!

May 13, 2008

First Taste of TDD

Yes, I am one of those people who have fallen behind the curve. Until today I had not joined the ranks of the Test Driven Development enthusiasts, but now I am certainly one of them. I have been working on a reporting application at work that has a list of very vague and constantly changing requirements. The only thing that has not changed is that the application must be able to execute report definitions and export the output to one of seven file formats. As you can guess, the thought of having to run a report definition against my application seven times each time I was going to make a tiny change to see the effect was not appealing. So I turned to TDD.

Now I have done a lot of reading on the various xUnit test frameworks, but had never actually used any of them. I was a little worried that it would be difficult, but I got through the NUnit install fairly easily and had four test fixtures implemented by the end of the day. I saw my fair share of the dreaded "red bars," but I am proud to say that by the time I left for the day I was seeing nothing but green.

I am so mad at myself for not trying this out earlier as it would have made my life so much easier. I remember in the past having to do long build and deployments to test a small change to make sure it had not changed the expected business logic. All that time I could have been just looking for the green, haha.

Now I just need to find some good TDD books so I can convince the guys that sign the checks that it's the way to go. I know.... Good luck with that, haha.

May 6, 2008

Android TrivialGPS Demo

I made contact with Jason Hudgins of Droidworks and he graciously gave me a link to a blog post he did on the Android GPS application he demonstrated at Dallas TechFest 2008.

Blog Post: http://jasonhudgins.blogspot.com/2007/12/cruising-around-with-android.html
TrivialGPS Source Code: http://code.google.com/p/trivial-gps/

He explains how the application code was written and gives some pretty good insight on some of the basic concepts of the Android SDK.

May 5, 2008

Dallas TechFest 2008 Recap

Well I made it out to Dallas TechFest 2008 and it was a great pleasure to be there. There was a large turnout and it was very well hosted. I just want to give a little recap on the day.

The day was broken up into 5 sessions across .NET, Java, Ruby, Emerging Technologies, and Flex. I was able to get in a session for each track except for Flex, as it does not interest me at this time (though I still grabbed one of the free Flex Code Camp t-shirts...). Here's a little info on the sessions I attended.

Google Android by Jason Hudgins, Droidworks
This is the platform for mobile devices that was initiated by Google. Jason Hudgins gave a nice overview of the Android SDK and had a few demos that showed how easily an application can be built for an Android phone. I mostly enjoyed the demo he had that tied the GPS capabilities of a mobile device with the Google Maps capability that will be included in the Android phones. The demo showed you can literally track your current traveling path on your phone just like you would with any of the handheld GPS devices that are currently available.

Pardon the Interruption: What's the Deal with Groovy? by Paul Holser and Derek Lane, Semantra
In this session I finally got some well overdue exposure to one of the new languages that run inside of the JVM. The speakers gave a nice overview on how Groovy was different (and in some cases easier!!) than Java. They then went through an example on how easy it is to convert an application written in Java to Groovy without much effort. I though this was very interesting and made a mental note to look more into this in the future.

Groovy is something that could come in handy for writing unit tests as it does not require as much use of types as Java. With TDD your tests must be written before you do any real development and with the less restrictive Groovy those tests would be very simple to write (not to mention that Groovy has unit test capabilities right out of the door...).

Instant Web Applications with ASP.NET Dynamic Data by Jason Kergosien, Ingen Systems
This was a very nice session on one of the new features coming to ASP.NET. I am interested in getting into ASP.NET in the near future so it was nice to actually get some real exposure to it. The new Dynamic Data package is very powerful. It allows you create a fully functional data driven web application in the span of minutes.

In the demo that was given, the speaker created a simple CRUD application based on the Northwind database by using the Dynamic Data wizard. The application had data validation right off the bat with no extra work done, even including the enforcement of referential integrity. You can't beat that.

REST: The Basics and Not So Basic... by John Heintz, New Aspects of Software
A nice talk on the different pieces of REST services. There were no demos in this session so I was a little disappointed, but it was nice to get more insight on how REST really works. It reminded me a lot of RDF, which I used in the past. The speaker gave a link to the thesis that specified REST so I will have to get my hands on it and give it a read. I wonder if it as good as my award-winning thesis. (shameless plug)

Robotics Studio: Managing Concurrency in the Real World - Even If It's Just Virtually by Phillip Wheat, Microsoft
This is the session that I was looking forward to all day. I have a Lego Mindstorms NXT robot kit like the one Phil Wheat uses in his demonstration. He was at the Microsoft booth before his session and I got to speak with him about his ideas for uses of Robotics Studio for not only the NXT, but for areas outside robotics. What really excited me though, was that he mentioned how you could use Robotics Studio to write programs to collect data from small external sensors and then deploy it to a large number of small, inexpensive devices that have wireless communication components. Then, because the Robotics Studio provides modules that will allow the programs to be written with mesh networking capability built-in, the devices could form a mesh network and allow the data to be easily collected by connecting to one of the devices. Sound familiar??? It should because that was exactly what my graduate thesis was. I let Phil Weat know this and we had a nice talk about it. Amazing...

Now, in the session Phil Weat let everyone know that Microsoft has created an on-line robotics competition where contestants use Robotics Studio to create robots that will compete in virtual competitions. There will be about one competition a month and the top contestants after they are all completed will win $$$ and be sent to a finals competition where actual robots are built. I will probably give it a shot!!

All in all, the day was a lot of fun and I came away with some free goodies. Not to mention, I won $50 gift card to Fry's a.k.a. Nerd Nirvana. I am looking forward to Dallas TechFest 2009 and I think I am going to start making it out to some of the user group meetings in the area.


April 27, 2008

Dallas Tech Fest 2008

Next Saturday (May 3) I will be attending Dallas Tech Fest 2008. It is basically a day event where other developers such as myself will get together and learn about some exciting things others have been doing with various technologies. So I will be learning a lot and more importantly, I will be coming hope with some free goodies (hopefully).

If you are looking for a free chance to learn some new things then this will be the place to be. So far there are session tracks in .NET, Java, Ruby, Flex, and Emerging Technologies. You can attend an entire track or attend different sessions in any of the tracks (as I am).

It should be a good time and I hope to see you out there. I will be sure to give a nice update on Dallas Tech Fest 2008 once I have attended.

April 13, 2008

The Crazy Places Life Takes You...

Well folks... This past Tuesday I found myself somewhere I NEVER thought I would ever be. I attended a Microsoft Launch Event for their 2008 versions of Visual Studio, Windows Server, and SQL Server. I did not know what to expect when I was arriving because as many know, I just recently started using MS development products and that was because I was forced to do so at a new job. Microsoft has a tendency to "brainwash" developers to a degree so I was wary of going to what I thought would be an all day sales pitch, but... I was WRONG!!

Microsoft knows how to throw a good party and send the attendees home with some nice freebies. I got free standard versions of all the new products as well as a free version of Windows Vista Ultimate SP1. I haven't used any of it, but I plan to begin reviewing it all in the next few days. I'm not fully converted to being a MS developer and I never will be, but I'm starting to see that Microsoft isn't that bad. They just catch a bad wrap for all the money you have to spend on licensing, but if you look past that none of it is any different than any of the other companies pushing development products.

February 23, 2008

Awards!!!


I received my award for my thesis last night at the annual awards banquet for the engineering college. It was nice to be recognized for my achievements as I put a lot of work into the thesis research. It was hard, but I really enjoyed it all. The fact that I enjoyed it so much makes me really want to consider doing the PhD program. Mrs. Black Dilbert is considering getting her PhD as well so maybe we can be study buddies. Hmm... The Dr. Black Dilbert's doesn't sound too bad.

February 20, 2008

No Design Questions in Interviews???

I'm sitting in on a technical interview tomorrow and as I was skimming through the resume and coming up with questions I had an interesting thought...

Why do design techniques never come into play in technical interviews??

Now I know that some companies might possibly give someone an "oral examination" where they have them design a component on a white board, but in all my interviews I've never been given a test or had to answer real questions on OOAD. Now, I have been given programming tests out the wazoo. But honestly, who cares if you can program the world with C# delegates or perform pointer arithmetic (yuck!!) if you can't take a simple functional specification document and transform it into an end product that meets the end user expectations?

If software engineering is ever going to truly be considered an engineering discipline we need to move past the processes of simply testing knowledge of programming languages. Programming languages are nothing more than tools to a software engineer. We need to be hitting the software engineering concepts as the true gauge in hiring as I have met many a person who could ace a programming test and then turn in an application where all of the code existed in one long file...

Secret Revealed...

So I teased you a week or so ago with the promise of some upcoming news... Well the news is....

As you know I decided (at the last minute) to write a thesis to complete my Master's degree. It took a lot of work and a lot of sleepless nights, but I completed it. All the time I put into it has come back to me because I have won an award for my thesis! That's right, Black Dilbert can be considered an "Award-Winning Author" now. My thesis was named the "Outstanding Master's Thesis of 2007" for the Computer Science & Engineering department. I was very shocked when my supervising professor sent me an email with the news two weeks ago. It was very hard to not share it and tell the world as I am very happy about all of this.

The professors have been telling me that I need to come back for the PhD program and I think they might be right... Who am I to deny the future software engineers of the world the opportunity to learn from an "Award-Winning Author" haha!!

On another note, my supervising professor has just been offered tenure so the good fortune is all around these days.

February 13, 2008

Ubuntu???

So, I am finally getting drawn towards the Ubuntu craze... I have an old PC that has no chance of being upgraded to XP or Vista. It would be a waste of time and money to do either. So it is going to become my new development and storage PC. I don't think it will be too difficult, but I need some other things to happen first.
  1. I need to actually go buy some CD-R discs so I can burn the install disk.
  2. I need to get a KVM switch so I don't have to have 2 sets of peripherals.
  3. I need some actual time to sit down and do the install, haha.
So wish me luck!! I'll post screen shots once I get it up and running. Who knows... If I really like it I can put it on my old laptop as well!!

February 5, 2008

Breaking News...

Oh, I only thought I was done with academia for a while. I may have some exciting news on the academic front, but I cannot share it yet. I'm waiting on a few more things to come through and then I will share. Until then... wait in suspense!!