Team Murder No Brain No Headache.


Operator Dead, Post Abandoned…

I'm glad to know that I'm not the only one mourning the loss of <> as an inequality operator in Python but it is kind of a pain in the ass that I will probably end up hacking around in any case since the old representation which is being replaced by the more traditional != operator is more visually distinct than the usual. I stay a couple of Python versions behind so I'm not going to worry about this today. I don't look forward to the find and replace operation this is going to require and how much code this is going to require dusting off. Damn it.

Yes, the title is from the usual source of wisdom.


Sick Day For Being Sick

After getting my ass kicked by a schedule that really is not going to work for very much longer I woke up feeling like absolute shit this morning. When I say morning I mean 4:30 am for those of you who associate the term with the period that occurs after the sun comes up. I'm not sure that I'm actually really sick now that I've slept for a number of hours that strays into the double digits but I had an epiphany of sorts about working strange, twisted, and extended hours:

What I really need to do is acquire a severe and wasting drug habit that I am paid a minimal amount to maintain. I would benefit nearly as much from this sort of arrangement as I do from my current state of zombiedom. Plus this would be more heart rending and poetic than just working yourself to death with tedium and boredom. I might bore others to death with a gigantic and heartbreaking habit but at least I would get some entertainment as well. So, sponsors, step forward! At least then I could do slightly more interesting things in my several hours of clear headed-ness that my current work schedule affords. I would also like a Mac Pro. Thank you.


Oh Quotable You…

This week it is apparently all about email and the clients that produce it:

I really have to press 'Compose' each time I want to write an email?

Is there just a 'Receive' button? I'm afraid if I press this button (Send and Receive for those unfamiliar with the punishment that is Outlook) it will send mail I'm not finished with yet.

I keep getting this "STUMP" error when I try to send email. No, I'm sure it says "STUMP' all in capital letters.

I think someone is hacking into my email. (When asked why she suspects that): Well, that's what people do isn't it? They look at my stuff in Facebook and then hack my email. (When asked what her login name is for the purposes of checking out her account usage): Um, well...hangs up the phone.

For some reason the mail server refuses to send this file. It is only 130 MB so that shouldn't be a problem.

But I want a dictionary word for my password. I won't be able to remember it if it isn't an English word. What about if I change my password once a day.

That sound you hear that sounds suspiciously like a head being smashed into a desktop over and over again that it is just applause. Thank you. Drive through.

Filed under: General No Comments

The Heartbreaking Exclusion Of The Noble Consumer From Better Design Decisions And Increased Stability

I'm actually a big fan of unifying APIs. I'm not a fan of the oft mentioned 'combine all distros or Linux is doomed' strategy most commonly referred to by those who haven't a clue. This is worsened by articles like this one over at that argue that the Portland Project will never work because Redhat's Bluecurve failed to unify desktops and blah blah blah. The lack of comprehension here is a little startling. The unified look and feel folks have been at it hammer and tongs for as long as I can remember and the claim that a lack of common interface will ruin the user experience, bring dark plagues to the land, and other ill considered predictions of doom is not by any means a new one.

The other part that is not new is the lack of understanding when it comes to the announcement of desktop initiatives. Yeah, theming and other eye candy efforts are usually the first things proposed when someone gets another brilliant 'unify the desktop environments' epiphany but making common APIs is not a bad idea especially given the fact that developers are in no way obligated to necessarily use them. That is one of the greatest strengths of the platform: the freedom to totally ignore Gnome's HIG specifications if they don't make sense for your application and also the freedom to ignore the junk in the trunk clutter of KDE's configure everything all the time interfaces. You don't need to follow any of them and there is no overarching part of either desktop environment that obligates you to follow all of their specs whether they are fantastic or terrible. None of things is a panacea and cannot be as there is no embedded desktop (for most distributions) that forces folks to design with a certain goal in mind.

In a few senses the post I'm talking shit about is correct: there is no single solution for this problem. Of course, the caveat here is the lack of a unified perception of discreet pieces being part of the desktop environment as a problem. For people slugging it out with code that needs debugging for, you know, actual functionality this entire drama has to seem like little more than a bad joke. It also shows how far along Linux really is in terms of desktop usage. For those of us who have logged a few years in the not-so recent past working with Linux machines, a lot of us remember when worrying about similar looking applications was the very least of our problems. It wasn't so long ago that simply getting an IDE CD burner to work was a SCSI emulating pain the ass. Most distributions these days pick it up on the fly if you have access to the root account. If you've never set up a USB connection with a PDA under Linux you haven't really had fun. I've spent more time fussing with the creation and subsequent deletion of /dev/pilot than I'm happy to admit. Most of that has exited the playing field and that is cause for celebration almost by itself. Hardware mostly works (more so than Windows given the lack of commercial drivers for most devices) and software is increasingly functional, powerful, and in many cases pretty damned simple to use. The appearance of things rarely concerns me although it is apparently a headache of some kind for new users who are already accustomed to most things working out of the box with the 'hard' operating system.

Better planned and more inclusive APIs will benefit the sort of folks who demand (despite the gales of sarcastic laughter issuing from behind the curtain) resemblance to certain commercial OS's in terms of similar functionality (copy and paste are always perennial targets) and behavior. You can't lose with more functionality that is similar being paired up with more applications. The applications get hacked less than the API which is kind of the idea but, like most things even tangentially related to Linux, the big design decisions remain largely in the hands of the developers writing the software and are not decided by focus group or committee. That flexibility seems to work better for developers who use the platform for the sake of being able to make their own fundamental decisions (among other reasons obviously) than it does for end users. I'm still not completely sure that Linux is the best fit for end users but I'm equally convinced that bending the direction of active development towards the wants (not needs and I cannot emphasize that enough) of users who don't contribute anything back unless you consider market share some kind of hot commodity is a really terrible idea. If nothing else formulating APIs like the Portland Project give people cranking out the code the option of adhering to a design principal and if users are captivated enough by these particular shiny objects then I guess you've got some degree of success.

I'm actually pretty happy that arbitrary standardization hasn't become an important issue for more than a few peripheral players and the obvious big money vendors like RedHat and SuSE. Considering the depth and scope of the internal changes that might make Linux some kind of desktop contender makes me a little less anxious every time I read some bitchy thread in a forum somewhere. It also makes realize that catering to the whims of the consumer is a job best left to third parties and not the main designers. This is why you can still buy cars that don't look like they were imagined by a three year old but every Auto Barn is full of adhesive backed spoilers and the like for those who can't imagine driving around the strip mall without some cheap plastic accessories plastered all over their cars. This is just good design in practice.


Email Is Teetering On The Periphery Of Being More Utterly Useless Than It Has Ever Been Before

I've stopped caring about email. I mean, I feel bad when something goes unread or deleted without my knowledge or whatever but the spam fire hose is cranked up so high right now that I'm incapable of caring. This is after three levels of filtering as well: one layer at my mail server which bounces most of the bounce notifications from spammers who fake one of my domains, one at Gmail which acts as a giant spam filter more than a functional account, and once locally via In a given hour I probably receive somewhere in the vicinity of 2500-5500 pieces of spam. I am not going to sort through any of it. None. Zero. I delete everything marked as spam and worry later. The amount of time that it would take in order for me to properly scan the various junk mail folders would take more time in the day than I currently have free. It is just deleted. Poof.

The question that I have here is this: Does anyone actually follow all of the procedure that would be necessary to sort the good from the evil or is everyone pretty much blindly trusting spam filters to do what they're supposed to and trying to ignore the fact that there are some false positives being deleted? I've tried to be concerned about it but there is a big part of me that has simply ceased to give a shit about anything remotely email related. The other question that I have is how do people generally deal with this? Do you simply tell people that email has become as reliable to you as the pitching a message in a bottle into the ocean method or do you come up with clever excuses?

What truly baffles me about this is whether the spammers are even distantly aware that completely destroying individual mail accounts does more harm than good and whether there is any sort of backlash between the total crap flooders and the more, ahem, moderate spammers who try to send less than 250 MB a day to a given email address. Everyone is well aware that the cost for an actual sender of spam is next to nothing but when the targets drop to zero then there really won't be any point. I am probably a pretty extreme example both in terms of the amount of spam I receive and how little I really depend on mail for much more than work communications but I'm pretty damned close to just implementing a completely prohibitive whitelist that flat out refuses to accept mail from you if you are not on it. No challenge-response, no identify which is different quiz but just pure and raw silence. So, I'm hoping that the flood by the ton senders will simply starve themselves out of business as people without access to their mail during the day will simply run out of quota and nary an offer of mortgage assistance nor the next hot stock scam buy alert will reach a human. As I said, I'm probably a larger target than most (too many domains pointed at the same account, etc.) but I'm sure it will catch up in time.

So, if you don't hear from me I probably didn't get it. If you yank a copy out of sent-mail and resend I will be more than happy to miss it again. I'm not making excuses here.

Filed under: General, Spam Poetry 1 Comment

I’d Rather See Recyclable Software

I spent a little time on the bus ride this morning reading and mulling Alex Bunardzic's post on disposable software which is a huge lump of information and insight to chew on but it also got me thinking about some things perhaps tangential to some of the things he talked about. In my own admittedly limited experience I've found the reuse of code to wildly vary in terms of usefulness. Most of the actual work I do in a text editor these days revolves around forms and the scripts necessary to do something with them so I'm at least 89% talking out of my ass here but I've run into similar circumstances with larger chunks of code (like writing my own web server instead of just using whatever was rolled into a CMS) and liked it even less. In my current place of work there is a weird premium placed on the ability to do any programming work since we're essentially in place as phone 'bots and not expected to know a whole lot more than that. The fact that I can churn through a script that doesn't really do a whole lot in twenty minutes is considered pretty valuable by some folks for reasons I can't really figure out without chalking out a pentagram and summoning up some management types to explain things to me.

I haven't used a whole lot of old code because, to begin with, everything is written in Perl by students who are more interested in learning language features and implementing each and every one of them exhaustively into their current project than writing anything resembling maintainable code. I can't really say that I blame them for wanting to learn about the more fun and sexy aspects of a given language but it makes navigating what they have written miserable even with the help of incredibly verbose but simultaneously useless comments. Every function written is to explore a particular aspect of functionality within the language and doesn't actually promote reuse. That single use philosophy permeates throughout the entire chunk of Perl and makes it very difficult to isolate and reuse anything. That sort of inertia that comes along with writing functions and using built in features for the fun of it tends to extend to everything associated with it.

Comments are another part of the puzzle that puzzles, baffles, and annoys: some of the people churning out this mess are computer science students and don't seem to understand the most basic thing about the purpose of comments other than when they've been instructed to insert them. While this makes for a pleasant distraction from the convolution and disorganization that is normally associated with the 'I'm learning the whole language by writing this script' methodology it doesn't help anyone including the person hunting and pecking their way through an O'Reilly book.

What I'm trying to get to here although I'm being somewhat distracted by random anger flashbacks is that most truly disposable software is designed without any intent to design that software. Languages like Perl are ideal for the throwaway stuff as rewriting a simple implementation of something that does one job and only one job well is pretty trivial if you're acquainted with the workings of the language and aren't just editing book examples around the problem you're trying to solve or if the problem is a one time occurrence like sorting a huge data set or doing a bunch of repetitious operations on files that need are currently in some weird format that gives you a headache when contemplated for longer than it takes to write a regex to sanitize or at least sanity-ify. You really shouldn't be doing this.

I also agree that huge and industrial strength applications that solve every aspect of a particular problem but are not readily adaptable to solving the other problems that invariably result is basically building higher and more impressive piles of shit that will likely fall over and leave shit stains on your pant leg. This may or may not be attributable to the divine hand of $DEITY vengefully spinning the wheel of karma. I don't know how much of my own belief can be chalked up to complete and total UNIX bigotry but I would rather have a bunch of tiny robots that do one job well and play nice with one another when necessary or can be edited and renamed when some of their functionality is needed for another task. That part of the *nix philosophy is what appeals to me the most: build a workable system that can run the world out of small parts that can be replaced and refined when they are improved but don't break everything in the process. The point for me is to not keep reinventing the wheel and doing a crappy job each time you start from scratch. It just seems like a tremendous waste of human effort to make discreet applications that do singular jobs without thinking ahead ten days and realizing that you're going to do the same stupid thing again and again. Of course, if you're going to live to be 350 years old and get all of the hours back that you've wasted in a gift wrapped box on your deathbed I totally understand. I think the really important question to ask is whether you will ever do variations on a similar task again. I will take an extra fifteen minutes working that angle and it has saved me time and suffering in the past. If your code is truly disposable and can be discarded immediately after it is used then why are you writing a program to do it?

Application scripting, as many people who are otherwise woefully/joyfully unacquainted with larger scale programming are often frighteningly familiar and comfortable with, is probably a better implementation of this sort of stuff. Do people often reuse VBScripting routines and mega-macros? I think it is more unintentional passage from one set of hands to another but those mini-languages also seem more likely to be constructed with an application level interface to the actual code than straight programming languages and more likely to be modified successfully by non-programmers. Anyone got any good/bad examples of this at work?

Filed under: General No Comments

Contractual Obligation May Be The Killer App

Things have been busy at my workplace so I have not had the time to do much messing around on the web but there have been a couple things that have caught my eye over the past few days. One of them was the My Dream App competition which seemed like the worst idea ever for any number of reasons. My objections or more like 'aspects that make me wince empathetically in anticipation of pain and suffering' mainly have to do with the idea of having someone perhaps on intellectual par with your average marketeer come up with the magical idea for a magical application and then paying a handful of developers to make this idea into real, working software. It sounds wonderful but so do Horatio Alger rags-to-riches stories until you consider the likelihood that the man had himself had some sexual interest in the boy heroes of his stories and then the shit just gets creepy.

Of course my summary of perceptions is clogged with bitterness and a little anemic on real solid criticism other than my usual mission in life further spreading the unconfirmed rumor that Horatio Alger was a child molester or at least pedophile. Lucky for me some of the sharper knives in the drawer immediately saw most of the potential problems with an arrangement like My Dream App and have written them down and expanded on them to the benefit of news skimmers with serious time deficits like myself. I didn't realize earlier that the developers saddled with the task of bringing half baked ideas to life in code pounded out by people hoping to garner some reputation for doing such. Jesus. What an awful fucking idea. I'm sort of glad that I missed that aspect of the process on the first go-round because it sounds like not only the aforementioned worst idea in the history of software development but a fabulous opportunity for those poor bastard developers to get a bad case of burnout trying to craft feasible code out of fucking pipe dreams. Perhaps they could add a crippling RSI or early bout with alcoholism clause to the contracts as well just to perfect the insanity. Oh, and there is the 'no money' thing. That definitely adds to the 'huh' factor of this project. Go read the post on the Red Sweater Blog. Really.

Another aspect of the idea that is tackled pretty agilely in the post is the relative worth of ideas versus concrete implementations that you can actually do something with. I agree that conceptualizations especially by those entirely unfamiliar with the process of writing something larger than hello world are pretty much worthless. I would guess that a large percentage of the jokes thrown around my workplace by the exhausted and frustrated in response to user stupidity and unwillingness to learn anything new (whew!) would likely be a more likely candidate for actual implementation than some cool sounding ideas tossed around by casual users. Casual users have difficulty simply using the features in existing applications much less those dreamed up by someone charged with the task of transmuting those half-assed wishes into cold hard code. I too wish these developers a lot of luck because they're going to need it.


Might Be Signing Off For The Week

Today marks the first day of the really busy time of year at my work which is internally referred to as 'peak' but that just makes me feel like I work at a fucking ski resort or something so forgive me if I never refer to it again. Apparently this is going to kill us and let god sort us out so I'm unsure if I will be posting much of anything for the next bunch of weekdays. The hysteria implemented by management types as a productivity boosting tool might be just that, 'hype', but I'm prepared for the worst because that is what I've come to expect working here. Ever the optimist, I guess.


Some OS X Software I Like

I've actually been using OS X pretty exclusively for the last couple of months while plotting what to do with my other laptop that is just sitting there with a pretty ancient and unmaintained installation of Gentoo sitting on it which I'm pretty reluctant to do much with since my time has withered away to almost nothing these days. Anyway, the thing is that I've actually used it enough to start developing tastes for different implementations of software. I'm not a huge of fan of most of the Apple software that comes rolled in with the OS though I appreciate it being there especially since competitor #1 thinks a couple of games and a nearly useless text editor is all they need to include in terms of software.

That said, the following couple of applications feel like they should be part of the OS or at least included in the default install since they're both insanely useful and free as well. The unfortunate fact that we all know is that no one benefits from Apple sucking up some bit of free software and including it in the OS. It's unfortunate but also true. You can read all about that along with the gnashing of developer teeth somewhere else because delving into it is just something I don't have enough depth of experience using the platform to judge with any confidence.

OnyX is nearly fucking magical and saves me so much tedious manual work that I don't think I could use OS X without it. Eventually the cruft and sloppiness would drive me crazy and I would just start reinstalling the whole works every six weeks or something. OnyX will basically take care of those tasks that you don't want to like forcing Spotlight to rebuild its index or deleting kernel cache. There are some tools that do similar tasks but none of them seem as complete or as well thought out as OnyX. I'm also really glad that this is not only a free application but one executed with an obvious degree of skill and commitment to doing things 'the right way.' Any system level utility should be used with a higher than normal level of caution unless your backup regimen is more disciplined than and you think you might live to be three hundred years old. I've yet to see any glitches in OnyX and there is something about that (the appearance of perfect performance thought such a thing cannot exist) slickness that instills much more confidence in me than it probably should.

Server Vault is another free tool that won't save you if you don't know what the hell you're doing but will drastically simplify the task of working with handfuls of different servers and provide a more complete interface than you could ever dream of. The system of organization works well for organizing a bunch of different projects spread out over different servers as each entry allows you setup a website, a database host, an FTP server, a hosting account, and some other essential entries. From there you can go to each with a single button click. It started as an internal tool from a design company but they decided to share the love. If I've done work on one of your sites in the past I made a quick entry or too in this tool myself so asking for help shouldn't mean that you have to send me a user name and password for the millionth time. That elimination of nuisance is a blessing all by itself. It isn't the most sophisticated tool on the planet and doesn't get weighed down by a whole lot of extraneous features. It does a couple of jobs really well and that is more than most pieces of commercial software can reasonably claim.

Somehow I thought there more that needed mentioning but they'll probably occur to me when I'm trying to go to sleep, bother me for a few minutes, and be forgotten forever. I hate that.


Test From Writely

Ok. So, I'm not exactly sure how well this is going to work out. As a test that will probably be deleted almost immediately, I'm already kind of digging it inasmuch as I dig writing stuff in word processors at all.

After writing the above something like six hours ago and assuming that it was just eaten by some disobedient API somewhere or sacrificed, as most test posts are it seems, to the insane, mindless deity Web 2.0. It wasn't but I almost wish it had been. Won't happen again.

Filed under: General No Comments

Cheating Less Yields Better Results

While part of me understands that a good deal of what goes on at BlackHat gatherings is, of course, going to be showboating bullshit I am a little surprised by the recent outing of the Macbook wireless crack as a fake at least in the sense that no actual Apple hardware or software was actually responsible for the vulnerability. Given the amount of crap that is churned out of code factories these days it's pretty annoying that the folks responsible couldn't find a real exploit to strike back at users they hate. It's written by humans so the existence of exploitable flaws is likely. I did a little digging into the original claim and I was pretty baffled by it even though I don't have an external Atheros card. Ah well, your fifteen minutes have expired now go back to IRC for crude commentary on $porn_star or $current_teen_idol. Thanks for stopping by.



I received my sticks of RAM yesterday (2 gigs! woooo!) for the MacBook Pro from Other World and made the mistake of waiting until I was nearly exhausted and out of any remnants of mental energy to attempt the transplant. I'll readily admit that I'm not much for monkeying with hardware whenever I can avoid it. My old job that was unofficially called 'Software Support' was a pretty apt description of what I am best at. I can't back up and restore hardware and it costs too much money. If you're a friend that lives in my vicinity then I've probably wrangled hardware advice out of you at least once in the past. Now comes one that I'm a little stumped by:

So, upgrading RAM in these machines is allegedly really easy. You just remove the battery then remove three screws to access the RAM slots. The trouble with this operation is that removing the screws is nearly impossible. They're 00 screws to begin with which necessitates digging out the cheap little toolkit I bought a long time ago for a similar purpose like installing RAM in one of the less used laptops. They worked wonderfully that time excepting the crazy red marks that remained on my palm for a week afterward. The screws in this machine are infuriating because they are simultaneously tiny (not one but two zeroes for god's sake) and also have incredibly shallow cuts in the head. This effect is enhanced by them being driven in so tightly that I feel like I need to apply a fair degree of body weight just to summon up enough torque to slot the screwdriver head.

Maybe there are other folks richer and more foolhardy than me but I'm really unwilling to lean in to the back of this machine with a screwdriver. As my elbow wobbles all over the place on the first attempt and I notice that I am applying a whole lotta pressure to what might as well be nicks in the top of the screw which is a few spare inches away from the processor. How many pieces of metal do you need between you and your RAM?

The question that I think I'm asking is whether or not there is a good way to approach this problem without:

A) having the screwdriver slip and punching a hole through one of the more delicate surfaces of the machine

B) stripping the screws out entirely which wouldn't be that difficult to do given the depths of the cuts and how disastrous it would be since they're tiny screws that are much stronger than me driven into their paths by satanic emissaries with microscopic power tools.

I'll admit that I didn't do a whole lot of searching around for answers if only because that late hour I had grave doubts about my cheap tool set and I was also a little afraid that I might get some stupid fatigue-fogged idea in my head and skewer my chipset in the process. Anyone have a line on a fission powered 00 screwdriver they want to loan me?


The Jittery Morning When You Realize You Hate Mornings

I've probably mentioned the fact that I am not a morning person at least a few hundred times over the course of writing this stuff for four years but I'm not sure that I've ever written about the weird jitteriness I feel when leaving the house before the sun has come up properly and the only other people on the streets are the other accursed early morning commuters and crack heads trying to shake off the last brain seizures before climbing into the nearest coffin and/or dumpster for a well deserved comatose state. That may well be the reason that the pre-sunrise hours are the most anxious for me. I liked that span of hours even less when I worked graveyard shifts under buzzing fluorescent lights and the tyranny of peppy pop hits from the early Eighties because I needed to work my way back home afterward against the sleepy tide of nine-to-fivers. The morning commuters were probably more disturbing to me because I'd been confronted with the crazy, the drug addled, and the displaced all night long and my nerves were appropriately rattled. The sleepy rush of people in their thirties who like they're fifty either trying to squeeze in another twenty minutes of sleep or eagerly thumbing the pages of the newest Tom Clancy atrocity were way more startling than the late night freak show I'd just left.

So, now I'm part of the abnormally early commuting herd. What distinguishes me is that I am basically stressed out from the potential contact with humanity that is inevitable from the moment I lock the front door. I dread crowds of people and especially dread those who are half asleep and even more rude and seemingly unaware that there other people on the planet other than them and Kenny G (the impact of the iPod on commuting was what I'm trying to get here and I will surrender, parenthetically, as an abject failure for attempting subtlety before seven in the morning) than they might be otherwise.

This morning I had a brief respite from my self absorbed apprehension towards interacting with the rest of humanity. As I was staggering away from collecting my coffee and none too aware of what was going on around me a moving truck swerved around me at high speed presumably to get across the light rail tracks before the train arrived and blocked the entrance. Again, the thick and wooly insulation of morning dimness intervenes. The light rail was much closer than the driver thought so it slams on its brakes summoning a noise that instantly banished all sleepiness in people for blocks around and nearly clipping the end of the moving truck. As is always the case at six in the morning, the fun does not stop here. The truck driver was apparently too spaced to notice that the height of his truck and the posted clearance of the entry to the garage would result in negative numbers if summed. The truck slammed into entry way with comical force that resulted in a couple bricks as well as the clearance sign now bent concave clattering to the ground behind me. The truck then, in accordance with physical laws despite the early hour, is bounced backwards into light rail car. The impact was little more than a bump but in the half second or so that I had to turn around and look I saw a few dozen faces register total horror before the truck actually touched the body of the train car.

The really comical part about all of this which brings us back to the tendency of people in the morning to act like the world owes them a favor is that the driver of the truck, after colliding with a fucking building that displayed a bright yellow clearance sign and nearly colliding with a mass transit vehicle with a load of passengers, leaps out of the cab in a rage. He actually starts kicking the train. I watch the facial expressions of the passengers change yet again, some horrified and others amused. I had a few minutes so I hang out and watch the RTD driver try to get the truck driver away from his train. Leaving seems like a good idea when RTD security and the police arrive at the same time. As much as I hate mornings I hate people in the morning even more.

Filed under: General No Comments

Underneath The Drop-cloth

Found via Jeremy Zawodny's always entertaining and time squandering linkblog today, at least for me who reads his aggregator data exploded in a browser while riding the bus, was this article about the hype/marketing versus reality when building application with frameworks. There are a number of really good questions that need to be considered when evaluating these sorts of claims in this post. It's also a pretty realistic summary of the sort of toil you are in for when designing an application that replaces an existing one especially when you have to carry all the data with you. He also made some decisions along the way that cost a considerable amount of time (the decision to switch to PostgreSQL during development) and some tasks that most sane folk wouldn't even consider like rewriting chunks of API (!) that didn't suit his purposes. If you've ever been faced with the choice between rolling your own or using a large framework or library when doing a project and ending up somewhere in between most of this will sound ominously familiar or possibly reopen some old wounds or at least headaches.

The only disagreement I could really find with his methodology is the question raised about using the appropriateness of the toolkit as an issue for debunking when looking at the amount of time that it require to build an application using it. You should be doing most of this before you decide to hand your life over to a framework. This is what becomes so worrisome about addressing all problems with a particular set of tools. Rails seems to be gaining on the Perl abuses of the good old days as it gains popularity and all of the trappings of duh-ness that come with getting religion all involved in your programming languages.

An side order of diversion-jitsu and disclaimer-fu here that needs to be made before the flaming begins: I'm blaming popularity for the abuse and zealous overuse and not the actual language here so drop it before it gets hot. I know it write things in far too many words but I expect you to read and comprehend some of them before I'm going to take any of your ham-fisted 'corrections' to my woeful ineptitude in the properly appraising the One True Flavor Of The Month according to the One True Source Of All Wisdom For Imbecilic Ponderers of Alleged Truth About Things Read About or Otherwise First Considered Ten Minutes Ago terribly seriously. Yes, too many words now please move on before I spill any more in anticipatory defenses of stupid, stupid acts performed by the invisible hordes of idiotic barbarians against my honor. This reminds me that I must get out the CrankyPhone at nearest convenience to demand Southern accent tags from W3C immediately, posthaste, and with damn-the-torpedoes style speeds of delivery... Please choose wisely your hammer oaf-y. Um, so, I kinda lost my train of though in approaching this paragraph or whatever other funny name you would like to give this train wreck of a construction so I will move on immediately before my word count exceeds that of the weblog post I intended to make a brief mention and quick commentary on...

I do think that one of the more enthusiastic positive notes for a first application developed in Django might be the inclusion of a link to the source code for the project which we'll have to shave a eighth of point or so off the overall delivery as it is mentioned as comment appended to post. Most first time developers in a new framework are too busy recovering from their newest ulcer and explaining copious new night sweats to their significant others to bother posting the actual source and/or discussing it in great detail. I think that more explicit discussions like these with some of both good and bad are more valuable as advocacy for a given framework or platform than marketing talk could ever be.  


Non-Military Use GPL Patch

While I'm pretty enthusiastic generally about the GPU 'patch' to the GPL to disallow military use I'm also pretty skeptical of any incorporation of science fiction ethics into the real world. From the patch (the one linked above):


This patch restricts the field of endeavour of the Program in such a way that this
license collides with paragraph 6 of the Open Source Definition. Therefore, this
modified version of the GPL is no more OSI compliant.

The Program and its derivative work will neither be modified or executed to harm a
ny human being nor through inaction permit any human being to be harmed.
This is Asimov's first law of Robotics.

I'm probably being a bit of a tight ass here but this cracked me up and made it seem more like a prank than actual activism. Their acknowledgment of complications to OSI compliance is refreshing.

Filed under: General No Comments

Because ‘Bots That Fake Their Agent String Are The Most Reliable Way To Gauge Market Share Especially If The Goal Of Your Research Is To Please The Right Corporation

Well, what do you know? The new OneStat results are in and XP is still winning the bogus agent string lottery. It's amazing that a company could even try to sell this sort of bobbing for research as anything remotely relevant since a huge amount of traffic to any given site is not human and will identify itself as whatever the author thinks you want to hear. Wonderful. I'm sure this keeps research consultants from starving to death in the streets or something.


Do People Really Want Debian To Be Ubuntu?

As more time goes on and the encrustation of hype grows even more thick and impenetrable around Ubuntu I find it more and more difficult to gauge what people are really thinking about the wholesale incorporation of Debian into Ubuntu. OS News linked to a a weblog post that considers a lot of these points which is fine and great but the creepy part is that the Ubuntu folks (and by that I mean users and not the developers) should be thinking about the relationship between the two a bit more seriously and thinking about the friction between them before Ubuntu, as it inevitably will, becomes a commercial or otherwise non-free entity.

At this point I really wish Ubuntu would become a commercial product with some more really stupid marketing and a prohibitively high price tag if only to spare the Debian developers more grief and the incessant whining about including closed drivers and the like into the main tree despite the fact that the Debian Social Contract says that Debian won't do that. That social contract so often kicked around and made fun of by new converts in various forums is going to become more important if and when Ubuntu is commercialized.

The beneficial part about Debian (as a project) being a relatively closed (from the user perspective: expecting to land on the web site and be greeted with marketing materials) environment that pays little attention to public perception of it is that they're more concerned with actually assembling software into a flexible whole that isn't assembled for a specific purpose (like the desktop) or a particular architecture. Whether or not you can play Flash games with an out of the box (oh lord, what a misnomer that is) is immaterial to the direction in Debian development and when x distribution changes licensing or folds or just starts making stupid design decisions you will be glad that Debian operates in such a strict manner and at a seemingly glacial pace. Why? Because the next flavor of the month Debian-derived distribution will be out and trying to conquer the world with icons and new, improved wallpapers before you can wear out the Cafepress t-shirt you bought to show off your allegiance. I've (too) often harped on the popularity of Debian derivatives draining resources from the main project but that is personal crankiness as the project makes it ridiculously easy to do exactly that and doesn't compete with the new jacks by selling, well, anything.


The Internet Is Broken

Sigh. I've been enduring short yet continuous outages for the past two days. Translated into less stupid sounding terms this means intermittent connectivity and the madness that comes along with it. I'm generally able to get out long enough for a single page load or maybe forty seconds at a time. I'm hoping to actually get a page with my ISP's phone support (how novel) loaded at some point so I can get someone out to check the lines. That doesn't exactly feel ambitious. The most frustrating part is that I'm trying to use the available online documentation for wxPython and smashing my head into the wall with impatience each time that I'm stuck in unfamiliar territory without documentation and only pyCrust as my guide. I would perhaps try out the old back up dial up connection if I had a modem in any of the machines or even a land line to dial out with. Look for me atop a tree in the near future waiting for the cargo planes to fill the sky again and bring me my fucking packets.

Note to self: Download the entire internet so this doesn't happen again. Set up internal RSS feeds that refresh with gibberish so that the numbers change in the dock icon and I don't feel so freaked out. Will possibly need some more storage to do this right...


New Apple Desktops

Okay, I'll admit it: for what many have been slagging off as a pretty insignificant bump upgrade I have to admit that I'm impressed with the new Mac Pro machines and the vaporous promises of Leopard. The base specifications of the Mac Pro are pretty hard to argue with and I really like the fact that you can pretty much roll your own machine instead of the age old choice between three radio buttons that has represented new Apple offerings in the past. Another break -- I think as I haven't been paying very much attention for the past three or four years or so -- is the ability to actually roll back the default specs and drive the base price down for those of us who are not afraid to open a machine and rearrange its guts to our liking usually for a price about half of what Apple would charge. That is much more reasonable than the hermetically sealed desktop that were default in the past. Obviously this change has been the course of slow evolution over a long time from the less friendly days when you needed a tool from a third party to even open the fuckers to the point now where the chassis are actually built with ease of access in mind. I used to have a PowerMac 7100/66 that was a complete terror to open and I'm glad to see that the booming 'Pay no attention to the man behind the curtain' voice has receded into the background. That's good.

The OS is still in demo mode so it's hard to actually gauge what they're offering there by any standard other than sheer audio/visual impression. The 64 bit-ness falls into the 'it's about time' category but seems more wise at least in retrospect than the train wreck that Windows users encountered with 64 bit processors. I've heard numerous folks who I consider pretty technically competent tell heartbreaking tales of woe when using it and the sheer horror of the Gentoo Bugs site stopped me from buying a 64 bit chipset despite its novelty and sexiness when I built my last machine. That said, only the folks who attended WWDC and are first in line to get one of the new machines are really going to have much insight into how well Leopard functions until Apple actually releases the final product. I'm more than a little curious about how that will actually go especially since the amount of new hardware in the configuration for the Mac Pro machines seems a whole lot more expansive than I remember for Apple. The combination of 64 bit drivers and a brand new OS makes me a little hesitant to lower myself into more crushing debt in the near future. I've almost got the MacBook Pro (stupid camel casing) paid off but Yoon needs a Macbook before I go wandering off in that direction and get eaten by a grue.

One thing that has cracked me up a couple of times is the roar from the peanut gallery that the new version of the OS is essentially a point release and that precious time is being wasted on things that do not create new screenshots or whatever. Yeah, I know creeping feature-itis is how most people gauge new software releases but the whole three fucking architectures things is pretty killer for a single release without adding in a bunch of crap on top of it to further complicate things. Arguing the relative value of each announced feature especially when comparing it directly to announced features in Vista seems pretty stupid and I'm not feeling much like an analyst or anything so I'll skip it entirely. Well, I'm happy about the inclusion of virtual desktops or something that allegedly works like them but I'm glad that the issue is finally being addressed.


The Horror Is Horrible…

Things and conversations going on around me while the bus rumbles through Boulder en route to less annoying places:

Two girls are talking about their ideal weddings at top volume and how much money each is of them is going to get from the family of their potential groom essentially by marrying in to the family. The whole time they are also talking about their distaste for traditional weddings. It's not often that I feel sorry for rich people...

A man borrows a woman's phone after telling her that he doesn't want to buy a cell phone because he can just borrow them from other people. He finishes a ten minute phone conversation complete with hushed tones and nervous glances around the bus which makes it look every bit the drug deal phone call. After he finishes he thanks the woman and then starts hitting on her by asking if she is married, if she has children, and if those children still live at home. At this point in the conversation I start getting really nervous because she seems annoyed but still readily answers all of his questions. For some reason he is wearing purple rubber gloves.

Somewhere in the back of the bus a baby is wailing. This is pretty annoying but the woman chanting what sounds like "shutupshutupshutupshitshitshit." I'm in the front of the bus but I can still hear them in a rhythm that mirrors that of the bus although I might just be imagining that part.

A sleeping girl is making noise in rhythm with the bus because her head is slamming into the window over and over and over again.

I often wonder during the course of these bus rides whether I am not part of some elaborate social psychology experiment but that would require far too much organization than would be necessary to explain this mess.

Filed under: General No Comments

Why The Caged Bird Howls Like A Damned Soul On Its Way Into The Inferno Forever

I'm going to pose a question in vain hopes of gaining a little insight or, in my wildest dreams, some really easy answers. I've been working on pretty large chunk of PHP for quite some time that is pretty modular by the nature of how I'm intending to use it. It's filthy buggy like every thing I write but I'm mainly concerned with getting it up and running functional before I start splitting the hairs of security and efficiency. What I'm really trying to do here is get my head back in the code and I'm having some problems figuring out the best methodology of doing so. Yes, I have profuse comments throughout the code and I've done a fair amount of read n' revise as I'm browsing back through the old crap. I guess what I'm asking is what rituals most people perform when dealing with huge lumps of code they've packed in mothballs for months at a time. I do my expected summary at the beginning of each file including the adorable picket fence of asterisks like anyone who has successfully taken a one thousand level programming class but I'm stumped when it comes to further and more enduring ways of preserving my train of thought. Anyone wanna share their tricks or even some good advice on how to prepare for such separation anxiety when you know full well you're not going to get back to the hacking for months at a time? I'd prefer more organic and less software dependent advice as I'm pretty platform fluid these days and not terribly fond of running Java applications that require more steam from the turbines than the operating systems but I'll take whatever I can get.

I have no idea what's up with that title but it popped into my head so like many other of my decisions I'm sticking with it. It just feels like that sort of morning...


This Chocolate Tastes Funny

The latest post (at least while I was riding the bus and nowhere near a wireless connection) on Red Sweater Blog poses some questions and gives some answers to what might be one of the more controversial topics for Mac users and developers: how much do you price software that isn't churned out of one of the app factories like Adobe or MSFT? It's been sort of weird for me to do a partial migration to OS X after spending most of my time for the last five years or so largely working in a Linux environment because there is comparatively so little free (beer and speech) software available for the platform. The choices narrow considerable if you're anal retentive like me and try not to run anything that runs emulated under Rosetta. This limits the commercial choices considerably as many of the big guns are dragging their feet when it comes to porting their applications to Intel or Universal binaries.

There are plenty of smaller projects (and bless them one and all for continuing without much community support or recognition) that do much of what needs to be done if you're looking to do development work (actually there is a huge amount of software out there intended for developers but that availability sort of comes with that particular territory) or more basic/less compatible with the big names sound/video/graphic tasks than you'll likely be fine with free software offerings. I'd rather adapt than deal with free trials and the other annoying traveling salesman/teenage Mormons in suits on bicycles nonsense of shareware. I don't have a terribly difficult time just learning the available tools or altering them to suit my own needs. Hell, I spend nine hours a day working a Windows box that has an uptime somewhere around two months (the only reboot being one done by a student when I left my machine locked and someone else wanted to use it) and when I simply use it for work tasks without trying to do anything terribly fancy. It is an appliance that runs a couple of basic applications and little to nothing else. I can deal but there are many who can't and that is allegedly what dictates the direction of markets if you listen to the wild eyed libertarians soap boxing about free markets while living large on trust fund dollars. Perception is a huge part of what creates value or worth or whatever you want to call it.

One point he makes in the post at least by example is the slow transition from free software to paid (the dreaded demo-ware in the parlance of the cottage industry) which seems pretty sensible to me. The number of revision somethingb17 pieces of semi-commercial (I mean shareware but I'm trying to be sarcastic here) is somewhat discouraging. For nearly all of this software there is a free/open source analogue that will consider bug reports and won't lock your patches up in binary/get pissed at you for decompiling their software to patch it so it functions properly. The only sane solution seems to be the one mentioned above which is less like free to commercial and more like beta testing which is gasp what most of the large software companies do. The biggest problem is the total lack of support. Even if you never dial the magic and bug dissolving eight hundred number on the side of the box it add some worth to the fifty dollar plus price tag that doesn't really exist for most smaller commercial projects. You are buying in to software that may or may not respond to your demands and may just disappear tomorrow. Again, this is a matter of perception which gets cloudy when you are doing the complicated balancing act between being a wad of code in active development and being a commercial entity. The perception of stability, I think, is a pretty important factor in wringing cash out of the folks that use your software. Developing that software under a free beta implementation seems like a pretty transparent way of establishing that dedication to existing next month that people dearly want when plunking down cash for binaries transmitted through the ether. Sometimes that means knowing that said software will still be available for download from the same place as it was the week before or having a hard copy on CD. There are aspects of ownership missing from that equation that likely dilute the perceived value of being a license holder. Once again, that value to the person waving bills around, imagined or not, is what makes the price of entry stick.

One thing that I did some thinking on is the 'people hate it when something formerly free becomes something that suddenly costs money' part of the original argument. One of the most discouraging parts for people who used a piece of software when it was free is that they feel, again imagined or not, like they helped with shaping the development of that software whether through feature requests, bug reports, or even patches to the existing code. The sweet spot seems to me to be offering existing users even the freeloaders who did nothing but complain when the software was free either a huge discount on the finished product or a version worth of freebies. How do you determine which are the useful users and which are just people who waited around for you start charging to piss and moan? There are a few that I can think of immediately: were you a registered user of the bug tracking software before x date? Were you a pretty damned active ranked member of the help forums? Is there documented proof that you created some traction for the success of a piece of software? Give some exchange of value for that service rendered that doesn't involve locking up other parts of your project that were once freely available and plastering a price tag over it. Nothing pisses people off more than that -- the instant conversion of something that seemed like a community or grew rapidly because it was seen as a community being kicked out and then insulted by being hit up for money. If that isn't obvious then I don't know what is.

Unfortunately, a handful of days after the start of getting this written, I realize that this topic is one exhausting almost by design. Staying true to the Team Murder tradition it is closer to thinking aloud than the approach more careful (necessarily) meditations that others done on the topic. The post on the Red Sweater Blog is scathing at times but generally pretty well thought out and reasoned. I have no such aim. The glut of shareware/informal commercial software being developed for OS X is pretty baffling and a fairly saturated market if you're looking for an RSS reader or something. I'm glad that so many people are writing code regardless of which license they release under. What irks is much of the bitterness that seems to spill out of developers with somewhat lofty expectations of what being a small developer might mean. Hopefully these forces will balance one another out over the course of time because that championing the little guy by venting fountains of bile until enough units sell to unload the whole works onto a larger company doesn't do either developers or public perception of the platform much good. Alternative points of view even those I can't pretend to sympathize with, understand, or even respect are welcome. I may proofread later but likely not.

Filed under: General No Comments

Evil Genius Monday

Whichever satanic emissary it is that actually plans and schedules the city and regional bus clearly has it in for me. Monday is one of the few days that I really cannot deal with things being late or even terribly off schedule. The bus, the one that delivers me daily to my job where minutes are counted up like magical beans, is consistently late on Monday. This means that no matter how carefully I plan and try to budget my time I am going to be late for the first day of the week. It is insidious and utterly effective for shrugging off whatever relaxation the weekend may have imparted on me and shuttling me right back into the frayed nerve week that I was just shot out the other end of.

What makes this insane plan more effective is that there is a bus running the same route that leaves ten minutes later than the one I usually ride. My bus today left exactly one minute before the second bus is scheduled to leave. What this means is that I get on a bus which will deliver me to a corner stop a block away from my work about a minute before I am due there and the bus which drops us a scant few minutes before the next is due to arrive will be jam packed with the people facing the same dilemma as I do. Fucking genius.


More Mail Disasters…

I've switched all of my mail accounts around with vague hope of actually receiving mail when it's sent to me. I know that is an idealized and lofty goal but I'm going to take my dream of having something that I pay for work the way it's supposed to and run with it. Actually, that is a total lie as I just moved all accounts to a completely different configuration of forwarding and redirection.

One of the guys I work with mentioned that he's heard many complaints about the mail service Speakeasy offers where clients and the mail sitting on the server 'get out of sync' (I have no fucking idea what that means in terms of POP3 accounts) and more drastic action has to be taken. This drastic action that I speak of consists of logging in to the web mail system and painfully deleting thousands of pieces of mail. The great part about this is that if you actually have a mail client open while doing this you can still see mail flowing into your local inbox. I think the protocol the server uses is 'magic' or 'reallyComplicated3' or possibly just 'brokenSSL.' So, I switched all of my accounts to forwarding to Gmail where I have a larger quota (bad) and there don't seem to be the same kind of issues with clients (either Apple's or Thunderbird) where either the server or client is telling lies (bad). The good part is that it has actually inspired me to open a help ticket at the Speakeasy support page when I have done a little research into the matter, namely to figure out where the disconnect between client and server is happening.

Again, if you've sent me some mail that requires response and you haven't heard back from me please give it another shot. Now that I know this is not going to be a one time mail snafu I shouldn't see these sorts of issues again and readily look forward to new problems that will make me swear off email for the foreseeable future. I should probably mention that Speakeasy is in every other aspect a fantastic if expensive ISP. I've heard back on every issue that I've ever raised in minutes rather than hours.


One Of The Better Interviews I’ve Heard Recently

Like most podcasts, it's a little on the long side and one continuous chunk but go check out the Matt Mullenweg interview on PHP Architect. There is less conversation about the granular details of developing the language which is the usual focus of this podcast (aside from plain old news) and more talk about what changes in the language mean to a developer using the language who isn't directly involved with guiding decision making regarding the language. It's a conversation worth overhearing and covers a fair amount of ground including background on the origins (it was not sent as an infant from Krypton to a new life under our yellow sun) of WordPress and the perspective of approaching software development from the perspective of an aesthete or at least someone more attuned to the aesthetic attributes of a piece of software. Nice to hear that people are driven as crazy by minute details as I am. Go check it out.

Filed under: General No Comments

How To Avoid Parking Lot Ninja Attacks In Baby Steps

While on my way to another fabulous day of listening to people shout incoherent questions at me through their noses typically from a cell phone that breaks up every couple of seconds I thought it might be appropriate to dole out a few tips on how to deal with support staff on the phone. This is mainly an attempt to help you avoid the curses laid on you by underpaid and often over skilled people dealing with your lack of understanding and empathy for other humans. You'll get your punishment at a later date:

1. History lessons don't necessarily help me help you: While I'm sure you have fond memories of taking that BASIC class in 1979 it really has no bearing on why Outlook is fucked up at the moment. When you start rambling support staff generally stops listening. Unless, of course, it's an otherwise slow day and the person speaking with you periodically mutes the phone to share choice tidbits with his colleagues.

2. Don't make shit up: This works in conjunction with the last one. Don't invent circumstances or regurgitate jargon you read in PC Bullshit this week. No one's needs are served by this. You may feel like you're doing some retaliatory technology cock measuring but you're arbitrarily obfuscating your question and making it more difficult for the person on the telephone to insure that you're actually a human and not one of those automated phone bots set up by a friend as a practical joke.

3. Be more specific: Sacrifice twenty five seconds that would otherwise be invested in a rousing game of solitaire and write down the error you saw. What application were you using? Were you doing something you haven't really done in the past? Maybe you're seeing unexpected results that you're unaccustomed to? The IntarWeb may not be broken. You might just be looking at it wrong. While your agonising tale of lost productivity might be amusing for several seconds at a time the contents of that error message are pretty important.

4. Angrily requesting a supervisor the moment the telephone is picked up will not save you a second of time. Push me and be assured that I will push right back albeit as politely as possible to avoid the wrath that might be incurred by audibly calling you a pig fucker in a room full of people. If you've had previous contact with someone a couple of tiers up from the help desk and they've requested that you contact them directly then ask for that. I love it when people yell things like that at me. Um, I am supervisor. Please choose which landfill you'd prefer as your final resting place. Thank you. Drive through.

5. If you've made a mistake just admit it. You downloaded one of those smiley emoticon packages of spyware and other filth thinking that seeing incredibly annoying animations in your instant messenger client would be cute and distract you from the fact that you're part of a soul numbing bureaucracy that will eventually smash the spirit out of you. Things like that happen, mistakes are made, errors in judgement take place something like every fifth of a second. That's fine unless you work for some secret government cabal agency where they cut fingers off for this sort of thing so don't lie when you need help cleaning it up. Lying might spare you a little ribbing or even a lecture but it won't help diagnose and ultimately fix your problem. Inevitably someone will figure out what you've done so just clear the air, stop trying to make excuses for all of humanity's stupid mistakes and absentmindedness and get things sorted in the beginning.

Okay, that's all I can think of for the moment. I'm actively trying to pry myself out of this job so I can avoid death by a fatal speed ball of stress and boredom. I'm not the right personality type for this sort of work at all and I've done very little of it in the past so hopefully my relative newbie status will provide a tiny bit of clarity. Probably not but venting is also nice.


Upgrade With No Pain

You know doing a WordPress upgrade is hardly worth mentioning any more outside of the security woes corrected by the upgrade. This time around like the five or six times before was literally a process of overwriting files and refreshing a couple of pages. No complications, no problems, no happening during the course of the upgrade to even notice. That is one of the better things about running WP versus some of the other CMS/weblog packages that I've used in the past -- I don't worry about running security upgrades in terms of breaking Team Murder. The last 'problem' I ran into when doing upgrades was needing to change the permissions on a single file (the actual login script) and one other permissions snafu that escapes memory. That is the sort of record that warrants a round of whatever for all of the WordPress developers for sparing the rest of us hours spent cursing in front of browsers displaying errors and pages that don't quite render. While the kitten is crawling all over me at 5:29 am it's time that I'm really happy to have. Yet again, I've upgraded and don't see any breakage. How about you? Let me know...

Filed under: General No Comments

If You’re Going To Sell Things Understand The Fucking Licensing…

I have not been digging the response to Mepis is dealing with GPL compliance and most of the response that I've seen (albeit from users not developers who would likely advocate the implementation of Soylent Green if it was, you know, convenient) has been pretty fucking annoying.

I'm sure that if I was all hung up on this particular variant of the Debian-base distribution I might be equally supportive against all common sense since there are so few distributions based on Debian and after the complete and utter failure of both Knoppix or Ubuntu to pique the public interest who could blame them.

The difference between people who simply use GPL'd software and those who distribute it is a pretty fundamental difference in licensing terms. If you are repackaging (and that really is not the right term in this instance but bear with me) and then selling that repackaged distribution you might want to consider actually reading and understanding the terms of the license that the software falls under. If the license in question were some EULA laden with legalese and intended to keep you from actually owning or being able to modify the software I might be more sympathetic but I'm not. Follow the license or don't use the stuff. Hell, I'm sure the Mepis crew could probably replace gcc in a couple hours, right?