Upgraded to the January 2010 gfortran

March 11th, 2010

fortran.jpg

Since I was doing some simulations yesterday, I decided to have a look-see at the state of gfortran at the HPC on Mac OS X web site. Sure enough, they had an update. I have been running the September 2009 version, and they are up to the January 2010 release. Good enough reason to get busy installing!

I then ran through all my FORTRAN code again, and it even caught a few 'column 72' errors that had slipped by. Interestingly enough, MacVim pointed these out with a yellow background highlight! Very neat. I did the easy fix and the warnings went away.

I do so enjoy FORTRAN. It's just plain fun to work with.

Finally Finished Some Simulation Runs

March 10th, 2010

shark.png

Well... it's taken me what... about 25 years?, but in the end, I finally finished the first 10 psec of the simulation that I started in my PhD, and was never able to finish. These are the two big results I was waiting for with the Gould NP1 but never managed to be able to get the results out of the box as it just took too bloody long. Well... fast forward to now, and I was able to run the simulations for all 10 psec on my iMac at home without any problem at all.

In fact, the total runtime for the entire 10 psec simulation was 4:34:54 - about four and a half hours! Had I told myself back then that someday I'd run this code on a desktop Mac and it'd finish in less than half a day, I'd have laughed. And then wondered when that day would come. How exciting!

The first test is the Si pulse. Here, we're looking for a nice, representative pulse widening and drifting down the channel. I was able to get a few psec of this simulation done for my thesis, and it proved that at least in Si, the physics was behaving as you'd expect.

Si Pulse

The second test was the similar conditions in a GaAs channel where we're biased in the negative differential mobility zone, and so we'd expect the oscillations predicted by the 1D simulations to start to appear. What I'm seeing here isn't anything like that.

GaAs Pulse

This pulse seems to be nearly stagnant in the channel - hardly drifting at all - but spreading out much faster than the Si device. While this might make sense, if you think of the higher mobility in GaAs over Si, the problem is, the mobility in the bias conditions we're looking at should be shrinking the packet and starting to make oscillations on the top part of the pulse.

So I'm wondering if I've got something wrong in the code, or if I just have it misconfigured. It sure looks like it's configured correctly. But then again, I don't have anything to compare it to. Hmmm... very odd.

Well, if I get more time I might dig into this, now that the runs can be done in a reasonable time. I just wonder if there's something I'm missing as the other tests all checked out. It's something to think about.

Whatever Happened to Programming? We Did. We are to Blame.

March 10th, 2010

I saw this article on Daring Fireball this morning, and decided to give it a read. Daniel J. had tweeted about it yesterday, and was in the middle of something so I didn't take the time to dig into the article. Well... this morning, I'm glad I did. The follow-up is equally interesting and as worthy of a read as the original.

There's just so much in this article to talk about. First, he's completely right about the state of typical development these days:

I want to make things, not just glue things together. When people ask me what I like about my job, I always say the same thing: that its the thrill of starting with nothing and making something. That, for me, is the essence of programming, and it hurts that there isn’t as much of it about as there used to be.

He's right on the money about the state of anything called Frameworks:

Here’s a rule of thumb (which, like all such rules, is often broken and should not be taken too seriously): beware of anything that calls itself a Framework. Anything that, instead of providing stuff that you can call, takes over the wheel and tells you what code to provide for it to call. Not always, but often, that marks the line where this stops being fun.

and:

You know the real problem with frameworks? They demo too well. Someone shows you their favourite framework and demonstrates how you can build 50% of your application in half an hour! Great! That other 50% can’t be hard, can it? But it turns out that what looked like 50% is actually 5%, and filling in the other 95% gets exponentially more difficult as you approach the 100% mark. Frameworks are great for building toys, and that fools us — again and again — into assuming they’re good for building products.

and whatever has Enterprise in it's name:

Especially, I have learned that anything that has “Enterprise” in its name is so incredibly boring that the people who use it had to shove the name of the Star Trek ship into its title just to keep themselves awake. (I am convinced that this is the case.)

Pulling it Back Home

I'm sitting here thinking these same things, and realize that there's an element that's missing here - it's the user community, or business users. They are the drivers of this change, not developers. It's not something the author touches on in his writing, but it's something I've come to realize in the past few weeks, and it's bothersome.

No good developer says I want to glue crap together! or Please let me use this Enterprise Java System! Nope. Bad programmers say that, and that's because they probably shouldn't have the job in the first place, and gluing things is at the limit of their skill set.

No, real programmers want to create things. Then why don't they? The answer is in those Framework Demos, and the press releases on the libraries and toolkits that the business users read and think that the act of creation takes exactly 3 hours, 15 minutes, and then there's no need for that documentation because they can use the frameworks to add in the features like so many Excel Macros.

It is we, the developers, that are to blame.

Why We are to Blame

Like Prometheus, or even Pandora, we brought this on ourselves by doing too good a job for those that had no understanding of the complexity and difficulty in the creative process. These people would never have thought to walk up to Picasso and say Hey, Pablo - Babe! Draw me a tree, will ya? And get it on my desk today, or tomorrow morning if you need more time. Yet in my experience, they think two days is too much for a complete new feature set.

When we create something out of nothing, and do it faster and batter than they expected, they'll simply shift their expectations for the next time. No problem there... in fact, that's an exercise they like having to do. Next time, they'll expect more, and more, and then when you have to do something a little more difficult, they'll try to compare this to something done six months ago, and how you did it fast then, so why can't you do this fast now?

This makes an individual tired.

Then some CTO who may never have even been a good programmer, decides that the entire organization is going to use some Framework, or Enterprise Widgets, and then you're a Glue Monkey.

At each turn we do something that those requesting it have no understanding of so they can't possibly understand the cost of requesting it. Many of the bad programmers see this as nothing more than a digital assembly line, and for them, it takes no more thought than assembling a toaster or DVD player. But for the good developer, the act of creation is mentally, emotionally, even physically draining. That's why it's so rewarding.

But to the non-programmer, it seems like you sat down in front of a glorified TV set, and a few hours, or days later you came up with exactly what they asked for - no matter how crazy, difficult, or near impossible it was. To these people, there is no cost of that request. Nothing could be further from the truth.

Where Can We Go From Here?

I've been thinking of solutions to this problem, and realizing that anything involving the changing of other people is arrogant in the extreme, so I have to focus on myself and what I can do to change this for me. I've come up with a few ideas. None is trivial, but I believe one of these is the solution for me.

Getting a Better Job

This seems obvious, and it is, but it's not trivial, and it's not a direct solution. You may land in a better place, or you may land in a worse place - it's impossible to tell, and in this day and age, I've run into employers that are not above decorating the truths about their organization in order to attract the top talent. Certainly in the financial sector which I'm most familiar with.

Yet, if you can find a place that matches your ideals and goals in software development, you're in business. Maybe there aren't that many places in the world like that, but I believe there are some. Maybe they're no more real than Santa and the Easter Bunny, but I really believe they are there, and as long as I believe they are there, I'll try to find one. Just one is all I need.

But lately, I've been thinking maybe the better approach is to settle a little on the job, and just change the environment.

Keep the So-So Job but Work at Home

I worked at home for 2.5 years while at First Chicago. I got more done there than I have ever gotten done in any office environment I've ever worked in. Why? Lack of distractions. It's simple, really. I have an office at home, with good internet connectivity. Just move the necessary machines to my office, start working there. For me the benefits are obvious:

  • No more 1.5 hr (one-way) commute - I spend 3 hours a day commuting. I can turn that into more downtime, and therefore increase the quality of my life an enormous amount.
  • No more distractions - this is a huge boost in productivity.
  • Comfortable, familiar surroundings are calming - and when you're calm, you're more likely to be happy, and that will make any job seem better.
  • Seeing my kids more - I'm more connected to my family, and therefore able to give more to the effort.

All these reasons make a so-so job a "good" job because you approach it every day with a sense of happiness. You don't mind going to work, because it's a comfortable, warm environment that you don't have to travel 90 mins to get to. It makes all the difference in the world.

Indie Mac Developer - a.k.a. Midlife Crisis or Complete Change of Lifestyle

This is the most interesting to me, but it's also the path most fraught with danger and uncertainty. I've done the small consulting shop thing but what I'm thinking of is just taking some of my ideas for simulation tools and putting them on the Mac. I know it's not a career path that a lot of people would see as going in the right direction, but it's the extreme case of my second point of working at home. In this case, I work at home, but I also have to generate my own revenue.

But the path to this goal is clear: get some apps, start to generate some revenue, and then replace the day job. Not easy, and not guaranteed, but it's something I could do, and something that I want to do.

My First Anniversary

March 9th, 2010

Cake.jpg

Well... today is one year at The Shop, and it's been an eventful year. I expected to be behind the curve on the existing systems for a while, and I was, and then I expected to get some traction and make some really good progress, and that happened too. I'm a little surprised that after just a year I'm entertaining the idea of leaving. It's not that people here are bad, it's that they seem to very reliably make the tactical decision - always favoring the give it to me now! answer as opposed to thinking that putting in an extra 10% would yield a vastly superior product.

I understand the logic - and given that they have been operating in this mode for years, it's logical that they don't see the need or value in doing it another way. But I'm not used to this. I find it really quite short-sighted and while I understand that sometimes you have to do the immediate fix, it's not what you should always go to, and here, it's more the rule to do that than the exception.

So it's been a year. Yippee!

But it's been a heck of a year.

Just Slugging it Out

March 8th, 2010

Today has been a good day and a bad day - just depends on how you look at it. I've realized a few things today - the ideas have been crystalizing for a while, but today they can into laser focus. The Shop is consistently focused on the gimme now! answer no matter the cost of the better, long term solution. This isn't some of the time, or even most of the time. No, it's all of the time.

I'm used to a little more of a balance, and not spending all my time fighting fires. I get to do little things - but they can't take more than a day or two before they are considered "back burner" projects and I'm asked to re-focus on things that will make my manager look good to the other partners in the Shop. It's not a bad motivation, and he's not the only one doing this, so I can't really say he's the problem. No... it's the entire place that's like this.

I've just gotten tired.

I want a rest.

So I asked to start working at home.

It went over about as well as I had guessed - which is to say that it didn't go over well at all. But I didn't expect it to.

Sad.

Oh well... I've had a nice run here.

CoRD 0.5.3 is Out

March 8th, 2010

CoRD.jpg

Because I'm not a big Windows fan any longer, I really appreciate the work the CoRD Team is doing to bring a nice Remote Desktop client to Mac OS X Snow Leopard. This morning I got a tweet that CoRD 0.5.3 is out that fixes some of the cursor problems and adds a hostname feature to the connection prefs.

Sweet. The less I have to run Windows the happier I'll be.

OsiriX 3.7 is Out

March 8th, 2010

OsiriX.jpg

While I'm not sure it's necessary to keep up to date with OsiriX, it's still nice to be able to see the kids' and Liza's images from the doctor's office visits they have accumulated over the years. Sure, some will say it's a little creepy, but it's like baby pictures - sort-of. Well, today I noticed that OsiriX 3.7 was out, and decided to snap it up and upgrade what I had. Easy, quick, and really fun to look at the x-ray images over again.

MacVim Snapshot 52 is Out

March 8th, 2010

MacVim.jpg

This morning I saw a post in the MacVim groups digest saying that Snapshot 52 was released with a pretty significant list of updates and fixes. Most interesting to me is the inclusion of Core Text as the future of text rendering on the Mac. If this makes it smoother and faster, then I'm all for that.

It's still one of my favorite editors and only a slight second on my Mac to BBEdit. Great stuff.

Added an XML Output to the JiGV DataTable

March 5th, 2010

GoogleVisualization.jpg

Today I had the time and decided that it was about time for the DataTable to have a toXML() method so that if I have a servlet that's responding to something other than a JavaScript-driven web page, they can take this XML and parse it for whatever they want. Since I already had the HTML output method, this wasn't all that hard, I just needed to decide what the structure needed to be, and then replace the HTML tags with the appropriate XML tags.

Not bad at all.

OK... it's not rocket science, but it's something that needed to be done as I'm getting into a little larger audience for these servlets in the web app, and it needed the 30 mins I put into it to get the code and the unit test working.

So there.

Google Chrome 5.0.342.1 (dev) is Out

March 5th, 2010

This morning I noticed that Google had updated Chrome (dev) to 5.0.342.1, which is a welcome improvement. I've been using it as my secondary browser for several days, and I have to say that I think I'm still leaning to Firefox as a better experience. I'm not going to debate the speed of the V8 JavaScript Engine, I know it's better. But what I need in a secondary browser is something that feels right, and the fact that it's not WebKit is not bad either.

I'll keep Google Chrome around, and I'll give it a shot in a little bit, but it's just not as smooth as Firefox is for me. Nice, and close... but not a winner - yet.