Richmond VA in Tilt-Shift

I am continually fascinated by this effect and decided to take a few pictures downtown today to shift.  Here are the results from the 2 buildings I could get some altitude from.  Note that the photos are BIG (4000×3000).  Long live Richmond.

My mug is my t-shirt – 5 cool choices

Modern geek culture embraces sporting our messages.  It became crystal clear to me at a recent Jonathan Coulton concert that t-shirts were  being worn less to cover our pasty and deltoid-lite physiques than they were to get our message out.  Odd as it may seem, it seems to be the accepted way we communicate in public.  Right out in the open and still hidden as that dude next door has no idea what ‘Alderaan had it coming’ means.  I can’t wear a t-shirt at work (’cause that the kind of job I have) but I can sport a mug.

So it is about time to replace my ‘Kneel Before Zod’ mug at work as after about 3 or so years of use it is developing a protective coating of coffee-like scudge inside.  I see co-workers gagging when they think I am not looking.  To date it has been my ‘Thunderdome’ fallback plan, assuming that if civilization collapsed I could always add some hot water and reconstitute one more cup before taking to the road with my 3 legged dog and kicking your ass for a pint of petrol.  I may retire it regardless.  Here are the current finalists in case you are mug shopping.

 

mug_mana

Mana Mug (need. more. mana.)

mug_cylon

Cylon Mug (metallic aftertaste not included. not sure wtf a fresh roasted cylon is but I like the mug regardless)

mug_beer

'I wish I was a Beer' Mug (this is one of mine, shameful yes but I love it)

mug_gun

Gun Mug (sadly sold out currently 'cause this mug rocks)

mug_aperture

Aperture Labs (awesome. with a gravity gun and this coffee cup I may be a god come the apocalypse)

GLaDOS Soul Injection

Alright, I admit, I’m a Portal junkie.  I discovered it somewhat early on and have rolled around in its success like a dog in a crap filled ditch, revelling in the stank of the world loving the game, no, the experience, like I have.  It makes you feel good to see something you love find success.  I could say nearly the same (although a modicum less stank in this iteration) about Jonathan Coulton, who I am very excited to say I am going to see in concert tomorrow night.

I also came across a great analysis of GLaDOS’ physical form, a vision that I must admit I did not catch when playing the game but am fascinated by now.

That all being said, I came across a version of the Coulton-penned, Portal-centric song ‘Still Alive’ today performed in a minor key that I think was really the high point of my day.  The singing is OK, but the piano playing  and interpretation of the song is stellar.  I’d buy a copy for the old iPod.

Here’s my recipe for success tonight:

Open a great beer.

Get yourself a Portal themed shirt.

Listen to Coulton’s best song (’Skullcrusher Mountain’ in my not so humble opinion).

Then enjoy this inspired interpretation of ‘Still Alive’.  Forego the cake, trust me.

Man Tempts Magnets and Loses

Awesome.  This guy had 2 huge neodymium magnets (the kind that are decidedly not toys) and somehow let his finger get in between them.  WHAM.  

These monsters shattered the bone, tore the nail off, lived up to the warning on the packaging.  Lessons that end in a little gore are lessons that stick.  Note the size of those magnets in the picture and don’t miss the fingernail and bits of Dirk stuck between them.  

Buy your own and crush you fingers here.

Don’t take my word for it, check out Dirk’s full harrowing tale.

 

The neodymiums your mom warned you about.

The neodymiums your mom warned you about.

Podcast Formula (or how to not suck)

I’ve been into podcasting for a long time now, both as a listener and as a creator of content.  The successes that I have had come partially from my being picky as hell about what I listen to and attempting to apply those standards to what I make.  Here are the guidelines I try to follow:

 

Chemistry. 

Top of the list for a reason.  You need more than one person talking and they need to be having fun.  When done well this makes the listener feel that they are part of the conversation and makes for a much better listening experience.  There are zero casts that have lasted on my iPod for long that are a single host talking, not because they were not interesting, they just proved to be not interesting enough without a little dialog, a little banter, a little opposing viewpoint.  No amount of editing, effects or media clips will save your bacon if the hosts are wooden or can’t kid each other.

Set Goals and Don’t Wander Far.

I know, I know, I’m one of those ‘visualize success’ dorks but hear me out.  A good cast is rarely the result of a mic and some people just running their mouths.  Decide what your show is all about and stay somewhat true to that vision.  If I am talking entertainment news I need to insure that more than half of my show is entertainment news and not my droning about trying to find a job, what my kid is up to or my screwball antics at replacing a toilet.  Here and there might be fun but when shows lose sight of their core direction and I find myself once again in a touching non non sequitur about what their roommate found in their nose this week I move on to another entertainer.

That Hair Club Thing.

What I mean is don’t just be a producer of your content, listen to it too.  Put yourself in the position of a listener that will only get some of your cultural references and nearly none of your inside jokes.  Is it still entertaining?  If the answer is yes (and with some it is) then keep it up, if not, rethink what you are doing.  If I find my own giggling irritating when I listen to my show objectively then the audience is likely to as well.  People lie to spare your feelings (Don’t believe me?  Just watch the morons that finally find out how much they suck at singing on national television on American Idol.  Their friends and family should have never let some of those people on that show).  Listen to yourself and seriously think ‘Will anybody but me and my 5 best friends listen to this more than once?’.  If you are only after your friends as an audience than let it rip.

Ad Lib.

This does not fall far from the ‘Chemistry’ tree above.  I can usually tell when people are reading and when you have 2 people reading dialog that is supposed to sound conversational you’ve %$@*^’d up.  Sometime you have to read stuff, I’m cool with that, but when you don’t have to then don’t do it.  Know your material and just talk about it so the experience feels like I am part of the conversation and not at a seminar.  Don’t over-prepare material or you’ll be tempted to just read it.  Outline your points and chat about them.  If you cannot do that then you should consider another hobby.

Don’t Overextend Yourself.

Making a show that does not stink is hard work.  90% of my effort is up front, gathering info and getting talking points outlined.  This can turn into a monster if you don’t rein yourself in a little bit.  Define the line where it stops being a fun hobby and is dreary work and don’t get near that line.  Trust me.

Never forget that there are more choices for podcasts than listeners have time and it is very easy to drop one and try another.  If you want to reach more than 10 people you need to deliver what you promise them and make it entertaining enough for them to choose you again next time.  I hope these help and I look forward to hearing new content.  Drop me a line if you have a cast, I’ll give it a listen.

Screensavers for Kindle

I finally wearied of the stock screensavers on my Kindle and decided to take matters into my own hands, replacing what Amazon provided with a few of my favorite Science, Science Fiction and Fantasy authors instead. Instructions to change out your screensavers are below as are the pics I slapped names on to use on mine. The Lovecraft is actually a drawing by Bruce Timm, one of my favorite artists. Anyway, here is the collection I went looking for when I decided to upgrade my Kindle’s images and, when I could not find them, I whipped them up myself.

Brief instructions:

Note that this will remove all of the native screensavers, if you hate that you can restore by removing the Kindle folder //system/screen_saver and restarting the unit. That’ll restore the native savers.

  1. Attach the Kindle to your pc using a USB cable, you should see a drive named ‘Kindle’
  2. Create a new folder in the Kindle’s root named ‘pictures’ and one under that named ’screensavers’
  3. Copy your new image files into the screensavers folder (they have to be 8bit greyscale 800 x 600)
  4. Disconnect Kindle
  5. Go to the Kindle’s home menu and press alt-Z. This will create a new book called “screensavers” at the end of your book list, open that book
  6. Flip through the pics in that new book and press alt-F to go into Full Screen mode then press alt-shift-0 (i.e., alt-shift-zero) to export as a screensaver . After a short delay, you’ll get a message that your picture has been exported as a screensaver. Close the message and go to the next one.

Isaac Asimov David Brin Richard Dawkins Harlan Ellison Neil Gaiman Stephen HawkingRobert E. Howard Robert Jordan Stephen King  H.P. Lovecraft Carl Sagan  Neal StephensonJ.R.R. Tolkien

ASP and a Dynamic Slide Show Control

This is a quick, simple (functional yet inelegant?) piece of IIS-friendly code for a user-driven slide show that I was asked to whip up.

A user wanted to post an mp3 along with some slides that the viewer could flip through along with listening to the audio.  In an effort to not have to revisit the code each time they had new slides to post I wrote a page (in classic ASP as the server supported it) that will monitor a folder for .JPG ’slides’ and build/manage the forward and back navigation of slides for you while enumerating your postion in the slides versus the total.  If the slides are in alphabetical order this just works and they can add/remove/edit slides all day with no changes needed to the slide code.  The forward and back buttons (not included) appear and disappear as appropriate.

Full code and comments after the jump.
|Read the Rest of the Entry…

Workday Message Board

I came across the Windows-based desktop tool extraordinaire ‘Samurize‘ the other day courtesy of my friends at Lifehacker and have been running with it ever since.

The app does a number of things, the one that really interested me was integrating the contents of a text file on your desktop and updating it as the file changed.  My usage started with first the ‘Hello World’ of desktop modding and adding a todo list, then evolved to writing a script that monitored a number of automated processes at work and created a text file for an embedded desktop dashboard.

I then turned my attention to how I could set up something with Dropbox and Samurize to synch between my daytime laptop and the one at home where the kids are constantly working.  Both being Windows machines made this easy as Samurize is currently Windows only.  Now I have 2 cross referenced files, synced over the net with Dropbox, that are edited on one machine and appear on the desktop of the other.  This makes it easy to post notes and messages, in a bulletin board style setup, to the kids during the day, allowing them to do the same.

Now we have a live bulletin board for swapping messages during the work day.  Shiny.

I have a few Dropbox invites left, shoot me an email if you want one of them.

My New Browser Goes to 11 (-8) and Your Browser Sucks.

Just 1 back button is for losers apparently.So I upgraded today from an earlier version of 3 to the new beta 5.  Biggest difference?  Not one, not two, but three sets of navigation buttons!  Yeah, behold the future of surfing UI you chumps.

So I checked and IE 7? One back button.  Opera v9.27?  One measly back button.  Safari 3.1?  Yep, only one.  Losers.  Once again the folks at the fox are blazing trails with usability.  Baby got back x 3.

Navigating backward has never been easier or more fun.  Thanks Firefox!  After being Rickrolled earlier tonight (thanks Grandma) I navigated back so fast that I pulled a muscle in my neck.  This is like my browser going to 11, only 8 less.

Upgrade today and I’ll see you somewhere back there, ’cause that’s where I’ll be.

Datagrid into Excel in VS 2008 – C#

My old, standard code to do this in a previous version was throwing errors and required some research.  The working code included a workaround for what some are classifying as a bug (It looks though as if MSFT closed it as ‘by design’). Your mileage may vary.

To implement this you need to have a datagrid on your page already and link up the ‘ImageButton1′ element to your ‘Open this grid in Excel’ image or button.  You can then use the following pieces with little alterations.  Pay attention to part 4, you may have a decision to make there.

Part 1:
You use the old standard code to wire up the button to call the method:

{
	Response.Clear();
	Response.Buffer = true;
	Response.ContentType = "application/vnd.ms-excel";
	Response.Charset = "";
	this.EnableViewState = false;
	StringWriter sw = new StringWriter();
	HtmlTextWriter hw = new HtmlTextWriter(sw);
	this.ClearControls(YOUR_GRID_CONTROL_HERE);
	YOUR_GRID_CONTROL_HERE.RenderControl(hw);
	Response.Write(sw.ToString());
	Response.End();
}

Including the ClearControls method to strip controls out of your grid and leave their value instead.  This is called in the click handler. I clearly need to get a code plugin for Wordpress as my spacing was lost in translation here and it sucks to read…

private void ClearControls(Control control)
{
	for (int i = control.Controls.Count - 1; i >= 0; i--)
	{
		ClearControls(control.Controls[i]);
	}
	if (!(control is TableCell))
	{
		if (control.GetType().GetProperty("SelectedItem") != null)
		{
			LiteralControl literal = new LiteralControl();
			control.Parent.Controls.Add(literal);
			try
			{
				literal.Text =
				(string)control.GetType().GetProperty("SelectedItem").GetValue(control, null);
			}
			catch
			{
			}
			control.Parent.Controls.Remove(control);
		}
		else
			if (control.GetType().GetProperty("Text") != null)
			{
				LiteralControl literal = new LiteralControl();
				control.Parent.Controls.Add(literal);
				literal.Text =
				(string)control.GetType().GetProperty("Text").GetValue(control, null);
				control.Parent.Controls.Remove(control);
			}
	}
	return;
}

Here is where the old code (above) started throwing new errors.  The 2 following items may or may not be needed depending on your configuration.

I was getting an error about the grid not being in the form at that point which was bogus (as it was in the form) and found the following workaround for what some felt is a bug (http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=118285). Regardless, placing this before the 2 methods above cleared the error.  I didn’t need to call it though a co-worker was calling it from the onlick event.  Regardless of if you call it directly or not, it contains no code.

public override void VerifyRenderingInServerForm(Control control)
{
	// Confirms that an HtmlForm control is rendered for the
	// specified ASP.NET server control at run time.
	// No code required here.
}

Now I was getting an error stating ‘RegisterForEventValidation can only be called during Render();’. What info I found stated that this seems to occur when there are column sorts present when doing this operation.

That leaves you with 2 options (that I know of) if you want the resorting to still be enabled (and I did):
ONE: Turn the eventValidation off, either for the page or whole app.  Effective, but not best practice for security so I opted for the slightly irritating, but just as effective, option 2.  My advice would be to leave eventValidation in place and go with option 2, but hey, I like freedom of choice too so here is how to disable it if you want:

To disable eventValidation:
For a single page – Put this in the @ Page

EnableEventValidation = "false"

For your whole app – Put this in the web.config

<pages enableEventValidation ="false" ></pages>

TWO: You can define a second gridview which looks exactly like the original, but with visible=”false”. Then when you hit the export button you make the hidden grid visible and get the result you are after, but with a little messier code.  The advantage here is that you can leave additional controls out of the 2nd grid and remove any styles so it renders better in Excel…