Yeah, this isn't technical, but it is still a post!
I remember the first time I met a best friend. I was four years old. I saw another boy obviously my age walking on his tip-toes. Maybe he was trying to be taller. His nick-name was Scooter, and to this day I've got no idea as to what his name was. It was in his house that I remember seeing men on the moon live. I was five when I moved away. I saw him a few times but we grew apart. Eventually we lost touch.
I was six years old and just starting first grade when I met John. I think his last name was Oplenger. We became inseparable and I remember navigating my way across a mile to find his house. That was back in the 1970s when kids did that sort of thing. We made stop-animation super 8 films together. I was eight when I moved away but we stayed in touch for several years. Eventually our interests grew apart and we lost touch. I might have seen him a few times in my late teenage years, but I didn't have the guts to go up and talk to him.
We moved as I turned 16 so I switched high schools at the end of my sophomore year. I left the people I knew behind. I lost touch real fast with most of the people I knew back then. Thanks to Facebook I've reconnected with a few. Yet I wonder what ever happened to Mark, Steve, David, Jack, Donald, Katy, and many others.
After my aimless college years I drifted uselessly for a while. I lost touch with people I knew in my second high school and college. In 2000 thanks to Google and the now wretched classmates.com I started to reconnect with those old friends.
During my aimless college years I met a smart, pretty girl named Christine. She was the one I should have dated. Ha. The follies of youth.
I'm sure over time I'll find everyone I knew. I'm delighted to find these people and to see how their lives worked out. That even the craziest of us have turned into responsible parents seems like destiny. In return, no one seems surprised by how my life has turned out.
But the ones I really miss are the ones whose names I can't quite recall, or whose names are so generic that finding them seems impossible. People like Scooter, John, Christine, and others.
19 more posts to go!
Thursday, November 12, 2009
Wednesday, November 11, 2009
Picking a Django powered CMS
Note as of October 2011
The CMS options have changed greatly since I wrote this blog post in 2009. I might write a more current post. In the meantime, instead of FeinCMS, use Django CMS, Mezzanine, or use the CMS grid on Django Packages to make your own decision.
Back to the old blog post...
A few months ago I asked the community to help us (NASA SMD) pick a Django powered CMS.
The response of the community was awesome. We were provided a decent sized list of CMS candidates to evaluate. We got a lot of responses, both in comments on my blog, twitter messages, and even direct emails. We compiled the list and got to work.
Now it was time for evaluation. As much as I wanted to do it myself, this was given to the capable hands of my co-worker, Chris Adams. I was a bit jealous because I like to explore, but that's how it worked out.
First Chris used a process of elimination to weed out the ones that were unusable based on my published requirements:
- Was it actually open source?
- Was it 508 compliant or easy to make so?
- Runs on PostGreSQL and MySQL?
- Is there an active community?
- Could you show pages nested inside of pages? In order words, could you rely on Tree Traversal for display of content?
- Was there documentation? In English?
Day by day it was a sad to see the list get smaller and smaller. Each project was the labor of many hours by talented people who cared about their work. Yet Chris had a job to do, and while he didn't drop candidates easily, he did drop them.
Chris now added our sample content to each surviving candidate and invited the rest of the team to look at the code and the results. It was now up to our subjective evaluation. Two finalists stood out as winners, FeinCMS and Django CMS 2. They were so close that one might consider the results to be a tie. Both met all our needs, their code bases smelled pretty nice, documentation felt complete, code had test coverage, and the community active. They even shared a lot of the same dependencies!
The call was very close but in the end we picked FeinCMS.
Django CMS 2 was a very, very close second. I cannot say that enough.
In a few months we'll announce the front facing site we are building. We'll contribute the work we can to the open source community, which will either be work done on FeinCMS or stand alone applications.
Finally, I want to make clear the amount of effort and clarity of work Chris Adams put into these evaluations. He did the hard work and he did it well.
20 more posts to go!
Tuesday, November 10, 2009
Python Wars
Python Wars Solo was the result of a few hours effort roughly duplicating a text-based Star Trek game I wrote back in 1980-1981. I wrote the game in Apple ][ basic, and it had you 'fly' the USS Enterprise against up to nine Klingon ships. You could fire phasers, launch photon torpedoes, take evasive actions, and it seemed pretty fun. Beating one was a piece of cake. Three was a fun challenge. Five was tough. Seven was done only a few times. Nine was never done. The game was simple, fast, easy to learn, and tons of fun. Back in High School it was one of the games traded on floppy disks during the computer club so I considered it a success.
Back in 2007 I decided to try and reconstruct the software. One thing I did was was write most of it in one quick code dash of near stupidity. My theory was that it would more closely match the feel of my efforts as as 15 year old wrestling with Apple ][ basic without the benefits of a manual.
Some changes from the original:
* Rather than name it after the Star Trek universe, I named it a bit generically.
* Switched from phasers to a spinal mount weapon like what they used so wonderfully in Babylon 5.
* Changed from photon torpedoes to missiles.
The result worked, and was fun to play in dribs and drabs. The code is embarrassing, but that was kind of the point.
http://code.google.com/p/python-wars/wiki/PythonWarsSolo1
Do a svn checkout (svn checkout http://python-wars.googlecode.com/svn/trunk/ python-wars-read-only), and then python go.py. Don't laugh too hard!
I'm toying with moving this this over to Github and even doing a formal release. That would be really funny.
21 more posts to go!
Back in 2007 I decided to try and reconstruct the software. One thing I did was was write most of it in one quick code dash of near stupidity. My theory was that it would more closely match the feel of my efforts as as 15 year old wrestling with Apple ][ basic without the benefits of a manual.
Some changes from the original:
* Rather than name it after the Star Trek universe, I named it a bit generically.
* Switched from phasers to a spinal mount weapon like what they used so wonderfully in Babylon 5.
* Changed from photon torpedoes to missiles.
The result worked, and was fun to play in dribs and drabs. The code is embarrassing, but that was kind of the point.
http://code.google.com/p/python-wars/wiki/PythonWarsSolo1
Do a svn checkout (svn checkout http://python-wars.googlecode.com/svn/trunk/ python-wars-read-only), and then python go.py. Don't laugh too hard!
I'm toying with moving this this over to Github and even doing a formal release. That would be really funny.
21 more posts to go!
Monday, November 9, 2009
Code I'll reuse
When I'm evaluating a package to use in my work or play I tend to look at five things. I think many of my on-line colleagues look at a similar list. If its missing too many of these things then odds are I'll go somewhere else for my needs or roll my own.
Documentation
Did the author bother with a README file? How about some sphinx documentation? How complete it it? Does it get me started and give a few basic examples?
I'm okay with typos and mistakes. These happen. But I want to see
Licensing
Everyone has their own idea of what they like for licenses. I like the MIT/BSD thing. I can understand the attraction to LGPL and GPL although they aren't for me. What I can't stand and won't use are monstrosities like GPL/Commercial used by such libraries as ExtJs.
Want to make money off your software? Easy... let anyone use it and charge for support. Worked damn well for communities and companies like Python, Django, Plone, various Linux distributions (Redhat anyone?), etc...
Eggification
Is your software constructed so that it can be installed via easy_install or pip? And yes, this is a bit of mild embarrassment for me, so I'm happy enough to eggify other people's work.
Tests
Do you have tests? Even a nearly empty tests file or folder? How about a test application? If you have no tests then your package is suspect. How do I know it will work independently of your personal computer?
Code Quality
Does the code smell bad? Can it be easily extended? If its innovative but the code needs work is it on a DVCS so more people can easily contribute?
22 more posts to go!
Documentation
Did the author bother with a README file? How about some sphinx documentation? How complete it it? Does it get me started and give a few basic examples?
I'm okay with typos and mistakes. These happen. But I want to see
Licensing
Everyone has their own idea of what they like for licenses. I like the MIT/BSD thing. I can understand the attraction to LGPL and GPL although they aren't for me. What I can't stand and won't use are monstrosities like GPL/Commercial used by such libraries as ExtJs.
Want to make money off your software? Easy... let anyone use it and charge for support. Worked damn well for communities and companies like Python, Django, Plone, various Linux distributions (Redhat anyone?), etc...
Eggification
Is your software constructed so that it can be installed via easy_install or pip? And yes, this is a bit of mild embarrassment for me, so I'm happy enough to eggify other people's work.
Tests
Do you have tests? Even a nearly empty tests file or folder? How about a test application? If you have no tests then your package is suspect. How do I know it will work independently of your personal computer?
Code Quality
Does the code smell bad? Can it be easily extended? If its innovative but the code needs work is it on a DVCS so more people can easily contribute?
22 more posts to go!
Sunday, November 8, 2009
What I love about Python
A ways back I wrote about eight things I don't like about python. I'm in a good mood today so I'm writing about what I love about python.
Typing
Let's imagine I have long, blond hair and am named Goldilocks.
To be honest, most of the time we don't care that everything is an object. We just code. However, when it counts, it just makes life so wonderful.
Intelligently named built-in functions and keywords
The functions like help(), print, list(), file(), dict(), and most other things are named elegantly and simply. Print is obvious; put, say, or echo are not.
Um... so maybe dir() and zip() are not very clear.
Whitespace
I love proper indentation. When I look at other people's code in other languages, first thing I do is start fixing their indentation issues. Python makes that so much easier for me.
Competing web frameworks
When I was first playing with Python I heard people gripe that the volume of web frameworks in Python is a bad thing. I wasn't so sure then and now I completely disagree. Competition is a good thing, and friendly competition is even better. Otherwise things go stale and the community suffers.
Python's web framework designers tend to get along really well. While the community leaned this way I believe that Mark Ramm has been instrumental in keeping things friendly.
The Community
Most of the time the python community is the best. They are open minded, smart, willing to learn, and willing to teach. And no one makes too much fun of my gushing man-crush on Guido.
23 more posts to go!
Typing
Let's imagine I have long, blond hair and am named Goldilocks.
Goldilocks tried the first language and everything was rigid and method overloading was painful. Too static!Everything is an object
Goldilocks tried the second language and everything was too loose and crazy. Evaluators could fool you into thinking different types equaled each other, causing many false positives. Too loose!
Goldilocks tried the third language and it had some rigidity but not too much. Method overloading was so easy you did it without thinking. Evaluation gotchas were non-existent. Wonderfully dynamic and strong!
To be honest, most of the time we don't care that everything is an object. We just code. However, when it counts, it just makes life so wonderful.
Intelligently named built-in functions and keywords
The functions like help(), print, list(), file(), dict(), and most other things are named elegantly and simply. Print is obvious; put, say, or echo are not.
Um... so maybe dir() and zip() are not very clear.
Whitespace
I love proper indentation. When I look at other people's code in other languages, first thing I do is start fixing their indentation issues. Python makes that so much easier for me.
Competing web frameworks
When I was first playing with Python I heard people gripe that the volume of web frameworks in Python is a bad thing. I wasn't so sure then and now I completely disagree. Competition is a good thing, and friendly competition is even better. Otherwise things go stale and the community suffers.
Python's web framework designers tend to get along really well. While the community leaned this way I believe that Mark Ramm has been instrumental in keeping things friendly.
The Community
Most of the time the python community is the best. They are open minded, smart, willing to learn, and willing to teach. And no one makes too much fun of my gushing man-crush on Guido.
23 more posts to go!
Eating your own dogfood
Since way back in 2007 when I blogged about JSON and Python I've used blogspot as my blog engine. I've never been completely happy with it because it didn't easily support code coloration. Still, it worked, had great up time, and I got used to it.
Recently though on twitter I've been getting a few dings about using python to host my blog. And since I've now captured pydanny.com and pydanny.net it makes even more sense. I toyed a few times with writing my own blog engine but while I've done it for my job, I never wanted to do it for myself.
So I've been shopping around for what I consider the best blog engine for me. I had a lot of great options thanks to a blog engine query asked in April. In the end we just extended the Pinax blog engine with a few widgets and that was good enough. Anyway, recently I started to look at those again as viable options.
However, one more option presented itself. Kevin Fricovsky's Mingus. It has everything I want in a blog, and also seems to closely follow what I would like to think I would have done in my blog. That is, to say, he fetched bits and pieces from all over the Django ecosphere and assembled them into one universal whole. Yup, I like it a lot.
So my plan is over the next week or so is to set it up on a Webfaction account and start blogging from there.
24 more posts to go! (I'm behind on days but plan to make it up with posts)
Recently though on twitter I've been getting a few dings about using python to host my blog. And since I've now captured pydanny.com and pydanny.net it makes even more sense. I toyed a few times with writing my own blog engine but while I've done it for my job, I never wanted to do it for myself.
So I've been shopping around for what I consider the best blog engine for me. I had a lot of great options thanks to a blog engine query asked in April. In the end we just extended the Pinax blog engine with a few widgets and that was good enough. Anyway, recently I started to look at those again as viable options.
However, one more option presented itself. Kevin Fricovsky's Mingus. It has everything I want in a blog, and also seems to closely follow what I would like to think I would have done in my blog. That is, to say, he fetched bits and pieces from all over the Django ecosphere and assembled them into one universal whole. Yup, I like it a lot.
So my plan is over the next week or so is to set it up on a Webfaction account and start blogging from there.
24 more posts to go! (I'm behind on days but plan to make it up with posts)
Thursday, November 5, 2009
Foxpro
In the 1990s I was working for a small company doing a mix of help desk support, system administration, and development. I hated the help desk work, didn't like navigating Windows for system administration, but liked development. Even though development was Foxpro.
Yup, Foxpro. All of my Foxpro work was on Foxpro 2.6 for DOS. A few people in the office were working with Visual Foxpro 5 and 6, which meant a Visual Basic style IDE and whatever object model Foxpro adopted. But I was working in the DOS shell and that seemed easier. At the time I thought a fancy IDE was better, and wasn't until around 2003 that I changed my mind on that subject.
So anyway Foxpro was on the decrease even back in the 1990s. It took a bit of work and some luck to get out of the Foxpro closet. Fortunately I made it out. Yet I still have a soft spot for the language and too. My guess is that it is merely nostalgia for a different time in my life, and if I actually looked at Foxpro I would feel ill.
25 more days to go!
Yup, Foxpro. All of my Foxpro work was on Foxpro 2.6 for DOS. A few people in the office were working with Visual Foxpro 5 and 6, which meant a Visual Basic style IDE and whatever object model Foxpro adopted. But I was working in the DOS shell and that seemed easier. At the time I thought a fancy IDE was better, and wasn't until around 2003 that I changed my mind on that subject.
So anyway Foxpro was on the decrease even back in the 1990s. It took a bit of work and some luck to get out of the Foxpro closet. Fortunately I made it out. Yet I still have a soft spot for the language and too. My guess is that it is merely nostalgia for a different time in my life, and if I actually looked at Foxpro I would feel ill.
25 more days to go!
Subscribe to:
Posts (Atom)