Will's blog

purpose: Will Kahn-Greene's blog of Python, Linux, random content, PyBlosxom, Miro, and other projects mixed in there ad hoc, half-baked, and with a twist of lemon

Page 1 of 2  >> (less recent)

Tue, 02 Sep 2003

Ways to avoid spam

This is an ongoing essay which will collect a series of links and thoughts on how to avoid spam. Avoiding spam is a way of life, not something you think about today and then forget about for a few years.

Update 12/9/2004: There is no way to avoid spam anymore. You can probably reduce it by not telling anyone anything, but every second that your email address exists increases the likelihood that you'll start getting spam.

Mon, 01 Jan 2001

what made me

I just found writing programs really cool. We started out with a Vector and I started playing Invaders and Deadline. Then I played Zork and Leather Goddesses of Phobos and King's Quest and Space Quest and the first Microsoft Flight Simulator and Epyx Winter Games and Decathalon and ....

And then I was like, "I wonder how they write stuff like this." And then I discovered this tome we had that we used to keep the printer balanced because it was missing a foot. It was called IBM Basic. And I read it and started writing my own games and stuff. Then I learned QBasic and a bit of basica and then the first version of Visual Basic (which was horrid--ugh) for Windows. I started solving problems with computers and programming.

I used to read magazines on the subject, and various conference papers my dad would bring back from his little trips. I learned about hardware, IRQs, DMAs, and such (becuase you had to know them to get any game working at all). I think my dad was the first reseller of 3Com equipment in the Northeast. I knew lots of folks at my dad's work that were doing the computer thing. Then I hit high school and poked around with hacking games and BBSs. At college, I hit Macintosh and Unix and lived in the computer lab, became a tutor, then ran the computer lab a few years later. I got my MCSE (it wasn't hard). I learned a bazillion languages. I read RFCs, I wrote my own web-server in C, I toyed with MTAs for a bit, I read about IP stacks and network security and firewalls and proxy servers. I learned about compilers and graphics routines and compression algorithms. I slipped on a rock and fell on my ass and accidentally learned HTML while walking home from dinner one day. I learned CGI programming from the NCSA site. I started mudding. I got on a project building our own mud server, driver, and lib. I took over a mud client project called Lyntin and written entirely in Python.

So on so forth.

Course, the other side of the story is this. I had no athletic skills to become an athlete. I dislike biological fluids, so medicine was out of the question. Law irritates me--and many people who practice law irritate me more. Political Science is anything but a science. Chemistry and Math and Physics were really cool--wish I had taken more in college. Art is wonderful, but I disagreed with the professors as to why people do art--though I still draw and paint and such. Music is also wonderful--and I still play a variety of instruments. Great books were trippy--Jesuit professors are amazing folk. Theology was interesting. Philosophy was neat as well. Teaching will be nice some time down the road.

And that's the story. Course, it could have just been symptoms of heavy iron deposits in the water I drank as a kid.

Update 12/9/2004: Law doesn't irritate me anymore. I've been following Groklaw since it started and it's been really interesting to see how the legal system works.

stuff that's moved me

There has been a long list of things that have moved me. Like when you're playing harmonics on a guitar, the other notes vibrate in sympathy. While I don't recall why I originally added this topic to my on stuff list, it's one of those topics that's easy to come up with one or two things on the spur of the moment--and then spend the rest of your life thinking about.

I think the things that move me the most tend to be sudden and unexpected and usually while I'm busy trying to get something done. Rarely do I find things that move me while I'm sitting still enjoying the placitudes. Sometimes it's a connection. A sudden realization of an isomorphic mapping of a group of things that allow me some insight as to the relation of the items in the group. Course, I'm talking about items in the non-thing sense--they could just as easily be feelings or thoughts or visual abstractions.

Maybe someday I'll reach a point where it's important to make a list of the things that have moved me. Partly because I require moving again, or maybe because the list will move me and bring insight as to the things that move me. I guess, kind of a meta-moving.

Update 12/9/2004: Everyone has stuff that moves them, so I'm not really sure how interesting this "essay" is. I think it's a good idea to add some data points.

I was really moved the first time I saw Eternal Sunshine of the Spotless Mind but not that moved the second time I saw it.

I was really moved when my dad told me he really admired the fact that I'm working on getting into grad school. I definitely don't have a good feel for why, but I was moved that he felt it important enough to send me an email about it.

I was moved when in January of 2004 (or maybe February--I forget specifically), my grandmother called me on the phone to tell me goodbye forever (she was really sick with cancer and a dozen or so other issues) and that she always cherished the moments we spent together and thought that I was a really good person. Then she died a few days later.

There are more but this is good enough.

slacking/laziness

To slack is to exert laziness as a philosophical outlook for the purposes of problem solving. Pretty much it waters down to, "Aw, hell. Does it have to be that complicated?"

Some of the best things in the computer industry came about from this point of view: "What if I were to build this doo-hicky that would automate that whole key-punching thing because repetitive key punching sucks....?"

Course, to ponder on this any more would be too much effort. And I'm busy working on this thing....

Update 12/9/2004: Who doesn't have a blurb on slacking? I think like existentially-oriented iconoclast high school poetry, everyone goes through the "I'm a slacker--slacking is cool!" phase.

on programming and zenning out

Tom Christiansen wrote an article thingy about efficiency of keyboards as an input device and how it sucks. The reason for suckage is that since keyboards differ from each other, and often were designed under premises that functionality and efficiency should take a backseat to making the Enter key bigger and the space bar smaller. It's a good article. Anyhow, it talks about zenning out whilst programming. The layers between your thinking about your code, translating that into design, translating that design into functions and code, translating that into a series of instructions that you send your fingers which then type a bunch of stuff in... All that collapses into your mind and your design.

Frequently in science fiction there will be some dude with a set of vr goggles on and special gloves and they will manipulate virtual objects as if the objects were really in the space in front of the dude. It's kind of cheesy. But that's how zenning out feels. You lose track of your environment and time. Your senses fall asleep as you manipulate this virtual design in your mind of how your program works. As you manipulate it, it grows and reacts. You forget that you're typing on a keyboard. You forget to blink to keep your eyes moist.

I forget to eat and often that my body needs maintenance. This is zenning out. Then suddenly you wake up and your systems come back online and you become aware again of the world around you and your eyes hurt and you're starving and your cup of coffee has been ice cold and half full for hours.

And that is bliss. And it's even cooler when I understand what I've just written and doubly-cooler if it works.

on the art of programming and voodoo

Coding is an adventure in formal logic and intellectual pointedness. As in anything else, the more you know and have experienced, the easier things get. I want to hit the point where I have seen so much in my lifetime that I can come across any new problem and after applying a sufficiently complex isomorphism understand the new problem in terms of older problems. That's the goal. Of course understanding and solving the problem don't necessarily play on the same team.

Programming is not so much like building a tower of metal and steel. It is more like looking at the canvas for long periods of time. Visualizing the stroke--the single stroke that you will place there. You think through all the motions involved in the stroke. How it fits with the canvas. How it fits with the world. The curves in the stroke, the straightness. And then suddenly, you draw that perfect stroke. But it involves seeing the whole canvas to begin with.

Beautiful programming is a lot of meditation and thinking and about precise deft strokes, not a bazillion tiny little hacks that barely form a structure that can withstand use and abuse.

But beautiful programming does not happen in practice and it's not efficient in the sense that the initial cost is really high--even though maintenance and related costs would be low.

How does one reconcile this with business and society and work? One tries to keep this in mind. To keep patience in the soul as they build and debug and observe and analyze. All things happen because they are written in the code as such. It is our jobs to make deft accurate strokes rather than practice black magic and voodoo and make a billion inaccurate strokes in a frustrating attempt to solve the problem quickly.

Of course, as with all things, there is a time and place for voodoo debugging.

Update 12/9/2004: Everyone goes through a "programming is beautiful--I'm an artist!" phase too, apparently.

on the craft of programming and work

Coding for me is a craft. I feel that I am a craftsman. My tools and design are intricate pieces in a harmony--a zenning out (to quote Tom Christiansen)--that touches my soul. The design, the creation, then I breathe life into my work. The sweet aromas of the debugging cycle where you become intimately aware of the inner workings. The subtle details.

This is programming as a craft. It is different from programming as a method of deriving income. For a lucky few these two can be entwined. But often the act of working as part of a development team for a client against a deadline creates an atmosphere where the creation of beauty must take a back seat for the purposes of teamwork and responsibility and producing a product that meets the customers' often haphazard and contrary-minded expectations.

But this is ok. This is as it was in the days of yore when the blacksmith would shoe your horses, then spend hours by his anvil doing intricate ironwork for gates and statues.

To keep yourself in the tao, don't be frustrated when you can't coax the beauty in every thing you do. Some things have beauty and some have functionality, and some are a total bs hack you did when you were drunk and it was late and the deadline was yesterday and you're just hoping that it doesn't cause your computer to crash before you can fully compile and check the new code in.

Update 12/9/2004: Everyone goes through a "I'm a craftsman programmer" phase as well. Well, probably not _everyone_, but a lot of programmers do. Enough that it's very clear that it's a phase/fad. Still, I think the concept of treating one's programming as a craft with the intention of doing it well rather than just doing it is probably a good thing.

little things: lyntin

I was using telnet to connect to this mud I play on and I got tired of telnet. So I started looking around for solid mudclients and found a few--but they were either flakey or bloated or shareware or lame or any number of a myriad of bad things. I decide to roll my own and do it in Python. Then I discover Lyntin--this mudclient written in Python and the maintainer hadn't touched it in months. He hands over the maintenance of the project to me. I move it to Sourceforge, put out a few versions, fix a few bugs, and voilla! I have a solid mudclient.

Then I start releasing versions with the fixes in it. And people around the world email me on occasion--I get like 1 or 2 emails a week. Some of them have patches for things that are broken. Some of them have feature requests. One of them said he didn't like Lyntin at all. But all of them were "Thanks--great job!"

That's so cool.

printers and hummus

For the first time in my life I own a printer. I have avoided getting one like I avoid getting the clap... Actually, avoiding the clap is pretty easy since in order to get the clap, I would have to significantly alter my lifestyle. Unless there's some new mutation of the clap that can be passed through attachments over the Internet. Until such a mutation of the clap exists, I will never even come close to getting it.

Where was I? Oh. Printers. I just got a sweet laser printer. HP Laserjet 2100 for about $700 or so. You might ask why I didn't get a Bubblejet or a Deskjet for cheaper price. And I'll tell you. But only if you buy me some more hummus because I don't have any because I ate it all.

on the Boston Marathon

The Boston Marathon is an old tradition in the heart of Boston. The actual course runs by such places as Boston College (my alma mater) and Wellesley. Over the last bunch of years, I've sat on the course and cheered for passers by. I've also observed what have come to be known in an incredibly exclusive circle (namely myself) as the 10 rules to running the marathon:

Read more...

Page 1 of 2  >> (less recent)

pyblosxom::2.0 dev

All contents Copyright 1996 to 2008 Will Guaraldi.
Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.