tag:blogger.com,1999:blog-71967899175217963812008-07-24T17:08:51.418-05:00CrisatunityCrisatunityhttp://www.blogger.com/profile/11224068405843575576noreply@blogger.comBlogger84125tag:blogger.com,1999:blog-7196789917521796381.post-34639496432756758222008-07-24T16:44:00.004-05:002008-07-24T17:08:51.436-05:00Kevin is a Member of the Axis of EvilKevin is a puppy I took home from the city animal shelter on Saturday. I just wanted a dog so bad, having waited on this decision for over a decade, secretly plotting to trick my wife at a moment of weakness on her part.<br /><br />Having concentrated too hard on defeating my wife's good sense, I was vulnerable to Kevin's shenanigans. Right off, Kevin kicks my wallet in the privates by going lame and passing out from fever inside of twelve hours in my house. Two vet pit stops ensued, one of them a pricey after hours affair, essentially just to just to hear repetitions of,<span style="font-style: italic;"> "Doesn't look good; I dunno what's wrong with him"</span>. The only meaningful outcome of the vet visits was that Kevin got some of Heath Ledger's leftovers and responded by an almost instant healing. Quite the little coke-head, apparently.<br /><br />So, five days later the furry shitball looks to be completely on the mend, though the vet tells me he could keel over at any minute nonetheless, so I'm still doing this dance where I'm trying to wedge some reality in between the Kevin and the kids' love beams. Personally, I could take Kevin sailing away far better than watching my family turn into blubbering mounds of trembling wishy wash.<br /><br />So Kevin you suck, and I can't wait to get home and get sloppy kisses from you then shower up and repeat with my wife.<div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Crisatunityhttp://www.blogger.com/profile/11224068405843575576noreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-16472975531839603532008-07-10T13:31:00.003-05:002008-07-10T14:50:05.966-05:00Meme du Jour<span style="font-weight: bold;">How old were you when you started programming?</span><br /><br />8 years old, I think. My dad did Wang mainframe programming for <a href="http://en.wikipedia.org/wiki/Allis-Chalmers">Allis-Chalmers</a> and dragged me into the office on weekends <span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">occasionally</span> and sat me at a terminal with some manuals. Mostly I liked to make the noisy giant green bar printer <span style="font-style: italic;">go, </span>as it were. However, I didn't get <span style="font-style: italic;">serious </span>until around 9 or 10 when Santa brought my family a Commodore-64.<br /><br /><span style="font-weight: bold;">How did you get started in programming?</span><br /><br />As a hobbyist <span class="blsp-spelling-error" id="SPELLING_ERROR_1">pre</span>-teen, I wrote all sorts of games and puzzles with the C-64. I even liked hacking existing <span class="blsp-spelling-error" id="SPELLING_ERROR_2">commercial</span> games. As a professional, it started for me when I was already doing Oracle <span class="blsp-spelling-error" id="SPELLING_ERROR_3">DBA</span> work, and it became obvious that somehow I was going to have to get my feet wet building things instead of just maintaining them.<br /><br /><span style="font-weight: bold;">What was the first real program you wrote?</span><br /><br />It was called <span class="blsp-spelling-error" id="SPELLING_ERROR_4">MamaJama</span>. It was a Microsoft Access application that used a <span class="blsp-spelling-error" id="SPELLING_ERROR_5">ODBC</span> connections to glue an Oracle database on a Solaris machine and a <span class="blsp-spelling-error" id="SPELLING_ERROR_6">RMS</span> database on a VAX. The RMS database was very old, very <span class="blsp-spelling-corrected" id="SPELLING_ERROR_8">cryptic</span> and very <span class="blsp-spelling-corrected" id="SPELLING_ERROR_9">hierarchic</span>, tables with over ten thousand columns. The Oracle database structure was normalized, relational and useful. The VB developers of the company used the sanity of the Oracle database as the target of their coding, <span class="blsp-spelling-corrected" id="SPELLING_ERROR_10">oblivious</span> to <span class="blsp-spelling-corrected" id="SPELLING_ERROR_11">existence</span> of the VAX. Which was a good thing, because the VB developers couldn't spell VAX. The <span class="blsp-spelling-error" id="SPELLING_ERROR_12">MamaJama's</span> ran periodically to synchronize these two extremely different databases. To this day, I'm pretty sure there's no such similar software in <span class="blsp-spelling-corrected" id="SPELLING_ERROR_14">existence</span>, replicating a VAX's RMS database and a Solaris' Oracle database - but that could just be my own hubris assuming that.<br /><br />Pretty much everything I've ever done since has been a variation in degree or another off this basic theme, connecting shit up.<br /><br /><span style="font-weight: bold;">What languages have you used since you started programming?</span><br /><br />In chronological order: ROSCOE, C-64 BASIC, <span class="blsp-spelling-error" id="SPELLING_ERROR_15">QBASIC</span>, Visual Basic, Pascal, C, C++, PL/<span class="blsp-spelling-error" id="SPELLING_ERROR_16">SQL</span>, <span class="blsp-spelling-error" id="SPELLING_ERROR_17">Korn</span> Shell, <span class="blsp-spelling-error" id="SPELLING_ERROR_18">VBA</span>, Java, Python, <span class="blsp-spelling-error" id="SPELLING_ERROR_19">PHP</span>, Oracle Forms, C#, JavaScript<br /><br />This excludes the multitude of product-specific 4<span class="blsp-spelling-error" id="SPELLING_ERROR_20">GLs</span> (i.e., <span class="blsp-spelling-error" id="SPELLING_ERROR_21">Bendata</span> HEAT, <span class="blsp-spelling-error" id="SPELLING_ERROR_22">SalesLogix</span>, etc.) I've been forced to muddle through because of the short term job at hand.<br /><br /><span style="font-weight: bold;">What was your first professional programming gig?</span><br /><br />On the help desk at a mortgage bank, I was required on a sporadic and infrequent basis to <span style="font-style: italic;"><span class="blsp-spelling-error" id="SPELLING_ERROR_23">unstick</span> </span>the software system we used for trouble tickets. Unsticking required the execution of a single <span class="blsp-spelling-error" id="SPELLING_ERROR_24">SQL</span> update statement. I didn't know what it did, why it was required, or even a whisper of <span class="blsp-spelling-error" id="SPELLING_ERROR_25">SQL</span>.<br /><br />The reason I did the unsticking in the first place was that the staff <span class="blsp-spelling-error" id="SPELLING_ERROR_26">DBA</span> didn't want to even be bothered to do this once a month six-second task, so he installed the Oracle client on my PC, gave me the SYSTEM password, a script file containing this one <span class="blsp-spelling-error" id="SPELLING_ERROR_27">SQL</span> statement, and the three bullet-point instructions on how to execute it with <span class="blsp-spelling-error" id="SPELLING_ERROR_28">SQL</span>*Plus.<br /><br />After about a year of this arrangement, the <span class="blsp-spelling-error" id="SPELLING_ERROR_29">DBA</span> was quitting for greener pastures, or <span style="font-style: italic;">whatever. </span>His version of pass-down was to write on a piece of paper two things and hand it to me on his way out the door. He had written down our Oracle support identifier I'd need if I used the other bit, the 800 phone number to Oracle Global Support Services. I already had the SYSTEM password. What else could I possibly need?<br /><br />I think it took all of a week after his absence for something to go wrong in a part of the business that had nothing whatsoever to do with the help desk duties I performed. Possession of this piece of paper implicated me as the <span class="blsp-spelling-error" id="SPELLING_ERROR_30">de</span> facto <span class="blsp-spelling-error" id="SPELLING_ERROR_31">DBA</span> and that was that. After about a decade of belly fat accumulation and a million dollars earned and burnt to a crisp, here I am.<br /><br /><span style="font-weight: bold;">If you knew then what you know now, would you have started programming?</span><br /><br />Almost certainly not. If I wasn't such a complete pain in the ass who had to have it his way all the time as a punk kid, I would have pursued being a professor of <span style="font-style: italic;">who the hell cares</span> and gathered as much co-ed ass as I could have until it was time to be put out on the next ice flow.<br /><br /><span style="font-weight: bold;">If there is one thing you learned along the way that you would tell new developers, what would it be?</span><br /><br />Quit sucking so much. Quit crying so much. So many <span class="blsp-spelling-corrected" id="SPELLING_ERROR_32">developers</span> have zero clue what the alternative is, never having worked a truly miserable job their whole life.<div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Crisatunityhttp://www.blogger.com/profile/11224068405843575576noreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-77712857952867529272008-07-06T17:18:00.003-05:002008-07-06T20:25:38.118-05:00When I Watch a MovieI don't go to the theater often, but when I do the thing I'm keenest to watch (other than the film) is the editing. Editing is incredibly under-appreciated, even though it can make a bad film good (Easy Rider), an awesome film even awesomer (The Shining) or a great film terrible (Dr Zhivago).<br /><br />I ran across an excellent example of exactly how powerful film editing is in the equation of happiness (if the video below doesn't work, try it <a href="http://www.youtube.com/watch?v=4Vy2aJY6rq8">here</a>) :<br /><br /><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/4Vy2aJY6rq8&amp;hl=en"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/4Vy2aJY6rq8&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="344"></embed></object><div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Crisatunityhttp://www.blogger.com/profile/11224068405843575576noreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-66901259856544434732008-07-05T15:58:00.003-05:002008-07-05T16:11:17.851-05:00I Love It When Stupid Teens Get BurnedDear Max P. Sanders of Minneapolis, MN<br /><br />I hope the several thousand dollars fine a few days in the klink, legal fees and public humilation for the rest of your life (thanks to the InterWeb) was a perfect way for you to learn just <a href="http://ap.google.com/article/ALeqM5jw-6LIru1-XwlPp9i5oNVHU-DMjgD91MP5JO0">how</a> <a href="http://www.nytimes.com/2008/07/05/us/05vote.html?hp">stupid</a> <a href="http://www.startribune.com/local/22871509.html?location_refer=$urlTrackSectionName">you</a> <a href="http://www.twincities.com/ci_9781499">are</a>.<br /><br />This veteran is spitting on you.<div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Crisatunityhttp://www.blogger.com/profile/11224068405843575576noreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-29841829522947356692008-06-30T06:00:00.000-05:002008-06-30T06:00:05.488-05:00June's Unanswered Questions<ol><li>Why do people use RAR compression?</li></ol><div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Michael O'Neillnoreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-74637027477878882932008-06-27T10:41:00.004-05:002008-06-27T10:55:54.394-05:00Strike Two Entity FrameworkThis weekend will be my last try with trying to do something limited with the En<span style="font-style: italic;"></span><span class="blsp-spelling-error" id="SPELLING_ERROR_0">tity</span> Framework (EF) that is both <span style="font-style: italic;">reproducible</span> and <span style="font-style: italic;">maintainable</span>. <br /><br />Working with the EF means a dependency on an Entity Data Model (EDM). No matter how nifty the EDM visual tool is, it seems to fall apart during evolutions of change in the underlying physical database schema during its incessant and overkill "updates" against said schema.<br /><br />Posts <a href="http://blogs.msdn.com/adonet/archive/2008/06/26/edm-tools-options-part-3-of-4.aspx">like</a> this from the ADO.NET Team give me the distinct impression that using the <span class="blsp-spelling-error" id="SPELLING_ERROR_1">EF</span> is going to be, over the long run, a heavy dose XML editing to get it to work productively. Honestly, I'm not interested in coding XML files in the least, which seems to be a trend in lots of areas of software frameworks these days, not just the <span class="blsp-spelling-error" id="SPELLING_ERROR_2">EF</span>.<br /><br />As I try to apply the <span class="blsp-spelling-error" id="SPELLING_ERROR_3">EF</span> towards a practical purpose, I realize (again, for the umpteenth million time) why I have historically embraced the pattern of segregating the physical database schema and application code.<br /><br />The only reason I haven't already abandoned the EF is because I'm keen to push myself to <a href="http://blog.crisatunity.com/search/label/trying%20something%20new">try something new</a><span style="font-style: italic;"></span>. By Monday the proof will be in the pudding, or the pudding will be in the trash along with all the other ORM-like clap-trap I've previously suffered through.<div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Crisatunityhttp://www.blogger.com/profile/11224068405843575576noreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-18078447179938227392008-06-25T09:25:00.004-05:002008-06-25T09:36:41.749-05:00HmmmmmEven though I've soured almost entirely on the <a href="http://blog.crisatunity.com/2008/06/net-35-sp1-beta-entity-framework-test.html">.NET Entity Framework</a> as a comprehensive design and application component - I still see it useful as a highly focused and limited tool.<br /><br />Eliminating the unworkable process of generating an application's all-inclusive entity model, has seemed to be useful so far. Although, I'm still stuck in SQL Server World with the EF. <a href="http://blogs.msdn.com/adonet/archive/2008/06/24/new-sample-provider-demonstrates-oracle-connectivity.aspx">Or am I</a>?<div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Crisatunityhttp://www.blogger.com/profile/11224068405843575576noreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-18995679700354104042008-06-20T17:54:00.004-05:002008-06-20T20:11:27.025-05:00What Do You Think of the New Logo?And the spiffy <span class="blsp-spelling-error" id="SPELLING_ERROR_0">favicon</span>? One heck of a modern art effort! Back to business.<br /><br />I love it it when <a href="http://www.nfl.com/news/story;jsessionid=5446B6095843EC4C0874125A837B6F05?id=09000d5d808eefe0&amp;template=without-video&amp;confirm=true">poorly mannered children</a> <span style="font-style: italic;">do the right thing </span>after it becomes self-evident that they aren't going to get away with <span style="font-style: italic;">it. </span>As if if the smelly toads of Buffalo already were unwilling to buy Bills tickets. Way to go, having the only star player run over one of the toads and jet the scene. Maybe they should start signing those agreements to move the rest of their home games to Toronto.<div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Crisatunityhttp://www.blogger.com/profile/11224068405843575576noreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-11485186157077293122008-06-18T13:50:00.002-05:002008-06-18T13:57:00.393-05:00To Hell With FlyingNot only screw the idea of flying, I'm not sure I want to drive near <a href="http://www.dfwairport.com/">the damn airport</a>.<br /><p><span style="font-style: italic;">Once upon a time, D/FW tower was considered a premier stop for an experienced controller. These days, however, D/FW is just as often a training ground, something that was more typical of control towers at much smaller airports.</span> - Ric Loewen, D/FW tower’s facility representative for the union. <a href="http://www.star-telegram.com/metro_news/story/706841.html">Read more...</a><br /></p><div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Crisatunityhttp://www.blogger.com/profile/11224068405843575576noreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-78181811316554898892008-06-18T12:23:00.005-05:002008-06-18T19:09:33.739-05:00Why Is the Dread of Change Always Equated With Bigotry?Reading Andrew Sullivan is always a trip, but he falls into <a href="http://andrewsullivan.theatlantic.com/the_daily_dish/2008/06/bundles-of-joy.html">leading his readers into a self-loathing trap</a> should they be predisposed to doing so. Can't wanting the neighbor's babies to resemble me physically, spiritually and culturally be considered just a natural <span style="font-weight: bold;">and</span> <span style="font-weight: bold;">desirable</span> extension of wanting my progeny to be along the same lines?<div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Crisatunityhttp://www.blogger.com/profile/11224068405843575576noreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-85513769250919004262008-06-17T14:48:00.004-05:002008-06-17T15:29:13.928-05:00Conundrum: shortBet and Rally planning<p><strong>The Background</strong><br />As many of you know I'm working on a new project, <a href="http://shortbet.org/"><span class="blsp-spelling-error" id="SPELLING_ERROR_0">shortBet</span></a>, which is an <span class="blsp-spelling-error" id="SPELLING_ERROR_1">MMO</span> credibility engine (still working out exactly what that means, but it sure does sound cool). With my partner on the project, <a href="http://jamie.shortbet.org/">Jamie</a>, we've gradually shaped many of the architecture and design choices. </p><p>The project has been moving forward quite nicely in the current nascent stages. One of the conclusions we both agreed upon without much discussion was use of agile development methods. These methods have served us well in our day jobs so it seemed natural to put them to work for us on the construction of <span class="blsp-spelling-error" id="SPELLING_ERROR_2">shortBet</span>.<br /><br /><strong>The Issue</strong><br />Writing actual application code is imminent.<br /><br />Well the time has come, and I'm sitting down as the <em>customer</em> to put in some stories for the first iteration. We've found an excellent (but closed source) free resource, <a href="http://www.rallydev.com/community_ed.jsp">Community Edition of the Rally Software Development</a>. The Community Edition has essentially every feature any small team would need to implement planning with agile methods. However, before I go down the path of using Rally planning, I wanted to think aloud about the matter.<br /><br />I'm coming to some stark realizations about the limitations of agile methods in our circumstances as this project moves forward. First off, let me stipulate that I think agile methods are great. I think planning software tools are essential for these methods. I think that Rally is very suitable planning software tool. However, I'm concerned that agile methods - specifically the planning methods - will fail us because:</p><ul><li>we don't have a genuine customer</li><li>we don't have a genuine project manager</li><li>we don't have genuine quality control testers</li><li>we have an ultra small team of developers (and part-timers at that!)</li><li>there is no genuine external <span class="blsp-spelling-corrected" id="SPELLING_ERROR_3">pressure</span> of time</li><li>there is no genuine external <span class="blsp-spelling-corrected" id="SPELLING_ERROR_4">pressure</span> of money</li></ul><p>Will the both of us switching customer, project manager, developer, investor and tester hats be feasible to pull off implementing the agile methods? The agile methods, in my mind, are about bringing these sorts of genuine people in a process cohesively, managing each roles' inherit point of view on a project's successful progression. Using the agile methods to artificially distill these roles out of a small (part-time) team doesn't seem philosophically sound.<br /><br />Agile methods for planning do have a certain amount of <span class="blsp-spelling-corrected" id="SPELLING_ERROR_5">bureaucratic</span> overhead that though valuable and essential for the sanity of most development projects, may prove to be too costly to the limited resources involved in the project. What I fear is putting time towards making the agile methods <em>work</em> as if they were the ends and not the means.<br /><br /><strong>The Alternatives</strong><br />What I want to do, when I finally actually sit down to write the stories is just this:</p><ul><li>Write a sentence or two on what feature I want to see</li><li>Assign it to a one of us</li></ul><p>I don't really care what order the stories get done at this point and for the foreseeable future. I specifically don't care about estimates at this time. With our <span class="blsp-spelling-error" id="SPELLING_ERROR_6">herky</span>-jerky schedules, estimates no matter how accurate really have no meaning when the available pool of developer time to throw at stories is forever unknown.<br /><br />Also, while the story is being worked by the developer, I want the planning software to be a centralized and historical place to document</p><ul><li>what aspects of the Entity Framework and <span class="blsp-spelling-error" id="SPELLING_ERROR_7">MVC</span> were used and modified to fulfill the story, or</li><li>why the story will not be done, or</li><li>reassigning to another developer</li></ul><p>The question I'm flat out asking myself right now is this: Is the Google Code Issues interface a suitable alternative for a small part-time team than the full blown Rally planning interface for our team's needs? It's a limited interface, but is that limited nature a good thing?</p><div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Crisatunityhttp://www.blogger.com/profile/11224068405843575576noreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-27868644672439033482008-06-15T10:58:00.003-05:002008-06-15T11:17:35.053-05:00Ping.fm is the Right StuffSo my <a href="http://blog.crisatunity.com/2008/06/pingfm-begging.html">self-absorbed plea</a> to <a href="http://ping.fm/">ping.fm</a> paid dividends. Not knowing exactly sure what <a href="http://ping.fm/">ping.fm</a> was even as I begged for them to let me in, I was eager to set it up and mash all the buttons to see what happened. Well, it is exactly what I wanted it to be. I can from a single web page or a single e-mail update my relevant social web services simultaneously. I can change my Facebook status and send a Tweet in one action. The folks running <a href="http://ping.fm/">ping.fm</a> are kooky like me (I should trademark that) with a sense of humor building something smart and simple. Smart and simple is how you impress me most.<br /><br />Also, I admire their employment of the new web word of mouth technique for application growth. Tapping the brakes on willy nilly application distribution to everyone is definitely the way to go - especially if you are a smallish development shop. So, if you want to give <a href="http://ping.fm/">ping.fm</a> a roll in the hay I have been given a a beta code, <em>tastyping,</em> that you'll need to be <a href="http://ping.fm/">ping.fm</a>'s next gentleman caller. I have no idea how long the code will function or for how many folks, so bang it as quickly as you can.<div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Crisatunityhttp://www.blogger.com/profile/11224068405843575576noreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-80657059997609293812008-06-10T16:34:00.007-05:002008-06-25T09:34:37.476-05:00.NET 3.5 (SP1 Beta) Entity Framework Test DriveI'm giving the Entity Framework (<span class="blsp-spelling-error" id="SPELLING_ERROR_0">EF</span>) a test drive on the shortBet project. My primary reason for giving it a go was centered around the fact that I work primarily with Oracle database server on the <span class="blsp-spelling-error" id="SPELLING_ERROR_1">backend</span> and <span class="blsp-spelling-error" id="SPELLING_ERROR_2">LINQ</span> to <span class="blsp-spelling-error" id="SPELLING_ERROR_3">SQL</span> (L2S) is not a good fit for me. shortBet will be using SQL Server, so it serves as an excellent platform for this test drive.<br /><br />Despite <span class="blsp-spelling-error" id="SPELLING_ERROR_4">LINQ's</span> greatness, I haven't been all that interested in L2S which has several nasty weaknesses. First, typical <span class="blsp-spelling-error" id="SPELLING_ERROR_5">LINQ</span> coding elegance falls down on its face when faced with joining more than a few <span class="blsp-spelling-error" id="SPELLING_ERROR_6">queryables</span> that are closely bound to relational views and tables. Second it generates <span class="blsp-spelling-error" id="SPELLING_ERROR_7">SQL</span> command text <span class="blsp-spelling-error" id="SPELLING_ERROR_8">automagically</span>, and I'm not intrinsically happy with that. Finally, and most significantly, use of L2S is bound to the <span class="blsp-spelling-error" id="SPELLING_ERROR_9">SQL</span> Server platform for the <span class="blsp-spelling-error" id="SPELLING_ERROR_10">forseeable</span> future.<br /><br />The <span class="blsp-spelling-error" id="SPELLING_ERROR_11">EF</span> is an interesting tidbit I had <em>heard </em>was a better deal than the L2S way from a variety of .NET and Oracle resources I trust for leading edge information. After my test drive so far, my assertion is that it is and it isn't a better deal than L2S. It is, because <span class="blsp-spelling-error" id="SPELLING_ERROR_12">queryables</span> in the <span class="blsp-spelling-error" id="SPELLING_ERROR_13">EF</span> have a greater potential for expressing complexity and thus more elegant <span class="blsp-spelling-error" id="SPELLING_ERROR_14">LINQ</span> statements than using L2S <span class="blsp-spelling-error" id="SPELLING_ERROR_15">queryables</span>. It is, because the tools for expressing Entity Data Models (<span class="blsp-spelling-error" id="SPELLING_ERROR_16">EDM</span>) are fairly slick and effective. It isn't, because as far as I can fathom from my little dip in the pool, <span class="blsp-spelling-error" id="SPELLING_ERROR_17">EF</span> is utterly dependent upon L2S - unless you want to write your own custom Data Access Layer, which eliminating is one of the pillars of the <span class="blsp-spelling-error" id="SPELLING_ERROR_18">EF</span>. By using the <span class="blsp-spelling-error" id="SPELLING_ERROR_19">EF</span>, at best I'm out of the logical fire, but I'm still in the physical frying pan. It isn't, because even though I have a highly functional relational model for my <span class="blsp-spelling-error" id="SPELLING_ERROR_20">Shortbet</span> application - I can't seem to see how I would effectively express it with an <span class="blsp-spelling-error" id="SPELLING_ERROR_21">EDM</span>.<br /><br />Part of that last failing is clearly because I'm a <em>relational guy, </em>and I'm not very good at <span class="blsp-spelling-error" id="SPELLING_ERROR_22">OOP</span> modeling<em>.</em> Partly it's because I believe (in my heart of hearts) that entity modeling is simply inferior.<br /><br />So, at this point - although I'm still continuing with the <span class="blsp-spelling-error" id="SPELLING_ERROR_23">EF</span> test drive (<a href="http://jamie.shortbet.org/">thankfully I have some help</a>) - I'm of the mindset right now that rich and meaningful entities are great - but a unified model of more than a child-sized handful of them is an irrational endeavor.<div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Michael O'Neillnoreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-5817695366706499042008-06-06T14:42:00.002-05:002008-06-15T11:19:38.090-05:00ping.fm beggingI was interested in examining the <a href="http://ping.fm/">ping.fm</a> site features, especially tying this blog, my <a href="http://profile.to/crisatunity">facebook</a> and <a href="http://twitter.com/crisatunity">twitter</a> together. Well, you need one of these <em>beta codes </em>to get in on the fun. The best part is that they encourage you to beg for one, which I thought was genius. So here is my begging effort:<br /><br /><em>I could write a long diatribe and divert all writing effort away from my overdue blog posting efforts, but I won't do that. I wouldn't waste your time with a long plea for a beta code. I mean, life is too short and we just don't know when the end will come, and I know I don't have time to sit around and wait for you to send me some sort of beta code like I'm a plebian and you are my centurion overlord. Who do you think you are, telling me that I can't use ping.fm? What makes you so special and me so pathetic? Listen, I'm the customer and the customer is always right, right? Give me a break already, this is going nowhere. I watch Adult Swim and I use Tweeter; isn't that enough basis to know that I'm part of the cool crowd? I'm going to The Cure concert tonight in Dallas, and if you need more proof than that to make you know how much I don't need or want one of your precious beta codes, then you just don't *get it*. Anyway, if you would send me one of those beta codes, I'll see what I can do to help you out.</em><br /><em></em><br />I'll update with any results I acheive.<br /><br /><em><strong>UPDATE</strong> 6/15/2008 </em><a href="http://blog.crisatunity.com/2008/06/pingfm-is-right-stuff.html"><em>Success!</em></a><div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Michael O'Neillnoreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-68797556359730718522008-06-03T16:27:00.005-05:002008-06-10T17:12:58.509-05:00I Get Tired of OOP SometimesI'm learning the ADO.NET Entity Framework particulars and I found this highly instructional ADO.NET Entity Framework Overview document => <a href="http://msdn.microsoft.com/en-us/library/aa697427(vs.80).aspx">http://msdn.microsoft.com/en-us/library/aa697427(vs.80).aspx</a><br /><br />In it I found a somewhat contentious paragraph describing the value of the client-views infrastructure required to stylize the consumption of the logical data model, using .NET code rather than database views.<br /><br /><em><span style="color:#3366ff;">An obvious question at this point would be why not just use traditional database views for this. While database views can abstract many of the mappings, often that solution won't work for several process and functional reasons: (a) many of the views are simply too complex to be generated and maintained by developers in a cost-effective way, even for some simple conceptual to logical mappings, (b) the classes of views that have the property of being automatically <span class="blsp-spelling-error" id="SPELLING_ERROR_0">updatable</span> at the store are limited, and (c) databases for core-systems in medium and large companies are used by many central and departmental applications, and having each individual application create several views in the database would pollute the database schema and create significant maintenance workload for the database administrators. In addition, database views are limited to the <span class="blsp-spelling-error" id="SPELLING_ERROR_1">expressivity</span> of the relational model, and typically lack some of the more real-world concepts of the Entity Data Model, such as inheritance and complex types.<br /></span></em><br />I'd like to address this paragraph point by point since it is an obvious developer-helpless-against-the-database snippet of half truths that I think is troublesome too read, coming from my I-am-king-of-my-database point of view.<br /><br /><em><span style="color:#3366ff;">An obvious question at this point would be why not just use traditional database views for this.<br /></span></em>This is a great question that was percolating in my mind the second I started reading about the client-view infrastructure. I love it when that happens.<br /><br /><em><span style="color:#3366ff;">While database views can abstract many of the mappings, often that solution won't work for several process and functional reasons: (a) many of the views are simply too complex to be generated and maintained by developers in a cost-effective way, even for some simple conceptual to logical mappings,<br /></span></em>This has never happened to me even once. I've mapped dozens of domains to normalized database objects and all the necessary stylized views required from the nature of the conceptual model. Never once has it been too complicated or expensive to do. What I have experienced are conceptual models that radically change in structure because they never really represented whatever they were intended to represent in the first place. Such radical overhauls are problematic during development and possibly catastrophic post-production. However that is not a function of the shortcomings of the database tier to cooperate with whatever is asked from it. Also, I've seen conceptually illogical models that were overly complex and irrational to cover up the tracks of the modeling wing of the development team's incompetency - illogical irrational models are indeed too complex to be generated and maintained in a cost effective way. Perhaps, I've just never run into these simple conceptual models that can't be mapped to logical <span class="blsp-spelling-corrected" id="SPELLING_ERROR_2">underpinnings</span> in the database. My intuition says, show me such a model and my guess is that the model is ill-serving the application.<br /><br /><em><span style="color:#3366ff;">(b) the classes of views that have the property of being automatically <span class="blsp-spelling-error" id="SPELLING_ERROR_3">updatable</span> at the store are limited, and<br /></span></em>This is true, sort of. A view can <span class="blsp-spelling-corrected" id="SPELLING_ERROR_4">easily</span> be constructed that provides an ambiguity on update, rendering this "automatic" feature unusable. However with Oracle, it's a simple matter to put an INSTEAD OF trigger to <span class="blsp-spelling-corrected" id="SPELLING_ERROR_5">eliminate</span> the ambiguity.<br /><br /><em><span style="color:#3366ff;">(c) databases for core-systems in medium and large companies are used by many central and departmental applications, and having each individual application create several views in the database would pollute the database schema<br /></span></em>Huh? Every database platform has means to cleanly segregate database objects to eliminate this so-called "pollution". Calling something useful and perhaps necessary isn't really pollution, is it? It sounds like something the convenience store guy in <a href="http://www.imdb.com/title/tt0109445/">Clerks</a> would say, "<em>You know the Customers are the only problem with this job."</em> Also, when you have views in a database, the greatest asset of the database comes into play, physical integrity. For instance, if you have on of those <em>core-systems</em>, and the development team creates a new application that necessitates creating some views <strong>in the database</strong> there is no better means of knowing that changes to the <em>core-systems</em> physical structure have impacted this new application than when the view becomes invalid, obviously known from the data dictionary. This coupling is essential in my opinion.<br /><br /><em><span style="color:#3366ff;">and create significant maintenance workload for the database administrators,<br /></span></em>If your database administrator is complaining about the maintenance workload for adding views into the database, please fire him immediately.<br /><br /><em><span style="color:#3366ff;">In addition, database views are limited to the <span class="blsp-spelling-error" id="SPELLING_ERROR_6">expressivity</span> of the relational model, and typically lack some of the more real-world concepts of the Entity Data Model, such as inheritance and complex types.<br /></span></em>This is perhaps the most irritating statement. Listen up Mister and Missus Object Modeler: there isn't a single concept that you can model that the relational model can't persist. Period. If you believe otherwise, shed your belief immediately. Although you may not be able to express relationally your Masterpiece object model, that is reflection on you, not the massively stable and proven underpinnings of relational modeling. Just as a relational data guy like me struggles to create rich and useful conceptual object models realizes and admits where the rubber isn't meeting the road, me, so should you.<div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Michael O'Neillnoreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-24517547552270228582008-06-02T13:11:00.022-05:002008-06-10T17:13:08.707-05:00SyntaxHighlighter testI am tired of not having syntax highlighting on my blog, and it is probably one of the reasons I neglect posting code here more often. I'm trying out <a href="http://code.google.com/p/syntaxhighlighter/downloads/list">SyntaxHighlighter</a> that I found on <a href="http://yacoding.blogspot.com/2008/05/how-to-add-syntax-highlight-to-blogger.html">Yet Another Coding Blog</a>.<br /><br />Here's some C#<br /><br /><pre class="c-sharp" name="code"><br />public class Foo<br />{<br /> public Foo()<br /> {<br /> }<br /><br /> public void Bar()<br /> {<br /> }<br />}<br /></pre><br /><br />Here's some SQL<br /><br /><pre class="sql" name="code"><br />select e.name, d.name<br /> from employee e<br /> join department on (e.dept = d.id)<br /> where e.title = 'Manager'<br /></pre><br /><br />If it works, I'll update with the details on how I did it, because there were some twists and turns.<br /><br /><hr /><br /><br /><p>Update: It worked! Here are the steps, as concisely as I can write them. </p><ol><li>Download the latest <a href="http://code.google.com/p/syntaxhighlighter/downloads/list">SyntaxHighlighter</a>. The file release was a compressed RAR file. I hate the RAR, so I leave it to you to figure out how to decompress it.<br /></li><li>Put the Scripts and Style files on a Internet accessible web server (I used the free <a href="http://googlepages.com/">Google Pages</a>). Unfortunately, you cannot put these files on blogger.com itself. You must bring some external web resource to the table to implement these steps.</li><br /><li>In your Blogger HTML template, find the <code>&lt;/div&gt;</code> that closes <code>&lt;div id='outer-wrapper'&gt;</code>. This is likely the last <code>&lt;/div&gt;</code> before the <code>&lt;/body&gt;</code>. Your mileage may vary depending on what hacking you've done to your template. After that but before the <code>&lt;/body&gt;</code> insert the following code:<br /><br /></li></ol><p><br /><pre class="xml" name="code"><br />&lt;link href='http://YourWebserver/SyntaxHighlighter.css' rel='stylesheet' type='text/css'/&gt;<br /><br />&lt;script language='javascript' src='http://YourWebserver/shCore.js'/&gt;<br /><br />&lt;script language='javascript' src='http://YourWebserver/shBrushCsharp.js'/&gt;<br />&lt;script language='javascript' src='http://YourWebserver/shBrushSql.js'/&gt;<br /><!-- add more brushes as you require --><br /><br />&lt;script language='javascript'&gt;<br />dp.SyntaxHighlighter.ClipboardSwf = 'http://YourWebserver/clipboard.swf' dp.SyntaxHighlighter.BloggerMode();<br />dp.SyntaxHighlighter.HighlightAll('code');<br />&lt;/script&gt; </pre><br /><p><br />Replace YourWebserver appropriately, depending on where you choose to host the necessary files.<br /><br />P.S. Blogger is a miserable platform to post HTML instructions, and I will never ever do it again.</p><div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Michael O'Neillnoreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-67960316785789504452008-05-24T16:59:00.005-05:002008-05-24T17:30:59.245-05:00Michael Michael BicycleThanks to the <a href="http://ntta.org/">blood sucking <span class="blsp-spelling-error" id="SPELLING_ERROR_0">NTTA</span></a>, I finally have a bridge I can use to get to work by bicycle. Once I figured out a way to navigate the 7.5 mile (12km) trip with the least contact with traffic, I started bicycling to work as frequently as I've been able to will myself.<br /><br />The first few days were hard on my body, very tired when I got to the office and subsequently depressed in the afternoon on the prospect of having to face about 40 minutes of <span style="font-style: italic;">effort </span><span>to get home</span><span style="font-style: italic;">.<span style="font-style: italic;"><span style="font-style: italic;"><br /><br /></span></span></span>Two weeks later, I no longer even care about the effort - it's actually easy. And, now it's closer to 30 minutes because I'm hauling ass as best I can.<br /><br />My goal is to use my bicycle to eliminate at least two <span class="blsp-spelling-corrected" id="SPELLING_ERROR_1">commutes</span> by car per week. Coupled with working 4x10 instead of 5x8 hours at the office, that's a 60% reduction in my gasoline consumption via commute. Screw you Exxon.<br /><br />I'm <a href="http://spreadsheets.google.com/pub?key=pPBabpAelv7WDHI40YWoUcQ">logging my miles per day</a>, and I think 50 miles (80km) per week - overall not just on commuting - is a great goal for me. Also, I've added my logging to my <a href="http://friendfeed.com/crisatunity"><span class="blsp-spelling-error" id="SPELLING_ERROR_2">FriendFeed</span></a>, to beat down all the idiots who think I'm interesting that follow me that way.<br /><span style="font-style: italic;"><span style="font-style: italic;"><span style="font-style: italic;"></span></span></span><div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Michael O'Neillnoreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-23695162898522499642008-05-22T22:35:00.001-05:002008-05-24T17:30:28.584-05:00Giving Disqus a Try (redux)Giving Disqus a try (<a href="http://flipbitsnotburgers.blogspot.com/2008/05/giving-disqus-try.html">too</a>). I think the only reason I've avoided a deluge of comment spam or stalkers is because my blog is utterly irrelevant and uninteresting. At least that's what my AdSense account tells me...<div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Michael O'Neillnoreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-67478321369612673902008-05-16T23:24:00.001-05:002008-05-18T18:26:46.670-05:00Random Album Review: Recovering the Satellites<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_F2mDkhg-jig/SC5NkpT4fRI/AAAAAAAAAg4/_ofyI3P7E90/s1600-h/Recovering+the+Satellites.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp2.blogger.com/_F2mDkhg-jig/SC5NkpT4fRI/AAAAAAAAAg4/_ofyI3P7E90/s400/Recovering+the+Satellites.jpg" alt="" id="BLOGGER_PHOTO_ID_5201179911619378450" border="0" /></a>I'm fairly certain <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Counting</span> Crows is the best band that's arrived on the scene in my adult life. As I listened to this album, fresh with my reviewer-ears, I realized that I'd no idea all these songs were from the same album. <span class="blsp-spelling-error" id="SPELLING_ERROR_1">iPods</span> tend to <span class="blsp-spelling-error" id="SPELLING_ERROR_2">de</span>-educate album detail as it goes about rendering songs as singularities to sort and configure at will. I'm not sure that is A Good Thing. This fact is yet another sound reason for the Random Album Review.<br /><br />I had <a href="http://www.rockandrollbadboy.com/topattendance.html">one concert experience with Counting Crows at the Texas Motor Speedway in 1997</a>. Their performance was extraordinary and had the effect of locking me in for life. As usual, I've laid out the tracks best to worst with the first half dozen or so very difficult to decide between.<br /><br />5-stars<hr /><br /><span style="font-weight: bold;">Goodnight Elisabeth</span> (4:33) - Romantic and sappy and all that.<br /><br /><span style="font-weight: bold;">Another <span class="blsp-spelling-error" id="SPELLING_ERROR_3">Horsedreamer's</span> Blues</span> (5:20) - I remember this song as <span class="blsp-spelling-corrected" id="SPELLING_ERROR_4">particularly</span> soothing to my daughter as baby. To this day, she's still not allowed to sing along to the "Stupid Mothers" line, but allowed to shout the "Drunken Fathers" line with impunity. Go figure.<br /><br /><span style="font-weight: bold;">Catapult</span> (3:35) - Pulsing and pushing, great on the headphones on the big hills.<br /><br /><span style="font-weight: bold;">A Long December</span> (4:58) - As great as this is, there's a couple live versions in my collection that are even better. Counting Crows is one of those great bands that encourages trafficking of their live bootlegs.<br /><br /><span style="font-weight: bold;">Miller's Angels</span> (6:34) - Hey Romeo indeed.<br /><br /><span style="font-weight: bold;">Children in Bloom</span> (5:24) - Someone finally takes of the handcuffs of the lead guitar.<br /><br />4-stars<hr /><br /><span style="font-weight: bold;">Monkey</span> (3:02) - If <span class="blsp-spelling-error" id="SPELLING_ERROR_5">Horsedreamer</span> is my daughter's domain, this belongs to my son. All monkey everywhere on that boy.<br /><br /><span style="font-weight: bold;">Angels of the Silences</span> (3:39) - Angels picks up the pace, an excellent respite among all the brooding ballads.<br /><span style="font-weight: bold;"><br />Mercury</span> (2:48) - Harmonica?<br /><br />3-stars<hr /><br /><span style="font-weight: bold;">Daylight Fading</span> (3:50) - OK, I guess.<br /><br /><span style="font-weight: bold;">I'm Not Sleeping</span> (4:58) - Good but radio overplay diminished this one for me.<br /><br /><span style="font-weight: bold;">Recovering the Satellites</span> (5:25) - Why do title tracks let down so often?<br /><br />2-stars<hr /><br /><span style="font-weight: bold;">Have You Seen Me Lately?</span> (4:11) - Yawn.<br /><br /><span style="font-weight: bold;">Walkaways</span> (1:12) - I'm not sure why this ditty was ever included.<br /><br />If you're interested in a listen, <strike><a href="http://www.ilike.com/user/Crisatunity/library">my <span class="blsp-spelling-error" id="SPELLING_ERROR_6">iLike</span> library</a> should have replicated snippets by the time you read this</strike> grab the torrent off my <a href="http://profile.to/crisatunity">facebook</a>. Upcoming for <span class="blsp-spelling-error" id="SPELLING_ERROR_7">RAR</span> is The <span class="blsp-spelling-error" id="SPELLING_ERROR_8">Cure's</span> Disintegration.<div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Michael O'Neillnoreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-36302664277058922102008-05-14T12:15:00.005-05:002008-05-14T12:31:40.158-05:00Getting RightWhen I'm disorganized, lost, grumpy, surly and incomplete there always comes a moment when I can see the corner to turn to get me out of the mess. To a place a point over there, where I can shake loose and get right. The place the point is a redundant destination. The path to it well trodden, but I don't think I've ever looked down and examined where how it twists and turns.<br /><br />I want to get right, now. Where is the place the point?<br /><br />I know I have to get right with my lover, neglecting my favorite only piece of ass is too often an oversight.<br /><br />I know I have to get right with my kids, not let this summer pass by as three more months knocked out on the way to them moving out.<br /><br />I know I have to get right with my health, ending this farce where I'm fat and slow when I should be so fucking hot and and fast.<br /><br />I know I have to get right with my code, writing shit that makes sense to other people, including myself 30 days later.<br /><br />So I'm going to get right.<div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Michael O'Neillnoreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-49829561381005191332008-05-06T16:16:00.014-05:002008-05-06T17:05:33.334-05:00String in a HaystackThis is for the data reverse-engineers out there. What do you do if you have a distinctive string value making an appearance in a form or report that's in a big application package, and you have no idea what table or column that value might be calling home? Here's some fancy dancy Oracle SQL to do the trick. I would double-check with your DBA before running against production systems. Your mileage may vary.<br /><pre><br />declare<br /> cur sys_refcursor;<br /> val varchar2(4000);<br />begin<br /> for i in (select 'select "' || atc.column_name || '"' ||<br /> ' from "' || atc.owner ||<br /> '"."' || atc.table_name || '"' ||<br /> ' where "' || atc.column_name ||<br /> '" like ''%' || :searchstring ||<br /> '%''' as cmd<br /> ,atc.owner<br /> ,atc.table_name<br /> ,atc.column_name<br /> from all_tab_columns atc<br /> join all_objects ao on (atc.owner =<br /> ao.owner and<br /> atc.table_name =<br /> ao.object_name)<br /> where ao.object_type = 'TABLE'<br /> and atc.data_type = 'VARCHAR2'<br /> and ao.owner = :schema<br /> order by 2<br /> ,3<br /> ,4)<br /> loop<br /> open cur for i.cmd;<br /> loop<br /> fetch cur<br /> into val;<br /> exit when cur%notfound;<br /> dbms_output.put_line(val || ' <= ' ||<br /> i.owner || '.' ||<br /> i.table_name || '.' ||<br /> i.column_name);<br /> end loop;<br /> end loop;<br />end;<br /></pre><br /><br />There are two variables, the <strong>:searchString</strong> and the <strong>:schema</strong>. Bind/substitue with your query tool of choice.<div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Michael O'Neillnoreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-43482093869486599062008-05-06T08:19:00.004-05:002008-05-06T08:46:54.095-05:00WTF UPS?<span style="font-size:100%;"><span style="font-family:trebuchet ms;">I recently purchased <a href="http://www.samsung.com/us/consumer/detail/detail.do?group=computersperipherals&amp;type=monitors&amp;subtype=lcd&amp;model_cd=LS20PENSF/XAA">a new monitor</a>, having it shipped to me via <a href="http://ups.com/">UPS</a>. I don't do a lot of UPS business, on either end of the equation, so perhaps I'm a bit behind the curve on this issue. To keep tabs on the deliver, I investigated using my tracking number and <span class="blsp-spelling-error" id="SPELLING_ERROR_0">RSS</span> with <span class="blsp-spelling-error" id="SPELLING_ERROR_1"><a href="http://newsgator.com/">NewsGator</a></span>.</span></span><br /><span style="font-family:Trebuchet MS;"></span><br /><span style="font-family:Trebuchet MS;">Guess what? UPS, king of the cutting edge doesn't do <span class="blsp-spelling-error" id="SPELLING_ERROR_2">RSS</span>. My only choices are continually visiting an updated web page or e-mail. E-mail?</span><br /><span style="font-family:Trebuchet MS;"></span><br /><span style="font-family:Trebuchet MS;">Jason Young (<a href="http://www.ytechie.com/2008/04/simpletrackingcom-ups-update.html"><span class="blsp-spelling-error" id="SPELLING_ERROR_3">ytechie</span>.com</a>) has a <a href="http://simpletracking.com/"><span class="blsp-spelling-error" id="SPELLING_ERROR_4">SimpleTracking</span> </a>web service that has great <span class="blsp-spelling-error" id="SPELLING_ERROR_5">RSS</span> feed wrappers for many major US delivery services, UPS <span class="blsp-spelling-corrected" id="SPELLING_ERROR_6">noticeably</span> excluded. UPS is <a href="http://en.wiktionary.org/wiki/cockblock"><span class="blsp-spelling-error" id="SPELLING_ERROR_7">cockblocking</span> </a>him all the way on exposing this data for any service to build great things.</span><br /><span style="font-family:Trebuchet MS;"></span><br /><span style="font-family:Trebuchet MS;">Jason has <a href="http://www.petitiononline.com/st0001/petition.html">a petition</a> on this issue for UPS to consider. I encourage my massive single-digit readership to affix their name to the petition; takes 10 seconds.</span><div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Michael O'Neillnoreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-22893875474197731482008-05-04T19:02:00.008-05:002008-05-06T08:47:06.513-05:00So Long DOT.TUNES<span style="font-size:100%;"><span style="font-family:trebuchet ms;"> I fired up DOT.TUNES Version 4 this morning to share some music with my daughter. I've <a href="http://blog.crisatunity.com/2008/03/because-just-one-project-isnt-enough.html">written previously</a> on the pros and cons of this software. It works well enough so I use it. Then today, I get this bullshit:<br /><br /></span></span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_F2mDkhg-jig/SB5QcZQd98I/AAAAAAAAASA/ftFcIpjBjhE/s1600-h/Dot.Tunes.Expired.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_F2mDkhg-jig/SB5QcZQd98I/AAAAAAAAASA/ftFcIpjBjhE/s400/Dot.Tunes.Expired.jpg" alt="" id="BLOGGER_PHOTO_ID_5196679468778649538" border="0" /></a><br /><span style="font-size:100%;"><span style="font-family:trebuchet ms;">Which makes no sense to me because at no point during the original install was there any mention of "expiration". Since I'm firmly entrenched in the "don't fix it if it ain't broke" camp I'm irritated by this mystery arbitrary expiration. Regardless, I go to the <a href="http://dottunes.net/">indicated URL</a>, because maybe there's some heartbreaking security problem and upgrading is something essential. Maybe I go there because I'm a sheep.<br /><br />The page primarily references downloading an ostensibly new product called Hook Up, a Mac <span class="blsp-spelling-error" id="SPELLING_ERROR_0">OSX</span> product which is useless to me. Below the fold there's a banner for the <a href="http://dottunes.net/dt4.html">DOT.TUNES v4</a> product that interests me. The odd lack of prominence for v4 doesn't give me hope they plan on continuing their free license for v4 over the long haul. They might as well have their hyperlink in the closet, buried under cleaning products, an old broom and a mop that's seen better days. I follow the link.<br /><br /></span></span><span style="font-size:100%;"><span style="font-family:trebuchet ms;">Right off, I'm irritated as all get out. The DOT.TUNES v4 page </span></span><span style="font-size:100%;"><span style="font-family:trebuchet ms;">has music automatically playing like a shitty <span class="blsp-spelling-error" id="SPELLING_ERROR_1">MySpace</span> wasteland. Not even good music; I thought a rat was chewing on my woofer cables at first. So be it, I find the pause icon and end that nonsense.<br /><br />The first thing I notice, and maybe most people don't notice these things, is that there's not a stitch of information about DOT.TUNES v4 being new in any sort of way. No new anything. I click on <a href="http://blog.dottunes.net/">their blog</a> to see what announcements might be relevant to why perfectly good software has suddenly threw up on its own shoes. The light bulb goes on.<br /><br />Because it's free (as in beer), there's always been a hidden expiration as a marketing tool to force you back to the mother ship if you want to use the software. Very uncool. I could see doing this, but making it up front when you install it (so you can make an informed decision). I could see a expiration that forces an announcement to freebie users. I could see a nag screen that can only be removed by returning to their new product screen and subsequently upgrading.<br /><br />But, I can't see using a hidden expiration to disable perfectly good software for marketing purposes. That's flat out <span class="blsp-spelling-error" id="SPELLING_ERROR_3">sheisty</span>. So, goodbye DOT.TUNES. I will not be upgrading. I will not be using or recommending your <span class="blsp-spelling-error" id="SPELLING_ERROR_4">firm's</span> software to anyone, ever. I know that I wasn't part of your revenue stream, nor was I going to be anytime soon - so you might say good riddance to me. But maybe if enough <span class="blsp-spelling-error" id="SPELLING_ERROR_5">bloggers</span> (who also aren't in your revenue stream) expose how devious your firm operates, your bottom line will be diminished.<br /><br />Despite my already enduring love of open source software, it still takes an occasional kick in the groin to remember why.<br /></span></span><div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Michael O'Neillnoreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-34091636931661729052008-05-04T10:24:00.007-05:002008-05-04T11:46:45.920-05:00What is the Random Album Review?<span style="font-size:100%;"><span style="font-family:trebuchet ms;">Before I post my next review, I want to chat a bit about what the <span style="font-style: italic;">Random Album Review</span> series means to me. I love my iPod. Over the years, combining my sizable digitized CD collection and downloads left me with about 10,000 songs. It was great that I was enjoying all my music in single compact magic box, but it was maddening how much crap was in there too.<br /><br />So, I sat down and listened to it <span style="font-style: italic;">all.</span> In a grand act of self-expression and personal liberty, I deleted all the crap. That left me with about 4000 songs, still quite a bevy of tunage. But that wasn't all. I found that I generally collected music via compilation releases which left me with an empty feeling in a weird way. Compilation albums are kind of seedy and coolness killers. They are an absolute expression of being<span style="font-style: italic;"><span style="font-style: italic;"> </span></span>a late adopter.<br /><br />I went through my entire collection again. This time I endeavored to document in iTunes: the source album, original year of release and album art. My wife calls this couple of months the dreaded "headphone era". Demonstrating ADD superpowers, I think I even cleaned up iTunes at the dinner table, during dinner with my family. That effort was completed a couple of weeks ago.<br /><br />So what's left after reaching the summit? Well for one thing I noticed that the quality of some of my favorite songs isn't quite as good as I'd like. When I first bought an iPod and ripped music (circa 2004), I was too ignorant about quality and obsessed with storage. Also, I think the algorithms that iTunes uses to rip music have improved. Several iPods later, storage isn't an issue with 60GB to work with and a more selective collection. Rather than implement an ADD approach, I'm re-ripping my music one album at a time and blogging about it, doing this at whatever pace happens no longer how long it takes.<br /><br />One word about the "random" nature. It is only as random as iTunes is capable, which is quite suspect but good enough for this purpose. I have a smart playlist that looks for songs that 1) aren't singles, 2) have a five-star rating, 3) haven't been reviewed previously - and then limit that list to one song. That's how I determine which album is next. When I run out of albums that have at least one five-star song, I'll knock it down to four-stars - but that will be a while.<br /><br />I'm also, trying out new social means to share my collection with family, friends and stalkers. I haven't found any yet that work just the way I want. I'll keep trying out a variety of them and linking or embedding them in <span style="font-style: italic;">Random Album Review </span>posts. Don't expect any consistency on this aspect of the reviews, as I'll be all over the map as it pleases me.<br /></span></span><div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Michael O'Neillnoreply@blogger.comtag:blogger.com,1999:blog-7196789917521796381.post-80805073565157102132008-04-30T17:56:00.001-05:002008-05-06T16:15:53.490-05:00What I like about the InternetYou just don't have to spend much time explaining completely weird changes.<div class="blogger-post-footer"><br/><br/>Copyright © 2008 Michael John O'Neill <br/>Originally published: http://blog.crisatunity.com <br/><br/>find me: <a href="http://blog.crisatunity.com">blog</a> | <a href="http://profile.to/crisatunity">facebook</a> | <a href="http://friendfeed.com/crisatunity">friendfeed</a></div>Michael O'Neillnoreply@blogger.com