<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6101768229236312979</id><updated>2011-07-30T12:56:52.742-07:00</updated><category term='linux'/><category term='silly'/><category term='theory'/><category term='enum'/><category term='CLR'/><category term='GWT'/><category term='tools'/><category term='java'/><category term='static analysis'/><category term='lambda expressions'/><category term='books'/><category term='patterns'/><category term='security'/><category term='C'/><category term='localization'/><category term='culture'/><category term='C++0x'/><category term='web development'/><category term='algorithms'/><category term='lua'/><category term='complexity'/><category term='threading'/><category term='win32'/><category term='C#'/><category term='C++'/><category term='regex'/><category term='game design'/><category term='frameworks'/><category term='data structures'/><category term='world of warcraft'/><category term='pc-doctor'/><category term='template metaprogramming'/><category term='optimization'/><category term='OOP'/><category term='project management'/><category term='testing'/><category term='JavaScript'/><category term='preprocessor'/><category term='blogging'/><category term='usability'/><category term='vista'/><category term='science'/><category term='.NET'/><category term='type safety'/><category term='internal training'/><category term='language design'/><title type='text'>Fred on Programming</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>48</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-8799067292296699614</id><published>2008-12-31T07:00:00.000-08:00</published><updated>2010-04-25T16:25:31.700-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='type safety'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Namespace visibility in C#</title><summary type='text'>Java has package scoping. It allows an element to be visible only within the same namespace. It's a wonderful thing.

Here's how it works in Java:


package com.pc-doctor.mynamespace;
package class Foo { ... }


The class Foo is only visibile within mynamespace.

Even though I'm not a Java programmer, this immediately strikes me as extremely useful. Frequently, helper classes are only needed by </summary><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/8799067292296699614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/8799067292296699614'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/12/namespace-visibility-in-c.html' title='Namespace visibility in C#'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-7412651063781744414</id><published>2008-08-20T15:19:00.000-07:00</published><updated>2008-08-20T15:26:15.237-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='internal training'/><title type='text'>lnternal Training Talks at PC-Doctor</title><summary type='text'>PC-Doctor is trying to start a series of internal training talks. I'm going to give the first one next week.It looks as though there's a lot of interest from everyone on this project. Management loves the morale boost and the training that people get. Developers are excited to learn something new. QA seems excited, too!Here's the draft of my talk:It's probably worth another blog to discuss the </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/7412651063781744414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=7412651063781744414' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/7412651063781744414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/7412651063781744414'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/08/lnternal-training-talks-at-pc-doctor.html' title='lnternal Training Talks at PC-Doctor'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-1439877848790858353</id><published>2008-08-05T05:45:00.000-07:00</published><updated>2008-08-15T06:34:42.810-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='culture'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>Testing the Untested: World of Warcraft Needs Help!</title><summary type='text'>As you should know, I play World of Warcraft. It's been a great game for several years. Blizzard is making lots of money off of the game, and they are using that to put new content into the game regularly.There have been a lot of changes to the game since I started playing it. Watching these changes carefully has given a lot of circumstantial evidence to the idea that World of Warcraft is </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/1439877848790858353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=1439877848790858353' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/1439877848790858353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/1439877848790858353'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/08/testing-untested-world-of-warcraft.html' title='Testing the Untested: World of Warcraft Needs Help!'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-1370995840111173948</id><published>2008-07-30T17:00:00.000-07:00</published><updated>2008-07-30T17:00:01.436-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Fingerprint Readers Don't  Work</title><summary type='text'>A while ago, I got annoyed at a friend's computer. It had a fingerprint reader, and I wanted to play a game on it before he woke up.Fortunately, it turned out that my fingerprint worked just fine. It took a few tries, but I successfully logged in as him.He did look a bit shocked when he woke up and saw me playing a game on his supposedly secure work computer. Too bad he wasn't in the IT </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/1370995840111173948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=1370995840111173948' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/1370995840111173948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/1370995840111173948'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/07/fingerprint-readers-dont-work.html' title='Fingerprint Readers Don&apos;t  Work'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-9161380029392775525</id><published>2008-07-23T11:00:00.000-07:00</published><updated>2008-07-23T11:31:31.879-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data structures'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='threading'/><title type='text'>High Performance Multithreaded Code</title><summary type='text'>Current CPUs have several cores per CPU. If a program wants to speed up with new hardware, the program has to exploit those extra cores. Using multiple threads is, therefore, becoming extremely popular.Of course, people who talk a lot about multithreaded programming don't ever mention that most programs don't need to be any faster. While I feel obligated to point that out, this article is written</summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/9161380029392775525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=9161380029392775525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/9161380029392775525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/9161380029392775525'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/07/high-performance-multithreaded-code.html' title='High Performance Multithreaded Code'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_p1X-tuPniQU/SIcy-Rr3vPI/AAAAAAAAAAs/aYb5wWRWyGU/s72-c/mooreslaw.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-1046280125802685595</id><published>2008-07-10T12:00:00.000-07:00</published><updated>2008-07-10T12:00:01.879-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><category scheme='http://www.blogger.com/atom/ns#' term='complexity'/><title type='text'>Integration: The Cost of  Using Someone Else's Library</title><summary type='text'>I don't do much Ruby on Rails development anymore, but Andy lives right next to me at PC-Doctor. He does.Recently, he's run into an interesting problem. I've seen the problem once before in a completely different context.Once might be coincidence, but if you see the same problem twice, then it must be a real problem. :)Ruby on RailsIf you've got a product to develop, it's normally better to use </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/1046280125802685595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=1046280125802685595' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/1046280125802685595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/1046280125802685595'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/07/integration-cost-of-using-someone-elses.html' title='Integration: The Cost of  Using Someone Else&apos;s Library'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_p1X-tuPniQU/SHVzaVEQqPI/AAAAAAAAAAc/0rDDLfKYIhY/s72-c/BoostReleaseHistory.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-3593288822935196025</id><published>2008-07-07T12:00:00.000-07:00</published><updated>2008-07-07T15:21:52.993-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++0x'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Rvalue References Explained</title><summary type='text'>Thomas Becker just sent me a note about an article that he'd just written. Rvalue references  aren't in wide use, yet, and they aren't part of the official standard, either. Not many people understand them, yet. I'm sure his article will dramatically increase the number of people who understand them since Thomas is such a good writer.If you'd like to play with rvalue references after reading his </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/3593288822935196025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=3593288822935196025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/3593288822935196025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/3593288822935196025'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/07/rvalue-references-explained.html' title='Rvalue References Explained'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-613236096315943408</id><published>2008-07-02T12:00:00.000-07:00</published><updated>2008-07-02T12:00:26.001-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>Testing the Untested</title><summary type='text'>Test driven development is the cool new way to write software. TDD revolves around writing the tests for the software before or during the development of the software. If you do anything like that, then you'll end up with well tested software.One of the fantastic things about well tested software is that you can change it confidently. Rapid change is the mantra of a large number of the newer </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/613236096315943408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=613236096315943408' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/613236096315943408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/613236096315943408'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/07/testing-untested.html' title='Testing the Untested'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-3948655191816428004</id><published>2008-06-26T12:00:00.001-07:00</published><updated>2008-06-26T12:00:34.838-07:00</updated><title type='text'>What's this Blog About?</title><summary type='text'>I just switched from my company's official blog to my own blog. That's kind of exciting, but it means that absolutely know one knows about this blog. (Almost no one knew about our company blog. It was mostly employees.)That's great! It lets me talk to myself for a bit while I try to organize the blog a bit. :)I want to answer a simple question first. What the heck is this blog about?Well, it's </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/3948655191816428004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=3948655191816428004' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/3948655191816428004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/3948655191816428004'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/06/whats-this-blog-about_26.html' title='What&apos;s this Blog About?'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-3571116822155425871</id><published>2008-06-18T11:00:00.000-07:00</published><updated>2008-06-18T11:05:16.804-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='science'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>Science in World of Warcraft</title><summary type='text'>Eleven million people play Blizzard's World of Warcraft game. Blizzard is watching them, and they are recording what they do. Almost everything is recorded. Even obscure things like what is said in chat channels is stored.In other words, Blizzard knows what you're doing and what you're saying. They keep these records for a long time, too, so let's assume that they can track what you've done over </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/3571116822155425871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=3571116822155425871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/3571116822155425871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/3571116822155425871'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/06/science-in-world-of-warcraft.html' title='Science in World of Warcraft'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-6043267619000375147</id><published>2008-06-13T12:00:00.000-07:00</published><updated>2008-06-14T20:21:23.269-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><category scheme='http://www.blogger.com/atom/ns#' term='pc-doctor'/><title type='text'>Why I'm Creating an Independent Blog</title><summary type='text'>I'm separating my personal blog from PC-Doctor's blog. This isn't an uncommon thing to do, but I suspect that some people will wonder if something went wrong. Nothing did. Instead, I expect this to benefit everyone. Read on to find out how.I'll continue to contribute to PC-Doctor's blog, but I will actively market only the new blog. Since neither I nor anyone else currently does any marketing for</summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/6043267619000375147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=6043267619000375147' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/6043267619000375147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/6043267619000375147'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/06/why-im-creating-independent-blog.html' title='Why I&apos;m Creating an Independent Blog'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-7203492492665314803</id><published>2008-06-03T15:44:00.000-07:00</published><updated>2008-06-14T05:27:34.376-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='enum'/><category scheme='http://www.blogger.com/atom/ns#' term='preprocessor'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Enums in C++ Suck</title><summary type='text'> Like most strongly typed languages, C++ has a way to group a set of constants together as their own type called enums. Enums are extremely useful in a wide variety of circumstances. However, enums in C++ have a lot of problems, and, in fact, they're really a mess. I'm certainly not the only person to complain about this, either.Enums don't fit in with the rest of the language. They feel like </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/7203492492665314803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=7203492492665314803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/7203492492665314803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/7203492492665314803'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/06/enums-in-c-suck.html' title='Enums in C++ Suck'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-3500859383725217677</id><published>2008-05-26T12:00:00.000-07:00</published><updated>2008-06-14T05:28:48.175-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='theory'/><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><title type='text'>A Theory of Scheduling Low Priority Work</title><summary type='text'> PC-Doctor delivers an enormous number of different products to different customers. Each customer gets a different product, and they get frequent updates to that product as well. Delivering these products requires complex synchronization between dozens of engineers. We've gotten great at scheduling the most important work. Our clients love us for that.However, the low priority projects get </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/3500859383725217677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=3500859383725217677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/3500859383725217677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/3500859383725217677'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/05/theory-of-scheduling-low-priority-work.html' title='A Theory of Scheduling Low Priority Work'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-35621032306368975</id><published>2008-05-21T12:00:00.000-07:00</published><updated>2008-06-14T05:29:58.762-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Making Regexes Readable</title><summary type='text'> Regular expressions are extremely powerful. They have a tendency, however, to grow and turn into unreadable messes. What have people done to try to tame them?Perl is often on the forefront of regex technology. It allows multiline regexes with ignored whitespace and comments. That's nice, and it's a great step in the right direction. If your regex grows much more than that example, then you'll </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/35621032306368975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=35621032306368975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/35621032306368975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/35621032306368975'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/05/making-regexes-readable.html' title='Making Regexes Readable'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-3604200526654703100</id><published>2008-05-12T12:00:00.000-07:00</published><updated>2008-06-14T05:36:15.639-07:00</updated><title type='text'>Anonymous Methods in C# Cause Subtle Programming Errors.</title><summary type='text'>                 Lambda expressions and anonymous methods in C# are more complicated than you probably think. Microsoft points out that an incomplete understanding of them can result in "subtle programming errors". After running into exactly that, I'd agree. While I haven't tried it, Lambda expressions in C# 3 are supposed to do exactly the same thing.                                 Here's some </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/3604200526654703100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=3604200526654703100' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/3604200526654703100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/3604200526654703100'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/05/anonymous-methods-in-c-cause-subtle.html' title='Anonymous Methods in C# Cause Subtle Programming Errors.'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-2499405807217997978</id><published>2008-05-05T12:00:00.000-07:00</published><updated>2008-06-14T05:40:37.542-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='frameworks'/><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><title type='text'>Developing a New Framework</title><summary type='text'> This post is a bit of a change for me. I'm actually going to write about my work for PC-Doctor! I'm actually a bit embarrassed at how rare that's been.I want to talk about how to design a brand new framework. It's not something that everyone has to do, and it's not something that anyone does frequently. However, there's very little information on the web about the differences between creating a </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/2499405807217997978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=2499405807217997978' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/2499405807217997978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/2499405807217997978'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/05/developing-new-framework.html' title='Developing a New Framework'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-571363747483890578</id><published>2008-04-27T15:28:00.000-07:00</published><updated>2008-06-14T05:41:51.237-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++0x'/><category scheme='http://www.blogger.com/atom/ns#' term='lambda expressions'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>C++0x: The Lambda Expression Debate</title><summary type='text'>he next C++ standard (C++0x) will have lambda expressions as part of the standard. N2550 introduces them. It's a short document, and it's not too painful to read. Go ahead and click it.Like many new C++ standards, it's not clear yet how the new feature is going to be used. Michael Feathers has already decided not to use them. At least one other person seems to mostly agree. I, on the other hand, </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/571363747483890578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=571363747483890578' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/571363747483890578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/571363747483890578'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/04/c0x-lambda-expression-debate.html' title='C++0x: The Lambda Expression Debate'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-230991207627726932</id><published>2008-04-23T15:26:00.000-07:00</published><updated>2008-06-14T05:43:26.878-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='type safety'/><category scheme='http://www.blogger.com/atom/ns#' term='language design'/><title type='text'>The Next JavaScript...</title><summary type='text'>ECMAScript 4.0 (ES4) is on its way. This will be the next standard for JavaScript. It's not going to be usable on web pages for a while, though. In fact, I suspect I won't be using it on my web page for at least 5 years. The problem is simple: as long as people still use older browsers, you won't be able to assume that people have it.However, the features in it are an interesting look at what the</summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/230991207627726932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=230991207627726932' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/230991207627726932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/230991207627726932'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/04/next-javascript.html' title='The Next JavaScript...'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-256107756451209283</id><published>2008-04-15T12:00:00.000-07:00</published><updated>2008-06-14T05:45:01.910-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><category scheme='http://www.blogger.com/atom/ns#' term='complexity'/><title type='text'>The Cost of Complexity</title><summary type='text'> This article is going to have more questions in it than answers. It's about a problem in software development that I'm not sure I've worried about enough. I've certainly thought about it for specific cases, but this is the first time I've tried to think about the problem in general.My main question revolves around the cost of complexity in software. There is certainly a large cost in making </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/256107756451209283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=256107756451209283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/256107756451209283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/256107756451209283'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/06/cost-of-complexity.html' title='The Cost of Complexity'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-2032722891303686950</id><published>2008-04-07T12:00:00.000-07:00</published><updated>2008-06-14T05:47:26.823-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='template metaprogramming'/><title type='text'>The Visitor Pattern as an Alternative to OOP</title><summary type='text'>The visitor pattern from the GoF is frequently overlooked by programmers who are used to object oriented programming. However, in some cases, it is significantly cleaner and easier to use than an overridden function. Unfortunately, it's easier to misuse as well, and, when it is used poorly, it can be a real mess.I was going to tell you about my static analysis project and how I'm using the </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/2032722891303686950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=2032722891303686950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/2032722891303686950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/2032722891303686950'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/04/visitor-pattern-as-alternative-to-oop.html' title='The Visitor Pattern as an Alternative to OOP'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-6588619908004786511</id><published>2008-04-03T12:00:00.000-07:00</published><updated>2008-06-14T05:49:45.372-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Alternatives to Object Oriented Programming</title><summary type='text'> Object oriented programming is extremely popular these days. It's so popular that some people aren't even aware of alternatives to it. The reason its popular is clear: OOP works well a lot of the time. Traditional object oriented programming styles have some significant disadvantages in some circumstances, however. Some of the alternatives are worth looking into when those disadvantages become </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/6588619908004786511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=6588619908004786511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/6588619908004786511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/6588619908004786511'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/04/alternatives-to-object-oriented.html' title='Alternatives to Object Oriented Programming'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-8658791006628388050</id><published>2008-03-21T15:02:00.000-07:00</published><updated>2008-06-14T05:51:47.527-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='static analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='lua'/><category scheme='http://www.blogger.com/atom/ns#' term='language design'/><title type='text'>Requirements of a Language to Statically Analyze</title><summary type='text'> For those of you just tuning in, I'm working on a project to statically analyze an untyped code base to try to bring some of the advantages of typed languages to the code base.The first step is to figure out which language I should write a static analysis tool for. This is obviously an important decision with quite a few implications both at the beginning, during the creation of the parser, and </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/8658791006628388050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=8658791006628388050' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/8658791006628388050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/8658791006628388050'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/03/requirements-of-language-to-statically.html' title='Requirements of a Language to Statically Analyze'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-5794317689272729740</id><published>2008-03-18T12:00:00.000-07:00</published><updated>2008-06-14T06:06:53.275-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='static analysis'/><title type='text'>Mixing C and C++ Code</title><summary type='text'> One of the early steps to my static analysis project is to parse the language that I'm going to analyze. I'd like to form a relatively clean Abstract Syntax Tree that I can play with later.C++ has a lot of advantages over C for this sort of thing. It's got an enormous amount of machinery that can be used to build high level abstractions without sacrificing much more runtime overhead than you're </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/5794317689272729740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=5794317689272729740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/5794317689272729740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/5794317689272729740'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/03/mixing-c-and-c-code.html' title='Mixing C and C++ Code'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-7648404722555116871</id><published>2008-03-10T12:00:00.000-07:00</published><updated>2008-06-14T06:10:19.092-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='static analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='language design'/><title type='text'>Static Analysis of Untyped Languages</title><summary type='text'>                 A while ago I wrote about whether or not untyped languages were a good idea or a bad idea. I didn't come to any real conclusions at the time, and it's bothered me. I'd like to outline a way to gather some real conclusions now. I still won't be able to come to a conclusion, but I think this approach sounds interesting.There are a number of advantages and disadvantages to untyped </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/7648404722555116871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=7648404722555116871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/7648404722555116871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/7648404722555116871'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/03/static-analysis-of-untyped-languages.html' title='Static Analysis of Untyped Languages'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-7463318438558949067</id><published>2008-02-13T12:00:00.000-08:00</published><updated>2008-06-14T06:12:03.822-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='static analysis'/><title type='text'>Tools for Writing a Parser</title><summary type='text'> People have been writing tools to generate scanners and parsers for decades. YACC is probably the most famous. It was created in the 1970s, and, since it stands for Yet Another Compiler Compiler, it probably wasn't the first attempt at the problem.YACC is a pain to use, though. It uses a parsing algorithm that has great worst case performance but causes massive headaches for programmers. </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/7463318438558949067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=7463318438558949067' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/7463318438558949067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/7463318438558949067'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/02/tools-for-writing-parser.html' title='Tools for Writing a Parser'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-1887057217577349044</id><published>2008-02-05T12:00:00.000-08:00</published><updated>2008-06-14T06:14:59.603-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='CLR'/><title type='text'>Interfaces, Friends, and the .NET Framework</title><summary type='text'>The .NET Framework has a lot of really great things in it. I've just started playing with a few corners of it, and I love the amount of stuff that it's got in it. Some things really irritate me, though, and it's a lot more satisfying to talk about that stuff!C# and the CLR make it really hard to hide information. First of all, the .NET framework is built around inheritance. Everything is </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/1887057217577349044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=1887057217577349044' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/1887057217577349044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/1887057217577349044'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/02/interfaces-friends-and-net-framework.html' title='Interfaces, Friends, and the .NET Framework'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-2151665016359757395</id><published>2008-01-14T14:36:00.000-08:00</published><updated>2008-06-14T06:16:26.806-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='CLR'/><title type='text'>Exception Safety in C#</title><summary type='text'>C# vs. C++C# tries to perform resource management through finally clauses and the garbage collector. This is radically different from C++'s approach. C++ executes destructors (which do all of the resource cleanup in modern C++) in a deterministic order.While exception safety is certainly possible in C#, it is potentially error-prone. It frequently relies on the user of a class putting the correct</summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/2151665016359757395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=2151665016359757395' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/2151665016359757395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/2151665016359757395'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/01/exception-safety-in-c.html' title='Exception Safety in C#'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-5232808386768435709</id><published>2007-12-14T14:32:00.000-08:00</published><updated>2008-06-14T06:18:36.597-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='frameworks'/><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><title type='text'>Interface Design: APIs as a User Interface</title><summary type='text'>                 This article closely parallels  Interface Design: World of Warcraft vs. Excel. In that article, I claim that UI designers can learn from game designers. Now I'm going to claim that library authors can learn from UI designers.Library authors write code that is used by other programmers. Their interface is called their API, and, like a GUI, it is all the user has to see in order to</summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/5232808386768435709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=5232808386768435709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/5232808386768435709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/5232808386768435709'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/12/interface-design-apis-as-user-interface.html' title='Interface Design: APIs as a User Interface'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-1757944123461140325</id><published>2007-12-05T12:00:00.000-08:00</published><updated>2008-06-14T06:20:14.502-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>Books that all Programmers Should Read</title><summary type='text'> I read a lot of programming books. However, I haven't read many that all programmers should read. Programmers do a lot of different things, and it's pretty darn hard to write something for all of them.In fact, I can only think of two books. If you know of another, I'd love to hear about it.How to Write CodeAll programmers write code. Furthermore, writing code is a skill that transcends language.</summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/1757944123461140325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=1757944123461140325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/1757944123461140325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/1757944123461140325'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/12/books-that-all-programmers-should-read.html' title='Books that all Programmers Should Read'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-3806701409106674477</id><published>2007-11-27T12:00:00.000-08:00</published><updated>2008-06-14T06:22:03.332-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data structures'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><title type='text'>What's that Data Structures Class for?</title><summary type='text'>I assume that when computer science students go through college, they all take a required course in data structures. If I were designing a course like this, I'd make them learn how a variety of useful data structures worked. Certainly if you read a book on data structures you'll learn this sort of thing.How many programmers actually need this information? In today's world, there are a lot of </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/3806701409106674477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=3806701409106674477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/3806701409106674477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/3806701409106674477'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/11/whats-that-data-structures-class-for.html' title='What&apos;s that Data Structures Class for?'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-8379102194008138460</id><published>2007-11-07T12:00:00.000-08:00</published><updated>2008-06-14T06:22:59.325-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>Model View Controller and Beautiful Code</title><summary type='text'>I've been reading Beautiful Code. It's a fun book with chapters written by a few well-known programmers about some beautiful code that they've written or seen. They all have wildly different views on what makes code beautiful, so it's pretty entertaining. It's fun seeing what programmers I've heard of think is beautiful. Brian Kernighan, for example, wrote about some string processing code. I </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/8379102194008138460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=8379102194008138460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/8379102194008138460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/8379102194008138460'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/11/model-view-controller-and-beautiful.html' title='Model View Controller and Beautiful Code'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-3246059475950475632</id><published>2007-10-26T12:00:00.000-07:00</published><updated>2008-06-14T06:24:22.840-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='threading'/><title type='text'>Futexes are Fun</title><summary type='text'>Futexes are a synchronization primitive that is new to the 2.6 Linux kernel. If you're like me and had never heard of them before a few days ago, then I recommend reading Ulrich Drepper's article, Futexes are Tricky. To a Windows programmer like myself, futexes are a wonderful idea that would be lots of fun to play with. Essentially, they're the antithesis of Window's synchronization model.Hmmm. </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/3246059475950475632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=3246059475950475632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/3246059475950475632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/3246059475950475632'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/10/futexes-are-fun.html' title='Futexes are Fun'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-6011174828923377422</id><published>2007-10-16T12:00:00.000-07:00</published><updated>2008-06-14T06:25:08.514-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silly'/><title type='text'>Bonus Day at PC-Doctor: They Gave Me a Coffin!</title><summary type='text'>This morning was PC-Doctor's 14th anniversary! To celebrate, the management team at PC-Doctor put in overtime and bought a lot of goodies to give away to employees.Wow. That's pretty cool.Maybe I'll win a 50" TV or some Raiders tickets or the massage chair.The management team picks names, ostensibly at random, and when someone's name comes up, they run over to a pile of stuff they choose and </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/6011174828923377422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=6011174828923377422' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/6011174828923377422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/6011174828923377422'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/10/bonus-day-at-pc-doctor-they-gave-me.html' title='Bonus Day at PC-Doctor: They Gave Me a Coffin!'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-2786240737559297892</id><published>2007-10-08T12:00:00.000-07:00</published><updated>2008-06-14T06:25:54.831-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><category scheme='http://www.blogger.com/atom/ns#' term='localization'/><title type='text'>RTL Languages and International Usability</title><summary type='text'>When you localize a product into a right to left language such as Hebrew or Arabic, how much do you have to change the position of UI elements?It's a pretty simple question, and I think the answer is also pretty simple. If you have to have your eye on the right side of the page to start reading a sentence, then your eye is going to start on the right side of the page.As far as I can tell, that's </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/2786240737559297892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=2786240737559297892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/2786240737559297892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/2786240737559297892'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/10/rtl-languages-and-international.html' title='RTL Languages and International Usability'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-2966623303538958477</id><published>2007-10-05T13:42:00.000-07:00</published><updated>2008-06-14T06:26:46.801-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='win32'/><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><category scheme='http://www.blogger.com/atom/ns#' term='threading'/><title type='text'>Fairness in Win32 Lock Objects</title><summary type='text'>Windows Vista has given up fairness in their synchronization objects. In fact, Windows XP isn't guaranteed to be fair, but Vista goes quite a bit further.The issue and the solution is explained pretty well by Joe Duffy over here.  At first glance, it looks as though this could cause some really bad thread starvation in some circumstances.The change to unfair locks clearly has the risk of leading </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/2966623303538958477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=2966623303538958477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/2966623303538958477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/2966623303538958477'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/10/fairness-in-win32-lock-objects.html' title='Fairness in Win32 Lock Objects'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-8397982919243709189</id><published>2007-09-17T12:00:00.000-07:00</published><updated>2008-06-14T06:27:59.907-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='world of warcraft'/><title type='text'>Interface Design: World of Warcraft vs. Excel</title><summary type='text'>Blizzard's World of Warcraft (WoW) game is extremely successful. For those who haven't been paying attention, it's a game where you coinhabit a fantasy world with thousands of other players. There are over 9 million people who play the game enough to pay Blizzard a subscription to play. The game is successful, and, in part, it's because of the interface. There are some lessons in Blizzard's </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/8397982919243709189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=8397982919243709189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/8397982919243709189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/8397982919243709189'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/09/interface-design-world-of-warcraft-vs.html' title='Interface Design: World of Warcraft vs. Excel'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-5065263741824561783</id><published>2007-09-10T12:00:00.000-07:00</published><updated>2008-06-14T06:29:06.173-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>C++/CLI vs. C#</title><summary type='text'>We're thinking about writing a new application in .NET. I tend to believe that there's not much difference between any of the languages that Microsoft has created for .NET. VB is essentially C# with different keywords and punctuation, for example. You're certainly not going to change the design of your code because you had to write end instead of }, so, for a long time, it seemed irrelevant to </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/5065263741824561783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=5065263741824561783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/5065263741824561783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/5065263741824561783'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/09/ccli-vs-c.html' title='C++/CLI vs. C#'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-983689053516687745</id><published>2007-09-04T12:00:00.000-07:00</published><updated>2008-06-14T06:30:19.467-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silly'/><category scheme='http://www.blogger.com/atom/ns#' term='pc-doctor'/><title type='text'>PC-Doctor's Robotics Lab</title><summary type='text'>In August 2007's IEEE Spectrum they had an interesting article about Microsoft's robotics lab.I do have some highly speculative and mildly interesting thoughts about PC-Doctor's role in such an industry. Before I get there, though, I want to comment on how, when Bill Gates wants to put together an "elite" team of programmers to do something that's new for Microsoft, they take people who have been</summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/983689053516687745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=983689053516687745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/983689053516687745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/983689053516687745'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/09/pc-doctors-robotics-lab.html' title='PC-Doctor&apos;s Robotics Lab'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-690800516433487367</id><published>2007-08-27T12:00:00.000-07:00</published><updated>2008-06-14T06:31:34.096-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='frameworks'/><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='GWT'/><title type='text'>Google Web Toolkit: First Impressions</title><summary type='text'>I've starting converting a complex web app from being purely JavaScript and browser plugin based to using the Google Web Toolkit for the JavaScript part of the project. See my previous blog post about this.Unfortunately for me, this project is not high enough priority to play with it for long periods of time. However, I have managed to start work and get some basic functionality working. It was </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/690800516433487367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=690800516433487367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/690800516433487367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/690800516433487367'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/08/google-web-toolkit-first-impressions.html' title='Google Web Toolkit: First Impressions'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-772432636264273123</id><published>2007-08-20T12:00:00.000-07:00</published><updated>2008-06-12T12:58:30.907-07:00</updated><title type='text'>Why Aren't PCs as Pretty as Macs?</title><summary type='text'>If you walk into an Apple store, and you manage to find the corner that sells Macs, you'll find some fairly attractive looking machines. A lot of them aren't big black boxes, for example. Why can't I buy a PC that looks like this?You probably want me to say that gaming PCs are designed to be attractive. That's true, as long as you believe that any money spent on appearance looks good. Alienware </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/772432636264273123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=772432636264273123' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/772432636264273123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/772432636264273123'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/08/why-arent-pcs-as-pretty-as-macs.html' title='Why Aren&apos;t PCs as Pretty as Macs?'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-4513302483122001534</id><published>2007-08-14T12:00:00.000-07:00</published><updated>2008-06-14T06:33:10.087-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pc-doctor'/><title type='text'>Computer: Heal Yourself!</title><summary type='text'>The Autonomic Computing Initiative at IBM tries to do some really interesting things. The goal for IBM is to make server hardware run without much human intervention. IBM breaks the problem down into four different parts:1. Automatically install and configure software2. Automatically find and correct hardware faults3. Automatically tweak software and hardware for optimal performance4. </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/4513302483122001534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=4513302483122001534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/4513302483122001534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/4513302483122001534'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/08/computer-heal-yourself.html' title='Computer: Heal Yourself!'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-3956721970500746772</id><published>2007-08-08T12:00:00.000-07:00</published><updated>2008-06-14T06:35:28.913-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='threading'/><title type='text'>Multithreaded Programming for the Masses</title><summary type='text'>Writing software on multicore CPUs is a hard problem. The chip designers have told us that they're not going to do all the work for us programmers anymore. Now we have to do something. (Here's a good description of the problem from Herb Sutter.) Writing multithreaded apps is not easy. I've done a lot of it in C++, and the tools, the libraries, and the design patterns just don't make it trivial. I</summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/3956721970500746772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=3956721970500746772' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/3956721970500746772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/3956721970500746772'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/08/multithreaded-programming-for-masses.html' title='Multithreaded Programming for the Masses'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-2215826515784882612</id><published>2007-08-07T12:00:00.000-07:00</published><updated>2008-06-14T06:36:35.138-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='culture'/><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><category scheme='http://www.blogger.com/atom/ns#' term='pc-doctor'/><title type='text'>Exploiting an Industry's Culture</title><summary type='text'>Sometimes, an industry becomes uncreative or stops taking risks. This lets an outsider come in and gain market share by exploiting the mistakes made by an entire industry. It's fun to look for these industries and understand what they're doing wrong.My favorite example is the video game market. (Roger Ehrenberg has a good summary of the Xbox side of this.) Ten years ago, everyone in the video </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/2215826515784882612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=2215826515784882612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/2215826515784882612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/2215826515784882612'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/08/exploiting-industrys-culture.html' title='Exploiting an Industry&apos;s Culture'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-2869871992782140419</id><published>2007-08-06T12:00:00.000-07:00</published><updated>2008-06-14T06:37:47.690-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><title type='text'>Explanations in user interfaces are bad!</title><summary type='text'>When I was doing the design for the BTO Support Center website, I had some troubles explaining to some coworkers why helpful text shouldn't be added to explain the interface. At the time, I couldn't explain it well, but now that I've thought about it a while, I think I have a better way to describe it.My new argument assumes that the interface is explorable. Let's start with that.If a user is </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/2869871992782140419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=2869871992782140419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/2869871992782140419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/2869871992782140419'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/08/explanations-in-user-interfaces-are-bad.html' title='Explanations in user interfaces are bad!'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-7852204710511819673</id><published>2007-07-31T12:00:00.000-07:00</published><updated>2008-06-14T06:38:52.953-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='type safety'/><category scheme='http://www.blogger.com/atom/ns#' term='language design'/><title type='text'>Choosing a programming language: Is type safety worth it?</title><summary type='text'>I'm a big fan of the strongly typed language vs weakly typed language debate. It's old, but it's also important.I'm revisiting this topic because I'm trying to decide exactly that problem on a project that I'm working on. In my case, I'm torn between client side JavaScript on the web browser and Google Web Toolkit (GWT) compiled to JavaScript. The only reason I have to mention this is because I </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/7852204710511819673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=7852204710511819673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/7852204710511819673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/7852204710511819673'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/07/choosing-programming-language-is-type.html' title='Choosing a programming language: Is type safety worth it?'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-1763067257037904603</id><published>2007-07-27T12:00:00.000-07:00</published><updated>2008-06-14T06:39:58.815-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='win32'/><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><title type='text'>ActiveX is still around!</title><summary type='text'>ActiveX has been around a while. When Microsoft was battling Netscape, they needed a way to put custom, active content on web pages. Java was being used by Netscape, and people thought it was great. Microsoft needed something they could develop quickly that would let programmers put new types of content on the web browser. ActiveX was born.The basic idea behind ActiveX is really simple. A </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/1763067257037904603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=1763067257037904603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/1763067257037904603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/1763067257037904603'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/07/activex-is-still-around.html' title='ActiveX is still around!'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-5386282260102812492</id><published>2007-07-18T12:00:00.000-07:00</published><updated>2008-06-14T06:40:50.095-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><title type='text'>What is usability testing all about?</title><summary type='text'>The phrase usability testing gets thrown around a lot. It sounds great when you're planning a project. If you say you'll do some usability testing, then people get a warm feeling about your project plan.After discussing it with a few people, I've concluded that there are a lot of myths out there about usability testing. I'll outline all of them that I've either heard from someone or thought to </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/5386282260102812492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=5386282260102812492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/5386282260102812492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/5386282260102812492'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2008/06/what-is-usability-testing-all-about.html' title='What is usability testing all about?'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6101768229236312979.post-1822590237286611534</id><published>2007-05-15T12:00:00.000-07:00</published><updated>2008-06-14T06:41:38.129-07:00</updated><title type='text'>How to become a programmer in ten easy steps.</title><summary type='text'>A cousin of mine recently told me that he wants to switch jobs. He wanted to become a programmer! Specifically, he wanted some advice on becoming a programmer quickly. He's a really smart guy. I have no doubt that he can learn everything he needs to become a programmer.Can he do it quickly? Well, I didn't learn very quickly. I started somewhere in elementary school, and I did it as a hobby for a </summary><link rel='replies' type='application/atom+xml' href='http://fonp.blogspot.com/feeds/1822590237286611534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6101768229236312979&amp;postID=1822590237286611534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/1822590237286611534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6101768229236312979/posts/default/1822590237286611534'/><link rel='alternate' type='text/html' href='http://fonp.blogspot.com/2007/05/how-to-become-programmer-in-ten-easy.html' title='How to become a programmer in ten easy steps.'/><author><name>Fred Bertsch</name><uri>http://www.blogger.com/profile/01913643363180689355</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
