04/25/2009 12:44 AM -
here in america we declare war on anything we don't like. we never do anything about it, we just declare war on it. so, in standing with such a long-honored tradition, i say we declare war on paper. paper, for those of you who don't know, is an archaic technology used back in the 20th century to use to record images and words, but it's been around for nearly two millenia. any time a person wanted to record verbiage or a drawing, they would take a "sheet" of the stuff and apply to it some sort of marking media, such as pingmented inks or certain heavy metals. writing is taught to this day in many schools around the world, even before they teach typing. sure, we still have uses for writing, but here in the third millenium ce, we do it with a stylus and touchscreen. consider your daily workflow. do you record more information by typing into a computer or by writing on paper? vastly superior technologies are gradually supplanting this obsolete relic of times past, yet there are still some who refuse to adapt and embrace the future. look around. there are still many examples of paper media in current use with marginal justification:booksforms, particularly government formsmail (letters, coupon books, etc)newspapersreceiptspersonal use (photo albums, notebooks, etc).cash, checks, money orderseach of these media has an electronic counterpart that does a better job. we have e-books and special machines to read them, the internet, hard drives capable of holding billions of pages of paper in a few cubic inches, and so forth. who needs receipts when we pay via our debit card and see the transaction on the bank website within ten seconds? stores should retain a record of their more expensive goods and be able to verify they sold it via a quick barcode scan. can you name a place where you shop that doesn't take visa/mastercard? banks can easily provide an eft system to transfer money to other people. with my bank, i can transfer money to another account in about the same time it would take me to count that much cash, assuming i even had it with me at the time. now i will admit there are many uses for paper that we do not yet have the technology to separate ourselves from. these instances of paper are exempt from the war on paper media. some examples include:toilet papercigar/cigarette wrapping and other packagingbarcodeshowever, the mass media simply has to digitize. therefore i relegate this war to the bucket of american concept wars that will never have any significant effect. the "wars" on drugs, crime, terrorism, poverty, and so forth. like these wars, the war on paper media will not have a major impact, but it will give me a venue through which to complain about something that bothers me. there may be some random skirmishes and other incidents. when you see a big pile of neatly stacked paper forms, throw yourself at it wildly and cause some major disarray. when the person in charge of these forms complains, just remind them that if these forms were in digital form, this never would have happened. of course they should also know: electronic media takes up less space. you can fit the library of congress on ten hard driveselectronic media is much easier to copy and back upelectronic media is easier to transmit. you already have a computer, so you may as well e-mail it. faxing requires a special machine, suited only for a single purpose, and it needs an old-fashioned telephone land line - in many cases, a dedicated line.electronic media is significantly less of a fire hazard, and is easier to insureelectronic media is much easier to reorganize, refile, and move across the room or across the world.so go forth, my internet minions, and do what is within your power to replace physical paper with electronic counterparts whereever feasible. johannes gutenberg would be proud of where our technology has gone. to deny a move to electronic media is synonymous to denying him the printing press.
Post.aspx?Title=The+War+on++Paper+Media
04/24/2009 10:36 PM -
i saw the following quotation in a recent stackoverflow thread re: preparing your mind for a long coding session, and i had to republish it due to the awesomely accurate truth therein. enjoy. mostly, when you see programmers, they aren't doing anything. one of the attractive things about programmers is that you cannot tell whether or not they are working simply by looking at them. very often they're sitting there seemingly drinking coffee and gossiping, or just staring into space. what the programmer is trying to do is get a handle on all the individual and unrelated ideas that are scampering around in his head. -- charles m strauss
Post.aspx?Title=You+Can't+Tell+Whether+a+Programmer+is+Working
04/24/2009 10:30 AM -
fedex delivered my new dell 2208wfp 22" widescreen monitors. they're plenty beefy and crystal clear. having my old hp f2105 (20.1" widescreen) on the bottom row with them, all three screens on that row are now sporting native resolutions of 1680x1050. having said that, i present pics. the new dells are the two on the bottom-left. now i just need to rifle through my parts boxes for one more dvi cable and vga will finally fade into a dim memory, alongside 30-pin simms, p8+p9 at psu connectors, and ata hdd ribbons.
Post.aspx?Title=New+Dell+2208WFP+Monitors1
04/24/2009 09:50 AM -
mv6 is now online, and i think you'll like it better than mv5. posts are easier to read, the site is easier to navigate, and now you don't have to worry about figuring out how ajax accordion controls work. i've been told it looks like wordpress; i guess that's because the page content centers itself in the browser window and it looks the same in ie8 and firefox 3. all forms of spam that were problematic in mv5 should be curtailed or significantly reduced now. we'll see. as a result of prior spam problems, my anti-attack logic is more aggressive than it was before; so send me an e-mail if you have problems with it. this is simply the first major iteration of the blog engine, so improvements will come as i see the need - i.e. i had to make several bugfixes today and i'm sure there will be more, but the beta just wasn't getting the traffic i needed to see how it would hold up. looks like some of my old links broke and there may be some primary key constraint violations conflicting with my table reseed initiative; i'll look into those and other issues that come up this weekend. i'm sure googlebot will go ape shit over the new layout and will be closely scrutinizing the layout of the new archives page. that should be interesting. i'll watch googlebot closely over "migration weekend". unfortunately due to the way the mv6 db schema is structured, it doesn't look like i'll be able to migrate the activities. so when you see the number of hits on the site, just add 900,793. if i can't get those migrated i guess i'll just have the stats page add those manually prior to rendering. so take a look around the new site and get used to it. mv6 is here to stay - until i get bored and write mv7, which will probably be late 2009. always looking forward to the next big thing.
Post.aspx?Title=MV6+is+Online1
04/17/2009 07:06 PM -
a couple days ago i swung over to best buy and picked up a dynex 60" universal tripod for my new nikon p90 digicam. it fits the camera and adjusts every way i could imagine. not a bad buy for $40. so i went out to the garden of the gods and took a panorama in the rain. the rain wasn't part of my plan; but it happened to be raining when i was excited about my new tripod, so that's when i went. j held the umbrella i got from dad (thanks, dad) while i took the pics. the camera stayed dry and i was able to take the whole scene. i think it came out pretty well; perhaps i should play with expensive electronics in heavy rain more frequently? hmm, maybe if i just word it differently... i've never used a tripod before, and this one was easy to carry, set up and configure. it's lightweight and folds down to an easily manageable size. i thought it was extra cool that the camera caught so many airborne weather particulates in midair. not sure if they were rain or hail. download: [ full - 22543x2371 (24mb) | 1280x135 (21kb) | 500x53 (6kb) ]
Post.aspx?Title=New+Tripod%3a+Dynex+60%22+Universal+Tripod
04/17/2009 10:06 AM -
i am so fortunate to be doing well in these times of economic crisis. i can pay my bills on one paycheck per month, and the other 1-2 paycheck(s) are discretionary income. to that end, i do what i can to infuse the american economy when those discretionary paychecks come in. so i finally got sick of all my monitors being a different shape and size. actually, i've been sick of it for some time. none of the borders line up properly, they have several different native resolutions, and my overall experience is worsened as a result. to that end, i'll be replacing them slowly, over time, and all with the same model - the dell 2208wfp widescreen lcd. it features:1680x1050 resolution1000:1 contrast ratio5ms response timehdmi connectors i'll probably never useridiculously sharp imageadjustable tilt, swivel, pivot, and elevation4-port usb2 hubi've ordered the first two; they'll be here next week. i'll be replacing the two worst/oldest of my current configuration. the only caveat is that dell manufacturing is now done overseas. so i will be helping the bastards who are stealing our jobs to begin with, but at least the bulk of the money will go to an american corporation. plus, dell makes the best monitors. this limited purchase will enable me to evaluate how the wfps line up horizontally and vertically, in addition to helping me decide whether having six will be of any benefit over having, say, 4 or 5. i've long considered having an odd number of monitors in a horizontal orientation, but never cared much for the head turning involved by the semicircle-induced encirclement. to that end, i'll probably go with two rows of two, or two rows of three as i have now. at $200 per each, i could be done in a month's time. that is, next check is bills and the check after that is allocated for fun anyhow. actually i could afford all six right now, but i prefer to evaluate them prior to making the all-out purchase. additionally i'll be evaluating whether i need mounting arms to align them properly. given the wide array of adjustments the default mount comes with, i don't think it will be needed. if it is at all, my money says i'll only need them for the top row, to ensure they line up precisely with the bottom row. we shall see. i'll post pics when everything is set up.
Post.aspx?Title=The+Great+Monitor+Sync-up+of+2009
04/12/2009 03:13 PM -
today i was working on the search feature in mv6, and j pointed out that i was searching for each search term as being anywhere within the body. rather, it should search for each term as being a whole word, bordered by any non-alphanumeric character. so i looked into it and discovered some cool things about the tsql syntax. i had been building the query dynamically using '%{0}%' in the where clause. having replaced it with '%[^a-za-z0-9]{0}[^a-za-z0-9]%' , my search queries are running much more precisely. so take from this the fact that the mv6 search feature will be more precise and therefore useful.
Post.aspx?Title=TSQL+LIKE%3a+Building+a+dynamic+search+query
04/12/2009 01:07 AM -
i've been working on the blog rewrite. here's the current status and updates since i announced it a week ago: architecture mv6 no longer uses ajax accordions for primary site navigation. too many users were complaining that it was difficult to navigate, mostly because most users don't know what an ajax accordion is. another problem the accordion system introduced is that for some browsers, such as googlebot, the non-visible content panes aren't rendered by default. therefore, in order to get to the list of all posts in the navigatory destinations tab, google has to "click" the pane header. i've found that for each click away from a page's main content, google is less likely to pick up on changes. therefore, the recursive googlejuice has taken a hit in mv5. the recursion technique i came up with in mv4 is ingenious, and will make a strong comeback in mv6. when someone googles something and clicks a link into my page, the page adds that query to the list of recent queries, which it then renders back to the user. that is, if you google for ns-bthdst drivers, that term shows up on the page again, and googlebot sees it as added and updated content. google then updates its databanks to show my new content, and decides i have a little more information about ns-bthdst drivers (which is the model of a bluetooth headset i bought and reviewed), and increases my ranking for that query by just a tiny bit. when this happens a few dozen times a day (as it does for that term), i eventually get really good rankings for the term. one need only google for vista sp1 redistributable to see this technique in action. recently i discovered that in my overzealous attempts to curtail comment spam and referral spam, i ended up denying access to the site for about four billion people. for example, i detected a whole bunch of spam from africa, so i blocked africa. same goes for etch-a-sketch-istan, i'm-so-poor-istan, most of asia and eastern europe. damn turks. so i unblocked them and saw my traffic increase a bunch, but the spam wasn't far behind. to that end, i've put alot of work into the mv6 anti-spam subsystem. it utilizes a series of advanced heuristics to decide whether you're a spammer. you'll have to be logged into windows live id to add comments to a post, and i use a series of blacklists, banned words, domain suspiciousness detection, etc. to determine what recent referrers to display. also, recent referrers will now be plaintext instead of hyperlinks with rel="nofollow", since the spammers never bothered to look and see that i was nofollowing them. if the spam is still a problem, i'll add a simple captcha system. i may employ even more advanced heuristics in the future. i've been considering writing a battlebot 3.0. among other things, it would retrieve information about the trustworthiness of an ip address from lookups from services like arin, apnic, and icann. i've architected mv6 to use multiple content pages, thus marking the first time i decided not to dump all my code and markup into one beefy page.default.aspx is the default content page, as you may have assumed. it will simply display the most recent entries.post.aspx displays one specific post, along with any associated comments, as well as allowing new comments to be added.search.aspx provides content search capabilities.user.aspx allows the user to modify their settings and preferences, and displays a whole slew of information they never thought a website would collect.about.aspx will have some information about me, the site, the history of the blogging engines i've gone through, and maybe some content links to a flickr feed i really should put up, or a custom image gallery... we'll see how lazy i get. i'm planning to implement a new feature called searchstatus. basically it will maintain a list of frequently-googled search queries and where i rank for each of them. battlebot 3.0 would update this information on a daily basis, likely for my top 100 most frequent queries. this information would be added to the site stats & status page, which i plan to fill with tons of useless
Post.aspx?Title=MV6+Development
04/10/2009 08:19 PM -
j... this is why you can't play in competitive pseudo-sports...
Post.aspx?Title=To+my+buddy...
04/10/2009 03:16 PM -
microsoft onenote 2007 is a tool designed to help you create and organize your notes more efficiently. it has one purpose in life, and it's exceedingly good at it. at work, i've been using a series of text files to organize my notes. it's low-tech and messy. sometimes i find it difficult to locate a piece of information, because i record so much of it based on current and ongoing project statuses. so i requested onenote 2007, and my request was rejected. they won't give me an older version, or a freeware version, or use an online version; and they won't let me bring in my personal laptop, which has it installed. however, a few days ago, i realized the signifigance that they don't mind if i write software and use it at work. to that end, enter worktool. worktool, initially a cheap replacement for onenote 2007, will now be centered around the tedium of my daily minutia. i've started to realize there are alot of menial tasks i have to do regularly, and have developed some tools to accomplish them more quickly. i'm starting to merge them into worktool, which shall eventually be my one-stop shop for proprietary workplace productivity enhancement. the notetaker tab, pictured above, is my solution to onenotelessness. it sorts notes into text files, organized into a theoretically-unlimited number of nested folders. the file structure mimics that which you see in the ui, so as to ensure global compatibility. these text files will work on any computer :) it saves the current work if the text in the open file has been modified:upon file creation, the previous note file is savedevery 10 secondsupon clicking on another file or folderupon application exitupon clicking the save menuitem in the file menu.therefore i can freely go in and out of my notes, navigate among them, and never have to worry about losing my work. so far, this is worktool's primary feature. i've also discovered that the file search tool i wrote is inexplicably faster than the integrated windows search (winkey-f). i don't know why it's faster, and i doubt it's taking advantage of the windows search index, but it is, so i use it. some work involves converting strings to hex and back. these hex strings range from one to over 16,000 characters. so i wrote this little tool to do the conversion. i need to add decimal to the mix. at work, we use lotus notes, which i've complained about on numerous occasions (1, 2, 3, 4, etc). this tool allows me to connect directly to a lotus mail server and retrieve message bodies and headers in their raw format. additional tools will be added as i detect a use for them.
Post.aspx?Title=The+Inception+of+Worktool
04/05/2009 01:24 AM -
i've hinted on a few occasions that i've passively been pursuing the idea of yet another blog engine rewrite. specifically, the current version is 5 and the next would be 6 (aptly codenamed mv5 and mv6, respectively). it's been nearly a year since i entered this same phase of analysis and bemusement on the mv5 engine, in july of '08. y'see, when i learn a new technology, it's like getting a new toy as a child. i simply feel compelled to play with it until it no longer amuses me. the blog having always been my personal pet project, that's where i put my energy and effort in using and improving my knowledge of aforementioned new skill. last weekend, i got a second wind and went into active development. i've put together a basic ui prototype with very little functionality so far, so i'd have a back-end to work on (data trafficing, error logging, etc). i hit a big of a snag when i went to populate the mv6 database with test data... if you reference the database diagram i initially presented in january in a post about linq to sql, you will see proper tables with correlating foreign key constraints: note the database has been noticably altered in the past 3 months per design changes. the complication arises therein, as the mv5 database doesn't use foreign keys; rather, it enforces the table relationships in software. picture a similar database diagram without any of the lines. why is this a complication? simple; when migrating the data over to the mv6 database, i need to preserve these relationships, despite them not existing as far as sql can tell. why not just add the fk's to the mv5 db? well, some of my very first rows (i.e. error id 100 and below) have some duplicate "keys" because i was still working on the software, and i'm a data nazi; i hate removing data that might be useful someday, especially with all my terabytes of storage space. a further problem is that i want to renumber my records from 1. y'see, when i was in active development phase for mv5, i inserted and deleted alot of records, which resulted in ridiculous numbers like post id 9768, despite only having 614 posts (excluding this one, which at the time of my query 20 seconds ago, wasn't saved yet and thus doesn't have an id). renumbering the records will immediately break all foreign key relationships, regardless of the layer on which they are implemented. further, it will break some old links, but i've been exclusively using friendly urls (i.e. that one was http://www.zi255.com/?req=post&title=mv5+-+ui+development) since the feature was implemented. therefore the only links that should break are those from october 2008 or earlier (according to my mv5 changelog). note that when mv6 goes live, that link will no longer access the mv5 changelog. makes sense, as there won't be an mv5 at that point. a further problem is data integrity. for example, let's take my activities table, which represents site activity (exactly one row per request). the mv5 schema for activities looks like this: id int not nullipid int not null (id of the ip record)uid int (id of the user record)pid int (id of the corresponding post, if any)srid int (id of the corresponding searchresult, if any)sid int not null (id of the corresponding session, which is how i track how many hits you generate in a session instead of the industry-standard 20-minute timeout. how cheesy is that? i just pass the session id as an object in the active http session. note the http session is in a different context as the session table in sql.)request varchar(255) not null pkreferrer varchar(255)datetime datetime not nullisspider bit not null (flag tells me who's google and who's a human)mv6id int (added today, tells me which row it equals in the mv6 database) by contrast, the mostly-compatible mv6 version of the same record:id int not null pkpid int fksid int not null fkrequest varchar(255) not nullreferrer varchar(255)datetime datetime not null i realized there's no point in binding activities directly to ip, user, etc; since i can just inner join over to the sessions table where that information already lives. f
Post.aspx?Title=MV6%3a+Yet+Another+Blog+Rewrite
04/03/2009 11:06 PM -
you may remember my post about drifting on okinawa i posted two years ago. i just came across a youtube video that was recorded at the very intersection where i used to... umm... watch the drifting and never get involved directly. that would be unsafe :) i never actually looked at a map, having found it manually. i've narrowed its exact location to either here or here. well, it looks alot different during broad daylight as seen from space.
Post.aspx?Title=Okinawa+Drifting+-+Aja+Port%2c+Naha