Scott Hanselman

Hanselminutes Podcast 193: Axum - A domain-specific concurrent programming language with Niklas Gustafsson

January 8, '10 Comments [0] Posted in Learning .NET | Podcast | Programming
Sponsored By

image My one-hundred-and-ninety-third podcast is up. Scott talks to Niklas Gustafsson about Axum (formerly Maestro), an incubation project at MSDN DevLabs. Axum is a new language based on the Actor model that targets the CLR. It focuses on making concurrency fundamental with principles of isolation, agents, and message-passing.

Subscribe: Subscribe to Hanselminutes Subscribe to my Podcast in iTunes

Download: MP3 Full Show

Links from the Show

Do also remember the complete archives are always up and they have PDF Transcripts, a little known feature that show up a few weeks after each show.

Telerik is our sponsor for this show.

Check out their UI Suite of controls for ASP.NET. It's very hardcore stuff. One of the things I appreciate aboutTelerik is their commitment tocompleteness. For example, they have a page about their Right-to-Left support while some vendors have zero support, or don't bother testing. They also are committed to XHTML compliance and publish their roadmap. It's nice when your controls vendor is very transparent.

As I've said before this show comes to you with the audio expertise and stewardship of Carl Franklin. The name comes from Travis Illig, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)

Enjoy. Who knows what'll happen in the next show?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Hanselminutes Podcast 192: The Spark View Engine for ASP.NET MVC with Louis DeJardin

January 8, '10 Comments [2] Posted in ASP.NET | ASP.NET MVC | Podcast
Sponsored By

My one-hundred-and-ninety-second podcast is up. Scott chats with new Microsoft employee and ASP.NET team member about his open source ASP.NET MVC ViewEngine called "Spark." It's a totally new DSL (Domain Specific Language) that might make your MVC Views more fun to write!

What is Spark?

Spark is a view engine for Asp.Net Mvc and Castle Project MonoRail frameworks. The idea is to allow the html to dominate the flow and the code to fit seamlessly.

<viewdata products="IEnumerable[[Product]]"/>
<ul if="products.Any()">
  <li each="var p in products">${p.Name}</li>
</ul>
<else>
  <p>No products available</p>
</else>

Subscribe: Subscribe to Hanselminutes Subscribe to my Podcast in iTunes

Download: MP3 Full Show

Links from the Show

Do also remember the complete archives are always up and they have PDF Transcripts, a little known feature that show up a few weeks after each show.

Telerik is our sponsor for this show.

Check out their UI Suite of controls for ASP.NET. It's very hardcore stuff. One of the things I appreciate aboutTelerik is their commitment tocompleteness. For example, they have a page about their Right-to-Left support while some vendors have zero support, or don't bother testing. They also are committed to XHTML compliance and publish their roadmap. It's nice when your controls vendor is very transparent.

As I've said before this show comes to you with the audio expertise and stewardship of Carl Franklin. The name comes from Travis Illig, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)

Enjoy. Who knows what'll happen in the next show?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

How SparkFun (and 800.com) and small commerce or startup websites can scale

January 7, '10 Comments [7] Posted in ASP.NET | ASP.NET MVC
Sponsored By

image Somewhere in late 1997, early 1998 (as I recall) I was working at a place called 800.com. Me and three guys (Joe Tillotson, Javan Smith and Patrick Cauldwell) from our consulting firm were helping create the storefront, shopping cart and business systems. We did it all in COM and Classic ASP. I did most of the front-end ASP, HTML, cut graphics, did scale, browser compat, the whole thing. Javan ended up working there full time for some years as I recall.

It was deep in the beginning of the first boom. We were sleeping with our servers. The place had no offices yet, and we were sitting on the stairs of the Tyee Group in Portland. March 1, 2002 800.com sold to Circuit City and disappeared. I still say they could have been like Amazon, but it just didn't work out.

Anyway, the CEO Greg Drew and his folks had this crazy idea for a promotion. It was simple, 3 DVDs for $1. That's it. Free shipping and everything. It was insane.

image In the same vein of crazy promotions, SparkFun Electronics had "Free Day" today. It was also a brilliant promotional idea. They offered $100 per person, until they hit $100,000. Of course, that's only 1000 people but you don't say that part. ;) Every geek on the planet had their finger on the "Buy" button and word spread like wildfire on Twitter. The whole thing was over in 1h 44m 50s, according to their website. I spent an hour trying to check out my cart, and only succeeded in loading a page twice. Bummer.

With 800.com, our 3 DVDs for $1 promotion lasted longer, a few days as I recall, and word travelled much slower, on USENet and Email. Barbarians. ;)

Here's some of the things we did to optimize the 800.com site for this massive traffic surge in that pre-cloud era. It worked for us. Perhaps SparkFun did, or could have, done similar things.

Think about the Ratio of Reads to Writes

When people visit your site, are they mostly reading data, like browsing a product catalog? Or are they mostly writing data, like putting something in a shopping cart and trying to check out?

There's basically these four types of data on a web site: resource or catalog data, infrequently-used reference data, user session data, and clickstream or activity oriented data. Each is accessed in a different way, and you can dramatically change the way your site behaves when you have crazy promotions.

When 800.com started our promotion, our sites dramatically switched from 95% of people browsing and 5% of people checking out, to 95% percent of people checking out and only 5% browsing. When the sites fundamental ratio changed we had to change the site.  We hadn't designed for this!

For the short term we started by turn the product catalog pages that were the most frequently visited into static pages. Don't go poo-poo that power of the static page. For small companies with just a few web servers there's little faster than serving a static page.

Cache Everything (Resources and Reference Data)

Memory is exceedingly cheap, and you really can't have too much.  Additionally if you're a small company with a small site, chances are your product catalog isn't that large. I would be surprised if most medium sized, catalogs can be kept in memory.  Additionally, the data in a product catalog using change very often, so it can be cached certainly for hours at a time, if not longer. After our short-term static files solution, we moved to just caching the entire catalog in memory. When all you need to do is show products and categories, caching is your friend.

Move Images Somewhere Else (Make it someone else's job)

We learned early on that the pages that the web servers that were doing the work really didn't need to be worrying about serving images, so we put those on http://images.800.com. This might seem obvious now in 2010, but it was pretty cool thinking in 1997. This allowed us to put all of our product images on a separate server farm and scale them out differently.

Today a lot of people put their images up on S3 at Amazon or other cloud services. For image heavy sites like product catalogs, moving them not only saves you time, effort and hardware, but it can also save bandwidth.

Partition Your Responsibilities (Break it up)

Even though you might have a single web server, or you might have six, think about partitioning responsibility early on, with separate mini-sites for things like images, profiles, web services, product catalogs, shopping cart, and check-out. If your site's characteristics change quickly and and you have to scale out and add new web servers, you can even create separate web farms for these mini-sites just checking out or just images. This can be as easy as having a separate virtual directory, and treating it as an application.

Embrace Stale Data (Realtime is a Lie)

One of the things we had at 800.com that was kind of revolutionary at that time was an AS/400 inventory system that we hooked up directly to the web.  You could see a real time inventory of any product even to the point where you could hit refresh and see products being sold. Remember that this was 1997.  In this case, it was silly of us to plug the AS/400 directly into the web server, so eventually we built an intermediate database. But the real root issue was that we realized what "realtime" meant to our business. The president of the company said he wanted realtime inventory, so we assumed he meant it.  But that didn't mean we needed to go back to the inventory system every second.  In fact, when pressed, we learned that realtime to our president could be within 5 or 10 minutes.

Updating data every 10 minutes is infinitely easier than updating it in real time as you might guess. Ask yourself, if you've got realtime data on an otherwise mostly static page, how stale can my data be?

Thanks for indulging me on this trip down memory lane.  Certainly, a lot of this stuff is obvious in 2010, and not just obvious but required in large enterprise systems, but these basic principles still apply today for small businesses running a relatively small web sites on, say, less than 10 servers.

Congratulations to SparkFun for their successful promotion. Even though I was unable to visit their site for two hours, the buzz they generated on twitter is no doubt invaluable.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Video Review: Eye-Fi Wi-Fi SD Card for Digital Cameras and Your Life's Workflow

January 6, '10 Comments [30] Posted in Reviews
Sponsored By

I'm afraid I'm a utilitarian gift giver. I can't imagine not being this way. I basically look at a person's life-workflow and I look for ways to make some tiny thing slightly easier. Like a teacup with your name on it if yours keeps getting pinched at work, or a key-shaped USB key to fit better with a bunch of unruly keys.

I've added a short 2 minute view demonstration to the right here.

My wife LOVES to take pictures of the boys. But she HATES to upload them to the computer or server. She'll fill 16 gigs of photos and then come find me, "can you put these on the server."

I've tried putting software like Live Photo Gallery on her machine and adding an SD Card slot. Seriously, just put the card in and it'll automatically upload the photos. But, it doesn't fit into her life's workflow. It's not intuitive.

What is intuitive, however, is just bringing the camera home and putting it back on the shelf. And that's her workflow now.

I bought her a 4 gig "Eye-Fi Wi-Fi SD Card." Seriously, this thing is bananas. It's an SD memory card, looks, acts, works, IS an SD card. But, it has freakin' Wi-Fi built in. It'll work with basically any camera.

I'm all about miniature. Micro-SD is amazing. 2 gigs and you can accidentally swallow it. But, I'm amazed that this little card can effectively leach enough power from the host camera to run a tiny Wi-Fi client.

image Here's what you do.

  • You get the card for the first time and put it in it's little USB adapter and plug it into your computer.
    • The software is already loaded on the card - nice, thoughtful touch.
    • You install the Eye-Fi Manager little tray-icon on whatever machine in your house will be on the most. It uses 8megs on my machine, and I've already forgotten about it.
  • You sign into their Eye-Fi Manager Website and tell the card what network to automatically connect to.
    • Again, Kudos to them for supporting WPA2 and instantly seeing my network.
  • You tell the manager where to save photos. I chose \\server\photos\2010 and it'll automatically make a new folder for each day, although you can change the format of the folder name.

Boom, that's it. Now, whenever you take photos, your camera will automatically upload them to your computer when it's near your Wi-Fi. It's a dream.

(Here's the cheesy part of the review)

But what, seriously, that's not all. It'll also do "relayed" uploads, so you can upload to an intermediate website of theirs for temporary storage, and when your computer is on later, it'll download the photos.

EyeFiAnother nice feature is that it'll automatically upload if it sees a known public hotspot like a hotel or McDonald's, or WayPort. Still, not a reason to eat at McDonald's, but a reason to get a soda through the drive through. ;)

The final cool feature is the Eye-Fi Geo (or you can upgrade your existing card) will automatically geo-tag your photos (if you like) by looking at a database of known Wi-Fi access points around you. Awesome for trips to big cities.

I seriously don't have a bad thing to say about this card. The wife is thrilled and the WAF (Wife Acceptance Factor) remains high. I'm not a pro photographer, by any means, but this card works great in my Nikon D40 and my new FujiFilm point and shoot. Some pro folks on the Amazon Reviews have said they've had trouble shooting really really fast or that they've had problems with the speed of upload, but I just haven't. Be aware though and read the reviews to make your own decision.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

2009 Blogged - Greatest Hits

January 1, '10 Comments [11] Posted in Africa | Agile | ASP.NET | ASP.NET MVC | Back to Basics | Channel9 | Microsoft | Musings | Reviews | Source Code | Speaking | Tools | Win7 | Windows Client
Sponsored By

While I (really) unplugged in December of 2009, you can access a nice calendar of all my 2009 posts (as well as other years) at this link.

In 2008 I published a Greatest Hits post that I will keep updated, but here's a list of links to the posts I most enjoyed writing this last year. I hope you find some of them useful, and perhaps you missed one or two or you just started reading recently and this 2009 "Greatest Hits" Post will catch you up on the stuff I was thinking about this year.

General Geekery

Blogging

Twitter

Podcasts

Programming

.NET and ASP.NET

Gadgets and Product Reviews

Speaking and Presentations

Personal Stuff and LifeHacks

I hope you enjoy these as much as I enjoyed writing them. See you next decade!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.