Sunday 10 April 2011

Raison d'être

  • LiveJournal is dead.  Long live LiveJournal!
  • Facebook is facile, and unsuited to deep conversation.  Your actions are on display.
My reasons for starting this blog are varied. The first is philanthropic, to the programming community at large. I've been a programmer, system administrator or customer support person since 1998, on and off in various positions. What I've learned about programming, interface design, and the pros and cons of different programming methodologies during this time has helped me evolve... from the small intricacies of Perl/CGI based programming in the earlier years, to fully fledged timer driven UI-design in .NET.  I want to share some of the painful experiences and revelations based on experience I've had since starting this path, as there is a lack of information on particular topics in the area for instance of WPF based design, Windows Forms, Silverlight and so on.

I come originally from a Linux background, but as a programmer I have found the most joy in the abstraction that Powershell and the various Windows Interop DLLs presents to me.  Why?  Nothing that I am aware of in the Unix environment at present allows such a level of integration between existing programs and scripts, to the extent that one can cut and paste data from a spreadsheet to an automatically created email in 5 lines or less of code.  Microsoft it seems, made a very wise business decision in providing the level of abstraction they have in their products, such as Word, Outlook and Excel, as well as Access.  The ability of programs to access well defined API's to create Word documents, interact with Outlook's calendar or mail merge faculties, and more, when combined with the .NET based scripting which Powershell provides, presents to the programmer:
  • Rapid development based on models including extreme programming and functional programming.
  • The ability to abstract the development process and allow for easy customization of a UI via text  (whether in centralized INI files or the registry).
Why is this so important?  Well, for one it makes for a rapid development lifecycle, the ability to test code straight from the command line without need for lengthy recompilations of code.  Powershell's seamless ability to create background runspaces in CTP2 means the ability to create multithreaded, responsive applications.  Secondly, it means abstraction, along the lines of that abstraction which LISP originally provided in the early days of Unix.  Powershell's Invoke-Expression, as well as its quick access to function definitions direct within the environment, when combined with easy GUI design, makes it possible to embed REPL's within code for ease of testing and debugging.   It even makes it possible for Powershell code to write, test and then save or edit code in a language, in short, to create an IDE within the language itself, in a very small number of lines, to enhance the already formidable powers of the ISE.  Scenarios such as that seen in the movie Swordfish start coming out of the realm of fiction and into the realm of quite possible FACT.

So that is one reason for the creation of this blog - the exploration of how to go from 0 to 360 in the realm of GUI based programming in this area, within months.  At times I may also discuss topics that are best described as philosophical... the connections between abstraction and evolution, pros and cons of different types of abstraction, perhaps even futurist topics (or their nemesis, survivalism).  The topic is anything that interests me, and if you don't like a post, you don't have to read it.  Thats the beauty of free-will.

I have many interests, but this one will be mainly restricted to programming, abstraction, and topics related to evolution (especially as it relates to continuum or catastrophe theory).

With that in mind, lets begin!

No comments:

Post a Comment