It's been a solid month since I've written here.
I don't like "blog" as a verb1. It usually is a synonym for "write", except with less dignity. So I'm going to refrain from saying that I haven't "blogged" in a month.
Verbification
I don't usually mind verbification of nouns, though. Or, for that matter, the nounification of verbs. I find it quite interesting. My mother went into fits when I told her CPCC is working on a "calendering" application. I find it's even more fun when you start to reverbify your nounified verbs, or renounify your veribified nouns. The renounification of "to reverbify" becomes "reverbification," and the reverbification of that is "reverbificationating".2 How can you not love it?
While I'm at it, other nouns long-since overdue for verbification:
- Wiking - editing wikis
- Booking - reading, specifically of books, since most reading nowadays isn't of books
- Mathing - Doing math.
- Chairing - sitting
- Gentooing - Compiling a program from source, particularly for non-gentoo platforms. "Does Sarge even have Python 2.5?" "No, I'm gentooing it."
I Must Dress Weird
While I was waiting for my lunch/dinner at said Bojangles (it's a fast-food restaurant, by the way, for anyone not in the American South), I was asked if I'm Mormon. Sorry, I'm just a geek; that explains my backpack and tucked-in shirt and even the obligatory facial hair.
People have been giving me odd looks all day, though, maybe I really do have the "no doorbell is safe" look going on.
Bookends
Ran into an old friend yesterday, and the day before. Same guy, he's going to CPCC now too. Not exactly an old friend, he's an old classmate. But I figure that counts for something.
Catching Up
I've been busy busy busy. During this month I've done a lot of firsts. Firsts for me, anyway. I deployed my first application for CPCC to production. I also made my first borked release of the same application, the day before classes started... probably the heaviest day of use. That was my first data-corrupting (-duplicating, technically, but to the same effect) bug, which in turn led to the first time I've had an application go haywire to the point of taking down the server. That same application was also my first major memory leak.
A lot of firsts. Not all good ones, but I guess it was bound to happen, what with being a programmer and all.
Blind
So Arc got released. Actually, I hesistate to say it was 'released'. PG is, frankly, naked, and I'm glad I'm not the only one to notice.
I wanted it to be great, I really did, but it's not. Real shame.
Of course, it's fascinating to watch all the people who have so much invested in PG/YC metaverse. You want to say all existing languages are 'blub'? OK, fine. I might even agree with you, although I'd tend more to the "so do it better already" attitude. But then you come out with Arc, and yeah, I know, it's alpha alpha alpha, but seriously, how can you take PG seriously with an effort like that? The scary thing is if someone came to me and said, "well, do it better than Arc yourself then," I could. And I don't even know what I'm talking about!
It's kinda like watching your teacher make a basic, fundamental mistake while doing a problem with a whiteboard. Sure, you point it out, and they laugh it off, and then you might crack something like "are you sure you finished algebra?", except in this case it's not a whiteboard, it's a tarball, and it's not a sloppy mistake in mental math, it's about 4600 lines in which PG does... nothing. Seriously. There's nothing there. Arc is the first vaporware that I've actually seen released... and still remain vaporware.
It's incredible, and a little demoralizing, to watch. No unicode support? All of a sudden, in barely a heartbeat, that becomes a feature. You have to wonder if they stop to look at themselves. In case you haven't noticed, you're now saying that table-based web apps are faster to develop than semantic HTML ones. I'm halfway waiting for the proclamation that animated gifs are where real web development is at.
Personally, I'm holding out hope that PG is doing this all to embarass everyone. Once he's got everyone convinced that unicode is optional, that tables for layout is the epitome of RAD, and that backwards compatibility is only needed for "blub" languages, he'll pop out from the caricature and say, "Punk'd, suckers! Look at the ridiculous things I've got you saying!"
There would be much laughter all around and people would move forward with the importance of standards and i18n and stability remembered.
And while we're at it, I'd like a pony. 3
I'm Lucky
I think I've had a great streak of luck. The first programming language I learned was Python. After learning that Perl can't be parsed, I'm quite glad that I started with Python, because I've had lots of fun playing with the Python parser and compiler modules, and it would have confused my feeble mind to no end if I'd had to build a runtime just to parse the source code.
I also pretty much randomly picked Django to start doing web programming in. I think I gave CherryPy and Plone good looks too, but I was (and still am) so clueless about what makes Django good that my choice of Django can't have been very informed. And yet it's turned out to be the right choice in ways innumerable.
The same is largely true of jQuery. I became a jQuery fan before getting a good look at Prototype or Dojo or MooTools or... well, that's all I can list off the top of my head. But in the months (has it really only been months?) since then I've looked at them and I keep on going back to jQuery.
It could, of course, just be my shortsightedness that keeps me from seeing that jQuery isn't really all that much better, and the same for Django and Python and mod_wsgi and Emacs and Ubuntu and SQLAlchemy. But I really do think that they are objectively better, somehow, than the alternatives I looked at. I just don't know how you would show such a thing.
The common thread in all these is great documentation. I should write about that.
Math is Hard
So after many years of false starts it looks like I'm finally going to get all the way through Calculus; this is the first new math I've done since I started programming. I'm finding that programming and math are very much related, just as people have always said. Whaddayaknow, they were right. We defined the hyperbolic functions in class; I defined sinh and cosh in Scheme (on paper) in addition to 'normal' infix notation and then used those definitions to construct the hyperbolic functions.
Very fun, and I can actually drop it into mzscheme.
The thing that's missing is that I still have no idea how I would manipulate mathmatical expressions as values in and of themselves. The problem with a scheme function is that, although I can wrap it in any number of transformation functions so as to build a very useful library from very few basic functions, I still have to run numbers through it to see what I have. I can build an 'integral' function and then a 'square' function, and use those to build a function that takes a value and returns the integral from 0 to that value of x^2, but I still won't have (x^3)/3, I'll just have an opaque, number->number function.
The impetus behind this is that I feel like a ton of what we're doing is algebra with one hand tied behind your back, and I'd prefer to automate that, if at all possible. Of course, diving into Wikipedia I find that it's a very complex problem full of proofs and theorems and other things I don't understand.
So, familiar territory.
Being Profound
When I finish Calculus (it's a night class) I take the bus back home. The cool thing about the bus is that it tends to drown out any bass sounds, so I can play music as loud as I like in my earbuds, as long as the high notes are subdued, and no one will be able to hear it.4 I like to listen to Edward Shearmur's Taxi Ride, which, apart from a snare drum piece, is very bassy and soft.
And it's a great song, perfect for the movie, and perfect for watching streetlamps go by and wanting to feel like you're profound for doing so. And you do. I do, anyway.
All Caught Up
That is the entirety of my life over the past month, skipping over the more boring parts. (That's right, the droning you just read was the juicy part of my life.) Adios, and hopefully back to my regular schedule in February.
-
I blog, he blogs, she blogs, they blogged, I am blogging, they have blogged, we will blog. ↩
-
I reverbificationate, he reverbificationates, they reverbificationate. ↩
-
That's a Calvin and Hobbes reference. The girl says that. I can't remember her name now. ↩
-
I don't like the thought of other people hearing my music; it feels a little embarassing, as if they could also hear my thoughts. Which I wouldn't like. ↩
Comments
22 spam comments omitted.
I am no longer accepting new comments.
Suraj Barkale
#1655, 2008-02-01T13:12:15Z
Take a look at http://code.google.com/p/sympy/wiki/Tutorial
In [1]: from sympy import * In [2]: x = Symbol('x')
In [3]: diff(sin(2x), x)
Out [1]: 2cos(2*x)
Matt Wilson
#1656, 2008-02-01T13:16:30Z
What stuff do you do with compiler and parser? Do you have any toy scripts to share?
I was daydreaming about writing a program that parses python programs and warns about things I don't like, such as functions that are more than 80 lines long.
I know pylint and pychecker can do work sort of like that, but I want to understand how they work.
Will
#1657, 2008-02-01T14:20:58Z
"Arc is the first vaporware that I've actually seen released... and still remain vaporware." What a brilliant turn of phrase, and apt description of Arc.
Adam Gomaa
#1659, 2008-02-01T16:22:10Z
Suraj, sorry bout the markdown problems - entirely my fault. Thanks for the Sympy reference though, that looks it's exactly what I was looking for - will definitely be checking it out over the weekend.
Matt, my scripts weren't anything special, but trying to figure out how to do them led me to SexPy, which, name notwithstanding, is pretty awesome. Definitely worth checking out, and shows how to go from arbitrary AST to Python code object.
Also, check out Epydoc's code. Typically, Epydoc runs all your modules (not good if you have DB connections being instantiated, of course) and inspects the __doc__ attributes of the objects it finds, but it also has a --parse-only (IIRC) option that uses the builtin parser and compiler modules to get the docstrings without running them. That's the part I found useful.
I'm sure other code doc generation tools do much of the same thing, Epydoc is just the first I ran into.