To My Coworkers

Leaving your empty soda can next to the overfilling recycle bin is not an act of conservationism. Think globally, act locally means crush your can and your neighbor’s and put it in bin. It would be better to throw your can in the regular garbage because you would not be littering. In reality, this is just a complex argument to veil my basic revulsion at having to graze on leftover meeting food with so much trash around.

I am going boarding. Don’t call, don’t write, don’t care.

This note kinda reminds me of when Scarface quit his job in Half-Baked.

1 Character

An interesting bug.

One of our programs has a 90-day limit on passwords, and for passwords set on October 2, that limit would be reached on December 31. For some reason, passwords switched on this day were getting marked as expiring in 12-31-09, which violated the 90-day limit, and blew up the user’s account. This caused something of a panic amongst the sysAdmins.

I had a hunch, as I am paid to do after working 2 years on a program, and correctly determined the cause related to our 90-day rule and the new year, and the fact that the bug was effectively only a bug on this one day. Some further digging by one of our developers revealed the bug to be due to the usage of Gregorian time rather than “regular time”. The perl documentation describes the differences like:

%G – The ISO 8601 year with century as a decimal number. The 4-digit year corresponding to the ISO week number (see %V). This has the same format and value as %y, except that if the ISO week number belongs to the previous or next year, that year is used instead. (TZ).
%Y – The year as a decimal number including the century.

I never understood why a program would support different algorithms for calculating time. then again, I majored in philosophy and not computer science. You would think if anyone could find uses for different versions of time, it would be a philosophy major and not someone trained to think in 0s and 1s, but i digress… Much discussion, relaying and allaying of concerns and messages ad nausea up and down the food chain ensued, ending in a decision to change the constant we use for time management in this program. Its no small thing when you alter time.

The pressure was on QA to make sure this change was safe. After 10 years and an inflated title, i took this in stride, and showed why its worth having me instead of two junior engineers. Rather than use a shotgun and splatter an entire work-week across my monitor like a Robert Rodriguez film, testing the entire program and numerous date combinations, I searched the codebase and found this change affected 14 different features. At a unit level, the time calculation would be the same for every one of them, meaning I only had to test the specific piece of code once. It worked as planned on new years, which I was able to test by hacking the code base to check for a 68-day-old password. Next was to determine the risk in the event my testing was wrong. I found two uses of the time constant to be for a different program using the same library code and now the happy recipient of a free enhancement request, three occurrences that were informational only and would have no impact if wrong, eight that were straight expiration dates which at worst would be simple edits, and the one bug due to the application of the 90-day business rule which i provided steps to work around.

The analysis of the fix and risk took about an hour and a half for me, it took about 10 hours at least of various other people’s time, more if you included all the email. The code change was 1 character.

Before: STRFTIME_NLS_DATE_TO_CHAR_FMT => ‘%G:%m:%d:%H:%M:%S’;

After: STRFTIME_NLS_DATE_TO_CHAR_FMT => ‘%Y:%m:%d:%H:%M:%S’;

More Blog Work

When I was editing the post for our CO Trip, I saw the size of my backup file grow by over 50 MB! This was f’d up, since I posted about 30 pictures but they were all streamlined for the web. Some digging revealed that a plugin I was using to resize images for presentation to 480×640 was actually making a new copy of the image every time the post was saved. Moreover, the new imaging features in WordPress 2.5 made this plugin redundant. I found that they plugin directory was housing almost 200MB in jpgs – half the size of my entire website! Deactivating the plugin and not using it moving forward was easy, but before I could delete its directory I had to cycle back through my entire blog and remove all the code that called it. This meant removing\readding hundreds of images over about 400 posts. I’m currently upto December ’07, and cause I got bored, started working backwards to July ’08. The pluses out of all this are that I’m also moving all video off my site and upto Vimeo, fixing some creeping DB errors, shrinking the size of the whole site way way way down, making pageloads faster, and getting to re-read all my old shit.

Hollow comfort for the hours this is taking me. The task reminds me of a few years ago when I made the massive effort to accurately tag and rip our entire MP3 collection from the mishmash of files we had accumulated over the years.

In the course of updating all this, I found that the imagescalar plugin was also affecting some of my smilies, which meant I had to redo several dozen for one post or lose them when i slayed the plugin’s directory. The smiley panel I added to the WYSIWYG editor had this annoying habit of closing after each click, in addition to being too small and forcing me to scroll all over to see all my smilies.   Sooooo…I revisted that code as well. WordPress 2.5 bundled TinyMCE, where previously I was using a crappy hacky plugin to get the smilies into my editor. When I updated to 2.5, I skipped the plugin and installed the code directly from the TinyMCE website.   Of course I did not write down what I did, and TinyMCE has since evolved. It seems I used only 1 file to do the core of the work — emotions.htm, and added some javascript methods from some utility files directly into it to initialize and launch the plugin. Every version of TinyMCE does this a little differently, but the code works in a variety of configurations. I got the button to appear in my editor by tweaking tiny_mce_config.php. Yesterday I figured out how to dictate the size of the popup-window by adding my own resize method to tiny_mce_popup.js.   It probably should have been local to emtions.htm, but whatever it worked. Finally I commented out the automatic window closing which lets me add multiple images with many fewer clicks.

All this made possible by my servers at work locking up and our systems group taking a long time to get em working.

I’ve thought a lot about the benefits of a product like WordPress which is open-source, and all the fiddling I need to do to get things working, and constantly reworking it as the codebase evolves.   However, I don’t think it’d be much better to go with a “commercial” product that has periodic releases – its the Web, you will still be customizing whatever you have.   The issue really is the webmaster, not the codebase.

Bundling

The figures below come from a powerpoint presentation written by Microsoft to describe IE8, due out in December.

Memory Requirements

  • Windows Vista – 512MB
  • Windows XP – 64MB
  • Windows Server 2008 – 512MB
  • Windows Server 2003 – 64MB x86; 128MB x64

Why do the current MS OS’s require so much more memory to run IE8?

The New Site

It was time for a change. The old site was nice, but i got tired of how cartoonish it looked, like most of my older web-design. a great leap forward was calling at me.

The problem is, technology doesn’t solve the basic issues of picking out a theme you like. And then i get to get in touch with my feminine side and pick and nag at it to customize it and make it just so. This is mostly pretty fun, but its also work. The most noticeable tweaks to the width took about an hour during a slow workday. From there is was tweaking colors, link behavior, separators, the contents of the sidebar, and about a dozen total little changes. Its nice to see my relatively smooth working competency with CSS and PHP, and always a good mental exercise to work with code – even if it is simple code. The most complicated issue was something i’m the only one who would notice – post separator characters after the last post on a page. The php code here was all wrapper classes with particularities to its behaviors, but between the code and the WordPress docs I could not find a way to do what i wanted. WordPress docs are helpful for common things, but it was like USA Today for programmers, almost informative but useless for hardcore information — perfect for the average web designer who is capable but not fluent with coding. I’m an anomaly in that my coding isnt very good, but I’m used to working with sophisticated codebase’s and reading more technical code docs. So i was at once bored and frustrated with the WordPress docs. Finally i found out the info on a message board. and Beckie did acknowledge how much nicer the tweak made the page look, when you compared them side by side, and gave a shit!

The graphic looks nice, but took a stupid amount of time, as farting around with graphics always does.   And I managed to prick my fingers a bunch of times getting the right shot. stupid chollaballs.

Happy Flu

An experiment to watch the diffusion of ideas across the web.

The Boring Part

Internet does not exist per se, it is merely the volatile aggregate of information, flowing around. For the past few years – following the emergence of the so-called Web 2.0 – information diffusion has been more and more orchestrated by bloggers instead of mainstream media. This paradigm shift has given us the opportunity to understand how word of mouth works by providing an actual framework in which a resource could be observed while spreading.

The Fun Part

What’s in for you? The unique opportunity of being part of a fun, collaborative experiment. The resource we are offering you to spread is unique : the Happy Flu visualizer tracks its own diffusion. This means that when you post it on your own blog or website, in a couple of minutes you will appear on the applet. You will be linked to the place you first saw the resource and, even better, everyone spreading the resource from your page will be linked to you. This involves a lot of happy magic. We think it could be fun to build the biggest possible diffusion tree, don’t you?
Get Involved!

Interested? Here is how it goes :

When you come across the Happy Flu visualisation applet, and if you want to spread it, click on “Spread it”. Enter your website’s name and url (those will appear on the Happy Flu visualisation as soon as your own post gets a few hits). Click “get code” and copy/paste the code in a blog article, and that’s all!

A Few Notes

Please note that in order to have meaningful graphics and coherent data, we ask you to use the “Spread it” button on the website where you discovered Happy Flu.

A Great Workday

what are the ingredients of a great workday?

  • free food
  • don’t work very hard
  • be engaged and intrigued and challenged and learn new stuff
  • hit a home run

add to that meeting some very interesting influential people, winning a PlayStation Portable, and getting some Dos Equis and 12-year old Scotch…its amazing I get paid for this!!

I’ll keep it general, since on principal I don’t like to talk too much about work on my blog. We were having our Technology Summit where many of the top folks from Phoenix and the various other Dev teams converged on the new location for 3 days of conferences and presentations and office warming. Good stuff, learned some things, networked a bit, breakfast lunch dinner and drinks on the 2nd day. The highlight of the conference was a competition dreamed up by my manager – the prize a new PSP and 15 minutes of fame and adulation from your coworkers-   where each person was challenged to come up with an idea to “Restock the Shelves” and help grow our business to offset the impending loss of our LiveNation customers. Whoever says Ticketmaster is an old fat happy monopoly has never worked with the R&D Team.

The idea came to me almost all at once, a geyser of connected thoughts that had been percolating slowly from my recent and frequent usage of Ebay, Craigslist, and SteapandCheap.com. What if we took our existing customer accounts and their ability to set notification preferences via email, but also tied them into postings on our Exchange site like Craigslist – enabling them to get customized timely messages about ticket resales and events of their choice – and sent it all out as RSS feeds, deliverable possibly by a desktop client like SteapandCheap??

I knew right away the PSP was mine!

The idea had it all – revenue generation, traffic to our site, traffic specifically to our Exchange sites that would hurt our competition, sexy evolving technology, and compulsive shopping. I shared it with Rich at the first break, and he was impressed, as were Beckie and one of the Dev leads I often kibbitz with. The best part was, if my idea got beaten out, then some of the other very smart and very capable people at the conference were surely working just as hard at their own ideas. And it meant money for the company, and ultimately more for all our bonuses. I was not disappointed, as the other ideas that I did hear were all pretty darn good in their own right. Its exciting being in a creative environment with other sharp people.

The competition led our resident Alpha Genius to establish a Friday morning brainstorming session to go with our free bagels and shmear, and I can’t wait to participate. This is where great new ideas are going to be born, where inside tracks to working on them will be established, and where individually i will get to play to some of my strengths in design and problem-solving.

and yes, i did go home with the PlayStation.

Video Fiddling

Dealing with video has been pissing me off. Its humungous and will soon eat up my server space, and it gets doubled every week with my backups. So I decided to start using a service to host them. Downside is I don’t feel like all my content is safely tucked in one place. A long time ago I lost the only online working version of a program I had written for Ultimate called Ultistats because the free web hosting site eventually went away or i forgot my password or who the fuck knows it vanished and i am pissed. anyway…YouTube is not going anywhere, and now I have my content backed up locally anyway. But it still does add a complication to things.

So i needed to try a few services, and a few different encoding mechanisms. Here is the same file on YouTube, Vimeo and hosted locally. The local one is best, followed by Vimeo. Vimeo has a ~15-60 minute delay from upload until your video is ready, and their UI is not intuitive, but so far those are not a big deal to me.

YouTube

Vimeo

local mpg
NOT HERE

I next tried a few different encoding mechanisms, but its all guess work cause I don’t really know what I am trying to do. I followed these instructions for Vimeo’s notion of “basic quality”. I used a free encoding program Super , along with some codecs bundled into a program called ffdshow that looks like open source. Testing with MPG and AVI, the size and quality was about the same. The camera takes avis at a native rate of 15000 kps, and dropping it down to 1800 kps saw a roughly linear reduction in size of 8:1.

mpg settings

avi settings

and finally, something in WordPress 2.5 is not reading my php.ini file accurately and is thus fubarring a large upload. grrrrrrrrrrrrrr. piece of shit piece of shit.


Addendum:

Vimeo lets you select from some random thumbnails or upload your own for its frozen screen. Also in the embedding options, you can remove title and credits to make it look cleaner. blip.tv supports all sorts of formats, but seems slow.

this site: http://www.videohelp.com has lots good articles on a wide range of topics.

http://forum.videohelp.com/images/guides/p1608146/basicsuperguide.pdf was great for understanding SUPER, including how to analyze your original and configure correctly for H.264 – use avi container, mp3 output. See screenshot updated above for avi. Seems the holy grail is high quality at max compression for your output, and H.264 supposedly offers that. A quick test showed a small size reduction from MPG but much better quality.

If I ever start making vids and not just encodingposting, a good tool like QuickTime Pro is for sure the way to go for $30.

and…WordPress 2.5 eats my code for hr’s – don’t make me say it…piece of shit piece of shit.

WordPress 2.5 Gallery Rant!

i worked with this for 1 post and found like 10 bugs. I don’t feel like posting this shit anywhere, cause i’m weeks after the release and i don’t feel like dealing with accounts and email and forums. Perhaps sometime I will see about the beta tester process, but only if they let me communicate with the key developers. I’m not farting around on a forum I am too advanced for that.

1 hour, i found:

  1. the multi-file upload makes your last item in the upload array the first, so the order is fubarred
  2. sort order is pulled by the id in the db, not by the filename. This is unintuitive.
  3. Documentation on the orderby param for galleries is minimal.
  4. Flash uploader also orders from post id in the db, and this is non-configurable
  5. Flash uploader needs to present common editing options in a grid and truly be a multi-editor
  6. Flash uploader does not allow multi file inserts without opening and closing, but will allow multiple file changes.
  7. Thumbnail default changes affect the creation of the thumbnail image only. You need to manually recode the html to get an existing uploaded image to be your new size. This would be so easy to fix if the thumbnail default setting just wrote to the flash editor, no html to worry about and it would not affect existing posts. Who cares if you resize a 150×150 thumbnail to 100×100 or vice versa its a damn crappy picture already
  8. Columns in the gallery are n-1, with the last item wrapping to the next row.
  9. Their plugin to disable the flash uploader only disables the ability to upload multi files you still need to use the crappy flash program to manage your files.

What a piece of shit!

Into the Gnar!

I watched Into the Wild tonight. It was ok, but fundamentally the film could not capture the beauty of the book, imo. I just got tired after 2.5 hours, I don’t know why as the scenery and Emile Hirsch were excellent, but something about the book and the way is swirled you round into the predicament like peeling an onion resonated deeply. It sucked you in. When the author Krakauer talks about climbing an ice column, and his own fears, it connects you to the 3rd-party character of Chris as if a narrative. The movie tried, and its attempt to delicately portray the protagonist was well done, and maybe without the book, I would have loved it. I certainly would suggest watching it in any case, you could do a lot worse. The story is utterly compelling, for when Chris walks into the wild he feels and we believe that the moment is a logical extension of the moments before, this decision is follows holistically from past decisions and actions, that he is ready…sorta.

And such is a perfect summary of my current situation, in both work and play.

The other day in my cube, I had 4 very very brilliant developers each of whom I respect and enjoy working with arguing passionately about a coding algorithm. I believe the average IQ in the conversation was 160 at least, and the group was arguably responsible for at least 25% of the programs in our company. I just tried to hang on and not run my mouth so people wouldn’t realize how dumb I am.

The other day, I rode all of 24th St. It was not without dabs and repeats, but it was all rolled and without a crash. I launched into it at 6:45 with the setting sun after a stressful day at work – just a fun little downhill to relax me at the end of the day.

I find myself working closely with people who have 50 reports, who are The Alpha-Geeks upon which a major company is built, who add value to our world as only very special and creative and skilled people can. I am contributing to products that millions of people may touch and millions of dollars will pass through. People listen to what I suggest, and come to me for answers.

I wear pads almost every ride on the Heckler. And the things I am riding have become notable. My last crash was in March at Milagrosa, and relatively speaking was not that bad. But I am playing at much higher stakes now, and the consequences of a major mistake are significant.

I feel oddly cool and secure, strangely soothed and comfortable. I did not arrive here by bounds, but by 10 years of hard work and aggressiveness and hunger and joy and curiosity. I believe in myself and my experience, my conservative approach and reliance on best practices. I gather confidence from my track record, i have faith in my methodology, i trust my decision-making. Yet when i look down i get dizzy, and feel exposed and naked and standing on vapor. How did I get up here? Why are you following me? I am faking my way through this out of desperation not to crash!!!

If no one sees you panic, are you afraid? If no one sees you fuck up, did you succeed?

Who wants to just punch a clock and ride an easy trail everyday anyway?