February 2008 - Posts

Today I got wind of a new book that makes me laugh, "Secrets of the Rockstar Programmers: Riding the IT Crest" by Ed Burns. This book has not been published yet but based on the clues I would guess it focuses on Java programmers. I thought "rock star programmers" only used Ruby On Rails.

I first came across this amusing term in a Computer World article, Rock star coders. Jeff Atwood also wrote about How Not To Become a Rockstar Programmer. I don't have anything against making the profession look sexier. I also don't mind celebrity programmers. Social networking has allowed some people to become minor celebrities online. I've observed this on YouTube were popular vloggers gain considerable e-fame. It serves as a powerful incentive and encourages collaboration because other users want to be associated with the popular users. I even think it is possible to challenge a technically superior platform or product by creating a developer community which offers greater opportunity for recognition. Merely creating the perception that Java or Ruby On Rails is what rockstar programmers code in may be enough to drive developers away from .NET. I've also observed that some open source projects are popular based on the community that surrounds it so there is an important social aspect to technology adoption.

The Computer World article was very interesting from a career perspective because it pointed out the benefits of having a web presence. Most developers probably don't have a professionally designed web site to market themselves, unless they are a consultant, author, or programming guru. Being a web developer I consider it essential to have an online portfolio where clients can find examples of my work. I used to be able to just point people to client sites but now I don't have many that are not back end sites for managing a database. I can't give anyone access to that.

I recently added an AJAX portfolio to my web site using all of the JSON stuff I've been working on with no real purpose in mind. Now that I have my site on a Windows Server that supports ASP.NET I have some incentive to create some demo web applications. I may need to use MySQL rather than SQL Server because I bought the value plan. But as far as my "web presence" goes that will probably get a big boost when I go on the YouCruise, a Carnival Cruise for YouTube vloggers. I'm really looking forward to that.

Today I learned several things that were "noteworthy" so I might as well share my knowledge. Whenever I learn something new in the course of my work I add it to my massive collection of notes.

My most significant discovery was the built-in JSON Viewer in Nikhil Kothari's Web Development Helper. I did not realize this tool included a JSON Viewer because it is well hidden. To find it you need to enable logging, then highlight a log entry that corresponds with a JSON request. Click the Show Details... link in the right menu. Then click the Response Content tab as shown below and select JSON as the Viewer. I added this to my notes because it would be hard to find again.

As you can see, I was checking out the JSON web service that DotNetKicks provides. They are using Jayrock for the Microsoft .NET Framework. I was unable to figure out how to use this with jQuery because there is no callback function. There may be an undocumented method I found mentioned on a newsgroup but I have not tried it yet. I did find out how to call a method using a GET request. Just add a backslash and the method name at the end of the web service URL like so: http://www.dotnetkicks.com/services/json/jsonservices.ashx/getFrontPageStories. I added that to my Jayrock notes but I lost interest in that due to cross domain request restrictions.

I have installed Video.Show on my development web server and I plan to really study it because I love video sharing sites. One of my first steps was to generate a data dictionary. There is a data diagram embedded in one of the project's Word documents. I extracted that but it is still hard to read. I needed to convert my data dictionary page to C# to run it within the VideoShow project. In the course of doing this I found a way to make the DataGrid web control generate TH tags for table headers instead of TD. You can do this using the obscure UseAccessibleHeader property like so: DataGrid1.UseAccessibleHeader = true; This was "noteworthy" because a property named UseAccessibleHeader does not give you a clue as to what it does. Even the intellisense for it makes no mention of the TH tag.

I added a new topic to my notes for the .NET Reflector. This tool allows you to disassemble a compiled DLL. As you can see in the screen capture, it could also be useful in translating a method from one language to another. However it frequently asks you to resolve assembly names so I had to document how to find the physical file location of an assembly in the Assembly Cache and the GAC.

I have managed to restore my WordPress blog by taking advantage of search engine caches. This is a good opportunity to review the lessons learned during an unexpected hosting company snafu.

The first question to ask is why I did not have the MySQL database backed up? It is not as if I never backed up my blog. I did have a few back ups from last year. WordPress has a built-in backup utility that allows you to download or email a backup file but this isn't very practical if the file is too large and it is not an automated process. As a matter of fact, this backup utility does not appear to be working at all now that I moved my site. My other option to back up the database was phpMyAdmin. This is what I used but it can be a bit tricky. One of my backups was just some header information with no real data in the file. I need to find a fully automated way of scheduling the MySQL back ups to my PC. I cannot rely on the hosting company to maintain back ups and restore data for free. My new hosting company does not provide any means of managing the database through their control panel but they did recommend a program, SQLyog MySQL GUI, which includes a migration toolkit to get external data at scheduled intervals. That is exactly what I need! I've already used it to back up my database after I restored my posts.

Fortunately, I did have a form of backup that has often saved my bacon. Every smart Internet user knows that you can retrieve deleted web pages from the search engine caches. Maybe you can benefit from the procedure I used to recover my blog posts. First I tried the famous Internet Archive and its Wayback Machine. This was not as useful as you might think because there is a 6 month delay in their archiving of material. I found that Google Advanced Search and Live Search were the most useful for finding my old blog entries. You'll want to use the special site: search command to limit the results to your domain name and find cached pages of your blog. I also found a blog catalog site that allowed me to search based on my tags: http://www.blogcatalog.com/blogs/williamsport-web-deloper-weblog/posts/tag/databases/. I had to copy and paste the text of my old blog entries and then post date the entry. It was quite a tedious chore. By the way, if for some reason you do not want your blog posts to be archived or cached you need to use two meta tags:

<meta http-equiv="cache-control" content="no-cache">
<meta name="robots" content="noarchive">

There are many places to blog on the Internet. Have you investigated the options available to back up your work on these sites? http://weblogs.asp.net/ does provide the option to export your content. It is hidden under Global Settings / Syndication Settings / BlogML Export. BlogML is an open XML format for blog content. There is a WordPress BlogML Export tool which you could use to migrate your WordPress blog to Community Server which is what http://weblogs.asp.net/ uses. Recently LiveVideo expanded their web site to include text blogs. This makes for a very interesting social networking site because it combines text blogging with vlogging and social broadcasting. However I've noticed that you cannot back up or export your text blog. If they suspend or delete your account you would lose your blog posts.

Vloggers also have a lot of problems with losing their user generated content. YouTube frequently suspends or deletes an account because people file false DMCAs against the vloggers they hate. I'm working on a program that will at least allow me to save my video favorites list to my own database using the Google GData API for YouTube. I think there is a lot of opportunity to create tools for archiving user generated content on social networking sites.

 

 

Last night I discovered that my cheap hosting company had accidentally downgraded my hosting package. I suddenly found lots of advertising on my web site. The CGI and FrontPage extensions support were turned off and the MySQL database was gone. This effectively deleted my WordPress blog which has not been backed up since October. They had better restore the MySQL database so I can get my blog back!

I plan to add a page to my web site to serve as an example of a mashup. This will make a nice portfolio page. I can now create a mashup entirely through client-side code with nothing required on the server. I plan to combine my Amazon Wish List, LiveVideo featured videos, Pownce public notes, and Technorati blog search widgets on a single web page. I've found a great community for mashup developers, http://www.programmableweb.com/. I created an account there and plan to visit the site often to use their API directory. They also provide news about web development with a focus on developer APIs and mashups.

Yesterday I made my first contribution to an open source project on CodePlex. I find the JSON Viewer to be very useful in my AJAX work but it requires you to cut and paste the JSON string into its textbox. That gets to be a bit tedious so I downloaded the source code and added a traditional menu system to the program. Now I can browse to my JSON files to load them into the program and use the usual shortcut keys for copy and paste. I sent the project coordinator an email about my improvements but I have not heard back from him. I have another idea for improving the application. It would save me even more time if I could load the JSON data directly from the online source instead of from a file. I don't think that will be too difficult.

I've been struggling to migrate a ASP.NET 1.1 application to ASP.NET 2.0. The Global.asax file is not working and my class files in the App_Code directory cannot be referenced in my ASPX pages. I've been struggling with these problems for days, just going around in circles trying different solutions. I now suspect the problem is a subdirectory that may be configured as a web application instead of the root directory. This would explain some odd behavior. I hope that is the problem because otherwise I'll have to struggle some more.

More Posts