Wednesday, December 31, 2008

The next big thing...

Some time ago, I managed to build up a sufficiently large ego as to think that I would be able to write a good accounting system from scratch.

I went ahead and started a project on Google Code called 'accsys'.

Soon after creating the project, I became overwhelmed with life and work - and my dream of a good, free, web based accounting system that would also be accessible through web services fell to the wayside.

Life and work have not calmed down since then - they have probably only gotten more hectic. But, I don't want to put off starting this any longer.

So, I'm not going to. Today marks the beginning of the design phase of my project. Over the next two weeks, I should have enough time to work out the general framework and the data structures for the first module (general ledger).

If you would like to keep up with the progress of my new baby - here is the URL of the project home page:

I will also make updates here to track my progress.

My last 'new favorite thing' of 2008...

I am not sure how long it will last, but I have a new favorite thing:

Stateful session EJBs (SFSBs)

I have been working with some fairly massive (and complex) data structures that I have been reloading from my database every time I needed to do a query or modification. And now, it looks like I may be able to stop doing this!

There will be some fairly radical changes necessary to really take advantage of SFSBs - but I am expecting the speed improvements to more than justify the work.

Yay! I like new toys.

Tuesday, December 30, 2008

Trying out new toys...

Up until now, I have been perfectly happy to only use stateless session beans in my application.

And, I have been able to do a lot of optimization to speed up the user's experience.

But, if I can avoid reloading large data structures every time the user is making a change to them - then that should be an additional (and possibly very large) speed boost.

Plus, I would be able to make changes to the data structure separate from the back end database without trying to cache it on the browser - which would be a nightmare!

So, I am finally going to try to use a stateful bean. If it works (if I manage to make it work) then I'll get to rewrite a -lot- of code to take advantage of stateful beans.

If it doesn't work, then at least I already have everything working with stateless.

Friday, December 19, 2008


I never mentioned it, but I did manage to do an initial stab at making an AppEngine version of my origami model diagram database (omdb).

For grins, you can try it out.

Here are the address formats to request information:

If you enter something that does not exist, then it creates it and adds back to the data store. If you have the record ID, then you can replace the names with designerID= or authorID= - respectively.

There are pages for origami models and books, but there is no nice way to find something unless you already know everything about it - not very useful yet.

This is harder than it looks...

I'm not sure where I got the idea that doing a blog would be easy.

I have enough 'life' going on, that there is no natural time for blogging.

So, I am going to try (or at least try to try) to do a minimal amount of blogging by forcing myself to enter -something- on a regular schedule. And then, if something noteworthy comes up, then I'll blog it as it comes up.

Monday, August 4, 2008

Finally! Steps forward...

This past Thursday, I got to attend the AppEngine Hackathon in Chicago.

And now, I have the back end of my origami database website written.

All it does right now though is return XML files containing the designer, author, source (book), and model information. I still need to write the presentation part of the site (and write up usage info so that others can access and use the API I am making to access the data).

And Python is officially an interesting language.

Still weird though.

Monday, June 23, 2008

Every dark cloud...

Not everything is bad though.

Since I was blocked by hosting my website and mail locally, I began taking a look at the Google App Engine (there is probably a trademark in there somewhere).

It also uses Python as the language for apps, so - I have begun trying to figure out how to host the 'data server' for my origami web site on GAE.

Not there yet.

Again, hopefully soon.

False starts anyone....?

Well, I put together my server and set up my web server and app server then tried to 'tunnel' through my hardware firewall.

No dice.

And that is where I've been stuck all this month.

This sucks.

Tuesday, May 20, 2008

And they're off...

Well, I put together my new server system that will (hopefully soon) be the host for my email and web sites.

Soon I should be saving a few buck by 'hosting my own'.


Thursday, May 15, 2008

And baby makes three...

Well, there isn't actually a baby.

But, my original website (that is kind of my baby) is back in semi-active development.

I haven't gotten very far, because I am waiting to see if I have to stay on the original language that it was written in (PHP) and just add AJAX functionality with DOJO. Or, if I can completely rewrite it in Java or Django.

Now that I think about it, rewriting it in both would be a useful exercise - and advertisement.

Now I just need to be able to host everything myself.

From home.

Oh what a tangled web...

I have owned several domains for some time, and I seem to be accumulating them (slightly).

When I started (I can't remember exactly when that was), I only had one. Then I bought a second one that pointed to the first.

Now, I have five. And I haven't gotten much further than I was when I had two.

At this point, I have the two that pretty much point to the same place - a web site hosted on someone else's servers. And a third that is pointing to email - hosted on someone else's servers.

Since I now have 'extra' domains, I can afford to try setting one up to do the things that I am paying others for now (web and email hosting). Also, if I am hosting my own web sites, then I will be able to take advantage of languages and hosting environments that I would be unwilling to pay extra for (JavaEE, etc).

And, I have a computer that spends all of its time turned on doing nothing hooked up to a broadband internet connection.

Hopefully, before Monday rolls back around, I will have at least a functioning test for my own web and mail host running.


It's not just a scary snake anymore...

Looks like computer languages are going to get boosted.

I have begun taking a look at both Groovy and Python/Django.

So far, Groovy seems to be a streamlined version of Java that preserves complete compatibility with Java bytecode. I will have to do more playing before I can say anything more interesting about it though.

Python/Django are actually a combination of a language (Python) and a high-level web framework written in it (Django).

Python is kind of strange. There is no real declaration of variables - they just start to exist when you first use them. And, they are loosely typed - So, you can assign a variable a string value, then assign the same variable a numeric value. And the type magically changes. Also, whitespace matters. Rather than having any kind of code blocking characters, Python uses indenting.

Django looks like it should be useful for me at least for some more utilitarian sites. I'm fairly sure that as I get more comfortable with it, there will be more uses that 'pop up'. But for now, my unfamiliarity with Python and basic distrust of high-level languages are holding that back.

Stay tuned.

Ack! Too much progress...

After so long with no steady posting, this week should be a turn around.

I already have one post unrelated to my 'three post topics for May' and I have started doing something for each of the topics I pre-picked as well.

Watch for updates.

How can several SLSBs share the same interface?

Here is a tip that I wasn't able to find anywhere (maybe I didn't look hard enough).

It may be a rare situation that you would have a large number of session beans (EJB3 session beans) that need to share the exact same interface. And probably, there are several reasons why it could be argued that it is a bad idea anyway.

But, I had about twenty-five timer beans that only needed to expose the same single method 'setSchedule' - so that they could be scheduled.

When I first created all of these timers, I made separate interface classes for each of them so that I could easily access them like this:

@EJB private TimerInterface1 timerInstance;

That wasn't so bad - Even though every timer class that I created ended up having its own interface that was exactly like all of the others.

When I got up to twenty-five though - I thought there must be a better way.

And I finally found it. So now, I only have one interface class for all of the timers and here is how the particular bean that is needed gets declared and accessed. As a note, I happened to be using stateless session beans - the same should work for stateful.

public class ParticularBeanImplementation implements GenericInterface {

@EJB(beanName="ParticularBeanImplementation") private GenericInterface specificInstance;

I can't believe it took so long for me to find how to do this.

Tuesday, April 29, 2008

Subjects for May...

How did it get to be May so soon?

Anyway - Here are three topics that I will write about in the next month (at least):

1) Rewriting origamicentral taking advantage of AJAX (provided by Dojo).
2) Investigating what it will take to do my own hosting of web and email.
3) Learning a new language (either spoken or computer - not decided yet)

If I manage to start doing my own hosting then there will be more -

Wait and see.

Ok. It's officially ridiculous now...

My origami website is just about six years old now.

And, although it does just what it is supposed to - that is waaaaay too long for a website to go without any changes.

Last month, I discovered that the database back end for the site went down (I have no idea how long it was down though). And, I realized (again) that I really need to rework the site.

It's been six weeks since then.

Time to get to work.

Saturday, April 12, 2008

Finding time...

I figured that it would be difficult to find things to write about in a blog.

What I didn't guess is how difficult it would be just to find the time to write.

I'm starting to realize now though.

So, in an effort to make this a little more consistent, I'm going to try to put together a list of ideas for my next few posts and keep at least two or three 'ahead of myself'.

We'll see if that works (crossed fingers).

Saturday, March 15, 2008

We are experiencing technical difficulties...

At some point in the relatively recent past, my origami website database got corrupted.

I don't know exactly when or how - but it did.

Because it is essentially a static reference site - I never really have done any maintenance on it.

I keep thinking that I should rewrite it (Since the site was created six years ago, it could use some work).

Also, this just highlights the fact that I should host it myself.

Just in case you want to find where a particular origami pattern is published, here is the site in it's current (very old!) form:

(You will notice that it auto-forwards to

I'll post about it again after I get around to rewriting it (And it won't auto-forward after that).

Yeah! More work for me.

Friday, March 14, 2008

Employees of 'some company' are not eligible...

As if to highlight the fact that programmers (typically) make poor testers (at least for systems that they worked on) - A new Geronimo user sent a question to the support list that basically said "When I deploy an app to the root context it doesn't say that it is in the correct place".

That is something that I noticed quite a while ago. But, because I was able to work around it - I never bothered to look any deeper. This is at least the second time that someone else had to complain about something before I 'scratched my own itch' to fix a problem that I had experience myself.

Well, it is fixed now.

Hopefully, I will learn my lesson this time. If I run into a problem, then there is a good chance that someone else will too (eventually). Besides fixing a problem once means I don't have to remember how to work around it.

My brain is cluttered enough as it is.

Friday, March 7, 2008

You have reached the end of side one...

I wonder how many kids have never heard a recorded voice say that.

Anyway, it is the end of the work week (supposedly) and my first week of having a blog.

Amazingly enough I manged to get in enough posts to look like there is one for every day of the week.

Next week (or later tonight, or sometime this weekend) I will hopefully be able to post something that is actually worth reading.


Thursday, March 6, 2008

My first 'pearl' of wisdom for you...

Even though it might seem like a good idea to be the only one who can do a particular task at your company or be the only one who knows some particularly important piece of information - it really isn't. There are degrees of being indispensable and they probably could at least limp by without you there (they just may not want to limp by).

On the other hand, it is really no fun when you have your own deadlines to meet and one of those other areas where you are the -only- expert suddenly catches fire.

Is human cloning possible yet?


Writer's block one day in...

Something that I was worried about (that has kept me from starting a blog in the first place) is trying to figure out what to write about on a regular basis.

And here I am on the second day with plenty of things that I -could- write about but unsure about what actual might -belong- here.

The idea behind 'backwards hindsight' is to try to get a little closer to 20/20 when looking into the future.

If I'm lucky (and you are too) then some of the problems/solutions that I write about will give you a different way of looking at the problems that you run into that will make finding the answers easier.

We'll see.

Wednesday, March 5, 2008

Since you probably don't actually know me...

The big 'point and giggle' part about me writing Java off as a fad way back when is that now it is one of my favorite languages.

And that is a good thing since it is the primary language that I use at work and the language that Apache Geronimo (an open source project that I am a committer on) is written in as a J2EE and JEE5 application server.

So it would have been nice to have had those ten years or so programming in Java.

Oh well.

If only I had known then...

Back in 1995 I read a book about Java programming and did a couple of tutorials.

After finishing that experiment I decided that Java was too slow, too cumbersome, and that it wasn't going to go anywhere.