Nerd Bling

Slivers 10 April 2009 | 3 Comments

Hey ladies, need some bling to show off your nerdy feminine side? There’s an awesome @ symbol necklace and an ampersand necklace on amazon right now.

Ampersand Necklace
At (@) Necklace

¡Lo quiero! Too cute! The only question now is… & or @?

Don’t worry, fellas. I wouldn’t forget about you. Zazzle has these incredible CSS mugs that I want to buy to my very core.

CSS IS AWESOME mug
CSS IS AWESOME mug with overflow: visible; by stevenfrank

CSS is Awesome with Overflow mug
CSS is Awesome mug with Overflow: Hidden; by redglobe

CSS is Awesome with Scroll mug
CSS is Awesome mug with Overflow: Scroll; by redglobe

What more could I want as a developer?

Disclaimer: This post contains affiliate links.

Register ASP.NET Controls in Web.config

ASP.NET 9 April 2009 | 0 Comments

User Controls in ASP.NET are a great tool - they allow you to consolidate sections of code into a reusable piece that you can use anywhere on your site - or even copy the control to a different site.

The only issue I had with user controls was that you had to register the code on every.single.page that you wanted to use it on before you could use it. So, that meant something like this at the top of every.single.page:

Visual Basic:
  1. <%@ Register assembly="Ektron.Cms.Controls" namespace="Ektron.Cms.Controls" tagprefix="CMS" %>
  2. <%@ Register src="~/webassets/UserControls/WeatherWidget.ascx" tagname="Weather" tagprefix="NeatlySliced" %>
  3. <%@ Register src="~/webassets/UserControls/Blog.ascx" tagname="Blog" tagprefix="NeatlySliced" %>

Oi! The frustration! There has to be a better way!

Some googling resulted in finding the wondeful haacked.com, with the article listing my answer. ASP.NET 2.0 allows for registering controls in web.config, thus making it available for all pages and eliminating a potential very long list of controls on every page.

The listings go inside the <controls> tag, within the <pages> section, such as follows:

XML:
  1. <system.web>
  2. <pages>
  3.       <controls>
  4.         <add tagPrefix="CMS" namespace="Ektron.Cms.Controls" assembly="Ektron.Cms.Controls"/>
  5.         <add src="~/webassets/UserControls/WeatherWidget.ascx" tagName="Weather" tagPrefix="NeatlySliced" />
  6.         <add src="~/webassets/UserControls/Blog.ascx" tagName="Blog" tagPrefix="NeatlySliced" />
  7.       </controls>
  8. </pages>
  9. </system.web

You'll note I have Ektron listed in there as well. This is because I was tired of adding the Controls assembly to every page - so not only can you add your own user controls, but assemblies as well. What a life-saver! Your resulting code does not change at all, but you have just eliminated that page heading overhead.

Have you found another item to register in web.config? Leave a comment and share the wealth!

Auditorium: Captivating Flash Music Game

Flash 26 January 2009 | 6 Comments

This game is so beautiful! It reminds me a touch of the Enigmo iPhone game in that you have colored droplets that you have to redirect to enter their appropriate receptacle. Unlike Enigmo, Auditorium's droplets begin as white and change color based on their entry of circles on the map.
level22
Their receptacles are audio containers that begin playing beautiful piano and string arrangements upon landing. It's really simple to begin with, but as you progress it grows quite complicated.
level36
Of course, the whole experience is created by the multisensory tickling - the combination of physics, color, and music. It's odd how fulfilling redirecting droplets to little container can feel.

It's only a preview of the full game which is to come, but it's captivating enough in its short demo length. Play Auditorium now.

(Via kottke)

Tagged in

WordPress Upgraded to 2.7

News 24 January 2009 | 1 Comment

Not long ago, I updated the food blog to WordPress 2.7. Just this afternoon, I upgraded this blog to 2.7 as well. Usually I delay for a bit and skip a rev or two because it takes all of 10-30 minutes to upgrade with my obsessive re-backing up of backups, and I just don't usually want to give up that amount of time to upgrades. But 2.7 made such amazing improvements of the administrative interface that I opted to go ahead and do it anyway.

I find myself writing more on the food blog because I love the QuickPress option of the Dashboard. It's also vastly easier to navigate quickly from one portion of the tool to another. Speed and ease are king in the content entry world. I hope the same effect occurs on this blog as well. Celebrate.

How Painful to Transfer FeedBurner to Google?

News 21 January 2009 | 1 Comment

This morning I transferred my FeedBurner feeds from FeedBurner to Google. Recently, FeedBurner was purchased by Google and the team has been making many optimizations since then. Within the past week, FeedBurner account management pages have been prompting users to transfer (merge) their feeds over to a Google account. Since I already use Google Analytics and other Google webmaster tools, this was no big deal.

All right, how long will this take?

The whole process took about 5 minutes. Seriously. It was painless. I clicked the transfer link, it sensed that I was logged into Google, and prompted me to make a decision: merge FeedBurner with the currently logged in account, the Google account linked in my FeedBurner email account setting, or to create a new Google account to merge with. Then, it went grinding away for a minute or two. Finito!

That sounds easy. But seriously, there has to be some drawback.

I don't see any drawbacks if you already have a Google account. I had a concern that I was going to lose subscribers in the process, because there is a new feed address (http://feeds2.feedburner.com/MyAccountName, where the old one started with http://feeds... - addition of the 2). However, the FAQ assures us that subscribers will not be lost, as Google instantiated a redirect of the old address to the new. And, this redirect supposedly lasts forever.

FeedBurner site visitor stats have been eliminated. However, Google Analytics is far more robust, and likely people with Google accounts already have Google Analytics in place. A reminder to those using FeedBurner site stats that your visitor tracking scripts should now be removed.

Another repercussion: users implementing email subscription forms must update the form code per instructions on the Email Subscriptions page. If you're just using a link like in my sidebar, that link must also be updated.

Meh, this sounds lame. How do I get out?

If you don't want to go with the Google/FeedBurner merger, you have until February 28, 2009 to enable a 30-day redirection option. You are to start using your own feed rather than FeedBurner. This option, for the first 15 days, serves as a redirect to your feed, and for the last 15 days shows users an empty feed that "reads 'This feed is no longer active. A new feed is located at' followed by the URL of your original feed."

Okay, it's not worth all that effort. I'll just keep FeedBurner. What should I do again?

Well, after you do the transfer, update your feeds to point to http://feeds2.feedburner.com/MyAccountName. Remove your FeedBurner site analytics. Add Google analytics if you don't already have it. Update email subscription forms and links. Pretty easy, right? Five minutes, ten tops.

Lost RSS Subscribers? What up?

This happened to me 3 days ago (January 17), and I just today (January 20) transferred my feeds to Google. The loss of subscribers were all Google Reader/Feedfetcher subscribers. Are the lost subscribers due to the transfer? I doubt it. I bet Google is doing something is in the pipes that is affecting their reporting of Google Reader subscribers. Otherwise, I wouldn't have noticed the issue until today. Just a thought.

I hope this helps you and eases any trepidation you may have or have had before switching to Google feeds. I wrote this up in answer of some of the questions I had regarding the transfer, and hope you benefit. All of my data was regarding my two blogs, Neatly Sliced and the Yum blog, so mileage may vary on users with many many FeedBurner accounts to transfer.

CSS Property Order Convention

CSS 15 January 2009 | 7 Comments

I've posted previous tips for CSS conventions, such as using semantic id and class names and keeping your selectors lower case. What about within our styles, between those curly braces? What convention can we apply to our properties?

According to W3Schools, "CSS syntax is made up of three parts: a selector, a property and a value", such as #selector{ property: value;}. Now there are a ton of CSS properties, so we really ought to adopt a convention for writing these out to keep ourselves and our coworkers from tearing out our hair.

I propose we begin alphabetically ordering our CSS properties (if we're not already, of course). Now, I’m not saying to be dogmatic about alphabetizing (ahem, everyone, each font property must be alphabetically listed! I don't want to see font-weight before font-size!) but just in general, group for example the font properties together and list then in alphabetical order in relation to the other properties.

Why would this be useful? Well an obvious reason is that you can quickly find what you are looking for, but another (and more important) reason lies in that it will reduce overriding errors.

Below is the style for a menu that I pulled from a third party:

CSS:
  1. .menu a, .menu a:visited {
  2.   display: block;
  3.   font-size: 12px;
  4.   font-weight: bold;
  5.   text-decoration: none;
  6.   color: #fff;
  7.   height: 30px;
  8.   border-color: #fff;
  9.   border-style: solid;
  10.   border-width: 0px;
  11.   background: #ccc;
  12.   padding: 10px;
  13.   line-height: 30px;
  14. }

I needed to paste in font-size and color, so I pasted those two over the existing font-size and above the font-weight that already existed:

CSS:
  1. .menu a, .menu a:visited {
  2.   display:block;
  3.   color: #fff8f1; /* ADDITION */
  4.   font-size: 11px; /* ADDITION */
  5.   font-weight: bold;
  6.   text-decoration:none;
  7.   color:#fff;
  8.   height:30px;
  9.   border-color:#fff;
  10.   border-style: solid;
  11.   border-width:0px;
  12.   background:#ccc;
  13.   padding: 10px;
  14.   line-height:30px;
  15. }

Since this was not my CSS, I did not notice at first that the color property was already declared later in that very selector. The result in this instance would be my #fff8f1 would be overridden with #fff because the latter rule (selector or property) takes precedence.

While I was alphabetizing this selector, I noticed the other color and of course deleted it. In addition to preventing override errors, alphabetizing the properties also just gives the selector a feeling of order and organization.

CSS:
  1. .menu a, .menu a:visited {
  2.   background:#ccc;
  3.   border-color:#fff;
  4.   border-style: solid;
  5.   border-width:0px;
  6.   color: #fff8f1;
  7.   display:block;
  8.   font-size: 11px;
  9.   font-weight: bold;
  10.   height:30px;
  11.   line-height:30px;
  12.   padding: 10px;
  13.   text-decoration:none;
  14. }

Advice of a different order: Andy over at Aloe Studios suggests ordering properties in a way to mirror the property's effect on the box model. It confuses my simple non-design developer brain, but perhaps designer-heavy CSS developers find it more semantic for their heads. If it works for you, do it!

Like what you've read? Browse the CSS category for more CSS goodness, and be sure to subscribe to the RSS feed. It's free!

Tagged in

MacHeist 3 Officially Begins

Apple 6 January 2009 | 0 Comments

A while back I wrote that MacHeist 3 began. It didn't. They just released another package of software.

Now, MacHeist 3 really has kicked off. They initiate the con by prompting the user to log in. By simply logging in, the heister earns loot worth $39: Process. Process is an organizing/outlining/collaborative app. I'm not sure I'd actually use it, but hey, it's free. Why not.

The first mission is briefed in the forum. A girl with a thick accent comes on a video informing the user to check thegardenofforkingpaths.com for information gathering.

They've already debriefed the team, telling us all to wait for another communique.

I must say that I'm a bit irritated. I got the original email while I was at work, and checked it on a whim just now, knowing that I wouldn't have time to work on it until tomorrow. For the mission to be solved in just a few hours is pointless for working individuals.

Let me know updates you find, and I'll post my thoughts and findings.