Saturday, October 29, 2005
Tuesday, October 25, 2005
New Blog Seems To Be Up
Saturday, October 22, 2005
Moving Company Blog To Another Host
Ataraxis Software Company Blog, Not Much Server Luck
I commend TextDrive for this level of transparency. It's not there fault the CPU of the server is wigg'n out. I hope they pitch that box into the closest river.Gilford and Pendrell, Sat Oct 22, 13:30 GMT
Both Gilford and Pendrell are down at the moment, Gilford for a bit longer it seems. Pendrell is currently undergoing a fsck operation, Gilford may need some physical intervention and Jason is on the way there.
UPDATE 13:50 Pendrell fsck is done, services are about to come up. Still no update on Gilford.
UPDATE 14:05 Pendrell is back up.
UPDATE 14:51 Gilford has had a catastrophic failure. From the error messages we’ve seen, and correlating it with some Intel white papers, it’s an “internal processor error” that designates a “catastrophic processor failure.” More concrete detail on the exact cause/nature are hard to come by.
In the meantime, we’re working on getting Gilford’s data up onto one of our spare servers. Right now, we have the hard drives mounted on the spare and are checking the filesystems so that we can get them mounted and looked at.
Posted 13 minutes ago by Filip Hajný to Outage alert
At this point I hope the datafiles on the server are okay, or properly backed up.
Again, it's not TextDrive's fault that the hardware is crap. But I really wish Jeff and I had gone with the host I use for this web site (michaelsica.com). I've used a bunch of hosts in my time, and Crystal Tech surpasses all of them in every conceivable way - except for TextDrive's Subversion repository feature.
Thursday, October 20, 2005
So what’s up with these Ruby on Rails posts?
NOTE: This post first appeared on my "ataraxissoftware.com/blog". It has been re-created here because that blog is going through a transition and the archive may be lost. This post will have a permanent home here. (The post has been back-dated to the original post date.)
If you’ve been following me since the beginning, you know that I was developing my first application (that I just recently canceled) in Java/JSP/Spring and OpenLaszlo. I want to fill everyone in on the technology direction and thoughts that Jeff and I are leaning toward.
Jeff had experimented with Ruby on Rails a few months ago and said it was a really nice framework. We’ve all heard the hype about it… I figured since this is a new project I should keep my mind open to developing it in a technology other than Java/OpenLaszlo. I’ve been reading through the Agile Web Development with Rails book by Dave Thomas. I’m very impressed with what I’m reading. (The book starts out as a tutorial, so it’s very code-intensive. So I’m really getting to type a lot of Ruby and .rhtml code.)
While I still love the syntax of Java, and the Spring Framework, Ruby and the Ruby on Rails framework just seems like it would be so much more productive. I don’t think Ruby on Rails is doing anything radically new. The Rails MVC framework is very similiar to Spring MVC, but there are a few key differences that make Spring MVC big and scary (but I love it) and Rails dead simple. (I’m not going to tell you what those key differences are right now because it’s late and I’m getting tired. ;))
(Just for reference, here are my RoR posts so far: link 1, link 2, link 3).
At this point I’m pretty sure we’re going to be using RoR for our web application.
So have I left OpenLaszlo in the dust? I was one of the few people out there blogging about OpenLaszlo. Honestly, I’m not sure. One of the beautiful things about OpenLaszlo (or the upcoming Flex 2 for that matter) is that I can write a component in OpenLaszlo “LZX” and compile it down to a standalone .swf (Flash movie file) file. Which is great because I can embed them into HTML pages, and the .swf file can communicate with the browser’s JavaScript and/or to a server via SOAP web services or XML over HTTP (REST style web services).
I’m pretty sure that we’re going to be using regular HTML and *gasp* JavaScript for our GUI. BUT in those situations where we don’t want to write something in JavaScript we can always use OpenLaszlo or Flex to build a self contained component that embeds seamlessly (to the user) into the GUI.
Or heck, we may use OpenLaszlo for the entire front-end like I was previously planning. Or not. ;)
Wednesday, October 19, 2005
The New Product Idea
NOTE: This post first appeared on my "ataraxissoftware.com/blog". It has been re-created here because that blog is going through a transition and the archive may be lost. This post will have a permanent home here. (The post has been back-dated to the original post date.)
For the past year and a half I was planning on creating a web-based Project Management application. I was blogging about the development of it on my previous blog. Long story short, the project was just too large for 1 person (me) to develop. To get the full story, you can read my blog post (from the old blog), Getting Second Thoughts / Time.
After I published the, “Second Thoughts”, post I made the decision that I really wanted some help with this whole, “I’m going to build a software product”, thing. Enter Mr. Marder.Jeff (Mr. Marder to you ;) ) and I used to work together at my current employer. (Damn, I think we’ve know each other for almost 4 years. But I digress…) Jeff and I hit it off pretty well when we worked together. We made fun of the same things at work, share a love for stupid-cool cars, and we’re both into technology. Ever since he left my current employer we’ve kept in touch.
I’ve got a bunch of ideas for products that I want to build (some more original than others) , so I pitched one of them to Jeff. He was totally stoked. We felt that the size of the idea was small enough to implement in a few months (at least have something working). I spent the next couple of weeks working on a prototype, but about a week ago OUT OF THE BLUE another product idea smacked me in the brain. (It’s more of a service/product, really.)I shot off an email to Jeff describing what it is, and again, he was stoked.
This “out of the blue” idea is even smaller in scale than the previous one, thus increasing our likelyhood of actually finishing it.So here is the idea.
Well, here is the back story first. ;)At my current day job I am a Project “Coordinator”. (I’m a Project Manager, but they call us “Coordinators” so they can pay us less.) One of my roles is to meet with people from the various internal business units when they request a new web site or web application. I talk with them about what their needs are, gather their requirements, and manage the technical staff through out the project’s implementation.
About a year ago I had a request from the Creative Design department of our company. The request was to build a system that would accept requests from other departments for print work, and facilitate the electronic review and acceptance of their work by their internal clients. Long story short, this system never made it past the initial discovery phase because they needed a “system” and they are only a department with a handful of people. (IMO a very talented and important handful, but apparently not yet worthy of the resources to build out this “system”.)The entire time I was talking to the Creative Design department I kept thinking to myself, I could turn this into a commercial product/service. There’s got to be more companies that have this problem.
Now, for the first release of our yet-to-be-named product/service I’m not going to implement the entire “system” concept. Jeff and I are going to build one piece of that “system”, and we’re starting with the electronic review and approval piece.I’m not giving up the feature list details quite yet! But 1.0 is going to be small and lean. I’m itching to actually complete something!
This morning sucked.
Does anyone else have this kind of problem with Text Drive?
Tuesday, October 18, 2005
Ataraxis Software Company Blog
Jeff and I have finally published our new blog. Please point your web browsers over to http://www.ataraxissoftware.com/blog, and your feed readers to the XML feed.
We both understand that the standard WordPress theme is boring, but we've got software to write! :)
This blog will keep going, but most of the company-specific stuff will end up over there.
Update: Great, it's about 10:00 am on the East Coast and the web site seems to be down. Errr....
Update 2: It's about 10:40 and the site seems to be back up. Sorry about that!
Further Ruby on Rails reading. Validation is in the right spot.
Anyway, I found something I really like about the Ruby on Rails framework. It places the validation of form fields/member variables (of a model object) in the right place. :)
When I first started with web development I was writing really bad PHP scripts, then I graduated into hacking (poorly) Coldfusion. All the while writing the validation of my forms in PHP and Coldfusion code, usually embedded into the same file as the form. In my worst days a code file would look like this:
if form submitted then validate
//validation "logic"
...if form valid write to database
...//display confirmation
else display empty form
//display form, set action to self (so it posts to itself)
When I learned about the Fusebox framework I began to see the error of my way. (Fusebox is a framework to help organize your PHP or CF development.) Fusebox breaks apart your code files into "action" and "display" files. All "logic" goes in the "action" files and all the display stuff goes in the.... you guessed it, "display" files. The two types of files are signified by their prefixes, "act_", and "dsp_". Working with Fusebox starts to move you toward posting to somewhere other than the form and has you begin to break apart your "logic" and your "display" code. But all of your logic, validation and otherwise is stuck inside of the view tier - the PHP or CF code that executes when they are requested through the URL. You start running into problems when you want to reuse some of that functionality and business logic. Now, you can start breaking things into functions (or in Coldfusion, Custom Tags), which will help in calling the business logic in more than one place. But as your business logic becomes more complex, or just plain larger in size, the procedural programming model, and all your business logic only being accessible through functions or file includes, can become constraining. If another system on the same box wants to re-use or interface with your existing code base.... Um, you can have fun with that one!
Once I started studying Java and object-oriented programming I saw a couple of things.
You want all your application "logic" to live in "objects". (The objects that implement your business logic are usually referred to as "business objects".) All of the logic surrounding a particular object should live as close to that object as possible. It's a great organization step in programming. I won't give you the whole OO pitch, but by using objects it becomes easier to deal with complex business logic, encapsulate your data access (DB? Web Service? Flat File? Your front-end and controllers won't care, it's only concerned with the objects.), and allows for easier re-purposing of your logic (the objects) for multiple views.
Where am I going with this?
As I mentioned before, in the past (a long time ago, I swear) all of my validation logic was in my "view" layer. The scripting languages of Coldfusion or PHP. When I learned how to use the Spring MVC framework (Java/JSP) I learned about how you can build the validation into the model of your application. When I say "model" of your application I'm referring to the business objects, the place where your logic should reside.
In Spring MVC a form and it's submission would follow this pattern:
1) Controller intercepts a request (framework does this)
2) Controller figures out if it's a form POST or if the user has just browsed to the page (framework does this)
3) If the user has landed on the form for the first time it renders the form. (framework does this) Otherwise #4
4) The Controller fires off the Validator object that is associated with this Controller. (framework does this, but you write the Validator object and the validation code yourself.)
The Spring people tell you to put the Validator object in the model of your application. For example, in Java you might organize your code in the following package (folder) structure:
com.michaelsica.system.SomeBusinessObject
com.michaelsica.system.SomeBusinessObjectValidator
com.michaelsica.website.SomeBusinessObjectFormController
Everything under, "com.michaelsica.system", would be considered the "model"/"business objects". The code under "com.michaelsica.website" is code that is specific to the web site.
5) And then on the file system you'd have a JSP file that the the Controller would use to render everything.
Now if you needed another view for this business object, let's say for a remote interface, you'd create another package that may look like this:
com.michaelsica.remoteinterface.SomeBusinessObjectRemoteController
The way the above is setup is great because your validation logic is a part of your logical "model". It can be easily re-used in both the ".website." and ".remoteinterface." packages. Now you CAN actually have the validator class in the ".website." package and re-use it in the ".remoteinterface." package, but that could get confusing. You would be creating an ackward dependency between 2 packages that shouldn't even know about each other. (The web site doesn't care about the remote interface and the remote interface doesn't care about the web site. Don't create weird dependencies like that.)
Now, how does Ruby on Rails do this better?
In Rails, the validation logic is actually apart of the business object itself.
In my above Java/Spring MVC example I had two objects, SomeBusinessObject and SomeBusinessObjectValidator. The SomeBusinessObject would typically contain any business rules related to it, and the Validator object would contain ... validating rules. (Like making sure all the fields/member variables were populated with properly formatted data, etc.... FYI, Spring MVC has a ton of helper functions for this in it's ValidationUtils class that you can use in your Validator object.)
The Rails equivalent would put all the validation logic in the SomeBusinessObject, and it would be super easy to read. Like this (taken from the "Agile Web Development with Rails" book):
validates_presence_of :title, :description, :image_url
validates_numericality_of :price
validates_uniqueness_of :title
I don't even have to explain to you what that code is doing. If you're a programmer you can probably figure it out.
So what's the big deal?
Ruby on Rails is not only putting the validation in the model, it's forcing you to put it in the specific business object that needs it. 1 less file to worry about (compared to Spring MVC), and that validation logic will ALWAYS be with the business object.
The Rails framework actually knows when the object is invalid, and it uses that information to display errors on your form. Rails comes with a nifty sub-framework called scaffolding. It auto-generates a GUI for you so you can quickly begin working with your model/business objects and data.
I looked through the autogenerated GUI code and this is the line that spits out a the list of errors.
<%= error_messages_for 'product' %>
('product' is the name of the business object this form was created for)
The scaffolding GUI puts a red outline around the form fields that are invalid. The form fields are bound to the model member variables like so:
<%= text_field 'product', 'title' %>
('product' again being the business object, and 'title' being the member variable of the product object. With the scaffolding framework it automatically creates 1 form field for every member variable of your business object. Obviously you take out the stuff you don't want on the form. The scaffolding isn't even meant to be used as your final GUI. It just gets you going.)
The "text_field" operation is looking at the member variable inside the model object. When it goes to render the HTML for the cooresponding form field it adds a little extra HTML/CSS to get the red outline effect.
This binding between the view and the business object is very powerful because your forms are direct representations of your business objects. It's a safe route because if anything needs to change inside your business object, the change happens in the business object and the form continues to operate against the business object's existing interface. (An example of a change would be that one day you your data is stored by calling a 3rd party's web service, instead of your own database.)
The point of this very long blog post is that I really like the way Ruby on Rails handles the placement of the object model's validation logic. :)
Sunday, October 16, 2005
Just want to share. Seth on the new rules of naming
Shawn Porter's Regal Threads
Saturday, October 15, 2005
So the wife hates her job...
If anyone cares my "interest" color is blue, which means,
People with blue Interests like job responsibilities and occupations that involve creative, humanistic, thoughtful, and quiet types of activities. Blue Interests include abstracting, theorizing, designing, writing, reflecting, and originating, which often lead to work in editing, teaching, composing, inventing, mediating, clergy, and writing.My "usual" color is also blue, which means,
People with blue styles prefer to perform their job responsibilities in a manner that is supportive and helpful to others with a minimum of confrontation. They prefer to work where they have time to think things through before acting. People with blue style tend to be insightful, reflective, selectively sociable, creative, thoughtful, emotional, imaginative, and sensitive. Usually they thrive in a cutting edge, informally paced, future-oriented environment. You will want to choose a work environment or career path in which your style is welcomed and produces results.Take the quiz, and let me know what you got. I'm curious! :)
Friday, October 14, 2005
Just want to share. Cubicle Coder's Journey with Ruby
Thursday, October 13, 2005
Just an FYI. Version Control with Subversion is a free book.
Just an FYI. :)
Started Reading, "Agile Web Development with Rails"
(...With my limited reading...) I'm a little scared of Ruby's, "you can write the same thing a few different ways" power. I get a little intimidated when I see stuff like this:
The following lines are equivalent.I have a feeling it's this type of behavior that allows Ruby code to be more human readable (i.e. looks like commands instead of function/method calls). I've never liked situations where there is more than 1 way to do something. But that's just me.
puts say_goodnight("John-Boy")
puts(say_goodnight("John-Boy"))
(....Again with my limited reading....) I'm very impressed with the Rails MVC framework. The way the first "directory" in the URL maps to controller, and the next directory maps to a method call is very nice. I believe Spring MVC has a similiar style of controller (my memory fails me as to what it's called), but Spring MVC is a big, sophisticated framework based on lots of configuration with a bunch of Spring MVC controller object types. (All the controller objects extend from a base class, of course.). So far what I like about Rails is that I'm not really given a choice as to what type of controller object I'm using. It appears (at this point) that it only has one style.
I really do like Spring MVC! It was my first look at what I consider a REAL "MVC" framework. If you have to develop in Java/JSP I highly recommend it!
The (seemingly) pure MVC framework that Rails provides coupled with the (seemingly) integrated ORM framework, ActiveRecord, looks to be a very natural path to writing less code while accomplishing a lot. (I say seemingly because I haven't written any Ruby on Rails apps or code yet.)
Writing less code is good.
Rod Johnson, the inventor of the Spring Framework and someone I really respect, said in a presentation that he enjoys writing less code. The next thing he said was, "I never have to debug code that isn't written." (Or something like that. :) )
I'm looking forward to reading the rest of this book, and working with the sample app. The (main) author of this book, Dave Thomas, was at the conference I attended earlier this year. Dave is a phenomenal speaker, and the entire time I was reading this book I kept hearing his calming English accent. (The way he paces his voice while speaking makes everything he says sound incredibly intelligent. :) ) Dave also had pretty close access to the creator of the Rails framework, David Heinemeier Hansson. So even as other Ruby on Rails books are published this one should be the gold standard the others are measured against.
Wednesday, October 12, 2005
Still working on new blog
I'm going crazy not having a blog to talk about this new project. I considered starting the discussion about it here, but then I would feel the need to repeat myself once the new one is up and running. So I decided against it.
By the way, how frigg'n cool are those new iMac G5's?
Friday, October 07, 2005
Why didn't anyone tell me? :)
"Ataraxis Software™ the name of my software company."
Duh! I'm changing it now...
:)
Here's The Plan
I thought about everything and I've decided the following.
I am stopping work on the Project Management web application, and starting work on a project with less complexity. I felt I had already trimmed down the feature set of the PM application to it's smallest point. But I still felt it was too large to finish in a reasonable time frame.
I've also done a smart thing. :) I have recruited my friend, Jeff Marder, to join me in the development efforts. Jeff used to work with me at my current day job, and has been working as a web development consultant/programmer for the past year. He's smart guy who soakes up new technology like a sponge.
We're going to start a 2-man blog for our new product. As soon as we get the domain, server, and blogging software all setup I'll post a link to the new blog. I'll probably keep this blog going, but most of the project-related stuff will more than likely end up on the new one.
I'll give you more details on the product and the technologies we're considering once we get the new blog rolling.
Thank You to everyone who has been following this blog. I hope you follow me to the new one!

