- The big 100. This puts be 1083 posts behind Iron Link Poster Mike Gunderloy. As his .NET skills deteriorate, maybe I can catch up…but I doubt it. I’m only 77 posts behind Sam Gentile, so maybe that’s a bit more feasible.
- The ADO.NET Team blog announces the new Entity Framework CTP. Looks like there’s also a new .NET Framework 3.5 CTP and new Visual Web Developer “Orcas” Express CTP as well. (via Sam Gentile)
- Speaking of
“Orcas”VS 2008, it launches with Windows Server 2008 and SQL Server 2008 next February. (via DNK) - Scott Guthrie continues is LINQ to SQL series. This time, using LINQ to SQL to update the database.
- My friend Arvidra Semhi recently moved and rebooted his blog. Among his many accomplishments, Arvindra started the Architecture Journal. I’m particularly interested in his recent Service Capsule work. Subscribed.
- Last night was the Microsoft E3 Briefing. Gamerscore blog has the news rundown. Didn’t seem to be any HUGE news. Last year’s E3 was the first Halo 3 showing and X06 featured the Halo Wars announcement. Nothing that earth-shaking this time, though the XBLM keeps on rolling, now featuring Disney movies. (Major Nelson has a list.) I’m thinking that the whole HD-DVD vs. BluRay war is going to be eclipsed by direct download before it’s over, though I’m still waiting for PC support & all-you-can-eat pricing.
- Politics 2.0 Watch: Clay Shirky has a great blog
post
on modern-day Luddites. As he points out: “A Luddite argument is one
in which some broadly useful technology is opposed on the grounds
that it will discomfort the people who benefit from the inefficiency
the technology destroys.” How much inefficiency is there in our
modern political system? And more importantly, who benefits from
that inefficiency? We’ve already seen the dramatic effects blogs can
have on political news, media and reporting. What happens when
userscitizens are no longer satisfied just writing about the political process and want to get their hands dirty in the policy-making process itself?
Morning Coffee 100
Restating the Concurrency Problem
I’ll be honest, I recommended Herb Sutter’s concurrency series in today’s Morning Coffee because it a series on concurrency by Herb Sutter. In other words, I hadn’t actually read it yet, but I know how good Sutter’s stuff is. Now I have read it and I wanted to re-issue my recommendation, even more strongly. Go read it.
Interestingly enough, I like the article because it doesn’t provide an “answer” to the problem of concurrency. Rather, by providing a mental model, it essentially is a concise and precise restatement of the problem. Often, in the rush to find a solution to a problem, this step is skipped and it isn’t until the end that you realize that you misunderstood the original problem and what you built doesn’t match what you need.
I’ve often argued that this is also the key to selling in the enterprise. In my experience, whatever solution you’re selling is usually way too complicated to be understood by the people who have the purchasing power to buy it. So explaining how your solution works or how your solution solves the problem isn’t going to get you very far. However, the buyer does understand the problem at hand. Being able to demonstrate that you understand the fundamental nature of the problem and can communicate it back to them garners you a great deal of trust in the selling process. If you can show that you understand their problem, then you probably know how to fix it – even if the buyer doesn’t understand how your solution works.
One other quick thought on Sutter’s article. In discussing the use of concurrency to keep a GUI responsive (aka Pillar 1), he wrote the following:
Today, we typically express Pillar 1 by running the background work on its own thread or as a work item on a thread pool; the foreground task that wants to stay responsive is typically long-running and is usually a thread; and communication happens through message queues and message-like abstractions like futures (Java Future, .NET IAsyncResult). In coming years, we’ll get new tools and abstractions in this pillar, where potential candidates include active objects/services (objects that conceptually run on their own thread, and calling a method is an asynchronous message); channels of communication between two or more tasks; and contracts that let us explicitly express, enforce, and validate the expected order of messages. [emphasis added]
If we’re going to provide the ability to express, enforce and validate the expected order of messages between concurrent blocks of code, can we also do it for services across the network? WSDL is wholly deficient in this area. SSDL’s Communicating Sequential Processes (CSP) and Rules-based Protocol Frameworks are a good start.
Morning Coffee 99
- Mladen Prajdic has a great post on handling a database in your unit tests. He mentions NDbUnit but seems mostly to favor SQL 2005′s database snapshot feature. He’s got sample code for creating and restoring a snapshot. (via DNK)
- Microsoft Robotics Studio 1.5 released yesterday. Tandy Trower – GM of the Robotics group – has the details on what’s new.
- Herb Sutter has a new column in Dr. Dobbs on concurrency. First up, “building a consistent mental model for reasoning about concurrency”. Sounds like a must read column. (via LtU)
- Scott Hanselman describes “Sez You Architecture”. I wonder, do architecture ninjas get to wear a Shinobi shozoku?
- From the Not Everyone Agrees With DevHawk Dept.: Libor Soucek disagrees with me and thinks that durable messaging should be avoided. I had a hard time following Libor’s logic but needless to say, I disagree with his disagreement. He writes that one of the reasons to use DM is for “Cooperating on transaction with external system”. While multiple systems may be cooperating on a business transaction, in no way do I believe they are going to cooperate on a database transaction. But since he started talking about the DTC, I suspect we’re talking past each other. Libor, drop me a line and we can discuss further.
Morning Coffee 98
- Morning Coffee was canceled on Thursday and Friday on account of a kidney stone. So not fun. Luckily, it was a little one and it was alone, but I will be listening very closely to my doctor’s advice to avoid another.
- Took the kids to see Ratatouille last Tuesday and saw Transformers yesterday with my wife due to fluke babysitter luck. I liked Ratatouille, but I’m not sure it’s the 51st best movie of all time. On the other hand, major props for making a kid movie with a significant lack of toy tie-ins. Ratatouille is a better movie that Cars, but I don’t see my four year old boy trading in is Lightning McQueen toy car for a Remy the Rat. Transformers on the other hand obviously did not forgo the toy tie-ins! Still, it wasn’t bad. Kinda reminded me of The Rock with a bigger budget.
- Micahville listed DevHawk on it’s list of 69 Tech Blogs That Don’t Suck. Thanks!
- David Ing boldly writes that C# is getting fat. Or maybe it’s just big-boned. My take: no question that integrated query is a big feature that covers a lot of surface area. But given the prevalence of databases and other queriable stores, it’s critical to improving programmer productivity. Go read Todd Proebsting’s talk on Disruptive Programming Language Technologies. Two of his candidates for disruptive language technologies were Database Integration and Manipulating XML. LINQ neatly covers both.
- According to John Shewchuck, the new BizTalk Services release is available. However, when I click on the “what’s new” page, it tells me they’re experiencing technical difficulties. (Their error page is Oops.aspx. Funny!)
- Scott Hanselman has Programming Personas 2.0. Who are you? I thought I was and “Order n” Architect (the quote “Where’s the whiteboard” is spot on) but my CS background isn’t as strong as the persona’s.
- Sam Gentile is starting to dig into Concurrency and he has a great list of links that have influenced his design.
Upgrading My Home Wireless Network
A few weeks ago, I put out the call for advice on improving my home network. I got a bunch of responses, both for and against PowerLine. I ended up upgrading my wireless network because 1) I was having laptop connectivity issues and 2) wireless equipment is so fraking cheap. I might still go PowerLine later, though I’m thinking it’s “good enough” until I really bite the bullet and run Cat5 under my house.
Yesterday, I picked up a couple of Buffalo Wireless routers: a WHR-HP-G54 and a WHR-G125. The first one has a high-powered antenna, so I hoped that would solve my range problem. Both support Wireless Distribution System (aka WDS), so the plan was to use the WHR-G125 as a repeater and/or bridge. Also, both support 3rd party firmware, a la DD-WRT and OpenWrt. In fact, I chose these models specifically because they’re listed on DD-WRT’s Supported Devices page as best range and cheapest, respectively. Best Buy had them both on sale, so together they cost around $90 and I didn’t even have to wait for them to be shipped.
I also moved my cable modem from the loft to the living room. That way, the Xbox 360 – with all the large demo and video downloads – gets the best bandwidth, typically around 8Mbit (though SpeedTest.net has clocked my connection as high as 18Mbit).
Moving the cable modem meant putting my loft desktop machine on the wireless network. At first, I used the G125 as a bridge. Getting it setup as a bridge using WDS was fairly straightforward, except that these routers only support WEP in that configuration and WEP is essentially broken.
At this point, I figured I had to either live with WEP (*BUZZ* wrong answer) or upgrade both routers with DD-WRT firmware. According to their wiki, DD-WRT firmware supports WPA for WDS. Then I remembered a third option, detailed by Scott Hanselman a few weeks back. I had been using an Xbox MN-740 wireless bridge to get my Xbox 360 on the wireless network. However, since my Xbox is hardwired now, I didn’t need it anymore. Scott’s posted about flashing the MN-740 with the firmware from the D-Link 108AG gaming adapter (they’re the same hardware under the hood) that supports WPA. It took several tries before it worked, but eventually I was able to flash the device.
So now I am using the WHR-HP-G54 as my main router and access point in the living room and the flashed MN-740 to put my loft desktop machine on the wireless WPA-secured network. That desktop has all my media and is running Vista Ultimate, so I was able to get both media sharing and the Media Center Extender working. According to the network diagnostics on Vista, the connection is fast enough to stream SD video, but not HD. So I figure I’ll still need to run some Cat5. But for now, I’m not trying to stream HD video from the machine in the loft so I figure I can wait on the Cat5.
Plus, I have the G125 to experiment with. For $35, it was cheap enough that I can upgrade it with the latest DD-WRT firmware without worrying about losing my “investment” if I brick the thing. If I get it upgraded and working, I’ll do the HP-G54 too, and be able to use the G125 as a repeater and/or bridge. Maybe that will make the network fast enough to stream HD video, but I doubt it.
Thanks to those who offered me their advice. Any of you want to come over and help run a little Cat5 under my house, beer & BBQ is on me!