Recent Entries:


Blogroll

obscuretags.com - The Home of Obscure HTML Tags

December 26th, 2006

Old tags never die. They just go to Hell and regroup.
This page contains absolutely no CSS because CSS is dumb.

Such is the motto of obscuretags.com, the home to all HTML tags that are little known, unclear, and almost always confusing. obscuretags maintains a list of odd HTML tags with examples for each tag. The tags include some old favorites and some new, obscure tags. A small portion of the list includes:

Check out obscuretags.com for more tags and even more ways to keep your fellow programmers scratching their heads.


New Release of Opera Mini has Focus on Social Networking

November 30th, 2006

Opera Mini RSSOpera Software has released version 3.0 of the Opera Mini mobile browser. The new version introduces new features that enhance mobile social networking such as photo sharing, an RSS feed reader, secure connections, content folding, and faster surfing.

Opera Mini can now be used to browse and upload pictures to social networking sites including: MySpace, Blogger, Flickr, Facebook and My Opera. In addition, the new version allows consumers to securely access webmail such as Hotmail, Gmail and Yahoo Mail. Content folding improves the browsing experience by reducing the amount of scrolling before users reach the main content of a site.

Opera enjoys upwards of eight million users worldwide with more than 2 billion Web pages viewed. Opera Mini is available free of charge and enables Web browsing on almost any mobile phone.


Entrepreneurial Hacker Decodes iPod

October 26th, 2006

iTunesIt seems a 22-year-old hacker known as “DVD Jon” has cracked the code that Apple uses to associate iTunes files exclusively to iPod players.

DVD Jon has been posting license-circumventing codes on the Internet for several years but now the enterprising young hacker appears to have caught the entrepreneurial spirit.

DVD Jon, aka Jon Johansen, runs a small software shop in San Francisco called DoubleTwist Ventures. Johansen said yesterday his program would fool computers into thinking that any MP3 player was an iPod or that any piece of music or video downloaded from the internet was purchased from iTunes.

Johansen intends to license his wares to media distribution companies, thus allowing their songs and videos to by-pass the iTunes online store, but still be played on an iPod.

Even if Johansen doesn’t get dragged into court by Apple, I’m guessing a simple patch to iTunes would allow Apple to stop the problem.


Google Launches Code Search

October 5th, 2006

Google Code SearchGoogle just announced a new search service designed to simplify how software developers search for source code. The service began internally within Google as a way for Google programmers to search through internal company code.

It’s no secret that most software developers spend a good portion of their day on Google or Google groups looking for a code block or some other information to get them through a sticky situation. I personally have logged more hours on Google Groups in the last 7 years that I care to think about.

The search works as you would expect, except that it searches code repositories such as Subversion or CVS instead of web pages. The advanced search allows you to use regular expressions, filter results by programming language or license type.

Either way, this has to be an improvement over the MSDN library.

Google Code Search [Google]


Google Spreadsheet Announces New Features

September 25th, 2006

Google SpreadsheetsGoogle has announced some new features that have been added its Google Spreadsheet application. The new features are designed to make collaboration and printing easier. Some of the key changes include:

Google Spreadsheets (Requires Google Account)


Why it’s easy to pooh-pooh new ideas

September 14th, 2006

It’s easy to give criticism. It’s hard coming up with new and interesting ideas and even harder trying to make them a reality.

I find it easiest to take criticism from those people who also generate their own original thoughts and initiatives. Feedback from people who have also taken a chance on something new means so much more to me. It doesn’t take anything to scoff at a new idea. It takes a lot of backbone to put yourself on the line with a new thought, plan, or proposal.

Just remember, anybody can be a critic. Not everyone has the fortitude to develop an original idea or the moxie to make it a reality.


Hierarchies with Nested Repeaters in ASP.NET

July 6th, 2006

In most every project I have ever worked on there is some type of hierarchy to the data and ultimately I need to represent this data in some hierarchical fashion to the user. Nested repeaters work very well in these situations and are quite easy to implement.

I am a big proponent of the repeater control and use it almost exclusively for representing repeating data structures. I find that the GridView control is overly-complicated and too tightly integrated with the aspx page for my tastes. I do use the DataList on occasion when I need to represent horizontal-repeating data.

For purposes of a demonstration let us say that we need to create a report that represents an order for products from a hypothetical customer. An order has a hierarchy consisting of an Order object which contains one or many OrderItems. Here is the Repeater section of our report:

<asp:Repeater ID=”Order” runat=”server”
OnItemDataBound=”Order_ItemDataBound”>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, “OrderID”) %><br />
<asp:Repeater ID=”OrderItems” runat=”server”>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, “ItemID”) %><br />
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>

This overly-simplified example report contains 2 repeaters: Order and OrderItems. We can just place the nested repeater (OrderItems) right in the ItemTemplate section of our parent repeater (Order).

On the Page Load event we bind the Order repeater as we normally would.

protected void Page_Load(object sender, EventArgs e)
{
Order.DataSource = GetOrder(Request.QueryString[”OrderID”].ToString);
Order.DataBind();
}

The nested repeater is bound on the ItemDataBound event of the Order repeater and we need to create a handler for the ItemDataBound event on the Order repeater as follows:

protected void Order_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
RepeaterItem item = e.Item;
if ((item.ItemType == ListItemType.Item) ||
(item.ItemType == ListItemType.AlternatingItem))
{
Repeater rptr2 = (Repeater)item.FindControl(”OrderItems”);
//Get the ID for the current row.
DataRowView row = (DataRowView)e.Item.DataItem;
string orderID = row[”OrderID”].ToString();
//Get the nested data for this item.
DataSet dsOrderDetails = GetOrderDetails(orderID);
rptr2.DataSource = dsOrderDetails;
rptr2.DataBind();
}
}

Be careful with large sets of data as this can become very chatty due to the need to call the database on each ItemDataBound event. In a situation like this example I would build a custom Order class to represent my objects using a Generic List instead of fussing with clumsy DataReaders or DataSets.


Planning an Exit Strategy

July 1st, 2006

There comes a time in your career where you must move on in order to move ahead. Perhaps you aren’t challenged anymore, maybe you are looking for a career change, or maybe you can’t stand the smell of last nights warmed-up leftovers wafting over the cube wall from the new guy sitting next to you. Whatever the case may be, it is best to exit on good terms and with a good strategy. Here are some tips for planning a successful exit strategy:

Even if your current situation is a quagmire of epic proportions do not paint the town red when you leave. It is important to leave professionally and on good terms because you never know when you will come across an ex-coworker or maybe that sweet new gig with the plush window-office you were promised wasn’t so sweet after all.


CTRL-F Website Navigation

June 24th, 2006

On many occasions when I visit a website I know exactly what I am after; I just don’t know where it is on the page. In these situations I usually resort to using CTRL-F to search the text on the webpage for the keywords I am after. This usually occurs when a website becomes so large and the density of hyperlinks becomes so great it is almost impossible to organize everything. Let me define it:

CTRL-F Navigation - CTRL-F Navigation is the primary navigation mechanism for websites that become too convoluted as to be navigated by the built-in website menu. CTRL-F is a feature in all web browsers that allows the user to search the text on a webpage for certain keywords. CTRL-F Navigation is typically used to find a hyperlink containing the keyword you are after. For example you may use CTRL-F to find common navigational items such as: Search, Login, Logout, or Signup. CTRL-F only works if the link you are after is text-based and not an image or a button.

Lets take a look at the top 5 sites on Alexa and determine the need for CTRL-F Navigation:

  1. Yahoo - Just as I was finally able to efficiently navigate their old design Yahoo redesigns their site. CTRL-F is a must for finding anything on the Yahoo or MyYahoo pages.
  2. MSN - I don’t use this page but I have to look at it every time I sign out of my Hotmail account. CTRL-F is probably necessary and would work fine.
  3. Google - The Google search page is a simple as it can be and there is no need for CTRL-F Navigation. However, if you need to use any of the Google services CTRL-F won’t help you find them from google.com.
  4. Myspace - I don’t use MySpace and I visited it for the first time while writing this post. The navigation was much cleaner than I imagined it would be. CTRL-F isn’t necessary.
  5. Ebay - There is probably a reason for the proliferation of third-party Ebay front-ends out there. A lot of people don’t even use Ebay to search Ebay.

My personal favorite and the reason I wrote this post is Amazon. I buy a lot of things off of Amazon and CTRL-F is the only way to navigate that jungle.

There is a lot of poor website navigation out there. If you can’t find what you need on a website perhaps you should reconsider why you are using the website in the first place.


Cowboy Code

June 20th, 2006

What is cowboy code? To some it may hearken you back to the days of the noble cowboy and to thoughts of Gene Autry’s Cowboy Code but to me it means something entirely different. Let me define it:

Cowboy Code - Any unmanaged, undocumented, or otherwise unknown piece of code that runs a business process which provides a modicum of value to the organization. Cowboy Code is normally created in a heat-of-the-moment fashion to solve an unplanned business process or to fix an unexpected emergency and is left to run unmonitored and forgotten until the day it breaks. Cowboy code may also include inappropriate uses of technology or unnecessary uses of technology to “showboat” in an attempt to get attention. Cowboy Code does not have any auditing, logging, or reporting mechanisms and the programmer that wrote the code has typically long since left the organization.

In every shop I work I seem to always be on the roundup of this cowboy code. Cowboy code has many guises: batch files, DTS packages, Access databases, Visual Basic scripts, scheduled tasks, SQL Server jobs, and the dreaded compiled code without source are but a few of the many sources of cowboy code.

Perhaps as programmers we need our own code of conduct as did the cowboys of yore. A Code that would dictate proper conduct, reward good behavior, and establish camaraderie among programmers.


Next Page »