<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0">
			<channel>
			<title>Simon Horwith&apos;s Blog - LISP</title>
			<link>http://www.horwith.com/index.cfm</link>
			<description>Editorials, technical papers, and fleeting thoughts from a web development dinosaur turned IT Executive.</description>
			<language>en-us</language>
			<pubDate>Mon, 06 Sep 2010 07:45:31 -0400</pubDate>
			<lastBuildDate>Tue, 11 May 2010 17:40:00 -0400</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>simon@horwith.com</managingEditor>
			<webMaster>simon@horwith.com</webMaster>
			
			
			
			
			
			<item>
				<title>A Few Thoughts About Various Programming Languages</title>
				<link>http://www.horwith.com/index.cfm/2010/5/11/a-few-thoughts-about-various-programming-languages</link>
				<description>
				
				In my role leading development shops, I am constantly having to learn and evaluate new programming languages and tools in order to keep us current as well as in order to discover better ways to accomplish goals. As a developer, I am also constantly learning simply because I want to get better at what I do, I love what I do, and learning new languages is a fun and rewarding undertaking. From time to time, someone writes a blog entry or gives a conference presentation about the importance of knowing more than one language... of not being a &apos;one trick pony&apos;. I was reading Sean Corfield&apos;s recent blog post about Clojure and realized that I&apos;ve never written about my recommendations or opinions of various languages that I&apos;ve used or evaluated... until now. In no particular order, here are several of the technologies that I know and my thoughts about them:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Python
&lt;ul&gt;&lt;li&gt;I&apos;ve recently been spending a decent amount of time learning and using Python - it&apos;s very fast and powerful, and is syntactically one of the most concise and elegant languages I&apos;ve ever seen... it&apos;s VERY readable and the more I use it, the more I like it. Python is definitely one of my favorite languages.
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;

&lt;li&gt;Java
&lt;ul&gt;&lt;li&gt;I&apos;ve used Java off and on since 1995, and somehow keep ending-up having to use it on projects from time to time. The language has gotten larger, faster, and for the most part, better over the past decade and a half - I found the language improvements in Java 5 particularly useful in that they clearly tried to make it easier to do what you want in your code. That said, I don&apos;t find Java programming particularly clever or challenging and on many projects I see, deployment is a terribly painful process. Java applications tend to have ridiculous file/directory structures and I&apos;m not a huge fan of how strict it is. Java is everywhere and does have a huge job market, so it&apos;s worth knowing for those reasons... but it would never be my first choice of languages to use based on any merits other than the large talent pool and number of open source projects.
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;

&lt;li&gt;PowerShell
&lt;ul&gt;&lt;li&gt;Powershell is probably the coolest new thing I&apos;ve seen in a long time. For those of you unfamiliar with it - it&apos;s a fully OO scripting environment for Windows (runs on .NET) and is free from Microsoft. The syntax is slick and simple, and the power you can pack into a single line of code makes it a no-brainer for anyone who needs or wants to administer a Windows network or machine. With powershell, windows finally has a shell that&apos;s better and more powerful than those available on nix systems. Bottom line: if you use Windows you REALLY should learn Powershell.
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;

&lt;li&gt;PHP
&lt;ul&gt;&lt;li&gt;PHP is yet another free technology - we use PHP and CF for most of our projects, and I like PHP a lot. A long time ago, some people called PHP &quot;poor man&apos;s ColdFusion&quot;... well, I think it&apos;s more true today than it was back then. It&apos;s simple, lightweight, and fast... and development times really aren&apos;t much longer than with CFML provided you&apos;re not trying to do something that CF does out of the box that there&apos;s no PHP module to do. I don&apos;t see it having many advantages over CF aside from price, the huge talent pool, and the number of open source projects. There&apos;s a good job market for PHP but those jobs don&apos;t typically pay as well, so I&apos;d learn it because of it&apos;s popularity but I wouldn&apos;t choose a career focused exclusively on it. 
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;

&lt;li&gt;Flex/ActionScript
&lt;ul&gt;&lt;li&gt;I&apos;ve used Flex since beta 1, and I enjoy seeing how it evolves with each new release. I don&apos;t particularly like programming with ActionScript for the same reasons I don&apos;t like Java - but unlike Java, I do love the end result you get with Flex... enough to want to do it. No technology to date that&apos;s tried to compete with Flash has been compelling enough to use in lieu. There&apos;s also a great job market for Flex - especially here in New York City, and it&apos;s one of the top 3 or 4 technologies I&apos;d recommend learning to anyone who wants a successful web development career right now.  
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;

&lt;li&gt;ColdFusion
&lt;ul&gt;&lt;li&gt;I&apos;ve used CF since the beginning and continue to use it heavily. It&apos;s not the best performing technology available but it performs well enough for most needs. No, it&apos;s not free, but development/debugging time is rapid enough to easily justify the cost. These days, CF&apos;s closed architecture and code base is a real turn-off for me personally, but it&apos;s the lack of talent (and the poor quality of most &quot;talent&quot;) that is it&apos;s only solid turn-off from a business perspective. The native support for Flex is probably its most compelling unique feature... that, and it&apos;s rapid development nature. It&apos;s a good choice when you want a very robust user-friendly platform in a turn-key solution. 
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;

&lt;li&gt;LISP
&lt;ul&gt;&lt;li&gt;LISP is, hands down, personally my favorite language. Five or six years ago I set-out to spend 6 months of my free time teaching myself LISP, and I enjoyed it so much that I just never stopped. The syntax took a little getting used to, and emacs takes even longer to get used to - which is probably the most annoying part of learning LISP (I haven&apos;t found a better free IDE for LISP yet). LISP is beautiful in the simplicity of its design - most notably in the interchangeable nature of code and data. It is definitely the most expressive and flexible language I&apos;ve used - as well as the most powerful. Be warned; it takes a while to un-train yourself and learn how to really harness the power of LISP (particularly of macros and, if you&apos;re new to it, thinking in functional terms). I also, surprisingly, find the implementation of OOP in LISP (CLOS) much nicer and cleaner than that of any other language. I strongly recommend learning LISP. Not because there&apos;s a huge job market for it (there isn&apos;t) but because it puts other languages into perspective and because it WILL make you a better developer (I&apos;ve learned more from &apos;tinkering&apos; with LISP than any other language). 
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

So, those are the main languages I&apos;ve played with and developed feelings for recently (within the past 2 years). It&apos;s worth noting that there are other languages I left off for brevity. I&apos;ve also been getting back into JavaScript these days - I have a new appreciation for it&apos;s functional nature and closures, and I think JQuery is pretty slick. I&apos;ve taken a pretty good look at Objective C - it&apos;s a decent language but not worth learning unless you want to do a lot of Apple development. I&apos;ve also played around with Clojure - which is essentially a pseudo-LISP implementation for the JVM - I liked it, but prefer to use &apos;pure&apos; LISP... though it&apos;s attractive being able to write LISPy code that I can run on a JVM, since Java is everywhere. There are a few other languages I haven&apos;t had time to take a good enough look at yet but hope to very soon. Specifically, I&apos;m interested in looking at Scala and Caml... and I&apos;ve begun learning some Haskell and hope to dig into that a little deeper.
				
				</description>
				
				<category>Flex</category>
				
				<category>ColdFusion</category>
				
				<category>Java</category>
				
				<category>Misc</category>
				
				<category>PHP</category>
				
				<category>LISP</category>
				
				<pubDate>Tue, 11 May 2010 17:40:00 -0400</pubDate>
				<guid>http://www.horwith.com/index.cfm/2010/5/11/a-few-thoughts-about-various-programming-languages</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>What have I been up to lately?</title>
				<link>http://www.horwith.com/index.cfm/2008/6/20/what-has-Simon-been-up-to</link>
				<description>
				
				So, a lot of people have noticed and commented to me about dropping off the face of the world (from a CF Community point of view), so I thought I&apos;d explain what I&apos;ve been up to. As I&apos;ve mentioned a few times in posts recently, my priorities in life definitely have changed since my son was born. He&apos;s put what&apos;s really important in life into perspective for me, which has definitely had a lot to do with how quiet I&apos;ve been for a while.&lt;br /&gt;&lt;br /&gt;
I should begin by mentioning that I haven&apos;t at all stopped supporting the community, I&apos;ve just been doing it more at user groups, classrooms, and client sites than anywhere else. I find that in these outlets, the audience is more appreciative, information is conveyed in a more useful manner, and I don&apos;t have to deal with what can only be described as the &quot;ridiculous political atmosphere&quot; that tends to accompany more open forums in the development community.&lt;br /&gt;&lt;br /&gt;
Getting back to my original point: what have I been up to, professionally?&lt;br /&gt;&lt;br /&gt;
Well, first of all, I&apos;ve taken the role of CTO at Nylon Technology very seriously and am trying to rise to that challenge. There are some technical challenges of course, but my greatest challenges are in growing as an executive and manager. What&apos;s particularly difficult sometimes is &quot;letting go of the code&quot;... something I&apos;ll write about in detail another time.&lt;br /&gt;&lt;br /&gt;
I have been doing a decent amount of internal development at  Nylon to support our internal and commercial needs. I find this particularly exciting, as it&apos;s given me to develop things I&apos;ve always wanted to... and most importantly HOW I&apos;ve always wanted to. There is a definite possibility that we will be releasing some of this code to the public.&lt;br /&gt;&lt;br /&gt;
To grow as a developer as well as to be the best CTO I can be at Nylon Technology, I&apos;ve also been spending more time with technologies other than CF. We are definitely largely a CF shop, but also do quite a fair bit of PHP and Flash (rich multimedia projects). I&apos;ve also taught myself Powershell which, by it&apos;s nature, included learning much more about the .NET Framework. I&apos;m still not a huge .NET fan, but Powershell itself is one of the coolest languages I&apos;ve ever seen. Reminded me a lot of LISP in many ways, with some strong parallels to perl and python and even CF... and some nice new nuances of its own, of course. If you are into programming/scripting languages and/or are looking for the best way to administer Windows networks and machines, definitely check out Powershell.&lt;br /&gt;&lt;br /&gt;
I&apos;m in the process of building a decent sized Flex talent pool in-house, and we&apos;ve done several Flex projects and prototypes. We&apos;re also getting started on what, by my estimation, is definitely the most high profile project that I&apos;ve ever worked on and, in all likelihood, will be the most high profile project on the web built entirely with Flex and CF. I can&apos;t say anything more about that at the moment, but it is very high profile and the contract has been signed, so you&apos;ll definitely hear more about it in the future. I can&apos;t wait to talk about that!&lt;br /&gt;&lt;br /&gt;
I&apos;ve also built new development and staging environments at Nylon, complete with source control and a web-based server admin and project-build (deployment) interface created by yours truly. This is part of a slow introduction of new development methodologies and project management policies and procedures.&lt;br /&gt;&lt;br /&gt;
Yes, I&apos;ve been busy... and what I&apos;ve said here only scratches the surface. More to come (much more) including, among other things, my thoughts about the future of ColdFusion.
				
				</description>
				
				<category>Flex</category>
				
				<category>ColdFusion</category>
				
				<category>Writing and Presenting</category>
				
				<category>Misc</category>
				
				<category>LISP</category>
				
				<pubDate>Fri, 20 Jun 2008 06:14:00 -0400</pubDate>
				<guid>http://www.horwith.com/index.cfm/2008/6/20/what-has-Simon-been-up-to</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>What I&apos;ve Been Up To</title>
				<link>http://www.horwith.com/index.cfm/2008/1/27/what-i-did-2nd-half-2007</link>
				<description>
				
				After returning from my latest trip to India, I&apos;m finally begining to break my long radio silence and blog again. I&apos;ve spent the past 5 or 6 months really trying to grow professionally and technically. So, what have I been up to?&lt;br /&gt;&lt;br /&gt;
Professionally, over the past decade I&apos;ve served every role from Senior Developer to Architect to CTO and CIO. About 2 years ago I spent a good amount of time getting more and more active in business development - a role that makes sense given my love for public speaking. I thought the time had come to grow a bit, so I&apos;ve spent the past 5 or 6 months functioning almost entirely (I do still write code, though) in a sales capacity. Sales is more challenging, or at the least more frustrating, than business development, but it&apos;s essential to any business and I thought it was high time I learned it first hand. I learned 2 things from the experience. One is a new found respect for the job sales people do at solutions companies. The other is that I don&apos;t ever want to be a full time sales person. Still, if I&apos;m going to function at an executive level for IT companies, it&apos;s important I not only understand/appreciate the role of sales, but also that I intimately understand what it is that they do day-in and day-out.&lt;br /&gt;&lt;br /&gt;
Technically, I&apos;ve been extremely busy. I&apos;ve read, studied, and digested every piece of literature available on the subject of user experience. I&apos;ve gotten into interface driven application design and tried my hand at putting all these theories into practice. I&apos;ve been using Flex and AIR a lot as well as AJAX - trying to weigh up the pros and cons of each as well as put CF into the picture for a perspective from the server-side developer&apos;s point of view. I&apos;ve also been taking a lot from what I&apos;ve learned from LISP and my studies in Object Theory and as a result have been giving a lot of thought to what I would like to see improved in CF as well as to how these ideas might be applicable in ColdFusion development right now.&lt;br /&gt;&lt;br /&gt;
There&apos;s a lot I plan to write about as a result of my past 6 months of exploration, and hopefully I&apos;ll find the time in the near future. In the interim, I&apos;m also now actively seeking to take my attention away from theory and away from sales and get back to doing what I do best - writing code and leading IT shops.
				
				</description>
				
				<category>Flex</category>
				
				<category>ColdFusion</category>
				
				<category>Misc</category>
				
				<category>AIR</category>
				
				<category>LISP</category>
				
				<pubDate>Sun, 27 Jan 2008 11:30:00 -0400</pubDate>
				<guid>http://www.horwith.com/index.cfm/2008/1/27/what-i-did-2nd-half-2007</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>LISP Clarification</title>
				<link>http://www.horwith.com/index.cfm/2007/12/18/LISP-abstraction--clarification</link>
				<description>
				
				In my last post, I mentioned that I&apos;ve been learning how to work with binary data and bit streams in LISP and that many languages including ColdFusion abstract this low level of functionality for developers.&lt;br /&gt;&lt;br /&gt;
I received an email from a reader asking why I&apos;m learning a language like LISP if it doesn&apos;t make things easier by abstracting low level implementation details. In re-reading my entry, I can see how a reader might perceive this. For clarification, LISP does indeed have many functions and features that abstract low level details - including for doing things like reading and writing files in the file system. LISP, and many other languages, also still expose that low level functionality if a developer wants to have at it. I&apos;ve never had to read and write text files bit by bit, and in most languages you would never have to (such is the case with ColdFusion) - but understanding how to do so is an interesting learning exercise. I was learning how to do this in LISP for fun.
				
				</description>
				
				<category>Misc</category>
				
				<category>LISP</category>
				
				<pubDate>Tue, 18 Dec 2007 08:54:00 -0400</pubDate>
				<guid>http://www.horwith.com/index.cfm/2007/12/18/LISP-abstraction--clarification</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>CF and the Evolving Web</title>
				<link>http://www.horwith.com/index.cfm/2007/12/17/bladeds-announced</link>
				<description>
				
				I&apos;ve been very busy lately so please excuse the absence of posts. While I&apos;m on the subject of being away, I&apos;ll mention that I&apos;m leaving the country to embark on my annual trip to India in 9 days.&lt;p /&gt;
Last week I spoke at the MD CFUG - the planned topic was CF Powered Flex and AIR, including a discussion of the changing role of CF on the web today. What ended-up happening was a 45 minute discussion about CF&apos;s role in the evolving web with an hour&apos;s worth of code and demos crammed into 15 minutes at the end. That said, it was a productive and interesting discussion, which I really enjoyed. I plan to elaborate on the main points of that discussion in a blog entry in the very near future.&lt;br /&gt;&lt;br /&gt;
Unfortunately, the announcement about the availability of BladeDS had not been made yet when I gave the preso.  It would have added a bit of relevant very current events to the talk. For those of you who haven&apos;t heard about BladeDS, it&apos;s the (currently) beta release by Adobe of a subset of the technology that drives LCDS (formerly Flex Data Services) as an Open Source solution. BladeDS includes the specification for the AMF 3 protocol and a (J2EE) server-side communication piece that supports AMF, messaging (including subscription-based messaging) and using the server as an HTTP Proxy for Flex applications. You can dowload and learn more about BladeDS on the Adobe Labs ste at &lt;a href=&quot;http://labs.adobe.com/technologies/blazeds/&quot;&gt;http://labs.adobe.com/technologies/blazeds/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
As many of my readers are aware, I&apos;ve been learning LISP in my &apos;free&apos; time. Most recently, I&apos;ve been spending a decent amount of my time understanding how LISP handles binary data and bit streams. Needless to say, I&apos;ve never had to work with data at the bit-stream level on any projects (many languages including ColdFusion abstract this for developers). My new understanding for how to manipulate data as bit streams gave me a lot of understanding and appreciation for how AMF works, as I read over the AMF3 technical specification (&lt;a href=&quot;http://download.macromedia.com/pub/labs/amf/amf3_spec_121207.pdf&quot;&gt;http://download.macromedia.com/pub/labs/amf/amf3_spec_121207.pdf&lt;/a&gt;).
				
				</description>
				
				<category>Flex</category>
				
				<category>AIR</category>
				
				<category>LISP</category>
				
				<pubDate>Mon, 17 Dec 2007 14:55:00 -0400</pubDate>
				<guid>http://www.horwith.com/index.cfm/2007/12/17/bladeds-announced</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Radio Silence</title>
				<link>http://www.horwith.com/index.cfm/2007/7/30/why-radio-silence-2007</link>
				<description>
				
				I&apos;ve been very quiet on this blog lately and have received a few emails asking what&apos;s up? This being the summer and having a 9 1/2 month old, I&apos;ve been spending a lot of time just &quot;being dad&quot;. In the office, I&apos;ve been doing a decent amount of traveling for clients and I have been doing a lot of business development and infrastructure related activities (we&apos;re still growing rapidly). In addition to working with ColdFusion 8, I&apos;ve also been using Flex and AJAX heavily for the past couple months, so that&apos;s also been keeping me busy. I replied to the direct emails that I received - one gentleman replied asking why I haven&apos;t squeezed-in any blog entries from home in my free time?&lt;br /&gt;&lt;br /&gt;The truth is, in my &quot;free time&quot; in the evenings, I&apos;ve been spending a lot of my time working with LISP. It&apos;s one of the few languages that&apos;s appealed to me for a long time but somehow eluded me - so I&apos;m finally wrapping my head around this beast. I periodically try to look outside of my usual realm for different perspectives as well as ways to better myself both as an executive and as a developer. LISP, so far, has taught me more and changed my thinking about software development more than any other language. It&apos;s not for the faint of heart, but I strongly recommend it.
				
				</description>
				
				<category>Misc</category>
				
				<category>LISP</category>
				
				<pubDate>Mon, 30 Jul 2007 09:56:00 -0400</pubDate>
				<guid>http://www.horwith.com/index.cfm/2007/7/30/why-radio-silence-2007</guid>
				
			</item>
			
		 	
			</channel></rss>