Sunday, February 24, 2008
In the last few years, I've come to believe very strongly in personality as a key to understanding yourself and your relationship with others.

I've come across an article that I agree with and have seen work in person:

http://www.softwarebyrob.com/2006/08/20/personality-traits-of-the-best-software-developers/

Personally, I've seen the example of flaky people writing flaky code, where the invere is also true; solid people writing solid code.

Sunday, February 24, 2008 9:43:16 AM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Wednesday, January 09, 2008

OK, so I've been using Python quite a bit lately and I've been enjoying it.  I've been getting stuff done with it too.  Python inter-operates with COM quite well and that saved me a lot of pain yesterday.  However, learning Python has caused me pain in other areas.

Yesterday I had to perform some maintenance in a C# ASP.NET app that I had written not too long ago.  Even though I use the CoolStorage.NET and some other nice time savers, it has become painful to write C# code.  It's just too verbose.

I used to marvel at people who claimed that you don't need an IDE to develop with Python.  I thought that was blasphemy as Visual Studio was the bee's knees in C# development.  However, I'm amazed at how much more I'm engaged in coding when I'm writing Python (or JavaScript).  You have to pay attention to what you're doing, no IDE is going to help you out.  However, this heightened state of concentration is actually fantastic for writing good code.

I use Notepad++ as my editor for Python (and JavaScript and HTML, etc) when I'm not using C# and Visual Studio.  I find its adequate for the job and it does have a function/method browser built in.  It also does HTML auto-complete and it can highlight a psp template file where I have Python, HTML and JavaScript all in one file.  It's also very stable, something that Visual Studio is not.

Visual Studio 2005 is flaky.  Sometimes all my Windows will rearrange or reset.  Other odd things happen and I find myself re configuring my layout from scratch.  Actually worse than scratch because every thing is helter skelter around. 

The worst part though is the amount of code I have to write to keep the compiler happy.  I know what I want to do and I know how I want to do it but I have to tell the compiler what I'm doing ahead of time so that it's happy.  Honestly, this is a great feature for a newbie or someone who really doesn't want to learn the language.  However, it becomes a burden after a while.  The C family of language has so many tokens (symbols like { [ ( ; , for while do foreach if) that your code becomes very noisy very fast.  Python is nice and clean which is something that I've come to appreciate.

I think I've found a better appreciation for Python (and JavaScript) because I've used C#/C++/Java.  For my everyday programming needs Python can handle everything I need to do.  However, at my current job getting Python into the mix might be a bit hard.  However, it might be worth it.  We spend so much of our day writing Programs that should just be nice and easy scripts.  We have so many programs and projects that could easily be one python file.  We do a lot of file transfer and validation. 

So yes, I'm feeling the pain of C#.  I just don't need/want that bug IDE and big language for what I need to do. 

Python does it faster, smaller and cleaner. 

Wednesday, January 09, 2008 9:33:53 AM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Tuesday, October 30, 2007
This is an interesting article from the 1920's written by a proprietor of a grocery supply business.  What the author considers brilliant may not fit the definition that many of us have.  I think a better term would be "schemer" or "dreamer" or something similar.  Anyway my main interest in the article is based on my assertion that many in the software profession are "brilliant." 

I myself find it hard to finish projects but easy to start them.  If you believe in personality tests than I am an INTP.  This means I have a tendency to live in my head.  I need to constantly fight to finish things and to stay interested in projects.  I'm always exploring new languages and technologies.  This is both a boon and a burden in the technology field.  I'm usually up to date on the latest technology but I have to push myself to finish projects that become a little too mundane.  I also read many articles from programming.reddit.com and similar sources.  If I'm not careful I can consume a whole night or day reading such articles.  The plus side is that I'm a sponge for information.  The negative is that I may have a hard time applying it as I'm always trying something new.

I believe that we must understand ourselves to be successful.  I am aware of my weaknesses and by my awareness I am able to realize what I must work on to be successful.  I must force myself to complete current projects and to apply my research.  When I am able to do this I can produce results that are amazing.  However, I always have the potential to waste days and nights reading.  However, it may be debatable whether reading is really ever a waste.  I watch very little television as I prefer to read and program instead.

In my opinion, this article can be summed up as "find hard workers."  Not brilliant by any means but a good read none the less.

Article:  Why I Never Hire Brilliant Men

Tuesday, October 30, 2007 9:26:17 AM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Friday, November 24, 2006
I've got a few machines at home and I want to use Remote Desktop to connect to them when I'm out and about.  Well one is easy enough to set up if it is either directly connected to the internet (possibly a bad idea) or if you have a wireless router with a firewall and other management features (much more secure).  I have the latter and I set up a rule to forward remote desktop traffic on TCP port 3389 to my main desktop.  But I also have a server I would like to get to.  No problem you just need to change the port that Remote Desktop uses in the registry.  Just go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp and find the PortNumber entry and change it to the port you want.  Make sure you edit it as a decimal by choosing the decimal base.

Here is an easy article on setting up multiple machines for Remote Desktop access.

Check out the article for a lot more info.

Friday, November 24, 2006 8:57:20 PM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Friday, September 29, 2006
Part 2 of the series looks at the motivation to increase your income.
Friday, September 29, 2006 9:01:05 AM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Friday, September 15, 2006

I think when Microsoft introduced .NET and the declared that you where free to write in any language most people focused on bringing old crusty languages like COBOL to the modern .NET framework.  I'm not sure how successful this has been.  I'm not being critical, I simply do not know because I use C#, arguably the most mainstream of the .NET language families.  For the past few years I have flirted with languages like Ruby and Lisp and found some of the features of these languages to be intriguing.  C# is fairly powerful and is still being extended by Hejlsberg and company and is even starting to stretch into some Lispy areas with features like LINQ.  What I miss most in almost every language is the Lisp style macro.  These things are powerful, if you don't know what I'm talking about you need to check out Peter Seibel's Practical Common Lisp book.  Once you implement the MP3 database in Chapter 3 you should have a good idea what macros can do for you and your coding, especially if you write a lot of repetitive code (hint: database access, DAL, etc). 

The problem is that even thought I enjoy Ruby and Lisp the implementations for these languages are hit and miss.  The open-source implementations all feel like second class citizens on Windows XP.  Using Emacs as a text editor for Lisp when you are used to Visual Studio 2005 is a little disappointing.  Using GVIM to edit Ruby on Rails files leaves me with a similar sense of dissatisfaction.  These are great languages without great tools and with hit and miss implementation issues.  I have to say however that I am fairly comfortable with some of the commercial Lisp Implementations with LispWorks being the best all around when you consider licensing. 

Back to my point, I did not set out to author a diatribe on Lisp and Ruby, and I will leave that to the Flamer and the Flaming Flamed.  My intent is to write about two rather new languages that give me a lot of hope for the direction and potential of CLR languages: Boo and Nermerle.  Both of these languages support cool syntactic macros and add their own little twist to CLR programming.  Boo is about agility and keeping the code lean and clean and uses macros to support this concept.  Nemerle is a hybrid functional language very similar to C# but with the cool functional stuff like Pattern Matching and also C# 3.0 features.  What is interesting is the C# 3.0 features are implemented in the C# compiler and does not require support from the CLR.   CAUTION GENERALIZATION AHEAD!  Lisp macros are simply code that runs at compile time instead of run time.  So we are doing things in C# that sounds like an area where macros could make a huge impact.  In fact this is how Boo and Nemerle implement many of their advanced features, they are simply using macros.  So Greenspun's 10th Rule plays out again this time inside the CLR.  In fact if we design a language with Lispy-ness in mind we know that we need very few constructs to develop a very powerful language and I think Nemerle especially takes advantage of this fact.

These languages are not designed by Microsoft.  They are independent languages targeting the CLR.  So yes even though we are coming back around to Lisp, I for one am not disappointed but rather quite pleased.  If I can get the power of Lisp on a framework like .NET then I will be a happy camper.  I'm waiting for the tools around these languages to mature a bit and at this point I'm leading more towards Nemerle because it seems to be farther along and very well documented.  Once a plug-in for Visual Studio 2005 becomes mature I will definitely spend more time playing with this Nautilus machine for the mind. 

So all I want is a great language and great tools and I will be happy.  Is that really so bad?

Friday, September 15, 2006 8:44:52 PM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Thursday, August 24, 2006

Filed under WTF?, this one is a goody.  I recently bought a new PC (which is really quiet and I need to write about it) and I installed Windows XP with SP2 and got it all patched up with something like 50-60 downloads from Windows Update and everything was good.  I thought so anyway.  I went to run something using the windows key + R combination and the trusty Run dialog popped up but I couldn't access it instead I had to click on it to gain focus.  What the hell?  So I tried to google on this phenomenon but no joy.  I finally recalled that this seemed to be an issues with Windows not allowing windows to grab focus.  So I downloade good ol' tweakUI and fixed it right up.

 

Sometimes the little things make all the difference.

Thursday, August 24, 2006 9:11:05 PM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Sunday, July 23, 2006

I've noticed a habit of mine recently.  I have a tendancy to open up a web browser and/or and email client when I first log into my home or work computer.  I do this out of habit, just like a check the mailbox for new mail when I get home from work.  The email thing is not such a big deal because I usually just delete the junk mail and take care of the few items that actually need my attention.  The web browser on the other hand can be quite the menace.  The web browser coupled with and RSS aggregator such as www.netvibes.com can be a real productivity killer.  Before I'm really aware of it, I'm reading some blog on libertarian economic thought or browsing through www.techbargains.com drooling over a new piece of hardware.

So What can I/you do about this?

Open up the IDE first.  I'm assuming you're using an IDE (Integrated Development Environment) but you could also be using VI or Emacs or Excel.  The point is that you should open up the IDE first and just start working on something or anything really just to get started.  I find that once I get started on a task I've won half the battle.  Once I'm really working on a task I slip into concentration mode and can focus on a problem and I'm usally very stalwart in searching for the solution.

Have your essentials near at hand.  You want to have your cup of water|joe|soda full and within reach before you put on your headphones and slip into the zone.  Once I've got my glass of water and my headphones are on I'm safe.  I can usually code for at least a few hours like this before I need a bathroom break.

Make sure to read Part 2 about staying in the zone which is almost more difficult, especially if you have non-coders in your work environment.

Sunday, July 23, 2006 7:41:42 PM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Monday, July 03, 2006

Visual Studio 2005 is pretty useable on its own.  MS has really done a good job and the studio is one of the reasons I stay on the MS platform.  I've used Java, Ruby etc and I ended up using eclipse for my IDE and while it does a decent job it also seems to have heavy system requirements and theres the feeling that everything is kind of duct taped together  But I digress, the reason for this post is to highlight tools that make Visual Studio even more useable.  So Here they are:

1. Cool Commands

Everything except (including?) the kitchen sink

Adds context menu commands like open project folder etc.  It just keeps getting bigger and better.  You have to try it to get the full effect.

Most Recent version of Cool Commands

2.   CopySourceAsHTML

Ultimate Blogger Tool

If you have a blog and who doesn't these days, you should look into this one.  It lets you copy souce out of Visual Studio and keep the code formatted as HTML which is very helpful if you are trying to post code to a blog.

CopySourceAsHtml

3.  Smart Paster

The easy way to embedded SQL, JavaScript, etc

This one gives you multiple Paste As... options in the context menu.  Helpful for pasting inline SQL (oh my), JavaScript, XSLT, etc.

Smart Paster

 

 

Additional resource for Visual Studio 2005 Add-Ins

Monday, July 03, 2006 9:26:57 AM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Thursday, June 22, 2006

I've upgraded the GreaseMonkey Google Navigator script to fix some minor issues with the next and previous keys in groups.google.com and I've added the "open link in new tab" functionality via the 't' key.  Check it out:

http://userscripts.com/scripts/show/3984

Or right here at:

http://www.pragmaticprose.com/content/binary/googlenavigator.user.js

Thursday, June 22, 2006 8:36:30 PM (Central Standard Time, UTC-06:00)  #    Comments [1]

A new contender for the Pragmatic Toolkit is PDFCreator, a SourceForge project which allows you to print to a pdf file much like you would a normal printer.  This is useful if you want to need to capture output to a platform inpependant format.  For example, you have a web page that shows a reciept from an online purchase.  Use PDFCreator to print it to a PDF so you have a nice record of the purchase.  This also works for screen prints or any other capture operations where you have an applications that can print (basically any editor program like Word, StarOffice, PaintShop Pro, Photo Shop, etc). 

I use it to screen capture protected web pages (on sites where you need to sign in) and send it to someone who doesn't have access to the site, like my wife.  It's useful if you are going for a paperless office as you could scan your paper items and then print them to PDF (if your scanning software doesn't support it natively).  You can also create product documentation by creating the document in Word and then printing it to PDF to create a manual for distribution to customers.

Here is the link:

http://sourceforge.net/projects/pdfcreator/

Thursday, June 22, 2006 10:10:39 AM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Saturday, May 13, 2006
Foxmarks is a Firefox extension that allows you to keep your Firefox bookmarks in sync.  It works by keeping a copy of your bookmarks out on the Foxcloud server at http://www.foxcloud.com.  Every minute it checks for any changes and then synchronizes your local copy to the copy on the server.  This is very handy if, like me, you use firefox on multiple machines (I have 4 I use frequently) and have a large number of bookmarks.  Because you information is stored on the Foxcloud server you can access your bookmarks from any place you have internet access.

Just one more reason to love Firefox.

Download the extension here: https://addons.mozilla.org/firefox/2410/

Homepage:  http://www.foxcloud.com/wiki/Main_Page

Personal Bookmarks page:  http://my.foxcloud.com/


Saturday, May 13, 2006 10:46:53 AM (Central Standard Time, UTC-06:00)  #    Comments [0]