Archives
-
Why CodingHorror is horribly wrong about Blacklists and Virus Scanners
Jeff and I had an interesting debate on virus scanners a few weeks ago. He posted his take on the conversation yesterday, and (surprise!) we both think we won the argument. I believe the difference of opinion really comes down to a few different assumptions about the problem we're trying to solve:
- Different classes of Anti-Virus Software (Quality AV Software vs. Bundleware)
- Antivirus Effectiveness (Is it really just 33% effective?)
- The Goal of Virus Protection (Risk Management vs. Invincibility)
- Modeling the Threat (Known malware vs. New malware)
- Approach to Security (Practical vs. Theoretical)
- Productivity Tradeoffs (Virus Scanning vs. Running As Administrator)
So, let's go through the list:
-
Ten Tips for a Happy Upgrade to Visual Studio 2008 (Release)
Visual Studio 2008 has been out for over a week. I've upgraded three machines (two Vista, one XP) from Beta 2 to RTM, then upgraded a couple of projects. I've also been watching blog posts and listening in at the Twitter water-cooler to hear about other developers' experiences, problems, and recommendations as they go through the upgrade experience. So, here's my quick guide to a smooth upgrade to Visual Studio 2008.
-
Thanksgiving as a lifestyle
Disclaimers: I'm really getting out of character here, as I tend to keep focused on the code on my blog, but Rob's post inspired me... If code's what you're after, these aren't the droids you're looking for. You can move along. You're still here? Well, then, you should know that this is written as much for me as for anyone else. Hello, future Jon (apparently in need of a pep talk)!
-
Rebooting the Monoppix project
Roiy and I have decided it's high time for another Monoppix release. Monoppix is a Linux Live CD pre-configured with Mono, MySQL, and a bunch of sample applications and training material. It's all designed to make it ridiculously simple to work (and play) with a configured Linux / Mono setup without having to spend hours or days getting it all set up.
-
I'll be at DevConnections & OpenForce November 5-8
-
Silverlight doesn't require any JavaScript
It's easier to understand Silverlight when you understand that, at its heart, it's a simple browser plug-in. JavaScript is extremely useful for browser detection, and it's the only way to interact with Silverlight 1.0, but JavaScript not at all required to display a Silverlight control with XAML content.
-
Speaking at the Silicon Valley Code Camp on 10/27
I'm presenting two sessions at the Silicon Valley Code Camp on 10/27. So, drop everything, sign up for my sessions, and get to Silicon Valley this weekend!
-
Creating Zip archives in .NET (without an external library like SharpZipLib)
SharpZipLib provides best free .NET compression library, but what if you can't use it due to the GPL license? I'll look at a few options, ending with my favorite - System.IO.Packaging.
-
I'm an ASP.NET MVP
I'm very happy to announce I was selected as an ASP.NET MVP. Most software developers I've told about this, after congratulating me, confess that they don't really know what an MVP is. I wasn't 100% sure myself. Here's what the MVP site says:
-
Our ASP.NET book is out. Read some chapters for free!
I'm told that there are still a few people who don't read CodingHorror.com and Haacked.com. These people call themselves the Amish.
-
[ASP.NET] Setting the DefaultButton for a Login control
One underused feature in ASP.NET 2.0 is the ability to set a default button for a form. In the past, this often required some extra JavaScript, and was just enough of a pain that it didn't get done until someone asked for it. The ASP.NET form element has DefaultButton and DefaultFocus properties which do exactly what you'd think. For instance, a site I'm working on has a search bar in the header, so I added the following to the form control. Default focus goes to the search textbox, and pressing the enter key submits the form.
-
Gravatar 201: Advanced Gravatars in ASP.NET
I know that's a dumb title. I just couldn't help myself. This post wraps up my Gravatar trilogy:
-
Avatars? Isn't that some kind of D&D comic book stuff?
My previous post dug into using the Gravatar service to add avatar images to your community website. Afterwards, I realized that I didn't really make the case for why you should care about avatars. Yeah, the word avatar may make you think of fantasy gamers jabbering about Yoda's lineage on some forum.
-
Adding Gravatars to your ASP.NET site in a few lines of code
Gravatar (Globally Recognized Avatar) provides a simple way to add avatars to community based sites. Users set up an account at http://site.gravatar.com with an avatar image and an e-mail address, then their avatar shows up on any site which support Gravatars - blogs, community sites, etc. Gravatar take care of hosting and resizing the images, handles things like decency ratings, and they've got a nice UI for image upload / cropping.
-
CSSVista - Edit your CSS code live on both Internet Explorer and Firefox
CSS editing is extremely frustrating without immediate feedback. Until a few years ago, you didn't really have a choice: you typed some CSS, you refreshed the page, you tried to figure out what was wrong, repeat until you hopefully got it working.
-
Taking CSS beyond a simple style library
CSS based design is really all about your HTML structure. We'll look at bad examples, then good examples. Finally, I'll point out some resources for generating stylable HTML in ASP.NET.
-
[Tip] Use RUNAS to set your Windows Auth domain for database connections
Ever run into problems connecting to a database using Windows Authentication when you're not on that domain? I sure have - I was connecting over VPN, wanting to use SQL Server Management Studio, but my VPN account wasn't in the correct domain to authenticate. I ended up just using Remote Desktop whenever I needed to connect to that database for the length of that project... which dragged out more than year. Johnny Coder ran into it, too, but he's got the solution:
-
Why aren't Windows file copies restartable?
Windows has supported restartable file copies for a while. CopyFileEx() has supported COPY_FILE_RESTARTABLE for a long, long time. ROBOCOPY has handled restartable file copies since Windows NT4 - maybe eight years ago? So you might think Windows Explorer would handle restartable file copies. Unfortunately, here's what you get when your connection drops for even a second:
-
Easier VPN connections from a Windows desktop
Connecting to a VPN in Windows is a bit painful if you do it frequently. It's a relatively simple task, but it's "death by a thousand right clicks", and it takes a good fifteen seconds. If you're on and off VPN's frequently, it's worth taking the time to improve the process.
-
We should be virtualizing Applications, not Machines
One of the benefits of my new job at Vertigo Software is that I have more frequent opportunities to talk with my co-worker, Jeff Atwood. If everything goes right, we argue... because if we agree, neither of us is going to learn anything. Recently, we argued about virtual machines. I think machine virtualization is hugely oversold. We let the technical elegance (gee whiz, a program that lets me pretend to run another computer as another program!) distract us from the fact that virtual machines are a sleazy, inelegant hack.
-
New Job at Vertigo Software
I just finished my second week as Vertigo Software's newest employee. You might know Vertigo from their work on cool projects like Family.Show, or you may have seen or heard Vertigo's CEO Scott Stanfield, or you may have noticed that funny upside down / backwards logo on Jeff Atwood's CodingHorror blog.
-
The real reason SELECT * queries are bad: index coverage
Are SELECT * queries bad? Sure, everyone know that. But, why?
It's returning too much data, right?
That's the common answer, but I don't think it's the right one. If you're working with a reasonably normalized database, the actual network traffic difference is pretty small.
Let's take a look at a sample. The following two queries select 326 rows from the TransactionHistoryArchive table in the AdventureWorks database (which has a total of 89K rows). The first uses a SELECT * query, the second selects a specific column:
-
[T-SQL] Getting distinct, current entries from tables with timestamp / datetime fields
It's relatively easy to store data with a time dimension, but querying it is another matter. If you select from a temporal tables (one which includes historical information indicated by a timestamp or datetime column) based on your ID, you'll get a lot of duplicate records; only one or a few of those records will be applicable to a given time or timespan.
-
Presentation tricks - Command Windows
Time management is a big part of a technical presentation. You want your demos to go fast enough to keep your audience's attention, but you don't want to gloss over details and lose them. Here are a few tricks I've used when showing something command line operations at a DOS prompt.
-
SubSonic - Code Camp slides posted
Slides and sample code from my talk on SubSonic from the SoCal Code Camp a week ago are available here. The slides were pretty light since my talk was geared towards building some very simple sample pages on the fly.
-
Checkbox Grids in ASP.NET
A simple checkbox grid is often the best user interface for mapping multiple selections in multiple categories:
-
Silverlight 1.1 (Alpha) cross domain webservice access makes mashups tricky
Any web mashups, by definition, require cross-domain calls. Those cross-domain calls may happen on the client (in the browser) or on the server. Regardless of the client technology (AJAX, Flash, Silverlight, etc.), cross domain calls on the client are always more complex that server-side cross-domain calls, and for good reason. It's tricky in AJAX, and it's downright difficult in Silverlight. You'll know that Silverlight development has become more widespread when you hear a lot more complaints about this problem.
-
Some keyboard input tricks for Silverlight 1.1 (Alpha)
Here are a few tricks I learned while doing my "hello world" maze game in Silverlight 1.1.
-
Speaking on SubSonic at the San Diego Code Camp this Saturday
I'll be presenting a session at the San Diego Code Camp this Saturday (6/30/07) titled "Using SubSonic to built ASP.NET applications that are good, fast, and cheap". I'll do a quick overview SubSonic in general, but spend most of the time building out a website. If you're interested in following along on you laptop, be sure to grab of SubSonic 2.0.2 (the latest release)from CodePlex.
-
The value of "good enough" technology
Twitter drives all my tech-savvy friends crazy. We all agree that the idea - a simple mix of blog, chat, and IM - is a good one. However the site does very little, and what it does it does poorly - slow response, frequent outages, etc. Most developers figure they could write a "better Twitter" in a lazy afternoon, and some already have. Good idea, poor execution, and yet... it's good enough.
-
Silverlight content only prints in IE (for now)
Last night I made a simple Silverlight maze generator for my 6 year old daughter, who's really into mazes right now. When I tried to print the resulting mazes, I found that the Silverlight content was was blank in Firefox (left), but worked in IE (right):
-
[Silverlight] "AG_E_RUNTIME_MANAGED_ACTIVATION" = You don't have Silverlight 1.1 installed
I'm thinking a better error message might be in order when folks try to view Silverlight 1.1 content with managed code and only have Silverlight 1.0 installed, but for now this is what you get (obviously the last three lines will vary depending on the actual XAML content):
-
[SQL Server Analysis Services] - "Errors in the metadata manager" when restoring a backup
I had trouble restoring a SQL Server 2005 Analysis Services backup today due to "Errors in the metadata manager" messages:
The ddl2:MemberKeysUnique element at line 243, column 28420 (namespace http://schemas.microsoft.com/analysisservices/2003/engine/2) cannot appear under Load/ObjectDefinition/Dimension/Hierarchies/Hierarchy.
Errors in the metadata manager. An error occurred when instantiating a metadata object from the file, '\\?\C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\Data\... -
Silverlight Maze
This requires Silverlight 1.1 Alpha, available here. If you only have Silverlight 1.0 installed, you'll get a wacky error message (AG_E_RUNTIME_MANAGED_ACTIVATION).
-
[SubSonic] LoadFromPost method maps controls to object properties
Since SubSonic data access code and cuts way down on the repetitive grunt work, I've started to resent having to write any code at all. On a recent project, we found that since we weren't writing much data access or map related objects, the majority of the code we had to write revolved around shuttling data between controls and object properties.
-
Calling an ASMX webservice from Silverlight? Use a static port.
Rob Conery recently posted on Creating a Web Service-Enabled Login Silverlight Control, which is probably a more important topic than many people realize right now. Since Silverlight code runs client side in the user's browser, many tasks like database access and user authentication require what is by definition a "web service" (even if it uses REST or some other, non-ASMX approach).
Along the way, Rob ran into an interesting issue. Being the wise man that he is, Rob knew that he faced a choice:
- Figure out an odd brain teaser dealing with undocumented alpha technologies
- Mention the odd brain teaser to Jon, who would likely get hooked and stay up all night figuring it out
Rob's a smart guy, you guess what he chose...
-
Safari on Windows - Browser testing just got a whole lot easier...
Funny, just last week I posted about using browsershots.org to see screenshots of your web application in a huge variety of browsers. Today, Apple announced Safari 3 runs on Windows.
-
Failed Orcas Beta 1 install - Check for Office 2007 Beta Installer records
The Orcas Beta 1 install kept failing on my laptop with a non-specific error. The install log didn't say anything very helpful:
Microsoft Web Designer Tools: [2] Component Microsoft Web Designer Tools returned an unexpected value.
setup.exe: [2] ISetupComponent::Pre/Post/Install() failed in ISetupManager::InternalInstallManager() with HRESULT -2147023293.
VS70pgui: [2] DepCheck indicates Microsoft Web Designer Tools is not installed. -
browsershots.org - Test your site in a variety of browsers on Win, Mac, and Linux
A client needed some help with a display issue on Safari / Mac. Browsercam is a good solution and is reasonably priced, but for this simple issue I just needed to see the site in Safari / Mac and make sure I hadn't affected IE6 as well.
-
Silverlight and XAML, have you guys met Old Man SVG?
XAML uses a vector graphics markup which is very similar to SVG, but since it's part of a complete application framework the designers decided to use a slightly different format. I'd expect that XAML would be able to load SVG, or that there would at least be plenty of tools to convert SVG to XAML, but it was tougher than I thought. After some background, I'll discuss some solutions I found.
-
VB.NET vs. C#, round 3?
VB.NET gets a hard time from C# developers. For a variety of reasons, the leading .NET programmers seem to be working in C#, and VB.NET developers get really tired of saying, "Hey, VB.NET can do that, too!"
-
Google Street View Maps - Not at all new, still great fun.
My friend wrote me last week to tell me about the astounding new feature Google Maps had added - Street View!
-
YOD'M 3D - Multiple Desktops for Windows
One of the coolest things I saw at MIX07 was on a Linux computer. Miguel was showing us something on his laptop when all of a sudden the desktop turned into a cube and started spinning around. Miguel told us it was Compiz, which has been available for X Window System (GNOME, KDE) for over a year now. Sidenote: A lot of people know it by the name of a fork of Compiz named Beryl. It sounds like Beryl is basically Compiz with a neater name and a better website. Anyhow, Beryl has rejoined the Compiz trunk.
-
Cropper Plugins 1.1 release
We lost the everything but my local source copies for our CropperPlugins when gypsies stole the CodePlex TS02 server, which slowed us down a bit.
-
CodePlex is adding support for <strike>Subversion</strike> TortoiseSVN
I just heard that CodePlex is adding support for TortoiseSVN with an estimated release date of June 5.
-
Performant isn't a word
Last month I finished writing a lot of the "Performance" chapter for our ASP.NET book. I used the word performant quite a bit, and was a little surprised when the editorial review told me that performant isn't a word.
-
[OT] New baby
We just had our third daughter, Eleanor. Mom and baby are doing well. Since I tend to keep things super dorky on this blog, it wouldn't be complete without some ridiculous pseudocode:
-
Silverlight - Cross domain access blocked, use a server side proxy or XMLHttpRequest
Silverlight's security model prevents making a request to another domain. For instance, if you're serving a page with a Silverlight control from www.silverlight.net, the control can't make a request to maps.google.com, flickr.com, etc; the control can only call back to the silverlight.net domain. That's probably a good thing from a security perspective - it'd just be way too easy for a page to cross security zones and other bad things if a client side networking stack could communicate with any domain it wanted.
-
MIX07 - WCF adding System.UriTemplate, [WebGet], and [WebInvoke]
Build and parse URI's
System.UriTemplate (Orcas) - runtime support for URI template syntax
UriTemplate.Bind - A safe, smart string.format for URI construction
UriTemplate.Match - Extracts URI to dictionary
UriTemplateTable - One or more template, best match winsHTTP GET - bound semantics, expectation of idempotency, generally "safe" Chaos - HTTP POST, PUT, DELETE, others
WebHttpClient client = new WebHttpClient() { UriTemplate = "http://localhost/mix/data/symbols{0}"; } MixData = client.Get(StockSymbol).GetBody
(); return data; -
MIX07 - SubSonic meetup - Wednesday 2 PM (updated time)
Since we've got most of the SubSonic core team here at MIX, it only makes sense to meet to brainstorm the featureset for SubSonic v.Next. We'll be meeting at 2 PM in the Mashup Lounge. SubSonic fans, please join us and let us hear how SubSonic can get even better.
-
Why Microsoft can't ship open source code
I've suggested a few times that Microsoft could go beyond just cooperating with the open source community and actually ship open source code. For instance, Paint.NET is a great alternative to MS Paint, so not just bundle it? Tonight I had a very long conversation with someone who is in a position to really understand both Microsoft and open source. Now I understand why my suggestion - though well intentioned - was hopelessly naive.
-
Are you ALT.NET?
David Laribee coined a term which summarizes a movement in the .NET community - ALT.NET:
-
MIX07 - A private Silverlight demo from ScottGu
The situation was grim. I was sitting in a hotel bar at MIX07 with Jeff Atwood, Miguel de Icaza, Phil Haack, and Rob Conery (pictured left to right). The conversation had slowed. Miguel was telling Rob why he should floss. Phil was humming showtunes. Jeff was trying harness telekinetic powers to levitate his beer. See for yourself:
-
Announcing SilverlightBlogs.com
I've just started a community site for Silverlight bloggers called, unsurprisingly, silverlightblogs.com. At this point, the community is just me and I'm still learning about Silverlight.
-
Silverlight gets Photosynth
Photosynth (using the Seadragon technology) has been added to Silverlight. (announced at MIX07)
-
MIX07 - Keynote
Live webcast is available here.
-
[MIX07] Dinner with Miguel, Guitar Hero defeat by Hanselman
Phil Haack and I drove out Sunday afternoon. We met up with Miguel de Icaza and talked for a long time. As time went on, we added John Osborn (senior editor at O'Reilly) and Eric Kemp (Rob's right hand man on SubSonic) to the party, and headed to dinner.
-
Going to MIX? Get Twitter and Twitteroo!
Twitter is a simple program which lets you see what all your friends are up to - you enter a short message and all your "followers" get the update. Normally I don't care what all my friends are doing, but this kind of thing is perfect for a conference. The MIX conference folks have set up a Twitter account, so by "befriending" the MIX07 account you can get hooked up with other conference attendees.
-
Jeff Atwood (CodingHorror) on DotNetRocks
Jeff Atwood's inteview on DotNetRocks is out. I've listened to every single episode - over 230 of them - and say this makes my top ten. Excellent show, and worth the listen.
-
Search queries to find Silverlight and XBAPs apps
Silverlight and XBAP serve the same purpose, but in different ways. Both allow for viewing for WPF (XAML) based applications in a browser. Silverlight is a self-contained, cross-browser plugin which supports a subset of the .NET framework, while an XBAP (XAML Browser Application) requires that WPF be installed on the host operating system.
-
The 9 things Microsoft SHOULD be announcing next week at MIX07 (but won't)
Microsoft has said they'll have some kind of big surprise to announce next week at the MIX07 conference in Las Vegas. If you want to hear some good guesses as to what will actually be announced, you've come to the wrong place. If you'd like some good guesses, try the following:
- Miguel de Icaza - speculation on MIX07, including a dynamic language runtime
- Mary Jo Foley - Microsoft to roll out dynamic-language layer for .Net
- InternetExplorer8 - General info on what's known about IE8
- Channel9 Forums - Speculation about dev.live.com updates
But accuracy's not what this post is about. No, this is good old armchair quarterback time. I'm not going to talk about idealistic things like firing half the marketing and legal departments, I'm going to focus on product direction and long term vision things. Ray, if you've been procrastinating on your keynote, I've put together a few talking points for you. Style point: remember that the great speakers of history were men of passion. Wave your arms a lot and bang on the podium.
-
SQL Puzzle #2 - Paging through a table with GO 10
I just wrote about using GO 10 to execute a T-SQL batch 10 times in SQL Server Management Studio. Could you use it to page through data?
-
[SQL] Using 'GO 100' to execute a batch 100 times
The GO statement is used by SQL Server as a batch terminator. It's recognized by by tools which run scripts like SSMS, SMO, and SQLCMD, but it's not technically T-SQL. SQL Server 2005 added a new little trick to the GO command which lets you specify a number of times to execute the batch: GO 10
-
First draft of our ASP.NET book is done. Whew!
You wouldn't know it from the recent posts on my blog, but I've been writing a lot lately. Last week I turned in the first draft for the final chapter of the book I'm co-writing with Phil Haack, Jeff Atwood, and K. Scott Allen. It's an ASP.NET "tips and tricks" book, but I think the content is a little different than most cookbook style programming books. The information is geared to strong intermediate to advanced developers, and the topics include things like binary content, search engine optimization, troubleshooting slow queries, log4net, ASP.NET AJAX, etc.
-
Looking forward to SilverlightGallery.com
-
SubSonic 2.0: Kick the tires on Beta 1!
SubSonic 2.0 (the zero code data access layer) just hit Beta 1 today. Download it, marvel at all the cool new features, and get your feedback in quickly because they're planning a really short beta phase with a final release as early as next Wednesday.
-
Adding a DotNetKicks image via Javascript
DotNetKicks is a nice social bookmarking system (like Digg, Reddit, etc.) that's specific to .NET development issues. Users submit cool links, other users vote on it, popular links show up the front page and in an RSS feed. It lets you know what's going on in the .NET world right away without having to spend every second of the day scanning thousands of blogs.
-
Conditionally showing Google Ads
-
Alternative MIX07 Blog Bling
I registered for the MIX07 conference today, and decided I needed to add a MIX07 badge to my blog. I spent a little while looking at the official MIX07 badges and decided that, while they're very slick and exciting, they just don't speak to where I'm at right now. I realized I had no choice but to create a few of my own MIX07 badges.
-
Not really into Pokemon
Having trouble keeping up with the ever increasing torrent of new technologies? Randall Munroe has a pretty helpful tip - when you're not sure, use the Pokemon defense.
-
[SQL] Force the protocol (TCP, Named Pipes, etc.) in your connection string
Barry Dorrans recently mentioned that you can force the database connection protocol by specifying np: or tcp: before the server name in your connection string. I've jumped through some hoops before using localhost to target tcp and (local) to target named pipes, but it looks like there's a much better way to do this (since MDAC 2.6).
-
[link] Shell command - Open folder as Website Project in VS 2005
Bradley posted a cool tip a while ago for how to simplify this. He uses a Visual Studio macro from a shell command (installed by a simple reg file) so I can just right click a folder and select "Open as Visual Studio Website".
-
Shell Command - Remove SVN Folders
The Subversion source control client maintains your local state in hidden folders named .svn inside your project, which can be a problem if you want to copy or share the project directory. This REG file adds "Delete SVN Folders" to the context menu for folders. When you select it, it removes all folders named .svn inside the folder and it's children (it does nothing if the project's not under Subversion source control.
-
New Cropper Plugins Release (includes Flickr, OneNote, TinyPic)
Patrick Altman added his plugins to the Cropper Plugins bundle out on CodePlex. His SendToFlickr plugin has become an essential part of my blogging routine - I grab portions of the screen directly to Flickr, then add them to posts with the Flickr4Writer WindowsLiveWriter plugin.
-
Sending files via the default e-mail client
I recently released a "Send To Email" plugin for Cropper, which makes it easy to grab a portion of your screen and send it as an e-mail attachment. It's easy enough to directly send an e-mail in .NET using System.Net.Mail, but there's no provision for sending a mail using the default client.
-
Passing lists to SQL Server 2005 with XML Parameters
-
CropperPlugins on CodePlex
Cropper is my favorite screenshot application because it supports plugins. I've published a few over the years - Capture to AVI and Capture to Animated GIF. My favorite plugin is one that I didn't write - Patrick Altman's Send To Flickr plugin. Now that we've got a Cropper build that works in Vista, I set up a CodePlex project for my plugins and am releasing a few more. It looks like Patrick's gonna join me, and Brian is planning to release his Cropper Plugin documentation there as well.
-
Inkscape 0.45 Released
Inkscape 0.45 is now officially released and available for download.
-
[Code] Show a file in Explorer
I've noticed that some of my favorite programs have options to open the currently selected file in Explorer. I don't just mean that they open the right folder, but that they preselect the right file for you.
-
Google Personalized Homepage (IG) - Read a post inline
I've been using the Google personalized homepage for a while as a simple "heads up display".
-
Getting Cropper to work in Vista
UPDATE: A new version of Cropper with these changes has been released. Grab it here: http://blogs.geekdojo.net/brian/articles/Cropper.aspx
-
Identicons - Ported from Java Servlet to HttpHandler
Identicons provide a nice visual indicator that's unique to each user on a website. It's unique since it's based on the user's IP, but it's not possible to recover the IP by looking at an Identicon so each user's privacy is protected.
-
Code Puzzle #2 - Generate random fake surnames - Recap
Code Puzzle #2 posed the following task: Write a simple function which generates fake but passable surnames (read more here). As I'd hoped, I got several great submissions with a range of interesting approaches. I'd like to say that we're all winners, but the rules were clear: "This is a fixed contest; my solution will win first place."
-
Code Puzzle #2 - Generate random fake surnames
I'm talking to you, Mr. Thymmet! Step forward and be counted, Ms. Betusen! It's time for another Code Puzzle! My solution will be posted on Friday, 1/12. Get to work!
-
Five things you didn't know about me
I tend to keep things down to business on my blog, but after having been tagged three times I decided go with this "Five Things" meme. I'd been planning to write a Hello World thing for my 500th post anyhow. Here goes: