Shawn Hartsock
Explore ideas across essays, reference pages, and courses.
Follow an idea
Choose a topic to explore. Recent writing comes first.
Recent pages
Post
Out-group review
In an agentic workflow, the reviewer should come from a different model family than the author. The evidence is mixed, so measure your pairing.
Post
A by-line for every model
This site now credits the models that helped write each page, with their exact identifiers, and keeps a revision history.
Post
Your Human Is an Agent Too
Managing several AI coding agents, and why the human sharing all of them is the bottleneck.
Post
Blogging on medium.com/@hartsock
I'm trying out blogging on medium.com/@hartsock for a while.
Post
Promotion, pyVmomi & future updates
I was recently promoted at VMware and I have new duties. The new day job (as I lovingly call it) is taking a great deal of time that I would normally devote to side projects like pyVmomi. I am hoping we will be able to f
Post
Return on Investment: high, low, and durability.
I'm heads down focusing on delivering a critical new feature to another team. But, I wanted to stop a moment and mention some of what drives how I prioritize things, how on occasion I'm directed privately to deprioritize
Post
How to make a choice
Today's post is just general life philosophy. Nothing technical, and just some fatherly advice of the kind I might pass to my sons. Here's a simple set of things I ask myself before I choose to invest myself personally i
Post
pyVmomi and VMware’s internal R&D Innovation Offsite for 2015
I've been invited to speak at VMware’s internal R&D Innovation Offsite (RADIO) on the topic of my experiences with pyVmomi. This is a rare honor, and I'm very pleased even just to be invited. For the pyVmomi community th
Post
retrospective and prospectives
You're busy, I'm busy, so here's a Summary of the post's points. - I'm focusing on pyVmomi for a Q2 release (hopefully earlier) - I'll be assisting in on boarding rbVmomi contributors from inside VMware in Q2 (I hope, no
Post
Projects status for Q4 2014
I'm presently allocated to several other vmware projects that are running up against hard deadlines in January 2015. Because of these resource constraints, I've been forced to remove the time lines from my other projects
Post
This week on pyVmomi/rbVmomi
Last week, I took on a high priority task for VMware so my work on pyVmomi and rbVmomi had to move down in priority for me. I'll continue to post regular updates on progress but the velocity will have slowed on both proj
Post
Software Engineering at scale is Social Engineering
This week, I spent time at VMware's HQ in Silicon Valley. I gave a number of talks on my lessons learned with pyVmomi and rbVmomi and gave several calls to action. This week, I'd like to share one of the more profound le
Post
This week in pyVmomi & rbVmomi
rbVmomi - version 1.8.2 is liveon rubygems - release notes are here pyVmomi - here's an example of using vcrpy as a flight recorder for pyvmomi. I'm in Silicon Valley next week for an unrelated project so it will likely
Post
This week in pyVmomi & rbVmomi
pyVmomi Not much motion this week. I've spent the majority of the week focused on coming up to speed on rbVmomi. Of note we did have a bug report of sockets getting left open and I'll be spending quality time debugging t
Post
On the topic of rbVmomi
Earlier this week I started helping out on the rbVmomi project. My involvement is just to help take some pressure off of Christian Dickmann around reviewing and releasing the next version of rbVmomi. Compared with pyVmom
Post
How to use Conway's Law for good and not evil
If you've been paying attention to our github repository you'll have noticed some noise around the following API additions to pyVmomi... - SMS - SPBM - EAM These are all presently scheduled for the next major release of
Post
Developer Community Engagement
If you've not been following along at home, pyVmomi was run in a different manner from most VMware Open Source projects. It's been a bit of a social experiment. The last two weeks since our release, I've been working on
Post
This week: Retrospectives
This was a short week, so I would like to take a moment and reflect on where we've been since May. This week I've been getting ready for a creating a set of new spikes around a few of our unanswered sample requests. Out
Post
pyVmomi v5.5.0-2014.1.1 - bug fix - is available from pypi.
This week was VMworld and we still managed to release a quick turn-around bug-fix release for pyVmomi. Up on pypi right now is the v5.5.0-2014.1.1 release. Part of the changes made involved improving our release process
Post
pyVmomi: preparing for 5.5.0-2014.1.1 our first bug fix release.
I've been heads down this week, so a short update this time. Last week, we released pyVmomi 5.5.02014.1 to pypi. This week we started work on preparing RPM and Debian packages which will allow pyVmomi to be included with
Post
pyVmomi version 5.5.0-2014.1 is available.
Earlier today with help from other VMware employees and python IRC users, I pushed the buttons necessary to release pyVmomi version 5.5.0-2014.1 to the general public. This is the first open source community built and re
Post
On the topic of Goals and Objectives for pyVmomi
As long as I'm working on the pyVmomiproject, its goal will be to become the single best way to talk to vSphere technologies. This is a broad and hard to measure thing, and with luck as VMware technologies evolve, it's a
Post
Notes on Developing pyVmomi itself.
Most of my development work over the last few weeks has been spent finding more efficient ways to develop pyVmomi itself. The problem with networked libraries is that they sit between metal and user code. (image removed,
Post
What every developer should know about testing - part 3
For the pyVmomi folks in a hurry, this video covers the big shift in the project and the code from the video is here. This week I'll finally dig into some detail on fixture-based testing. Summary > If you don't bother re
Post
What every developer should know about testing - part 2
The short version of this post: pyVmomi contributions from this point forward will be required to follow this pattern. They include a fixture based unit test build around vcrpy. > Note: While these posts are python speci
Post
What every developer should know about testing - part 1
The short version of this blog post is that this week and next week on pyVmomi will be spent on radically improved testing code and processes. This testing process will become part of the commit cycle. And, it's about da
Post
pyVmomi and the road to Python3 - part 3
The Good News It works! And without major surgery! I currently have a working branch of the pyVmomi code base that runs on python 3.x interpreters. We are working to get this version usable under Python 2.6, 2.7, 3.3, an
Post
pyVmomi and the road to Python3 - part 2
Short week this week, so a short update ... I've spent most of my time with my head in the debugger flipping between Python 2.7 and Python 3.4 interpreters. I've been observing the differences in behavior between the two
Post
pyVmomi and the road to Python3 - part 1
This week in pyVmomi development I've been working onPython 3x support. In my opinion this is the most important move to make in pyVmomi development. While python 2.7 will have a long life ahead of it with support contin
Post
pyvmomi-tools and alarm ack & reset
There are going to be use cases like "Ack & Reset vCenter Alarm implementing hidden API method" these are going to be relatively common and yet reasonably outside the definition of an official API binding. To handle this
Post
Documentation is live
This week I've been dealing with documentation for pyVmomi. I decided to go with the Google Python Documentation standard for this current set of docs because the Google standard is very human readable and renders reason
Post
on the topic of python documentation
I was going to talk about task management and how the pyVmomi API works with that. But, this week was eaten up by documentation work. If you're not aware there's a number of Python documentation styles out there. In part
Post
pyvmomi-tools: providing library extensions and tools outside of the pyvmomi release cycle
Last week I mentioned how some sample requests on pyvmomi-community-samples were bringing up a few interesting topics. These were issues I've seen elsewhere and desperately wanted to fix. I've found that new programmers
Post
pyvmomi-community-samples the tags and what they mean
This week on the pyVmomi Community Samples project I created a list of tasks to be accomplished. The pyVmomi library itself is a very bare binding onto the vSphere Management API. This is by design since the library has
Post
How pyVmomi is something different
I'm largely responsible for the current set of Java samples vSphere WS Management SDKreleased with vSphere 5.5 last fall. It was really cool for me, for the first time in a 20 some-odd year career to actually be involved
Post
Let's start over again...
After many adventures and troubles I find myself here again. Let's try this one more time. From the top. I'm Shawn Hartsock and I happen to write software for a living. I don't specialize. I'm a generalist. I've worked o
Post
On the topic of reviews...
Over on the OpenStack mailing list, this article from IBM Developer Works has been making the rounds. The primary objection to the article is the prescriptions it makes on code size for review. No more than 200 to 400 li
Post
OpenStack + vSphere 5.0 - how to solve the WSDL parsing issue
If you're attempting to use the OpenStack nova-compute driver for vCenter or ESXi and you're running version 5.0 of the API's on your VMware products, you might see a stack trace like this... Example trace: 2013-08-09 19
Post
The patch dance - OpenStack style.
If you are working on patches for OpenStack and you find yourself building patches that rely on other patches... what do you do? Well, you could maintain all your patches in one big directory and hope not to screw someth
Post
OpenStack Meeting times
If you are interested in joining in on the OpenStack discussions the meetings are documented here. They are conducted online in IRC forums or alternatively in Valhalla. I've created this Google Calendar feed from the wik
Post
OpenStack and you...
I'm only a few weeks old in the OpenStack community and I can tell you that this is by far the most democratic open-source project I've ever seen. Typically there is a project owner who for better or worse is the guy you
Post
Attending OpenStack Summit 2013 in Portland, Oregon
I've officially joined the OpenStack effort here at VMware. To that end I'll be shifting my OpenSource efforts to support OpenStack related tools. That means I'll be shifting my posting habits and be talking about more O
Post
Groovy and SOAP and the JVM
As I'm working out SOAP + Langauge du jour problems I continue to be impressed with the utility embedded in the JVM. Rarely do you get to develop software in a completely greenfield project. Most of us have to integrate
Post
Code Samples and the argument for WET versus DRY
In my new role at VMware I've been tasked with writing new code samples for the various API that have been created for supporting the Ecosystem around VMware's product line. This has been a very different experience for
Post
Grails Plugin Testing Strategies
I've been maintaining Grails plugins for years now both on the wild-wild web and in private enterprise-only plugins. In this talk at GR8Conf I shared stories from that history, the problems I encountered and how I solved
Post
Groovy Integration Patterns or The Grobnicating Frobnicator
I just gave the Groovy Integration Patterns talk at GR8Conf.us otherwise known as the Grobnicating Frobnicator talk. Where I take us on a journey through techniques on introducing Groovy into Enterprisey environments, al
Post
Unix Philosophy meets Java
In all the literature on computing there's one quote that I find the most profound and illuminating. In three sentences it successfully encodes what I intuit must be a fundamental law of system design. It is the first of
Post
there's engineering and then there's social engineering
Twitter is on the face of it such a simple application that it can be built in 40 minutes in Grails. For a consummate software engineer with state of the art tools, building a twitter in clone 40 minutes that can scale..
Post
Beyond Finite State Automatons
Has someone moved computing beyond the Finite State Automaton in recent years? I'm unaware of anyone providing a system of computation that is in wide spread use that is not a Finite State Automaton. If someone has pleas
Post
The answer is 5
Many, many, years ago I got the chance to work with a highly seasoned developer. This guy had helped write tools like make. Yes kids... he worked on an early version of make. So as he came up to speed on our new system I
Post
Clojure User's Group @ Google NYC [Feb, 2011]
This post was sitting in my drafts bin for a while but I decided to finish it off and post it today. My apologies if it is a bit dated and not up on current Clojure syntax. I was at Clojure User's Group, NYC back in 2011
Post
POSSCON 2012
I had a great time at POSSCON 2012, met up with Steve Graham (a fellow Triangle Resident), got to talk to Jon 'Maddog' Hall, and a whole host of Open Source luminaries. I even learned what a Palmetto is. My talk was An I
Post
Functional Programming in Java @ TriJUG
Last night's slides presented at TriJUG. Code is available on github. Special thanks to Muhammad Ashraf for his contributions and peer review.
Post
F.lux
F.lux is a free as in beer application that alters the color of your screen. It can help people who have problems sleeping after heavy computer use. At minimum it makes your laptop feel more cozy at night. I don't normal
Post
Google+ ate my blog.
I am simply not blogging anymore. The content I would put here is ending up in Google+. I'm not sure why that is. Using Google+ seems more targeted and lighter weight than using a blog. A blog feels heavier, more officia
Post
What is Computer Science?
> "Computer Science is the Science of Computing Machinery." When I hear this I want to put a stick in the eye of the person who just said it. That's not a definition, it's a slogan. Yet, this is the definition used in mo
Post
The Life Cycle of Plugins & Addons in the Enterprise
I'm probably one of the few people in the world that has had the opportunity to work with both Grails and Spring Roo on extended projects. In both environments I've discovered a strategy around code reuse that is a bit d
Post
The Highly Monitored Grails Application @ SpringOne 2GX 2011
My second talk at SpringOne 2GX was "The Highly Monitored Grails Application" and it had a great turn out from a large and lively audience. This was fantastic especially considering I was presenting as the very last pres
Post
Performance Tuning Grails applications at SpringOne 2GX 2011
I just got done with my SpringOne 2GX talk on Performance Tuning Grails Applications. When I proposed this talk six months ago there was no material on this subject. Since then a fantastic webinar came out. At the start
Post
Speaking at Milwaukee Java User's Group
I'm honored to be speaking at the Milwaukee Java User Group coming up on September 27th. If you are in the area, I'd be glad to see you and hear your input on the topic. I'm leaving my normal fare of talks on Groovy and
Post
Software Development versus Software Engineering
One of the most useful things that I have gotten from studying things that I call "Demingesque " is the idea of Kanban. Kanban means "sign board" and is a way for projects to display information about themselves. In its
Post
Washington DC Area Groovy User Group
(image removed, src was: http://photos2.meetupstatic.com/photos/event/8/f/1/global22682289.jpeg) I'm honored to be presenting at the Washington DC Area Groovy User Group this Wednesday. If you are going to be in DC I wou
Post
good code, great code, and really great code
There's great software, and there's really great software. The stuff that's great is the stuff that works well and is well documented. Ever need to figure out something? Go read the docs, if you screw up then the softwar
Post
The seven stages of dealing with PMD rule violation
Is your build broken from a PMD rule violation? Has your project has been set up so that a PMD rule violation breaks the build? On occasion even the best developers slip and push code that is in violation of the PMD rule
Post
The one about scope. And tacos.
Consider the following paragraph. > Mary and Sally are friends. Mary gives Sally a gift for her birthday. Mary hangs up the telephone. Are there any syntax problems in the above paragraph? Are there any grammar problems?
Post
GR8Conf
I'm very pleased to be speaking at GR8Conf this year. I'll be covering two topics. I hope the Groovy communities find them interesting. The first up, how to use Domain Specific Languages in order to reduce accidental com
Post
Groovy/Grails: How to disable a controller
(image removed, src was: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCG0Kg4cLXOi8v7CsxAfbFXd5nZV6o6Pp7JfwXHxN5ZWOwGGVKL4YDo6x5Sv46zsqm1EBOCs3OGJrhDBB44nUYiq7OjY1UPOsJBqk7U-qCJGZ1DvxxegGAHQxXKNW1Gb1gHx3g/s
Post
double entendre
I have said "The Future of Java is Groovy" and I meant it deliberately as a double entendre. The future of Java is indeed groovy and is indeed Groovy. This does not mean Java will be supplanted by Groovy, or some other l
Post
A late New Year's post.
tl;dr I am a consultant now. It's a quite late, but I did make some new year's resolutions. One was a personal fitness resolution to run a mile every workday. The other was a professional resolution to "get out there" mo
Post
On the topic of Grails Audit Logging Plugin version 0.5.4
Last night, I released a new version of my Audit Logging Plugin. Release notes are here. There had been an outstanding compatibility issue with Grails 1.3.x based on JUnit 4's Integration tests. The bug documented here h
Post
TriDroid: QRCode, Linkulator & other "move the data" ideas
At tonight's TriDroid we discussed QRCodes and other techniques for moving data between the environment and our Android phones. Here are hastily-hand-drawn my slides for anyone interested in them. Other things we talked
Post
App Inventor
If you haven't heard about it App Inventor is available to educators wanting to teach students about programming. It allows novice programmers to create Android applications using a graphical programming environment simi
Post
Three Small Ideas
I was glad to be interviewed by DZone a while ago. The second interview was on my current Open Source work and I gave what is probably a non-traditional answer on why Open Source contribution is important for a developer
Post
Grails + Acegi + CAS + Proxy Ticket
Should you have Acegi + CAS setup in Grails and you want to proxy a URL secured behind the same CAS instance you should do something like this: URL url = new URL(urlString) SecurityContext ctx = SecurityContextHolder.get
Post
When NOT to use a Domain Specific Language
There's really one rule I can use to sum up why you would not use a domain specific language. > Do not use a Domain Specific Language when implementation specifics out weigh domain specifics. This one rule covers numerou
Post
Never edit icky JBoss XML files again!
Do you have a JBoss application server? Do you have configuration files in that server that need to be edited or changed periodically? Do you have an allergy to XML? Have I got a solution for you! JBoss has the amazing a
Post
QRCode Linkulator the interesting bit.
For me the interesting bit about writing QRCode Linkulator was creating a PNG on AppEngine. The JRE Class White List doesn't include any Graphical libraries. Notice that most of java.awt. is missing? Why would Google do
Post
QRCode Linkulator speaking Gaelyk
I've just written my first application using Gaelyk a Groovy based framework for Google App Engine. I ported the qrcode plugin I had written for Grails over to Gaelyk in a matter of hours. This isn't really an applicatio
Post
Domain Specific Languages @ TriJUG
This version of my DSL talk focused on architectural implications of Domain Specific Languages. Less time is spent on language details and I dive right into creating the language.
Post
Speaking at TriJUG
I'll be giving a version of my DSL talk at TriJUG coming up March 15th.
Post
Domain Specific Languages: fighting accidental complexity in a sea of technology
I had a great time presenting at UNC's Programming Practices group today. This was the first time I've presented in about a decade so I'm glad that folks stuck around and gave me feed back. Slides from the presentation:
Post
Surprized by how little I use multithreading...
Back in 2000 I was working on multithreaded applications. Since I was working in Posix environments in C I used the Pthreads library. I learned to use Pthreads from both C/C++ and Perl contexts but I had trouble with man
Post
Simple Grails Plugin Repository Mirror Script
We needed a local offline repository for Grails plugins. I thought this would be a good chance to contribute a grails application to the community. It turns out there already is one called plugrepo that you can just down
Post
Apache Ivy: Componentization? What's hot and what's not?
I'm working with Apache Ivy over the next few weeks. The problems I'm trying to solve are around the testability of a J2EE application and its functional decomposition. I have chosen Ivy after an evaluation period due to
Post
Should I put that logic in my Grails domain class, service class, or a controller?
I don't honestly know. I do have a feel for when this is appropriate and when it isn't. For example I think Anemic Domain Model is a valid anti-point. It completely jibes with how I feel the benefit of an Object Oriented
Post
A Programmer's Isogloss
One of my coworkers has a degree in linguistics and this idea comes from talking with her about language and isolation. Call it my you should really go to that conference rant if you like. The topic of conversation give
Post
Configuration Best Practice
So rattling around in my head is this idea of configuration. When should you configure? What should you configure? How much should you configure? As a rule of thumb I need to perform a software task in three relevant con
Post
Working on a new Audit plugin release
I'm working on a new release for the Grails Audit Logging Plugin that deals with issues some people were having with transactional databases. I'd like to test this on multiple databases and with multiple configurations.
Post
Groovy Automatic type casting tricks...
I've been working on a Domain Specific Language. We wanted to hide the fact that you were passing string parameters to methods... so you could say things like: something 'foo' something foo ...and they would be equivalen
Post
Grails in a J2EE world - RMI @ GroovyMag
In this month's GroovyMag I talk about using Grails code from a J2EE application using RMI. It's some practical work with the remoting plugin. Thanks again to Craig Wickesser for editing. This is my last installment in t
Post
Grails in a J2EE world - The Database @ GroovyMag
In this month's GroovyMag I talk about sharing a database between a J2EE application and a Grails application that is using GORM. If you haven't spent anytime working with concurrency in database applications you will re
Post
Grails in a J2EE world - The Web @GroovyMag
The new GroovyMag is available. This month I've made a contribution titled "Grails in a J2EE world - The Web" as I've been exploring ways that Grails and J2EE applications can interact I've found that the topic area is s
Post
Grails 1.1, JBoss 4.2.x, and Oracle xmlparserv2.jar
If you want to use Grails 1.1 and the XMLType from oracle (the class is found in the Oracle jar xdb.jar) then you're going to need the Oracle xmlparserv2.jar in your Grails project. The problem is that Grails 1.1 will di
Post
Grails in a J2EE world Part "zero" in GroovyMag
I've been very busy this year. I've been working with J2EE a lot lately. Normally you wouldn't necessarily be proud of working in J2EE but I'm also learning about a unique and thriving industry in my region. Namely the b
Post
Data validation teirs
Data is either valid or invalid right? Well, sort of. I'm working with medical data like the Blood CHEM-7 test. This data has the possibility of being valid and being abnormal. So there is this concept of valid capture d
Post
Don't Bother Me with the Details
When the framework essentially gets out of your way and lets you work with the level that you are interested in at that moment... that's a good framework. If I'm working Ajax and UI I don't want to be bothered with secur
Post
New Year's Thoughts
If it takes ten years to get good at software development then I'm over due to get good by now I suppose. I am also going to have to take some calculated risks in the next year. So let's see what I was talking about last
Post
Groovy related random links
Here's some links in no particular order and for no particular reason... Groovy + Ant = GANT - Guillec treats us to a Venkat inspired tour of Gant. Practically Groovy: Of MOPs and mini-languages - an Andrew Glover classi
Post
Top Ten Groovy Programmer Exclimations...
10. It doesn't hurt my mind anymore! 9. That's what a Mock Object should be! 8. Why didn't I try this sooner? 7. I get it now! 6. I could use this everywhere! 5. Now that is Groovy! 4. Fascinating. 3. Ah ha! 2. maniacal
Post
Why Debugging is hard...
Post
Groovy Grails and your URL
Getting the URL you are at in Grails is pretty easy. Just use the dependency injected properties inside your controller and some of the nifty Grails built-in helpers. For example, want to know the application you are run
Post
21st Century Network management
Post
Oblong Industries
About once a year I see something like this: http://oblong.com/ and it renews the passion I have for technology changing the way we interact with our machine creations. I only dream that someday I can create a work that
Post
SearchGroovy.org
Just in case you weren't aware. There is a search engine for Groovy Programmers. The GroovySearch.org is a Google custom search engine that is maintained by Jeremy Rayner, Guillaume Laforge and some other guy. (no really
Post
Fighting Annotation buildup
It was called XML hell. More precisely XML configuration hell. You would spend hours and days fighting with XML configurations that grew in size and complexity until they became a nightmare. They call it Annotation hell.
Post
Groovy is to Java like C++ is to C?
A nearly heretical thought entered my mind. C++ was a proper super set of C. I used to work in C from a C++ compiler for example and the advantage was that I had C with a little bit of syntax freedom. Like the ability to
Post
Top Ten reasons *not* to buy GroovyMag
Here are some reasons NOT to read GroovyMag... 10. You don't care about the future... 9. Programming is a fad... 8. You fear change... 7. You are a rock, you are an island... 6. The internet is for losers... 5. Nothing w
Post
More fun with Groovy and Reflection API
This time in a TagLib I need to see all the properties of a domain class but I don't want to look at anything that isn't sent to hibernate. import java.lang.reflect.Modifier static getFields(obj) { def names = [] def fie
Post
Top Ten ways to spot a Groovy Programmer
10. Still addicted to Java but doesn't complain about getters and setters 9. Sunglasses. Really. Sunglasses. 8. More productive and lest angsty 7. Not worried about Java 7 6. Breezes through XML and JSON work 5. not afra
Post
It's Programmable... It's configurable...
> How much difference is there between a program and a configuration? Consider that a program is a set of instructions for a universal Turing machine. If a configuration determines how a program does something... if the
Post
GroovyMag
I'm very happy to see the first edition of GroovyMag published. Please go out and support the Groovy Magazine for Groovy and Grails developers. I'd love to see this magazine get some good circulation! I'm thankful to Mic
Post
It is all UI even API
It is all UI and UI leads us down certain paths. This is an idea I've had for a long time but it hasn't been posted here before so let me lay down for you the why behind the tag line of this blog: "The power of software
Post
Already voted. It's too late.
I usually use this space to make technical posts but I just want to say this: I've already voted. You can all stop robo-calling me, spamming me, feeding me your opinions... threatening me if I don't vote with you... what
Post
Programming Language as Human Computer Interface
Programming Languages are in fact Human Computer Interfaces and should be treated as such. The design of a DSL should match the thought patterns of the domain experts in a way that creates as little cognitive dissonance
Post
Still alive...
Still alive, working very hard.
Post
Convenience To Security Scale
I was thinking about a few things... we're doing a kind of security system audit at work and I've come up with a few koans about it: Convenience is inversely proportional to Security. The more secure something is the mor
Post
Comparing Stats on this blog Feb & July 2008
I've been keeping stats on this blog since Febuary 1st of 2008. Here's some numbers. Don't know if they are good, bad, or whatever. February hits: 1,503 July hits: 2,681 So I've not yet doubled my traffic in the last six
Post
UK Gov't and Lost Personal Data
Slashdot is running a story on UK Gov't Lost Personal Data On 4M People. I follow these stories (as previously posted here) because the management of Personally Identifiable Information is probably one of the hardest and
Post
Anti-Management
Bruce Webster is fast becoming one of my favorite IT-management authors right now. If you haven't already,1 check out his article The Dead Sea Effect which summarizes why some companies have high turn-over and only retai
Post
Frameworks, delicious frameworks...
This blog has been on "auto pilot" for the last few weeks while I've been on vacation. As my reserve of scheduled articles has dried up I guess it's back to work. I'll be at the trijug meeting tonight. We'll be hearing f
Post
Software waste
Consider the plight of Microsoft and their rampant success that has also sown the seeds of their current woes. Also consider the plight of the BBC and their strange web platforms. And, I think we can start to see the ins
Post
Software is a system of ideas
Take a system of ideas, turn it into code, let people interact with it. Software that works is software where everyone's ideas match and are consistent with a reality that can be represented in the computer. If your idea
Post
Technical Debt and Technical Credit
The Martin Fowler entry titled Technical Debt has probably been the single most profound article I've read about software design in the last five years. It honestly describes why quick and dirty is a necessary evil and w
Post
Maintenance Software Architect?
If you can accept the idea of a Software Architect the idea of a maintenance architect makes sense. However, in the circles I travel in there is actually some resistance to the idea of a software architect at all. This r
Post
Proposed at BarCampRDU: iBatis plugin for Grails
One of the stranger ideas that came out of BarCampRDU this year was that we might do an iBatis plugin for Grails. Such that GORM could then run on-top of iBatis or perhaps you would tweak iBatis to run a faux-GORM in Gra
Post
BarCamp RDU 2008
This year's BarCampRDU was fantastic. Presentations given this year covered a really diverse set of topics. Frankly, too many topics to cover in this post. Ironically, I forgot to vote... Talks on Social Networking? Yeah
Post
Groovy class tricks: Zero Padded Number
Take the example of a SKU number. We need the number to be zero padded. For example the number 10 should print as "0010" and not "10" in any display of this object. These numbers might be generated from some source and h
Post
Language is a Cognitive Technology
Making the rounds is a story out of the MIT news office about the Piraha tribe whose language does not include any counting numbers. They do have the concepts of more than and greater than and the concepts of few and man
Post
PostgreSQL and Grails
Just a few notes on setting up Grails with PostgreSQL and PostgreSQL accounts for JDBC connections. First you need to have postgreSQL installed. The install varies per OS. I'll let you figure that out since there's plent
Post
API is API, but so is table structure...
It's sometimes hard for developers to remember that table structure is also an API. Yes, it should be considered an internal API for the application you are developing, but it is still part of a system that must be caref
Post
Hide complex behind simple...
Hide the complex behind the simple. Keep the complexity of a system behind the simplest possible interface. At every level find the simplest way to express the intention of the interface, do that, and get out of the way.
Post
Wandering around Research Triangle Software Symposium 2008
My path through the Symposium one was eclectic. This year my needs are in the areas of project management and dealing with software development life-cycle. There comes a point when you realize you have all the right tech
Post
Beginning to understand WebFlow
I'm beginning to understand WebFlows. WebFlow is perhaps the most different part of working with Grails. You don't have to use WebFlows and in fact I think I'd advise people to avoid them until they are very comfortable
Post
Deploying Grails 1.0.3 on JBoss 4.2.1
Grails version 1.0.3 was recently released and if you blindly try and deploy this on to an old JBoss (I'm using 4.2.1) your deployment might fail giving you this trace: Exception sending context initialized event to list
Post
Drinking from the Grail
The idea behind Grail (not to be confused with Grails) has me excited. In particular the idea had come to me earlier but... I'm not Guillaume so it's not like I'm going to pull off an idea like that. But. Guillaume is Gu
Post
Lessons learned...
A short list of things I have done wrong recently... - Working in GORM/Hibernate if you provide a mapping DSL and intend on your class to move between databases do not assume the default "hilo" algorithm will work on all
Post
Web 2.0 is so last year...
Note: I'm still too busy to write full posts. I should be back to a normal schedule soon. First there was the web, then Web 2.0, now there's Web 3Di... Actually, it's a very insightful video. The problem is that 3Di is n
Post
You should care about API...
It turns out that API are created constantly in any environment that must share code. API are one of the ways that computers carry our thoughts and ideas. And API can limit or expand the way a company (not just a softwar
Post
A terrible hibernate hack... for Grails...
I'm still "under water" this week but I felt this really deserved an entry. I found this blog entry by Sorin Postelnicu that solved a problem I was having with my Grails configuration. I've set up my database to use utf8
Post
A Grails WebFlow observation
Objects created and persisted either explicitly or implicitly to the flow context must implement the java.io.Serializable interface. But, closures can not be serialized. That means that any class that uses a closure such
Post
Problems...
Now with Grails giving me access to all the Java libraries I want... and all the goodness of Grails and Grails plugins... and all the search power in Searchable... I have some problems... 1. Too many good ideas that now
Post
Multiple versions of Grails in Hudson
I have an interesting situation. I have a Hudson CI server that has to work with two different versions of Grails. I have a somewhat inelegant but functional solution. First, Grails is set up in: /usr/local/grails-versio
Post
Purpose, People, Policy and Social Systems
Last year at BarCampRDU I attended a talk on social sites and their construction. During this talk a UNC professor introduced the "three P's" of social systems. Purpose, People, and Policy. I've been chewing on these ide
Post
Grails Audit Logging Plugin is a "real plugin"
I'm very happy to be able to post that the Audit Logging Plugin is now available via the "official" Grails plugin install commands. My plugin is no where near as cool as the Searchable Plugin but I'm very pleased to offe
Post
Groovy Builders
This is good stuff: "Make a Builder" (I think I'm about to get busy). I also think that this is why Groovy is one of the best languages to work in right now. What I love about that post is that it includes the Java code
Post
Changing the face of UI
I have talked previously about how I felt about many of the UI building environments out there today. My UI experience comes from a nearly decade old C/C++ experience in CaveGL, OpenGL, and GLUT... so I can't speak much
Post
Audit Logging Plugin version 0.3: who did what when
When I posted my Audit Logging plug-in I had no idea how to get at the user name of the person using the session. I posted a question on the Grails Dev forum. And the answer supplied by pftravis lead me this... static St
Post
Learning more about Hibernate: Grails Audit Logging v0.2
Very important changes in version 0.2, the mapping method I had written did this: def nameMap = [:] for(int ii=0; ii def obj = newState[ii] entity.properties.each({ key,val -> if(val.is(obj)) { nameMap[ii] = key } }) } .
Post
Inside Hibernate Events and Audit Logging with Grails Plugins
Previously, I wrote about how I was able to take components posted on hibernate.org and reference the configuration files of other plug-ins to craft a plug-in for Grails that used the Hibernate Events model to create an
Post
Audit Logging in Grails
EDIT: Audit Logging is now available via the grails command line tool $ grails install-plugin audit-logging Here's the story of how I ended up writing an AuditLogging plugin for Grails. I've posted the Grails Audit Loggi
Post
The PLEAC
The PLEAC Project over at SourceForge is a project that is taking all the cookbook examples in "The Perl Cookbook" and re-implementing them in various high-level languages. The project will eventually act as sort of a Ro
Post
A nice bit of textbook groovy
Groovy is just so groovy. I've been working in Groovy since August of 2007 but I still take such pleasure from little things like this... take some tokens def tokens = "abc,def foo+bar bar foo" now break them apart def p
Post
A Groovy GeoCoder.us Client for Grails
I have a need for a Grails GeoCoder for a project I'm working on. I'm going to feed the GeoCodes to a RichUI front end using Google Maps. And, I'll have access to addresses in the format... 1600 Pennsylvania Ave Washingt
Post
Groovy Grails and Searchable: The wait is OVER.
I honestly thought I'd be talking about how great Searchable is going to be for at least another six months... and then this happened: Searchable Plugin: Just use it!. It literally just works. WOW! I'm so happy right now
Post
Dominant Groovy
Steven Devijver has an interesting post over at java.dzone.com titled Groovy will replace the Java language as dominant language While I'd love to agree with Steven, I'm afraid I don't. Now... I think Groovy has the pote
Post
Grails, two databases, and you
I'm working a project right now that requires me to access a legacy LAMP system and then import these into GORM/JPA persisted objects. Douglas Fils has some good notes on this topic in his post "grails datasource in reso
Post
Grails and Quartz
When an action takes longer than about 10 seconds to perform web developers have a problem. Basically you can't expect a user to sit around for 15 or 20 minutes while an action completes. In LAMP and RoR land we solve th
Post
Grails, GORM, Domain Classes and Enum
I'm currently building a domain model in Grails that uses Enum heavily. This is a tad bit of a problem since Grails doesn't support Enum directly. See GRAILS-2061 for more information. Now then, I have found this Enum Wo
Post
Working with Grails 1.0.1 inside Eclipse
I've started on a new project using Grails 1.0.1 and I've had to change a few things since working with Grails 1.0-RC4. Fortunately I did get an upgrade to Grails 1.0 into my application before deploy but 1.0.1 came too
Post
... with the Eclipse RCP
I've been working with Eclipse RCP and the SWT on a project lately. I started writing software in C/C++ about a decade ago. I remember working with C programs and UI back then as state machines. Essentially the UI would
Post
Grails app.version & plugin utopia
I was catching up on my reading recently when I came across this post. The technique Darryl is using to show application version numbers to his users is: v${grailsApplication.metadata.'app.version'} Which makes perfect s
Post
Logging in a Unit Test of a Service in Grails
Here's the scenario: You've got a grails project and you have a simple service you'd like to test. Let's say it's just something like: class MyService { boolean transactional = true def myMethod() { log.debug "MyService.
Post
Why do we write software?
I feel I have to ask: Why do we write software? I ask this because I think the why gets lost too easily. I've recently worked on a project that modeled a name and email address in JSON like this: [ ["PRXYY298NAFR","Bob",
Post
The Singularity is Ni
Recap: The technological singularity is the moment when human intelligence finally exceeds that of machines. Wait. Sorry. The technological singularity is the moment when intelligence finally exceeds human machines... no
Post
Grails 1.0 is out
It looks like Grails 1.0 is officially out. If you don't know what Grails is go check it out now: http://grails.org/.
Post
Paradox/Parabox of Choice
A late night post due to a late night. Some things are bothering me and I decided to put them in words. Consider this post on slashdot this is problem is real and a real burden to many shops. If you were a LAMP shop and
Post
the vessel of ideas
Earlier I said: > The word is the vessel of ideas. The written word is the preservation of ideas. The computerized word is the execution of ideas. Programming is about thinking. It is nothing else. Programs only execute
Post
Deploying Grails on JBoss 4.2.1
I'm deploying Grails applications into a shared JBoss environment. Now if you've read the Grails FAQ there's a nice bit in there about deployment isolation in JBoss. Specifically you'll use jboss-web.xml and isolate the
Post
Behold the Power of Pipe!
This is a repost of an article on pipe I posted several years ago. Pipe is a very powerful tool, behold: tar -czf - [list of dirs and files] | \ ssh [user]@[server] "cd /path/to/place/files; tar -xzf -" I learned this on
Post
Tautology and the Programmer
I've decided to extract and simplify an example of why a programmer should know what a tautology is... I found very nearly exactly this code in production a few years ago: if(!a && !b) { if( ! (a || b) ) { // stuff } } /
Post
Testing & Design Philosophy
I'm continually surprised at how many shops don't test their software or don't have test plans. The ROI on a test plan is being able to say: "I did my due diligence." When you have a contract on the table you can point t
Post
Fun with Grails configuration files
In a Grails project you can put your own configuration inside the grails-app/conf/Config.groovy file. In this post is a sample of a configuration I'm using for a WebClient driven service. Certain web client configuration
Post
New Year's Thoughts
According to Kurzweil your IT systems will be twice as powerful in 3 years. By 2013 or so we should be able to model a human brain in entirety on the world's most powerful machines. In time that power will hopefully tric
Post
Code Size and the Cognitive Gordian Knot
The size of a code base is not the worst enemy of code. My personal experiences with code bases large and small have given me the insight to realize that size of code is a terrible enemy but not our worst enemy. Our wors
Post
Fun with Groovy and the Reflection API
Here's the scenario: You've got dates in the format "MM/dd/yyyy" to be parsed and turned into a real Date object. You would parse the date like so: public Date format(String str) { def format = new SimpleDateFormat( "MM/
Post
Seven Sins of Bad Groovy Programming
Jörg Staudemeyer has posted on the groovy-user forum at nabble a list of seven sins committed in groovy and why they are bad. A good read for anyone new to groovy.
Post
Single Sign On with JBoss Portal and Active Directory
No one has asked for it but I've begun work on a SSO project when I'm between official projects. I discovered the power of Acegi and CAS. I have an install of the JBoss portal as well and that requires its own set up too
Post
BPM is mostly wrong
In response to: The Seven Fallacies of BPM Mentioned in "The World is Flat" book Business Process Modeling systems were supposed to deliver businesses with a glorious future in which Business Analysts could model process
Post
Learning the Eclipse RCP
While I'm learning grails I'm also learning the Eclipse RCP. I'm hoping to merge the two efforts at some point.
Post
telecomputational
Heard in conversation just now: > You have a telecomputational device don't you? --Billy Howell It's the dawn of a new era.
Post
Grails 1.0-RC2 sprites and stogies
So, I've run on over to check out the Grails 1.0-RC2 release and see if all my favorite bugs were fixed. They were! And there were birds chirruping and rainbows and a unicorn ... and a sprite lit a fresh stogy for me and
Post
Groovy Grails GORM and its flaws
NOTE: This problem was fixed in the Grails 1.0 release making GORM the most amazing Object Relational Mapper ever created by mortals. I am beginning to understand the limitations in Grails better. I would say the "honey
Post
Working Grails and JPA... troubleshooting
I've been working with Grails and the JPA. In eclipse I use the Hibernate3 reverse engineer tool. To make that work I use a hibernate.cfg.xml file that I place in my project's top level folder and a hibernate.reveng.xml
Post
Grails Datasource, legacy database, and you
Any one out there trying to work with Groovy, Grails, and legacy databases? Well, I am and I thought I'd share with you my final dataSource configuration. I'm using a legacy database that drove an Apache + modperl web si
Post
Alpha Geeks: say w00t!
2 Types of programmers > ... what many would call "alpha" programmers — the leaders, trailblazers, trendsetters, the kind of folks that places like Google and Fog Creek software are obsessed with hiring. These folks were
Post
Interoperability is the key to success
I just read the We have lost control post by Reg Braithwaite that's been making the rounds of the blog-o-sphere. Basically, modern IT departments compete directly with the internet. We have to. It's the 21st century. Tha
Post
helloLDAP.groovy
Here's a short script that I wrote just to test working with an ActiveDirectory server. It's a short hack of a script that you can use to just test settings and the like. Thanks to this script I know I've found the right
Post
Grails Searchable Plugin... wow.
Words fail me Searchable plugin for Grails... wow. I'm speechless... I'm... wow. I just don't know what to say... wow. Is anybody using this yet? I'm going to have to plug this into my very next project... wow.
Post
Magical MySQL URL parameters Save my Groovy Code
I've been working with legacy databases in MySQL and basically forbidden from using hibernate by a bug I had with all zero dates of the format '0000-00-00' which is perfectly legal in MySQL but completely disallowed in J
Post
Groovy Class tricks
jwagon sent me these mind bending groovy class manipulations in a chat today: !/usr/bin/env groovy class AA { def msg AA(something){ msg = something } } def c = { a, b -> def x =a.newInstance(b) println x.msg } c(AA, "fo
Post
The Fallacies of Distributed Computing
I'm working a SOAP heavy project right now so I thought I'd look up the 8 Fallacies of Distributed Computing. These are 8 assumptions people often make in designing network based systems such as a SOA or ESB that simply
Post
Groovy Grails and the JPA
If you are using Grails 0.6 or later chances are the tutorials you've found for making EJB3 persistence annotated POJOs work with Grails don't match up exactly. If you're like me, probably need to be made aware of a few
Post
Groovy Grails documentation online...
As the much anticipated 1.0 release of Grails approaches, the first release of the official Grails 1.0RC1 documentation has been released.
Post
3D Linux Desktop
(image removed, src was: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSJGDTy2E-ZuPE3gs6hU-79Hcino61N9hfd9dfngYvz4G8WrmxZ09vmlKdWwcnLrO1LGrUHzrms3ua6DX9I3IQ5iV0V0VgzY2nfihJrFTU3zcl0Gv9H1SY3gSEhxrwkySZfo9g/s
Post
The humor of Engineers
From the wikipedia entry on Portal the video game): > "at the beginning of the Portal development process, we sat down as a group to decide what philosopher or school of philosophy our game would be based on. That was fo
Post
Being Presidential
> "Nothing in the world can take the place of persistence. Talent will not; nothing in the world is more common than unsuccessful men with talent. Genius will not; unrewarded genius is a proverb. Education will not; the
Post
Grails XFire Plugin
Had a little trouble with the XFire Plugin for Grails. I found this thread of posts on nabble which clears things up. I attached the thread to the appropriate bug. Other than that I noticed that java.util.Date Is turned
Post
One Laptop Per Child
http://www.xogiving.org/ is running a special promotion, give one, get one starting November 12th of 2007. If you purchase an XO laptop for one child, you may also purchase one for yourself. The project will allow develo
Post
People you don't like...
I can't find an official quote but I once saw a televised question and answer session with Warren Buffet. When an audience member asked what it was like being one of the world's richest men. In Warren's reply he said: "O
Post
Some advice from a smart guy
> "Any fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." -- Albert Einstein Make your software small, simple, and power
Post
Issues of Concurrency
I have a problem. I have two databases. One old one and one new one. The new one is fully normalized and the old one is not. Both databases drive their own front ends. One is a Perl front end the other is a Spring Java f
Post
Linux Forgotten Root Password
Oh no, you've forgotten the root password to your laptop or other Linux desktop. If they are set up with grub all is not lost. At the grub splash screen key in 'e' for edit. You'll now be able to edit the boot options. S
Post
Symbol System Manipulation
If thought is just the manipulation of symbols. Then computers think. If thought is more than the manipulation of symbols... then how do you know people think? If you can't accept that the mechanical manipulations of sym
Post
The new Alfresco
TriLUG last night had a special presentation from principal architect Jon Cox. Jon Cox had developed software for the Interwoven product suites and is now working for Alfresco which has released a new versioning engine b
Post
Watching ProjectZero
I just saw this ProjectZero Demo and given that this is IBM developing the tool I'll be watching the development of this project over time. It seems that Project Zero competes with Spring. Unlike Grails which builds on t
Post
SunSpot + Lego + LeJOS + Groovy
A few ideas have been rolling around in my head for the last few weeks. For one I really like the idea of the SunSpot kit and I really like the idea of LeJOS which is Java for the Lego Mind Storm robotics kits. I am slow
Post
Code Addicts in Java Land
Some one just sent me this Billy Hollis video. Billy asks us if we are "Code Heads" and although his solution is Microsoft based, it's and entertaining talk just the same. It is why we have 1.2 billion frameworks (a slig
Post
GORM is a work of Art
I've been working in GORM a lot lately. And out of all the different ways I've ever had to make objects work with tables this is perhaps the most fun and straight forward. My eyes kind of glaze over when people mention X
Post
Ruby on Rails: The Java web DSL
Technical evaluations aside, the longevity of a technology has more to do with the community behind it than it does with the suitability of the product. The "Sun surprise at railsconf Europe 2007" has shed some light on
Post
Chad Fowler is my Hero now
The Big Rewrite... many koans, much wisdom, Chad is my hero now.
Post
Ruby on Rails: Long term view
How viable is it long term? Working in Java you know that there is a good chance that you could work in Java up to retirement. But, the nature of that job could change drastically. There is also a good chance the next te
Post
If technology is key to your strategy...
... if technology is key to your strategy, then, when you plan your strategy include a practicing technologist. People who have dedicated their careers to studying technology will typically understand it. Those people ca
Post
Sipping Googleccinos
> But then, while you’re sitting on your googlechair in the googleplex sipping googleccinos and feeling smuggy smug smug smug, new versions of the browsers come out that support cached, compiled JavaScript. And suddenly
Post
TriJUG: Java FX
A term I shall coin today is YAJAPPL (Yet Another JAva Platform Programming Language.) and I'll use it to refer to Groovy, JRuby, and Java FX. Last night's TriJUG meeting was a double header on Java FX and Java 6 update
Post
Binding JBoss
$ /usr/local/jboss/bin/run.sh -b hostname 1>&2>/dev/null & Binds JBoss to hostname on port 8080 and ignores the standard output and standard error.
Post
Database questions...
If you were building a new project today, which database should you use? If you are working with JBoss how do you identify the need for an XA compliant database? If you need XA and you are on a budget which database do y
Post
EJB3 security annotations
So with EJB3 declarative security annotations I can do things like this: @DeclareRoles("ADMIN", "USER") public class Frobnicator { @RolesAllowed("ADMIN","USER") public boolean checkFrobnication() { ... } @RolesAllowed("A
Post
Database Vendor Political Landscape as of 2007
> Please note this is simply my opinion. Companies are presented in random order. No official recommendations are being made. Oracle: Oracle the company has filed court proceedings against SAP citing that SAP has been st
Post
Engineering for the Web
"What ever happened to Web engineering?" > "The problem is, strictly separating designers from developers has resulted in a Web built by people frightfully unaware of the standards and technologies required to make it go
Post
Groovy Grails Portlet
I need to put my grails applications in a Portal. If you look at Bug 1345 over at codehaus you can see I'm not the only one. Now Spring will run in a Portlet... Grails is built on Spring... how hard could it be? I might
Post
Careful, Spring will eat your lunch...
One of the best NFJS talks that I did not attend but should have was the talk by Venkat Subramaniam titled "OSGI: A Well Kept Secret." I discovered this talk on my CD a few days ago and started researching OSGi. OSGi is
Post
Grails Widget list...
Take a look at this... def constraints = { description(widget:'textarea') } ... which I got from the Grails site. So, if you want to use the code generators to create views for a form and want a string to have a text are
Post
Pimping with Groovy
One of the great advantage to the Groovy programming language is that you can take Java libraries and extend them. The formal technical definition of this process when done in Groovy is called "Pimping". http://groovy.co
Post
Where do we go now?
Last year Google dropped their SOAP API and today they announced that You Tube launched a new API. That got me thinking. This Google-hate-on-SOAP was covered at my NFJS conference, the reason cited was the strong typing
Post
Groovy Grails: Little joys
I'm working on a Groovy Grails project and I've just written a controller that takes a post from a form with only a partial representation of the object. Full representation of the object in the form is easy just do this
Post
Getting Fit and Groovy
Fitnesse + Groovy + Hudson Today I'm going to talk about my Continuous Integration environment and Acceptance Testing Framework. We are using Fitnesse to write acceptance tests that run in Fit, Hudson (running ant) to cr
Post
Sick today & Software Engineering Ignorance
... felt it coming on yesterday. Definitely sick today. For light reading: Software Engineering Ignorance. What is the world coming to? I'm really surprised that people are willing to ignore thirty years of accumulated w
Post
The future...
I've spent a lot of time the last few months thinking about the future. Which technology should I invest my time in? Which framework will pay off the most? Where will I be in ten years? Obviously, these are unanswerable
Post
hear the sound of Groovy
This venerable article at IBM: "Practically Groovy: Reduce code noise with Groovy", explains how software development with Groovy stays compatible with Java and reduces "code noise" also known as non-intrinsic complexity
Post
Hibernate3 evil bug
The version of hibernate that I'm using has this bug. I had one query in my code base with " foo =: bar " instead of " foo=:bar " and all my JUnit tests started failing. Remarkable that something so small and silly could
Post
The rising star: SUSE
Deals like this one with AMD just highlight the business savvy that Novell has brought to the Linux playing field. This isn't nearly as big a deal as the Novell and Microsoft deal that made such a fuss in the community.
Post
Ant: the subant tag
In SVN I have this hierarchy: trunk/ --+ | | | + subProjectA/ -+ | | | +- build.xml | | + subProjectB/ -+ | +- build.xml under trunk I've added a build.xml file and using the Ant 1.6 tutorial I've added this build.xml fi
Post
SLES10 hands down
In my mind SuSE wins hands down. OpenSuSE and SLES10 are the best enterprise Linux distributions our there and I don't even think about RHEL in production. Why? No other distribution hits this sweet spot of utility prope
Post
My Linux Desktop
In order to get to work I set up the following custom software: 1. java 1.6 2. groovy 1.1 3. grails 4. eclipse 3.2 5. jboss 4.2.1 6. ie4linux 7. crossover office 8. beryl 9. vmware player with a Windows XP image Everythi
Post
GenericRulesEngine: an Abstract Class
This is my take on how to implement rules engines in a project. I'm still working a few things out but you get the idea. package com.vifprogram.tie; import java.io.InputStream; import java.rmi.RemoteException; import jav
Post
BarCampRDU
I attended my first "unconference" today, BarCampRDU very enjoyable. It is mainly about making connections with other cool people doing cool things. Mainly, I'm not cool... and rather boring... so I was horribly out of p
Post
Importing Public Static Methods
Consider the way you get "assertNotNull" into a JUnit4 test. You do it like this: import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; The pu
Post
JUnit and JPA
So, we have a need to test EntityManager driven classes from inside our JUnit tests. How do you set this up? Well, I for one added a testDb persistence unit to my persistence.xml file and then set up this abstract class.
Post
Getting the right start
Starting out right is incredibly important. Someone once said, "choose your parents wisely." In software development I think that we really do have a chance at choosing our proverbial parents. Choose who you learn from w
Post
I was wrong.
I was wrong about workflows. I was wrong about acceptance testing. I was wrong about scripting languages. It's time to fix that. The next few weeks will begin my quest to change the world and right these wrongs. 1. Workf
Post
Symbolic Link Joy
Let's say you have a server. It runs the frobnicate service. The problem is you have to upgrade the frobnicate service every so often. Sometimes you have to "roll back" to an old version. What to do? Lately I've been thi
Post
Livin' and Lovin' the Groovy Life
I have seen the light and baby it's groovy. Write better, faster, lighter, groovier code. I may never write another shell script again.
Post
Agile Test Driven Design Process Proposal
I am proposing the following software development pattern to our team next Monday. The idea is to create an environment where testing comes first, expresses business rules on a one-to-one and onto manner (borrowing a ter
Post
NFJS 2007: RESTful Loosely Typed SOAP services
I just got back from No Fluff, Just Stuff 2007 (NFJS) and I went there with my document centric design ideas and came back after words with an idea that is far more powerful. RESTful Loosely Typed SOAP services. Okay, I'
Post
Document Centric Design?
The Idea is that documents represent a single common data format for all processes. All processes produce or consume documents. A process that consumes no documents is called an originating process. A process that only c
Post
Internet Speed Test results
When I first got the service: (image removed, src was: http://www.speedtest.net/result/129473430.png) And now: (image removed, src was: http://www.speedtest.net/result/157012561.png)
Post
Love for edgewall trac
I think I am in love with trac. The wiki makes for a convenient place to drop documentation. The wiki can link back to source. The source can reference wiki entries. Tickets can be referenced from source and from the wik
Post
On my book shelf now:
In no particular order... - JBoss: A developer's Note book - Linux in a Windows World - JavaServer Faces - Applied Cryptography - Linux Administration Handbook - Ajax In Action - Javascript: The definitive guide - Cascad
Post
JBoss Portal 2.6.0 woe and the fix
I recently posted a problem in JBoss Forum and got an answer. The problem was: 16:38:07,433 ERROR [StartupServletContextListener] Error initializing ServletContext java.lang.IllegalArgumentException: Class org.jboss.port
Post
Suse Java5 install notes
I wrote this tutorial a while ago for our services group to help them setup Java on our production servers. If you are on OpenSuSE: Open yast2 (CLI or GUI), and choose Software -> Software Management, next you'll search
Post
The joy of symbolic links
I'm working with different versions of JBoss. My company has standardized on /usr/local/jboss as the home directory for JBoss. All JBoss servers will find their homes under /usr/local/jboss but we upgrade JBoss servers a
Post
The Rules of Data Normalization
When Codd came down from the moutain top he held in his hands two stone tablets that had these rules graven upon them. One tablet contained the first three rules, the second tablet contained the other two. The rules are:
Post
Why A WorkFlow Engine?
Different problems lend themselves to expression in different languages. There are points at which a new tool is beneficial. Too many tools means that there are too many things to learn and that complicate work unnecessa
Post
Deep Structure
Deep Structure is a term from linguistics. Specifically Chomsky and his work with Universal Grammar. The term when used in computer science usually refers to meta-design-patterns or deeper computational constructs than t
Post
The Woe of MySQL and java.sql.Date
The class java.sql.Date cannot hold a date of "0000-00-00" (ISO date format YYYY-MM-DD) because that is simply NOT a valid date. Our legacy Perl application uses the string "0000-00-00" as a date for any uninitialized da
Post
What is a workflow engine?
Workflow engines are a new way for representing knowledge in a computer. They are simmilar to RDBMS systems (DataBase Engines) in that they allow for the storage and organisation of facts in a specialized way. Workflows
Post
JAAS + Liferay + Woe
The problem: I've written several EJB3 soap services that need to be secured by the PortalRealm security domain. When someone is logged into the portlet they can use the soap services... not logged in? no soap for you. T
Post
private social networking sites
Jeff Atwood has posted a entry Avoiding Walled Gardens on the Internet that advocates using open internet tools and avoiding products such as LinkedIn or Facebook. The reason we should avoid these tools is to avoid locki
Post
return;
Personally I think that leaving a return statement at the end of a method whether you need one or not lets everyone know you really did mean to end the method there. / assign an interview to a person @param personId @par
Post
A big ball of wibbly-wobbly timey-wimey stuff
Doctor Who is just great. I wish I got BBC over here.
Post
The Technology Lifestyle
Being an Information Technology worker of any kind is just as much about lifestyle as it is about technology. Any other discipline gets to go home at night and just relax. If doctors and lawyers go golfing but what do th
Post
We're at the end of the Universe...
... at the edge of knowledge itself and your busy... blogging!
Post
Velocity Engine
I've been working with Velocity in Portlets and DWR (version 2) and found that I had to write my own Velocity utils to allow the DWR and generic Portlets to share context. I know there are velocity portlet classes our th
Post
The new MVC is DSP
In many of my current projects MVC can be broken into Database, Web Service, and Web Page. I call this a DSP application. The Service can be turned to work with a cell phone applet later. I suspect this is the logic behi
Post
Star Wars Fans
In a room full of Star Wars fans there is always one Jar-Jar. If you can't see the Jar-Jar then you're it.
Post
Stuplexity
Stuplexity: A solution that is provided to solve a problem in an extremely non-obvious complex manner when a simple and obvious solution is readily available is said to possess stuplexity. Example: "The stuplexity of thi
Post
An informed opinion...
To have an informed opinion one must stay informed.
Post
By population...
I just happened to run across this statistic that makes me wonder what kinds of effects the additional one billion computers expected in the next five years will have if they are mostly owned by Asian users. Programming
Post
Idea: Virtual Neural Net Hardware
In this conversation on slashdot I discuss the possibility of simulating asynchronous neuron interactions in virtual hardware. Specifically I conjecture that the DBus architecture is the right model to attach asynchronou
Post
Path to Linux happiness: keep it tiny
The number one piece of advice I have for anyone trying to use Linux is: "Only install what you need to survive!" The reason is simple. The more packages you install the more likely it is you'll run into some kind of con
Post
Hibernate3 is not EJB3
My first and most painful lesson in my year with J5EE was about Hibernate, Hibernate3, annotations, and EJB3. I had been lead to believe by an evil leprechaun that EJB3 was just Hibernate. I learned by actual experience
Post
A year with Java 5 EE
I've spent the last year with Java 5 Enterprise Edition betas and I'm going to talk about my experiences with the Java environment as a relative newcomer to the Java landscape. My background is in C/C++ System V programm
Post
Politics in Software
The use of which software technology to do which job is actually a trick of politics. The truth is that any Turing Complete language can naturally do the same job that any other Turing complete language can do. This mean
Post
Space-time tradeoff
My half of a chat conversation: "In computer science, a space-time or time-memory tradeoff is a situation where the memory use can be reduced at the cost of slower program execution, or vice versa, the computation time c
Post
JAX-RPC is killin' me.
No collections?!? WTF! It seems that the JBossWS product put out by JBoss does not allow for collections over the wire as SOAP... yet my XJC tool will turn an DTO into POJOs using java.util collections. What gives! We li
Post
jBPM, EJB3 Persistence, Hibernate....
I think I'm going to go nuts. jBPM, EJB3 Persistence, and Hibernate... all playing nice-nice together? Is it possible? Apparently not.
Post
Zone-out
I'm developing a project in jBPM, EJB3, and SOAP and I haven't checked my email in weeks. I haven't surfed for just as long. I'm in the Zone but so intently I've zoned out. And it seems that this is a prevalent model for
Post
Technology and Society
In The Awesome Power of Spare Cycles, Chris Anderson explains how Open Source, You Tube, and My Space are all powered by spare cycles. In reality all of society from art, music, and literature all the way to science and
Post
Your Programmable World
Today your car's behaviors are controlled by on-board computers that run firmware that is basically assembly level software written down into the hardware in one fashion or another. You can get your car a software upgrad
Post
helper helpers
While trying to solve a problem in code you go about finding the generic, abstract, or reusable and refactoring it out into units that can be adapted to a number of similar tasks using configuration or minimal programmin
Post
Jeff Hawkins of Numenta
Jeff Hawkins seems to think we are on the verge of a new generation of computer innovation. He could be right. Just as the computer was born from a collection of ideas that were well known to people at the time. So too w
Post
GOP: Graph Oriented Programming
Draw programs. Flow charts create state transitions. Objects handle the transition into and out of a state. Programmers create objects, Analysts create flow charts. Yeah right. I seem to remember that SQL was supposed to
Post
Software Metaphor: Chop Sticks versus Formal Cutlery
Consider the simplicity of chopsticksversus the complexity and elegance of formal cutlery as demanded by a formal table setting. In the past cutlery was far more complex yielding exceptionally specialized tools for every
Post
The world is flat.
Around about... no... a flat about... a year ago I read the Thomas Friedman book "The World is Flat" and I spent most of my time reading the book wondering why anything in the book was considered new, though provoking, o
Post
Protocol
It's not just zealotry, Linux really is more secure than Windows. The reasons are visible in the Sana Security diagrams posted by Richard Stiennon on ZDNet. But really this goes back to good protocol. The issues I report
Post
Email and Ajax
If you write a web form to allow people to compose a mail message and you intend to let them send the email once they are done... don't setup an Ajax method called "sendEmail" because... now you're asking for trouble. Es
Post
Nobody gets CSS
Designers should "get" CSS. Yet of the dozen or so I've interviewed the following construct seems alien... <div class="title">block1</div> <div class="info"><div class="title">block2</div></div> <div class="detail"><div
Post
DWR POJO as a front controller for a WebService
In the past I would have written my own JavaScript using XmlHttpRequest and a servlet on the back end. This means I have to maintain a lot of code that has nothing to do with my specific project. I evaluated several Ajax
Post
@annotations
In case you've been under a rock... Java 5 now has a feature called the annotation and it allows you to attach meta-data to a class or a method. This isn't too terribly exciting unless you write a class that can read the
Post
Software is
Software is an encoding medium for ideas. Nothing more and nothing less. That is profound enough by itself. The idea of thoughts existing in an active manner independently from the skull of the thinker is revolutionary e
Post
Database Design
Let's say I want a screen that displays a list of MP3s with Genre, Artist, Album, Song Name, Play Length. What would the database table for this look like? Many neophytes would design a table that looked like: MP3Files C
Post
Full Body User Interface
One of my graduate school professors runs the Body Language User Interface project called BLUI for short. It is a unique Human Computer Interaction (HCI) project that allows a user to paint in three dimensions. Projects
Post
Bi-Tek
Johnston County in North Carolina has gotten a temporary court order to get Google to remove a page from cache. The page contained the personal information of county residents including social security numbers and cell p
Post
Direct Web Remoting
DWR (Direct Web Remoting) is yet another Ajax framework. This one is, however, a Java framework that makes a heck of a lot of sense for java developers. Take a POJO. Register it in the dwr.xml file under WEB-INF in your
Post
Open Source the Inevitable
Anyone who didn't see open source coming was just kidding themselves about what software is fundamentally. Software is speech. Software is the embodiment of ideas. Once an idea is born it spreads. Patent law used to reco
Post
Requirements
I usually ask candidates for Software Engineer positions the following questions about their project work: How do you know when you are done? How do you know when you have succeeded?
Post
Server as a Text Pump
So a server gets requests from the network and these come as text. A server gives a response and these are formulated as text. The text is formatted to give it a structure. And, if you use the right formats you get to ca
Post
No job shortage here?
We've been interviewing candidates for an open Software Engineering position for the last year. It averages about one interview a month and so far we can't find qualified candidates. Some of the more frustrating candidat
Post
Bit Plumber
It seems that most of my life is spent either waiting for, calling new, or building data transfers. I spend my Monday morning reviewing logs from the previous weekend's data transfers, I start a refresh of my development
Post
Velocity versus JSP
I've spent the last few weeks in a new larval stage again. This time I've the been studying the alphabet soup that surrounds web portlets and the JSR168 spec. I'm not talking about learning to make portlets... that's eas
Post
Programs that write programs
A new generation of software has begun to emerge. These are tools that take UML diagrams and transform them into code. Humans have been creating software now for nearly a generation. This wisdom has begun to distill itse
Post
Things you never want to hear...
... your doctor say: > What the heck is that? > I didn't even know that was possible. > oops. > Oh well. > I'm thinking Arby's!
Post
Castles in the Air
If the poet creates castles in the air then the programmer creates castles in the air made of air. The programmer works in a rarefied space where the interplay of thought and language are the only limitations.
Post
Too Abstract
Most days I get the feeling that nobody understands what I'm talking about. This is the problem with being too abstract. Many people have difficulty with abstract models of behavior and being a person that spends nearly
Post
Model Driven Architecture
When building software a software engineer or other system design expert creates a shared mental model of the problem space. Boxes and stick-figures or intricate flow diagrams detailing the space to be explored find thei
Post
Who can program?
A there is a paper written at the School of Computing at Middlesex University in the UK that addresses the issue of programming aptitude. The authors of this paper (Dehnadi and Bornat) have devised a test that they claim
Post
What makes a good programmer?
Anyone can program, but, only some people will learn to program well. Some people learn to program well very quickly. These fast learners find ways to work with the concepts that build the systems of thought that softwar
Post
Terseness is good
Your head can only hold so much. Even very simple problems can flood your mind and escape your ability to follow them if they carry on long enough. For example addition is quite simple but if you are asked to keep a runn
Post
Lingua XML
How do you represent data? How do you exchange data on heterogeneous networks? How do you share representations of data between systems? Since the dawn of modern computing (somewhere back around timestamp 0000000001 at t
Post
Competing Mental Models: Object-Relational
In order to deal with complex issues, humans create models. The models we make deliberately ignore certain aspects of a real-world "thing" we deem as irrelevant. In this way we simplify a more complex problem enough to d
Post
Programmer = Communicator
I think it was Mitch Roth whom I first heard say, > "A good programmer is a good communicator." I took MIPS assembly from Dr. Roth and he would grade our assembly not only on coding content but also on the grammar and sp
Post
Lingua
If the language you speak in part constrains your thoughts, then isn't the same true for languages you code? If the language you speak can facilitate certain modes of thought, then isn't the same true for programming lan
Post
Software Engineer
Somewhere along the line we created the position of "Software Engineer" and distinguished it from other software roles such as Programmer, Developer, and Architect. Somewhere along the line we got the idea that software
Post
Software is worthless
What is the value of software? The expense of software is easy to see, you must spend money on labor to produce software, to test it, and to maintain it. Where is the value? Certainly, you spend money on software when it
Post
Information Technology
Information Technology has existed ever since humans began writing things down.
Post
The word
The word is a powerful invention. With the word it is possible to refer to a thing without the physicality of the thing. So powerful is this ability to refer to things in the abstract that it leads to another form of exi
Post
There has never been anything like Software
I am not the first to note that there has never been anything quite like Software before. I may be one of the few that would contend that the advent of software is as significant to human history as the advent of the wri
Wiki
OCAP in the Age of Agents
Capabilities lose on usability, not correctness. An attempt to make them ergonomic for coding agents, with the failures left in.
Course
Making Minds?
Artificial intelligence and theology for pastors and Christian educators.