Moving to a new blog

Snatched up the domain the other day and started hosting the blog myself. You can find it at I'll leave this blog up for the time being, as there are a couple posts that get some traffic.

I initially tried the custom domain/blogger route, but 3 things kept me from keeping it:
  • Google's new Design templates don't work in Safari 5.
  • Once you've switched to a domain, your search breaks for all but the latest post.
  • Trying to let Google know there is an issue involves posting on their forum and waiting. This is ok - until you realize the above bullet is a known issue and has been that way for nearly 2 years.
It makes you wonder about Google long-term... Thank goodness gmail is a priority for them.

.NET 4 and FTP

It comes baked in. Yay!

Maybe one day when my car moves under it's own power...

ASP.NET Padding Oracle

I'm doing research to better understand the padding oracle attack that was recently disclosed to affect ASP.NET and thought to provide a quick list of links that I've found most helpful:

The ASP Classic is the most unexpected bit to me, but makes perfect sense.

Remote PC Help

Tonight I got a chance to use LogMeIn Rescue and found it a very nice experience for helping a family member with their PC. Knowing it was a trial - I checked the license price...thinking that those I help could fund the license if it was cheap enough ($50-$150?). Well - It's $1188 for a year subscription! This is really too bad for the helpful IT relative - unless you're running a business it's just not worth it. They should mark the price way down and limit you to say 4 connections a month or something...

So - a little Googling for a cheaper alternative revealed TeamViewer - which is free for personal use and looks to be fairly full featured. I'll be using this next time somebody needs some PC help.

Jon's Annual Gift List - 2010

My birthday is almost here and Christmas is around the corner. I'll keep this list updated through 2011 so that any family/friends kind enough to shop for me don't have to wonder too much about what I would like or use. Thanks!

Unreal Tournament Server on Ubuntu Linux (10.04)

I'm putting together a server for some friends to play Unreal Tournament (yes, the original). I had heard this was doable on Linux, and I have a friend's old laptop here to play with. I'll be putting good links here that have helped me to get this working.

I got it all setup in a VirtualBox VM, but need it on the separate machine. This old laptop has a broken screen and no hard problem! It will be running headless anyway, and I've also got a 16GB flash drive. Ubuntu Lucid installs fine on a flash drive - the only recommendation being that you use ext2, as it's not a journaling file system (it doesn't write as much to the drive).

Helpful links:
Playing Unreal Tournament on Ubuntu Lucid
Unreal Tournament Server Setup for Linux
Loki Installers for Linux Gamers

iPhone 3G with the new OS 4

This isn't just a parody. I've seen it happen.

Dev Cheat Sheets

Found this site via downloadsquad. It has lots of condensed "cheat sheets" for different programming languages, tools, etc. that could be handy. I know I'll be using the built-in VS 2010 Code snippets for C#.

GIMP: How to make fuzzy border transparent

This is very useful (and copied from here). I'm putting this here more so I can find it later than anything else.

  • Do not use the "Flatten Image" option. A new layer will be created containing only the border (this layer will be the active layer).
  • Perform "Layer->Transparency->Alpha to Selection"
  • Perform "Layer->Delete". (you don't need this layer any more)
  • Perform "Layer->Transparency->Add Alpha Channel" (if possible)
  • Perform "Edit->Clear"
  • Note: the "Layer" commands are also available on the context menu accessed by right-clicking on the layer's thumbnail preview in the Layer Dialog.

What motivates us?

It may surprise you.

One of many projects

I've got alot of irons in the fire and it's nice to share when one of them is finished. Sometime last year my work began a major revision if its public-facing website. This splintered into two related projects, sites for both Performance Pipe and Chevron Phillips Chemical. The Performance Pipe site went live in January, with the Chevron Phillips site set to go live in the coming weeks. I'm proud of several elements of both sites. I'll give links to areas of the sites I enjoyed working on along with a brief description of the company.

Performance Pipe
About the company: Performance Pipe is a division of Chevron Phillips Chemical LP that supplies pipe for a variety of markets. Much (all?) of this pipe uses plastic and variations on plastic/other resins. I don't know much about pipe, but found it interesting the markets that Performance Pipe's products were being used in as I thought many of these markets were dominated by metal piping. Interesting from a developer's standpoint: (1) Much of the site utilizes SharePoint's Content Query Web Part to generate content based on categorized documents, list items, or pages. One requirement we had was to provide the file size of listed documents. I'm not sure how relevant this type of information is in a broadband internet world, but it was doable out of the box. (2) I've seen several ways to display a FAQ page, and was able to build FAQ items that expanded on mouse click using the CQWP and some javascript. Javascript is a fun language, and getting this particular code to work across all major browsers was a challenge. Dig into the source if you're curious. (3) Here's another page that uses the CQWP, nothing new. What's neat is that each set of the bulleted items comes from a summary links field. This allowed authors to select any number of links and associate it to a list item (whether internal or external links!). A little bit of creative parsing in the XSL and you're there.

Ansible Designs
Every so often I do web site development on the side...rarely really. As I'd like to have a web site to go with the business cards I'll some day get printed, I put together Ansible Designs. Ansible is a term used in science fiction literature to describe a machine capable if instantaneous communication. Thus, my business is about empowering small businesses and individuals to communicate instantly with their customers and fans through the incredible internet machine. Interesting from a developer's perspective: Everything worked well until I tested the site in IE6. A little Google diving revealed how to use IE-specific css to force IE6 to render PNGs with correct transparency (I've used the pngfix script before, but this is more efficient). Additionally, the portfolio page uses the colorbox jQuery plugin to enlarge the website previews. I'm still trying to think of a unique icon to use for tabs/favorites - let me know if you've got any ideas.

I'll update again when I'm ready to share parts of the new Chevron Phillips web site.

Anonymous users and aspx pages inside the _layouts folder

I ran smack into an issue that was looking to be a serious problem yesterday. One of my development projects (SharePoint) is an anonymous access public-facing website. This site using built-in SharePoint web services and the download.aspx page in the _layouts directory to facilitate lookup of related documents and provide download capability. The issue? Anonymous users can't use any of the application pages in the _layouts folder.

Lots of head scratching and some creative Google searches led me to the "DotNetIdeas" blog, specifically this post. It details how the _layouts, _controltemplates, and _vti_bin directories are affected by allowing access to anonymous users. I recommend you go read their post, but the key excerpt is this:
Anonymous users can never load pages inheriting from Microsoft.SharePoint.WebContorls.LayoutsPageBase
The answer to my issue is to create my own download.aspx page (not overwriting the original) without inheriting from this class. I'd still be hunting whatever setting was keeping anonymous users from these pages if not for that helpful post though.

Fastest XML Editor/Viewer

I use Visual Studio every day for just about all of my development tasks. However, I attempted to open a large xml file (> 20 megs) and Visual studio spiked up to 1.5 gigs of memory consumption and I couldn't do anything... My old standby notepad++ (great editor!) also hung on opening the file. A quick search yielded First Object's XML Editor. Worked great. Super fast.

Occasional SPException from GetListItemDataWithCallback

Wrote a new field control today (SharePoint) that queried a specific list in another site collection based on the value of a field from the current list item. This worked great each time I'd test it out and add some additional functionality. When I finished the control, I did a little harder testing by hitting the refresh button in my browser over and over again. Randomly, my control wouldn't render. Other times it would be fine. What's up with that?

If you Google it enough, you'll find that this message generally appears when your CAML is malformed. Well - I used an XmlWriter to build my CAML query (that way my inserted value from the item would be escaped properly for XML), so surely my CAML must be fine if it's working most times??? Right??? Nope. The XmlWriter by default puts in a processing instruction on the first line:

<xml version="1.0" encoding="UTF-8" ?>

Remove this first line and the field controls render each time without error. The specific error I was receiving was:

Microsoft.SharePoint.SPException was caught
Message="Exception occurred. (Exception from HRESULT: 0x80020009 (DISP_E_EXCEPTION))"
at Microsoft.SharePoint.Library.SPRequest.GetListItemDataWithCallback(String bstrUrl, String bstrListName, String bstrViewName, String bstrViewXml, SAFEARRAYFLAGS fSafeArrayFlags, ISP2DSafeArrayWriter pSACallback, ISPDataCallback pPagingCallback, ISPDataCallback pSchemaCallback)

Unable to delete field in SharePoint library

Trying to delete a field in a SharePoint library and get the message "Cannot complete this action. Pleast try again."? This drove me nuts, as even invoking the delete method via the object model gives this message. What I found to allow a delete was pushing down changes via the content type gallery in the site collection (if the field was ever a part of that content type). This can be found by going to the following:
* Site Settings
* Site Content Type Gallery
* Choose Content Type
* Advanced Settings
* Make sure radio button "Update all content types inheriting from this type" is checked
* Click OK

I had several libraries with several fields that had this issue (all fields used to be a part of the content type but had since been orphaned due to changing the definition of the content type in the elements.xml) and now they are all clean and free of these unneeded fields.

If only the error would have told me something meaningful...because trying again was surely never going to fix it.

Terminal Cancer Patient gets restored car

From AutoBlog:
"Tyler Shipman was an 18-year-old Fiero nut from Frazee, Minnesota. In the middle of restoring his favorite car last October he was diagnosed with terminal cancer, and posted a note on a Fiero forum to ask for help with the restoration so that he wouldn't leave his parents with the burden. He got his wish. In the middle of this crazy all and everything, Tyler is more proof that simple humanity still works. We send our best to Tyler's family and friends. Hat tip to Ryan."

Thought I'd reshare this - this is a very special thing.

The right tools for the job

This post is more for my own self-reference later, but others may find it helpful too.

I've been looking to do some modification to the k-member on my car whenever the weather warms up. This will involve removing the k-member before any of the work can be done. Most seem to do this while the engine is removed, but I'd rather not go through that again. I've been doing some reading on how to do this the safest way with the engine still in the car, and here are the tools I'm looking at:

* OTC Spring Compressor 7045B (what the GM dealer uses)
* OTC Tools 4324 Tubular Engine Support
* 4 6-ton pound jack stands

It's not the completed task you're most proud of - it's the tool collection you've amassed. Grunt Grunt.

XSLT that emits source XML

I got this from a friend and have found it very useful for debugging my XSLT from content query web parts and data view web parts in Visual Studio. The below XSLT will output the source XML given to it:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl=""
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>

<xsl:template match="@* node()">
<xsl:apply-templates select="@* node()"/>

Ebay/ invalid certificate - can't even tell anybody about it.

I'm writing this out of pure frustration. I went to login to (great for selling textbooks btw) and found that the login page was giving off a bad certificate belonging to another domain (opendns). This could be a major security problem not just for ebay, but for anybody logging in.

Being the nice guy I am, I looked around the site for a way to contact their support team and alert them to the issue. I dug for 15 minutes through their convoluted help-desk system just to find this page mentioned to contact customer service. I thought I found a winner here...even though it was by clicking through several different more appropriate pages to place this information that I found the link. Clicking on the link takes you to a login page..... [cough] [cough].

Hey EBAY! Your login page is returning an invalid certificate!

This is the best I can do apparently. Maybe Google-hunting for problems with their website is how they discover they need to add things to their not-quite-complete help desk system.

My dns provider (OpenDNS) was sending the bad cert. The real problem is that can't be found. OpenDNS is no longer my DNS provider.

If clients treated architects like they treat software designers…

I ran across this the other day and found it funny. A google search reveals that it may be from a mailing list from around 2000.

If clients treated architects like they treat software designers…
Dear Mr. Architect,

Please design and build me a house. I am not quite sure of what I need, so you should use your discretion. My house should have somewhere between two and forty-five bedrooms. Just make sure the plans are such that the bedrooms can be easily added or deleted. When you bring the blueprints to me, I will make the final decision of what I want. Also, bring me the cost breakdown for each configuration so that I can arbitrarily pick one.

Keep in mind that the house I ultimately choose must cost less than the one I am currently living in. Make sure, however, that you correct all the deficiencies that exist in my current house (the floor of my kitchen vibrates when I walk across it, and the walls don't have nearly enough insulation in them).

As you design, also keep in mind that I want to keep yearly maintenance costs as low as possible. This should mean the incorporation of extra-cost features like aluminum, vinyl, or composite siding. (If you choose not to specify aluminum, be prepared to explain your decision in detail.)

Please take care that modern design practices and the latest materials are used in construction of the house, as I want it to be a showplace for the most up-to-date ideas and methods. Be alerted, however, that kitchen should be designed to accommodate, among other things, my 1952 Gibson refrigerator.

To insure that you are building the correct house for our entire family, make certain that you contact each of our children, and also our in-laws. My mother-in-law will have very strong feelings about how the house should be designed, since she visits us at least once a year. Make sure that you weigh all of these options carefully and come to the right decision. I, however, retain the right to overrule any choices that you make.

Please don't bother me with small details right now. Your job is to develop the overall plans for the house: get the big picture. At this time, for example, it is not appropriate to be choosing the color of the carpet. However, keep in mind that my wife likes blue.

Also, do not worry at this time about acquiring the resources to build the house itself. Your first priority is to develop detailed plans and specifications. Once I approve these plans, however, I would expect the house to be under roof within 48 hours.

While you are designing this house specifically for me, keep in mind that sooner or later I will have to sell it to someone else. It therefore should have appeal to a wide variety of potential buyers. Please make sure before you finalize the plans that there is a consensus of the population in my area that they like the features this house has. I advise you to run up and look at my neighbor's house he constructed last year. We like it a great deal. It has many features that we would also like in our new home, particularly the 75-foot swimming pool. With careful engineering, I believe that you can design this into our new house without impacting the final cost.

Please prepare a complete set of blueprints. It is not necessary at this time to do the real design, since they will be used only for construction bids. Be advised, however, that you will be held accountable for any increase of construction costs as a result of later design changes.

You must be thrilled to be working on such an interesting project as this! To be able to use the latest techniques and materials and to be given such freedom in your designs is something that can't happen very often. Contact me as soon as possible with your complete ideas and plans.

P.S.: My wife has just told me that she disagrees with many of the instructions I've given you in this letter. As architect, it is your responsibility to resolve these differences. I have tried in the past and have been unable to accomplish this. If you can't handle this responsibility, I will have to find another architect.

P.P.S.: Perhaps what I need is not a house at all, but a travel trailer. Please advise me as soon as possible if this is the case.