Saturday, December 31, 2005

Paul Graham is a LISP dude.  He likes LISP.  He preaches LISP.  This made me very interested in LISP because I find his writing to be interesting. 

Joel Spolsky is also an interesting writer.  He has mentioned LISP several times in various essays.

Taken together this provides curiosity about LISP.  I’ve downloaded SCHEME and played with it.  On the surface it seems an interesting concept.  You define functions which you can then call.  Not too far out.

I’ve also come upon the recent Reddit-LISP-convert-to-Python controversy and this inspired some thinking on my behalf. 

I will concede that LISP is the most powerful language in the solar system.  Maybe GOD (GOD Over Djinn) wrote the universe in LISP.  If so why didn’t he provide the nice standard libraries for sockets and threading that the Reddit team would eventually need?

I’m interested in these ideas because I recently started using Ruby on Rails and JavaScript which are both languages with a similarity to LISP (or maybe the better description is “cheap knock offs of LISP” or maybe “actually useable versions of LISP”?).  Of course as an avid reader of the sources I’ve mentioned above I was more readily willing to try Ruby.  My background is in Microsoft technologies and Java.  I started in VBScript then I went to Visual Basic then to .NET with C# and then to Java and now back to classic ASP and ASP.NET with C# and Visual Basic. 

I’ve learned that .NET and Java the platforms are roughly equivalent in power with Java having the longevity advantage which provides for all kinds of open source resources and a mountain of documentation.  Java can run on multiple OS’s and I used to work for a company where this was important, now I don’t so this is no longer an issue for me.

Now LISP claims the title as most powerful.  I would append this to “theoretically most powerful.”  If it is the most powerful why do people stop using it because it can’t do what they need?  Why did Paul Graham have to write his back office code in Perl and his image manipulation in C if LISP was so powerful?  Why does Joel Spolsky write FogBugz in ASP classic? 

It comes down to libraries.  Java is the king of libraries.  I can find Java classes to do anything.  NET is catching up.  JavaScript is going to rule client side software.  So why am I using Ruby?  Because I can get most of what I need to get done very fast and there are a lot of libraries for Ruby available.  Not as many as Java or NET but no deal killers yet.  It’s cross platform.  I develop on a Windows machine and deploy to a FreeBSD machine with no problems. 

Maybe one day I’ll get around to truly learning LISP but it will probably be after I’ve written my killer app in a more powerful language…

Saturday, December 31, 2005 10:36:31 AM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Friday, December 30, 2005

I've been thinking about business ideas lately and this topic comes to mind.  Many of the large and well publicized acquisitions by Yahoo and others are for general purpose large user base applications.  These include picture sharing and social networking in one form or another. 

Today in a meeting one of my colleagues made the comment that "custom is always better" in reference to COTS versus home grown software.  This started a thought process on the value of software and a continuum for measuring the value. 

On the low end you have a product like Writely or Basecamp.  These applications are simple and general purpose.  On the other side you have software for a custom application and in the extreme case it is for one customer, one site or perhaps one special purpose like running one of a kind machinery.  Now I believe that we can place value of the software along this spectrum.

A piece of blogging software has almost zero value because it is on the commodity end of the spectrum.  Anyone can write blogging software and everyone apparently has.  There are so many open source blogging engines that it's almost comical.  Let’s say that the developer/publisher makes one cent off each user so volume is important.

On the other hand specialized software is expensive.  Software for complex processes like specialized work flow, monitoring and industrial processes is very expensive.  COTS packages for this type of application are not cheap.  In this monetary range many organizations hire programmers either full time or as consultants to build custom applications.  These often are the most expensive of the software options, yet like a tailored suit often provide the best fit.

The problem I’ve seen is that companies that have a full time development staff often opt for COTS packages.  While many times this is a great fit for example buying the MS Office suite is a good idea, trying to wedge a work flow system into an organization is not such a good idea.  The more custom your application, meaning the more a COTS solution needs tailoring for the organization, the more a custom developed application makes sense. 

These types of application can pay very well but you need a lot of pay from these jobs because you very likely can only sell one of them.  You can’t mass produce these applications on a CD and put them on the shelf in Wal-mart. 

What does this mean?

I think that the companies purchased by Yahoo, Google et al. are lottery winners.  The development effort was equivalent to buying the $1 Lotto ticket at the local gas station.  When you win you win big but most the time you lose but it’s not a big deal because you haven’t invested much.


The other side is more like a Texas Hold ‘Em game.  You’ve got fewer competitors but you know who you’re playing against.  This is where the big boys play; the COTS players with the deep pockets, if you will. 

I think my spot is somewhere in the middle.  I don’t want to write yet another blog engine but I don’t want to make shrink-wrapped software.

 

 

Friday, December 30, 2005 9:18:04 PM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Thursday, December 29, 2005

Adobe Acrobat has sucked for quite some time.   Actually it has sucked since version 6.0.  Now there is a great replacement for it.

Foxit (http://www.foxitsoftware.com/pdf/rd_intro.php)

It's small and fast and you simply download a single exe and execute it.  No fuss no muss and did I mention fast?  It smokes.  It's also free.  This has to be one of the best pieces of software I've seen in a long time.

This is going into the Pragmatic SDK.

 

 

Thursday, December 29, 2005 9:38:00 AM (Central Standard Time, UTC-06:00)  #    Comments [3]
 Thursday, December 15, 2005

You may be annoyed if you are used to a convenient trim function on your strings that eliminates leading and trailing whitespace and you've found that it doesn't exist in javascript.

Here's a quick fix:

//start code
// add the missing trim functions
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); };

//end code

Add this in any javascript file or in between some <script> tags and your javascript strings will magically have the trim function.

This is because javascript classes are mutable.  There is a more accurate and technical explanation but I will spare you the pain. 

We are simply adding the trim function to the string class at runtime.  The trim function uses regular expressions to trim the string of leading and trailing whitespace. 

Thursday, December 15, 2005 11:47:55 AM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Saturday, December 03, 2005
The Open Laszlo frame work is an RIA (Rich Internet Application) which is open-source.  It relies on the Flash plug-in in the browser for virtual machine functionality.

Q & A:

What is the benefit of using Open Laszlo as a client versus HTML?

Open Laszlo is a rich client.  This can best be compared to a Visual Basic application or any other Windows based application where the client can maintain state.  Also you have much greater control over application layout and appearance without worrying about the inconsistencies of web standards between different browsers.  As long as the client web browser has a Flash plug-in installed, the Laszlo application can run and will appear consistently across browsers.  No more CSS Layout hell.

Is the reliance on Flash a problem? 

Actually the Flash reliance can be a benefit.  Flash market penetration is somewhere above 97% for the 7.x version of the Flash plug-in.

What about text size?

Actually the application can be split among files so the main application can load quickly and other pieces of the application can be loaded on demand.

Is download size a problem?

Actually the application can be split among files so the main application can load quickly and other pieces of the applicaton can be loaded on demand.

How can you interact with other frameworks and technology?

Laszlo uses XML as the basic unit of data transfer.  As long as you can generate XML with your server application Laszlo can use it.  Data can be returned to the server in any form necessary including the typical form POST method or in an XML format or whatever other method you can conceive.

Do I need any special server software?

No, you need the ability to host SWF files, which should not be a problem for a majority of hosting solutions.  The Flash files are simply files downloaded like any other file (like a picture or PDF) to the client browser.  You can use the Laszlo server which is a Java based stack but I am using Ruby on Rails as my server software.  When Laszlo is deployed in SOLO mode (as my site is) you do not need any supporting server software.  Simply communicate through http to any resource that can return XML.


Saturday, December 03, 2005 12:47:20 PM (Central Standard Time, UTC-06:00)  #    Comments [0]

Here's a link to a presentation about some seemingly disjointed topics that blend into an architectural discussion about simplicity. 

Highlights:
We don't need middleware (There is no such thing as transport independance).
URL's are important
Small disconnected functionality can be combined with unexpted results (Google Maps + Craig's List)


http://intertwingly.net/slides/2005/rs/
 |  | 
Saturday, December 03, 2005 12:41:52 PM (Central Standard Time, UTC-06:00)  #    Comments [0]