. . . .

11 May 2019 » where have you been

Oh, hey there

Hi again, my names Patrick, I used to write more about things here, but it’s been a while.
This thing called life threw some twists our way, it’s been joyous, painful, and life changing.

This post is an attempt to recount my happenings, and lay it out there for those wondering. It may be a bit rambling, but it’s hard to recount over a year in some detail without rambling.

Left coast to right coast

First up, a big move.

On August 3, 2017 my wife and I packed up our apartment, caged our 2 animals, and moved from always sunny San Diego, to North Carolina.
Neither she nor me expected to move here, yet this was the destination.

The home, packed in a PODS like box, and sent off to NC without a destination address was setup to stay stored until we identified the landing spot.

This lead to…

05 Feb 2017 » Life costs

Nothing in life is free

You’ve heard that saying before. Usually by some older person, about some topic that may have seemed irrelevant, but all I can say is it is true. The damn saying is true.

As I age, now 35 years old at the time of this writing, I apply and say this saying in my head all the time. I wrote it off as unwarranted “wisdom” in my youth. Or as I started understanding politics, I wrote it off as political BS. But the saying and its application applies to everything in your life.

Another way I phrase it to myself, or unfortunate others I yap with is:
At what cost

25 Sep 2016 » Broadcasting on Twitch with OBS


  1. Navigate to https://obsproject.com/download, and click the appropriate OBS Studio link for your operating system. This guide will continue with MAC OSX.
  2. Double click on OBS.dmg (or .exe for Windows) file downloaded, and continue through the installer. You’ll need to run root privileges to complete the installation.
  3. Launch OBS. I used Spotlight to find OBS and launch.

17 Sep 2016 » Belize y Guatemala

Buenos Dias

Last Sunday (the 11th) we got to rest in our own bed again, after an 11 day trip to countries we never planned to visit.

Of course based on the title, you smart folk can identify that it was Belize and Guatemala.


There were two points to our trip:

  1. My wife and I got married legally in a courthouse in July, but we wanted to have an intimate wedding ceremony with our immediate family. This trip was to do that AND vacation (see point #2 below).

  2. Vacation. We emphatically love jumping into other cultures and areas of the world to better understand things, people, and those we travel with.

So how did Belize come into the picture?

We’re both green people. That is, we’d prefer green trees and surroundings to beach fronts. Researching our dreamy place to have a small ceremony and vacation, somewhere in a rainforest perked up to both our ears.

11 Jun 2016 » I made the web better today, you can too.

A long while ago, say 5 years back, on the way home from a work trip from Bellevue, WA I purchased a book before getting on my flight. Thanks to the company’s (now under a different name) liberal education policy regarding technical books, it was on them.

The book I purchased, after some internet sleuthing on “good books for developers” or a similar keyword setup, was this guy:

30 Mar 2016 » Be Humble

Using the poorly referenced dictionary patrickhyatt.com

Humble (adjective) :

  1. To keep oneself below the their own egos growth.
  2. To not be a dick, to not belittle

Programming, or programming in the business realm at least, has a tendency to generate highly skilled individuals, that master an area of knowledge.

Lets take a look at two completely made up examples: Sally, the quality assurance engineer, that sits in the back and has been around for a few years. She owns the application that processes credit cards and refunds. She knows she owns it. There is honestly nobody left in the company that has any knowledge of the product, but her.

Jorge, the quiet developer, that barely speaks louder than the whisper of a feather that falls. Jorge is the guy to to go to with SQL issues. He previously worked at Oracle and knows all kinds of performance tweaks and shortcuts.

Approach both with a question in their area of ownership/expertise.

27 Mar 2016 » Ultralight travel

(In Patrick Stewart voice)
Travel, the final frontier….

Traveling is, out of the many things we can spend money on, our #1 expense. We value travel. We value the experiences from it. We value it enough that we spend on it. I think traveling is necessary to become a better person, to better understand references to those random places named in the news, to better understand ourselves.

Honestly, it’s great.

Whether you are a sandy beach sap (hello dad!) or a cultural sponge, one thing that absolutely kills the fun is luggage.
1. You have to drag it around behind you, dodging other people’s luggage, dogs, or kids.
2. You usually have to pay extra for it.
3. You have to find somewhere to put it.

After numerous trips, both domestic trips lasting 10 days, to international lasting 18 days, I’ve simplified my travel experience to a single backpack.
*Maybe a hand bag if we’re bringing back gifts/goodies

This has changed the travel game for me.

Lets look at some of the freedoms this affords you.

02 Mar 2016 » I paid $70 for some PJs

Just typing out the title for this piece kind of hurts… somewhat.

I’m a pretty cheap guy. It could be how I was raised, a natural tendency, or reading a few financial books throughout my years. But honestly pretty cheap.

Lets take a trip back down memory lane a tad.

December 18, 2015 Preparing for an annual trip, this time to Mexico. While packing in my minimalist fashion, I start to add my PJ pants. Trusty, old, and extremely worn in the butt area. So worn that there is actually a soft tear from so much use. I figure, “hey, no big deal right? They’re just to sleep in anyhow.” Throw them in and proceed to have a wonderful time throughout Mexico.

January 4, 2016 Unpack and notice the hole is no longer a hole, but something that appears to be a pair of fetish like chaps. No coverage of the backside whatsoever. Pat, you got to let em go. Just let go.

To the trash they go. Pantless (PJ wise) Pat is in the building.

19 Sep 2015 » Running jekyll

This is my first post using Jekyll.

Originally it was a simple one line text showing proper output, however in interest in playing this through further and play with some of the markdown options:

Console.WriteLine("Hey there buddy.");

Per myself:

You should hug your mom. Then your dad.

02 Jul 2014 » SDJS Meetup Notes


Crafty.e(1, 2, 3, 4) 


querying: comma denotes AND, i.e. Crafty(“Love Hate”) vs Crafty(“Love, Hate”)

collision: .onHit(item, function() { });




D3 likes JSON Origin is upper left, draws down & right.

Data visualization http://selection.datavisualization.ch

Jeffery Heer - Standford Computer Science (HCI)

25 Oct 2013 » Setting up StackExchange's Opserver

Nick Craver from StackExchange recently posted StackExchange’s homegrown monitoring system. The system, named Opserver is available on GitHub.

In this post I hope to gloss over some of the issues and/or configuration steps necessary to run this slick monitor. So lets try this.


  1. Grab the code from GitHub either, for the lazy here is the zip file link
  2. If using Visual Studio 2010 or previous, make sure you have ASP.NET MVC installed. Grab that at the ASP.Net MVC4 homepage and make sure to run the installer as administrator [Windows 7+].
  3. Crack open the solution file (either from your cloned repo OR the unzipped package downloaded in step ). There should be 2 projects visible and loaded. If you get a "The project file '.....csproj' cannot be opened. The project type is not supported by this installation." error, see this StackOverflow answer.
  4. Compile. You should have no errors and everything succeeds.
Side note: This codebase was built using Visual Studio 2012 and recently updated to use Visual Studio 2013.


All configuration is handled by .json files in the Opserver/Config directory. Nick has a .example file for each of the different types of dashboards there are. Some of these appear to be very centric to StackExchanges build, so out of the box you may not be able to use all the configurations without reworking some areas of your codebase.


This is the first file you'll need to copy/paste in order to get into the system.
Edit this file to match the security settings you want.
The example looks like this:
	<?xml version="1.0" encoding="utf-8"?>
	<SecuritySettings provider="AD">
	 <!-- Optional, these networks can see the overview dashboard without authentication -->
	        <Network name="SE Internal" cidr="" />
	<!-- Example of global access for everyone:<SecuritySettings provider="alladmin" />-->

which limits access to StackExchange’s internal network, yours will need to be changed

Possible "provider" attributes are: "activedirectory", "ad", "alladmin", or no attribute in which everyone is read only. "ad" and "activedirectory" are analogous.
For my case I have everyone being an admin, since this is mainly for our internal development and QA teams.
Mine looks like this:
<?xml version="1.0" encoding="utf-8"?>
<SecuritySettings provider="alladmin">

Note, even if everyone is an admin, they will have to login initially using an empty username/password combination to get into the system.


If you do not know what Redis is or do not use it skip this.
Adding a RedisSettings.json file allows you to monitor Redis memory use as well as perform some health checks.
The configuration for Redis is a tad cryptic for me still, so bear with me.
Here is our config file, modified to remove server names and specifics:
 "allServers": {
  "name": "All",
  "instances": [
    "name": "Core",    
    "analysisRegexes": {
     "**Dev**": "^dev-",
     "**Live**": "^prod-",
 "Servers": [
  { "name": "server1" },
  { "name": "server1Slave1" },
  { "name": "server2" },
  { "name": "server2Slave1" },
  { "name": "server2Slave2" }
Under the instances array we have a "Core" name and two children that define regular expressions to match Redis key names for categorizing. That is, if a key starts with "dev-", it will be categorized as "**Dev**" under the "Core" instance when running analysis. The Servers array defines the server names your Redis instances are running on.
Here's a screenshot of what the Redis monitor home page looks like:
You can see the "Core" name in use on the left.


The entries in this file define the connection strings for any SQL server instances you wish to monitor. There are two main arrays to populate, “clusters” and “instances”.</h3>

"clusters" refers to SQL Server 2012 cluster configurations. If the SQL instance you put in here are not SQL Server 2012 you can get memory use spark charts only. Outside of that it will appear offline.
"instances" refers to standalone SQL server instances, and at least in our internal setup, make up a majority of our SQLSettings configuration.
Our configuration, truncated some for brevity:
    "defaultConnectionString": "Data Source=$ServerName$;Initial Catalog=master;Integrated Security=SSPI;",
    "clusters": [
         "name": "SDCluster01",
         "nodes": [
          { "name": "SDCluster01\\SDCluster01_01" },
   { "name": "SDCluster02\\SDCluster01_02" },
    "instances": [        
        { "name": "SDDB01" },
 { "name": "SDDB02" },
 { "name": "SDDB03" },
 { "name": "SDDB04" },
Any one of the JSON objects that have a "name" property, can also specify a "connectionString" entry in case it differs from the "defaultConnectionString"'s entry.
Here is a display of our non 2012 cluster and information:
<amp-img alt="Opserver - SQL area height="207" src="https://1.bp.blogspot.com/-mCUf9nkdEyU/Umr9z6sg7GI/AAAAAAAAAlg/sK3xXOjIQ9c/s400/blog_sql.png" width="400" />
As you can see, the top "cluster" is highlighted in red, even tho the spark chart is coming in.
Also you can see under the standalone grouping we have 1 instance that's not up at all.
Each one of these instances you can drill into to obtain more detailed information, for example:


To use this monitor panel, you pretty much need to use StackExchange.Exceptional. This, again, is StackExchange's error logging system, which writes unhandled exceptions to a central database.
If you happen to not use this, skip this for now. The configuration for this is pretty straight forward for a quick setup, the only necessary item is the connection string of the database your Exceptional logging system is writing to.
    "warningRecentCount": "100",
    "criticalRecentCount": "200",
    "viewGroups": "StatusExceptionsRO",
    "applications": [
        "Customer Support",
    "stores": [
            "name": "SanDiego",
            "queryTimeoutMs": 2000,
            "pollIntervalSeconds": 10,
            "connectionString": "Server=SDDB_01;Database=Exceptions;Integrated Security=SSPI;"
String items underneath "applications" defines what is displayed by default on the Exception pages header. If an exception is written to the database that does not fit any of those application names, a new category will display in the pane.
I was going to post a screenshot, but after blurring out anything from our stack, it was useless. I would like to add however, that both Exceptional and the Exception page are just beautiful.


So far my coworkers and I love this, and I can see from the code its only getting better (hello there sp_WhoIsActive, sp_BlitzIndex!).
I hope this helps someone. Together with Exceptional I've personally found 3 issues with our codebase not previously known, scary but also eye opening. And I think that is the goal, make your errors eye opening and easy to see, so you can fix them.

04 Oct 2010 » Leave Here's a post I found today that is just awesome.

It reads almost like a poem.


18 Aug 2010 » Using .Net usings... In .Net to make use of other namespaces (libraries of classes) you do so by the 'using' keyword. On the other hand you can fully qualify the namespace if you wish to avoid including 'using' methodology. Whatever the case this isn't a lesson on the using keyword.

The real point of this post is to attempt a practical ordering included namespaces for all classes. The pattern I'm suggesting (hell, maybe it's even actual recommendation already?) is the following:

(Core namespaces)

(Your [company/project/school] namespace)

(3rd Party namespace)

Essentially giving organization to something that is usually a mess.

Lets take a peek at an example.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using Dundas.Charting.WebControl;
using MyCompany.Core.Framework;
using MyCompany.Core.Utils;
using MyCompany.Project.Common.Analytics;
using MyCompany.Project.Common.Utils;
using MyCompany.Project.Core.Emissary;

Look at this mess, no order, its not immediately obvious which 3rd party components are being used.

Now using my suggestion:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;

using MyCompany.Core.Framework;
using MyCompany.Core.Utils;
using MyCompany.Project.Common.Analytics;
using MyCompany.Project.Common.Utils;
using MyCompany.Project.Core.Emissary;

using Dundas.Charting.WebControl;

Doesn't that look better? It gets across everything immediately and in an standard fashion.

Oh also, always always always get rid of unused namespaces. More clutter to junk up your files.

Quick easy fashion to do this. Right click on your class definition -> Organize Usings -> Remove and Sort. Now there is no excuse to have unordered, non-used namespaces in your files, and its built in.

29 Apr 2010 » Unknown Windows shortcuts Most keyboards these days have the Microsoft logo'ed Windows key. This key is simply magic.

For example hold that key down and tap the 'E' key.
My computer just pops up, bam! Navigate away.

Windows key + 'R' : The run prompt shows up ready to do your bidding.

Couple this with the different service consoles or applications (services.msc or notepad++ for example) and you are just getting around without even taking your hands off the keyboard.

Windows key + 'D' : Minimize all visible applications, OR re-display visible applications as their previous display. Try it, its amazing.

Most of these are known and used everyday, however there are a few people I show are still wowed by. And recently Lifehacker posted some Windows 7 tips that wowed me.

If you're using Windows 7 with multiple monitors you just have to use these.

Windows + Up Arrow = Maximizes active window
Windows + Down Arrow = Un-maximizes active full screened window OR minimizes active windowed application.
Windows + Left (or Right) Arrow = Cycles window in direction of arrow key across monitors. Amazing!

I've been loving this since I learned about it, just changes everything!

27 Apr 2010 » Lull point I've not posted in so long, my massive audience has now probably stopped following. Sorry loyal followers!

I must admit, I feel I just don't offer enough as a developer to post compared to other avid/interesting bloggers. And as of recently I've been in a development lull.
No interesting discoveries, no new tools I've dabbled with, nothing really.

Recent work has changed from a News harvester to a rewrite of a very high traffic site.
While it is exciting/new/challenging, I'm just tanking in enthusiasm.

Ah well, pity me huh?

Recent things I can blurb about:

-Read Don't Make Me Think: A Common Sense Approach to Web Usability, 2nd EditionBook image - Don't Make Me Think by Steve Krug By Steve Krug.
Thoughts: Very easy read and sensible book on usability. Life changing? No, but sometimes I think you need to get smacked in the face with obviousness to realize things. For example the chapter on web usability I found really informative.

-Going to Spain! As we try to do every few years, we are getting out of the U.S. for a duet of weeks to see exactly what Spain is about. Very excited about this, and the excitement is growing as the days counting continue downward.

That's about all I can dump off the mind at the moment. I believe it is a glimpse at my lull.

Ah well.... as Johnny Cash said, Drive on...

21 Jan 2010 » Dear Microsoft Ever since I was a gaming noob or programming wanna-be (I guess I still am this though) I've been interested in computing ergonomics. Ergo mouse, ergo keyboard, ergo desk, ergo monitor configuration etc. While this puts me out as the dude at work with the weird setup, it is surprising to see how many career developers don't even consider it. The risks are real.

I currently use the Microsoft Natural Ergonomic Keyboard 4000+ v1.0
Image of Microsoft Ergonomic 4000+ keyboard

This is a great keyboard. Honestly...

But there is one thing that I can totally do without. Take a gander at that gigantic number and arrow pad section. It's basically 1/3 of the keyboard in total. Imagine an ergonomic style keyboard (with wavy keys) without a number pad. This gigantic number pad requires me to move my right arm an additional 8ish inches to the right causing some discomfort after long periods of use. Now when I'm whipping out design elements on a windows form dragging and dropping things all over; the additional mobility cost spent to rename default name properties is fatiguing.

I imagine what it would be like to have my keyboard not off set from the front of me or my mouse in an ideal location. The first keyboard maker that comes out with this will have real market for this. With the continued research into repetitive stress injury and computer related injuries (I realize that sounds crazy) will come the increased knowledge and want for extremely ergo items.

10 Jan 2010 » Netbooks - Should you or not? In a recent post on one of my all time favorite blogs, Jeff Atwood discusses another bloggers thoughts on the netbook. This kind of fired me up reading why this Joey DeVilla is knocking the netbook. Let me explain.

In August, as a graduation gift I purchased a Acer Aspire One A150 for my newly Masters educated honey bunny. I bought it on after seeing her destroy my old Dell Inspiron 5100 throughout her school. It was sort of a whim, sort of to stay current on today's technology. But after a solid 3 month use cycle, I know this netbook has changed our computing lives.

First a few changes that as a result of this purchase/gift:
1- We have a laptop with us anywhere we go.
Explanation- With the light weight (3 pounds) and size, the Aspire One fits in any purse/book bag we bring when traveling. Also it does not choke out my shoulders when its in my bag. Also in flight it fits every so nicely on the super small tray, right next to your built in cup holder for a movie or coding on the go.

2- While at home the netbook is always on, and unplugged.
Explanation- The battery life on this netbook has impressed the heck out of me and continues each time. We can stream 3-4 Netflix movies and still have juice for random browsing/playing in flight. My old Inspiron would last maybe an hour just browsing a flash based site. About to go to library on Saturday, pop that bad boy out of sleep mode and look it up in 2 shakes.

3- It has withstood my girlfriends abuse.
Explanation- Well to put it bluntly my lady abuses the laptops. My Inspiron had a screen dangling from one hinge that did not stand up unless you propped it on something, see pics below. It was dropped daily, had various liquids spilled within it, and amazingly still turns on and displays. Mind you I have had to disassemble both the old and new netbook numerous times to 'fix' any issues these problems have caused. But the Aspire One is still holding strong. In fact there are no scratches on its beautiful case or screen. They keyboard pops out with no screw driver necessary for easy cleaning, and totally disassembling takes maybe 15 minutes. Super maintainable.

Photo of my old laptop, now broken

Close up photo of laptop's broken hinge

This purchase has now made my girlie a more online monster than I am now. I wake up this morning, walk out to the living room to find her on the netbook researching flights for our yearly vacation, all while having a newspaper in her lap and eating bowl of cereal. She brings the netbook with her everywhere but happy hours and uses it as her work machine.

Now some guys or large handed lady's may seem adverse to the small nature of the netbook. I will offer this advice/knowledge, its fine. While the keys are in a tighter area, I have not encountered any issues writing emails/code with the same speed as a normal sized keyboard. Try it at a local Radio Shack (The Shack?) or other computer retailer. It is fascinating.

My only complaint is the mouse buttons are a bit too demanding on how hard you push to register a click. Its better to use the tap functionality of the touch pad.

All in all, for $350 one of the best purchases I've made and one of the most used gifts I've given.

I recommend this particular netbook to anyone wanting a truly portable awesome device.

17 Feb 2009 » Groovy Google Maps I was attempting to use Google's Street View today to see if a local gas station had a standard beater brush Car wash, cheesy I know but who wants to drive around only to be disappointed. "Driving" around with the product I enter the groovy zone. Take a peak...


08 Jan 2009 » Cheap gaming rig Looking for the most bang for your computing buck in these economic hard times?
User MikeL_HH over at HotHardware.com has created a solid guide to upgrading your rig from lame to game for $500 bucks or under.

Check it out: Build Guide

06 Aug 2008 » StackOverflow.com beta opens! Well Jeff Atwood and Joel Spolsky have finally opened up their new venture StackOverflow, a site for programmers by programmers. It's a registration free experts-exchange like site which has some neat features.

For one if you choose to register it uses an openID account, which is usable throughout various other web sites bypassing that 500th login/password combo you were going to create again.

Another quirky item is the default icons for each user. They have implemented use of a gravatar which basically translates to a unique image per user based on their IP address. Heres an example: My gravatar image

I've been very impressed with the simplicity of design while maintaining a slick minimalistic feel. All in all I wish the best for this site and hope everyone gets a chance to check it out.

29 May 2008 » New site/podcast Recently I posted a few of sites I frequent everyday Daily Sites.
One of them being Coding Horror run by Jeff Atwood a now ex developer of Vertigo Software.

Recently Jeff has parted with Vertigo in hopes of starting a new venture in partnership with Joel Spolsky (Founder of FogBugz). That venture being Stack Overflow. It is still in its infancy as they discuss what it will be and how they will implement the site. The main premise is basically a more community based Experts Exchange focused solely on software development.

If you are a developer I highly recommend both Coding Horror and StackOverflow. We not only need great readings and community based knowledge bases, but also to support our fellow developers who wish to further advancement of the field.

12 May 2008 » What do you do to help humanity? Recently I've been evaluating what I've done in my life and how I've impacted others lives around me. To be honest, I recently noticed that I had the mindset of taking care of myself and myself only. With this invading my mind, I figured it is time to change some. Something small, something I can ease off with (hey, its a start) and still feel like I'm making some difference.

My significant other is one of the most giving people I know. She signed up a while ago on a site called Kiva. Today I signed up and made my first donation toward a loan. Meet Mr. Abdul Sabor Mohammad (Right ad/banner), a DVD video exporter in Kabul.

Update Abdul's loan has been fulfilled and the banner has been updated to reflect another Entrepreneur in need.

I can't say I feel like I can and/or have changed the world. But if I gave one family the chance at a fraction of what I've had, its a pretty good thought/feeling.

23 Apr 2008 » Best random IM ever 11:21 AM Tuesday April 23
Random IM comes on my screen from a coworker at a previous gig. One who I really don't talk to much anymore...

Any identifications have been removed to protect the guilty:
Edit: Image removed, it was lost..

Once that flew across my screen he was signed off before I could even reply to lengthen this exchange...

23 Apr 2008 » Nintendo NES Console within a NES Catridge Take a gander at this awesome modification which turns an NES Mario Brothers cartridge into a complete system.

NES Cartridge System

While the language is in French, it doesn't take understanding to comprehend the awesome work that is displayed.


21 Apr 2008 » Survey - Software Engineers only! In support of my significant other's research and graduate studies, I would wish to ask some of my readers (any of whom are professional software developers) to complete this survey. It is a short survey pertaining to the ailments of sitting on our butts all day writing code. There is only enough free survey for 15 people before the service wants to charge, so it is on a first come first serve basis.

Academia and me would like to thank you for those that complete this. (By the way no personal information is used in this)

To the survey! :: Survey

26 Mar 2008 » GH3 - Wii Thank You Just got in today and found an odd package in my mailbox. Upon opening the box I found this:
Guitar Hero controller faceplate

Free faceplate!

Here's the card included for the explanation

Remastering note and apology

24 Mar 2008 » Daily sites After having a couple positions under my belt I've noticed that all geeks in general have some similarity in sites they frequent. With that, I've also come the the conclusion that most know some obscure site that has similar content would be a daily if another knew about it.

Here are my daily's that I've come to appreciate and spend numerous hours on:
Development/Code related:
Coding Horror
The Daily WTF
Experts Exchange
Entensity.net (NSFW, adult video links/images/ads)
Etsy - Awesome site for random artistic items

What are some of your daily's?

04 Mar 2008 » Guitar Hero 3 Replacement Disc Has Arrived Guitar Hero 3 replacement disk and letter

For all of those that have been waiting for their replacement CD's I received mine today 3/3/08.
Yours should be coming soon!

16 Feb 2008 » Wii Guitar Hero 3 Replacement - Continued Today I received a envelope in the mail from an unknown mailer. What was it? The replacement packaging for Wii Guitar Hero 3 owners to send in.
The picture below is what you'll get (cd not included).
If you haven't gotten it yet, it is coming boys and girls.
Guitar Hero 3 replacement disk and letter

05 Feb 2008 » Gaming related... In the seriousness that is gaming, we all get pissy (right?) but these guys take the cake... some rage based hilarity thanks to fellow qwned n00bs. Here to you guys...

20 Jan 2008 » Stephen Colbert and the National Portrait Gallery
Stephen Colbert from The Colbert Report recently was granted a limited showing in the National Portrait Gallery in D.C. this week with his portrait within portraits rendering. The question will his display be appreciated?

Photo of Steven Colbert's painting

Well the answer is an obvious yes. Not only was the Colbert display crowded with visitors, but there was a line formed just to take pictures. On top of that, there were 2 security guards to keep the walkways clear and lots of giddiness. By far the most crowded display I've seen in a museum here. Just amazing. I highly recommend visiting the display if you have the ability. Its filled with young enthusiasm, laughter and a lack of stiffness you normally get when in a museum.

18 Jan 2008 » Activision screws up again... Just checked my email to find this beauty sitting in my Inbox.... its a list of everyone's email that has signed up for Activisions Wii replacement disc for Guitar Hero 3.
Thanks Activision!

Sample of email addresses

24 Apr 2007 » Numeric First Last with Next & Previous Hello everyone (Im the only reader?)
Long time since I last posted as I have not encountered anything that I felt was worth a post so that explains the lengthy duration.

Anyhow as the title suggests:
.Net GridView PagerSettings by default give you 4 options most useful , yet at times you may want something extra; such as a Numeric First/Last with previous and next paging ability. I was tasked with this and couldn't find anything that was not overly complex (required a custom pager etc). I found one blog (link to come if i can find it again) that had some customization taking place during the RowCreated Event. After thinking about it I threw it together.

First Set the GridView PagerSettings to "NumericFirstLast"
this will give you a pager that resembles the following:
1 ... 5 6 7 ... 10, where the "...",s will increment to the n number of documents.

Next wire up an event handler for the OnRowCreated Event. The following code explains the rest:

switch (e.Row.RowType)
case DataControlRowType.Pager:
Table pagerTable = (Table)e.Row.Cells[0].Controls[0];
TableRow row = pagerTable.Rows[0];
if (row.Cells.Count > 1)
LinkButton prev = row.Cells[1].Controls[0] as LinkButton;
if (prev != null &&amp;amp;amp;amp;amp; prev.Text == "...")
prev.Text = "<<; prev.CommandArgument = "Prev"; } LinkButton next = row.Cells[row.Cells.Count - 2].Controls[0] as LinkButton; if (next != null &&amp;amp;amp;amp;amp; next.Text == "...") { next.Text = ">>";
next.CommandArgument = "Next";

Basically when the pager row is created, we find the linkbutton on either side that jump pages forwards and backwards (the ...'s ) and reconfigure them to display the appropriate text we want and commandarguments.

Thus giving you a numeric first last and next/previous pager style with minimal work.
The code above resembles the following :
1 << 5 6 7 >> 10

And thats all from me for now. Good, Bad or Ugly ? you be the judge..

12 Jan 2007 » New Project Recently, I have been in the process of transitioning out of the Configuration Managment to a full blown developer position. My newest project is converting a severely outdated ASP web application to ASP.Net 2.0.

What was once done with Visual Basic 6.0 and dll registration, numerous registry entries and a whole slew of other older technologies is now done with at least 1/4 of the code, and all .Net.

We're between releases now at my company so there is no offical schedule currently, so its mainly a discovery phase. I would consider myself intermediate to advanced at html but ASP.Net I am total novice. With that in mind I have been able to compact 5 ASP pages into one aspx page.

GridViews and FormViews are some powerful controls. I really have been impressed with how simple it was to whip out a web application which functions near exact to what the older codebase did, without the messy attachments.

A few problems I encountered:
- Using a CheckBox control against data which is not boolean. It took me a bit to figure out the entrails but some custom handling OnRowDataBound and OnRowUpdateCommand events, and tada.
- DropDownList : I had an issue which was mainly lack of knowledge on my part which was setting the SelectedValue property based on what the current database field is.
You can set the SelectedValue property in the markup " /> and ta da!

And that has been about it. We're also using Microsofts shot at Ajax Controls and the associated Toolkit which looks great!

21 Dec 2006 » My ClickOnce Deployment ClickOnce, Microsofts new deployment mechanism, introduced in .Net framework 2.0 is just neat. Given a directive to make an application ClickOnce deployable I had to devise a way. Let me explain....

ClickOnce is primarily designed to have a development shop post their binaries to a web server and deployed to a clients box from that server. My charter was to make this application installable to a clients box, and hosted from that such that all clients would ping that box for installs and updates. This posed a problem due to the signing required for ClickOnce manifests and the application requiring configuration when it installed on that server computer.

My resolution was to have a standard MSI based installation which copied all of the required files for the application to the server machine, then using a bat file which called mage.exe generate and sign the manifests.

My bat file:

@echo off

if(%1) == "" goto error
if(%2) == "" goto error
if(%3) == "" goto error
if(%4) == "" goto error
if(%6) == "" goto error
if(%7) == "" goto error
if(%8) == "" goto error

echo ***Manifest Signing Application***

chdir %7
set var=%3
set var=%var:"=%

set product=%1
SET product=###%product%###
SET product=%product:"###=%
SET product=%product:###"=%
SET product=%product:###=%

set mfPath="%var%%product%.exe.manifest"
set appPath="%var%%product%.application"
set frmDir=%var:~0,-1%
if exist %mfPath% del /F %mfPath%
if exist %appPath% del /F %appPath%

mage.exe -New Application -ToFile %mfPath% -Name "%product%" -Version %2 -FromDirectory "%frmDir%"

cscript insert.vbs %mfPath% app.ico

if "%~5" == "" goto NoPassword

mage.exe -Sign %mfPath% -CertFile %4 -password %5
goto continue

mage.exe -Sign %mfPath% -CertFile %4


mage.exe -New Deployment -ToFile %appPath% -Name "%product%" -Version %2 -AppManifest %mfPath% -providerUrl %6 -Install true

set desc=""
cscript replace.vbs %appPath% " "

exit 1

Has this been problematic? Absolutely, mainly due to configuration of the app.config file after the app has been installed. This is more of an overlook as the System.Deployment along with the System.Configuration namespaces allow for modification of the app.config file during runtime.

17 Nov 2006 » First Utility I did say I would post my developing accomplishments and solutions, and finally I have completed one.

This utility compresses tiff images using CCITT Group 4 compression. Initially the images were specified as "black and white" therefore I checked for 1 bit color, however it was later changed to support any bit depth. Images can be 1,4,8,12,16, 24 or 32 bit. I made use of 3rd party components from LeadTools, which made compressing and saving a snap. However the very large images (1GB and up) just wreck a machine with little memory.

Being this was/is my first ground up professional app I found out the hard way where things go wrong.
Mind you for any developer this is standard duh material or should be, however I've been working on automated builds (visual build) and wise for windows installer for over a year, I knew I was rusty, but wow.

12 Oct 2006 » First Post This is my first post on this blog.
I've created this blog mainly to share whatever development achievements and/or solutions I have created.

If I update this frequently is the next question....TBD