Wednesday, February 27, 2008 |
|
|
Let's assume you're a pretty good programmer (and good looking to boot!). It's Monday morning and you're looking at a task that has some solid complexity to it -- it's going to take you 40 hours of effort to get through. Or you have the option of delegating components to 2, 3, or even 4 competent-but-not-exceptional developers. For these guys to deliver, you're going to have to: - Decompose the task significantly
- Write a precise spec, at least for the initial subtasks (because if you get off on the wrong expectation of data structures, there's no way you're going to catch the problem, refactor it, and re-distribute the tasks)
- Engage in course correction (when facing ambiguity, "problem solving" for these guys is going to be asking you for clarification)
- Do some refactoring (let's face it, there's going to be a couple things that will be easier to fix than re-specify)
- Spend (at least) one afternoon on interactive testing and integration
(For "decompose" and "write a spec" feel free to interpret however you wish, so long as it's a concrete deliverable that acknowledges that if you're delegating and "fanning out" tasks, you have to pay an upfront cost thinking through scenarios that are still somewhat hazy and contingent.) So here's my question: how many hours do you think you can shave off the 40 hours it would take you to "just do it" yourself? 8, 16, 32? There are (at least) 2 points that strike me as relevant : one is that even in such a fine-grained, seemingly controlled, context you face significant "mythical man-month" issues of communication overhead, risk, etc. and so you discover, if you time it, that you don't save nearly as much time as you'd hope. The second point that I think might be even more interesting is that your perception is likely to be even worse than what the clock says. If you are in this role, you will rarely or never get into a high-productivity "flow" state, a familiarity with which, I would submit, is why you're a pretty good programmer. |
Wednesday, February 27, 2008 2:57:07 PM (Hawaiian Standard Time, UTC-10:00) | Disqus link | Knowing
|
|
|
|
Tuesday, February 26, 2008 |
|
|
Philip Greenspun Governments at various levels have decided that they have to bail out people who spent more than the houses turned out to be worth and the financial companies who weren’t wise enough to notice that the U.S. is in fact not short of forests that can be cut down for more sprawl. Where will the money come from? You, me, and everyone else who did not participate in the bubble. So… we missed buying real estate with a lot of leverage back in 2000 and missed the big ride up through 2004 or whenever. Now we get to buy that same real estate at a much higher price and without any upside at all since we won’t actually own any of it. Yeah, what he said. Of course I can appreciate the misery of someone who's underwater on a $400K mortgage, but my sympathy goes away awfully quick when I hear them say "We just never imagined this!" Didn't you notice that that whole "closing" business involved you signing, like, 100 pages of documents that were all variations on "YOU OWE LOTS OF MONEY"? Giving and receiving multi-hundred-thousand dollar loans is adult stuff. I have friends who are not homeowners because they looked at the risks and decided not to take one of these nonsense loans. Now apparently my tax dollars are going to go to help out the imprudent people who caused my friends to be priced out of the market and, in so doing, my tax dollars will help prop up the prices and keep my friends locked out of the market. This is good for society how? |
Tuesday, February 26, 2008 7:31:38 PM (Hawaiian Standard Time, UTC-10:00) | Disqus link | Offtopic
|
|
|
|
|
I'm going to be interviewed by CFRA (580 News Talk Radio) in a bit about the plans of Ottawa Mayor Larry O'Brien to bypass mainstream media by blogging. Early feedback is that Larry "Amulet of Protection" O'Brien's rants on light rail are vastly less entertaining than Larry "Chillin' at the Beach" O'Brien's rants on implicit vs. explicit type declarations in industrial-size codebases. Just because this guy looks like a low-polygon-count videogame boss, I'm not intimidated! I'll drink his milkshake! I'll drink it up! |
Tuesday, February 26, 2008 7:10:25 AM (Hawaiian Standard Time, UTC-10:00) | Disqus link |
|
|
|
|
Monday, February 25, 2008 |
|
|
LINQ seems to be an overwhelming success (I've been having a hard time finding anyone with bad things to say about it), but what most people are talking about is the nice Object-Relational mapping tools. The ultimate goal of LINQ, though, includes uniting not only objects and relational data but XML. The current LINQ for XML does not support schemas, which is a significant limitation if you're trying to really unify a model; for instance, I have a client who needs to integrate two relational models, a middle-tier object model, and an XML data store. Today, we spend significant time batting back and forth XPaths and tracking them in and out of the relational model. As for reporting, the less said the better. LINQ to XSD is the necessary next step: a set of tools for LINQ that understand the type information expressed in W3C Schemas. |
Monday, February 25, 2008 7:00:43 AM (Hawaiian Standard Time, UTC-10:00) | Disqus link | Knowing
|
|
|
|
Saturday, February 23, 2008 |
|
|
There were next-to-zero technical books available for the Kindle shortly after its launch. I was delighted to discover 4 of the 12 books that were finalists for Jolt Awards this year are now available in Kindle form: |
|
|
|
|
Thursday, February 21, 2008 |
|
|
I need to reset my PayPal password. I went to their Web and requested a reset. "Check your Inbox" it said. 24 hours later, I called PayPal and they manually sent me emails: one to that address and another to another email address! Neither appeared. Neither are in the respective "Spam" folders. What could be going on? |
Thursday, February 21, 2008 5:59:58 PM (Hawaiian Standard Time, UTC-10:00) | Disqus link |
|
|
|
|
|
Such was one of the many pieces of advice of Fred Brooks in The Mythical Man-Month and while others of Brooks aphorisms have stood the test of time, completely scrapping a codebase is today seen more as an aberration than a painful but necessary part of the process. Andrew Binstock, who's been developing a modern typesetting language (a TeX for the new millennium), has decided to do just that with his 20KLoC, multiple man-year codebase. His recognition that "the more I code, the more I see that I am adding top floors to a leaning tower. Eventually I'll topple it" may seem startling coming from a vocal advocate of unit-testing, especially to younger developers who probably have had pretty-good success developing Web-based applications. Andrew pinpoints the critical issue: It's extremely difficult to figure out where your architecture is deficient if you have never done the kind of project you're currently undertaking. Nowadays, most of us do our professional programming in pretty well-worn niches -- Web-based database-driven this, Smart-client semi-connected that, etc. Because of that, we (or our team) tend to make pretty good architectural choices. So good, in fact, that nowadays you don't hear nearly as much concern about application architecture as used to be the case. So good, in fact, that lots of people think you can refactor your way out of the wrong architecture; Andrew's decision is surely painful, but I think it's vastly less painful than architectural refactoring. Andrew seems to be heading towards re-implementing in Java, using NetBeans and Maven. I find that interesting, especially given his use of JavaScript as the internal command language. Why not go Rhino all the way down? Sheesh, Dan Ingalls friggin' reinvented Smalltalk in JavaScript and Andrew would be able to hang with the cool kids at Google. There are other good details in Andrew's post and he promises to share other reflections as they occur to him -- I'm sure his blog will be especially interesting in the coming weeks. |
Thursday, February 21, 2008 5:24:53 PM (Hawaiian Standard Time, UTC-10:00) | Disqus link |
|
|
|
|
Tuesday, February 19, 2008 |
|
|
If the November elections are anything like the Democratic caucus I just attended, it will really be something. Turnout was 4-5x the 100 or so expected and the workers ran out of Democratic party registration forms. There was lots of visible support for Obama (native son, true) and none for Hillary. If Obama gets the nomination and can somehow bring out the disenfranchised ... well, wouldn't that be something. |
Tuesday, February 19, 2008 8:03:48 PM (Hawaiian Standard Time, UTC-10:00) | Disqus link | Offtopic
|
|
|
|
|
(follow image link to Zazzle store...) |
|
|
|
|
|
Based in the S3 Cloud (of course). Every book has a unique Wiki based on ISBN. You annotate via a Kindle-browser-friendly blogging engine. You can view threads chronologically (normal blog view) or if they incorporate references to Kindle "positions," they can be threaded by location in the book. Server-side stuff is easy enough; Kindle-friendly blogging editor/display reasonable; barrier to entry is difficulty getting from Kindle reading to Kindle browser (Home -> Experimental -> Web -> Bookmark). Also, positional permalink should be easy but will be hard ("Remember your position in the Kindle book" H->E->W->B -> Note Editor, add text, enter position in field). Also, links ought to be two-way ("Read Now" ought to open that page in Kindle), but impossible with current firmware: 
|
Tuesday, February 19, 2008 8:33:52 AM (Hawaiian Standard Time, UTC-10:00) | Disqus link | Offtopic
|
|
|
|
Sunday, February 17, 2008 |
|
|
Continuations are one of those things (like lambda expressions a few years ago) that people seem to struggle to explain. Doesn't this capture the essence? DoSomeProcessing.asp?BasedOn=SomeParameters&IfItSucceeds=GoToAPlace.asp&IfItFails=GoToADifferentPlace.asp |
Sunday, February 17, 2008 7:00:23 AM (Hawaiian Standard Time, UTC-10:00) | Disqus link | Knowing
|
|
|
|
Saturday, February 16, 2008 |
|
|
This photo was taken by Ron Dahlquist yesterday off Maui. Personally, I got up early to go for a swim in a whale-rich bay this morning and the surf was up and I forgot to shave so my mask kept flooding. It sucked (for sufficiently small values of "sucked"). |
|
|
|
|
Thursday, February 14, 2008 |
|
|
Yes, I write a column called "MS and .NET Watch," but it's a technology and process column, not a corporate analysis. Concurrent programming models I can follow, who's in and who's out in the airy realms of MS Corporate is entirely beyond me. I think though, that today's reorg boils down to "same old, same old" for things developer-related: S. Somasegar and Scott Guthrie get title bumps but it's said they will "continue to oversee" their teams (Visual Studio, .NET, and other things developer-related). I guess the question is "Who's the new ScottGu?" |
Thursday, February 14, 2008 2:09:30 PM (Hawaiian Standard Time, UTC-10:00) | Disqus link | Knowing
|
|
|
|
Monday, February 11, 2008 |
|
|
The seas are filled with humpbacks, both breeding and nursing. If you go in the water, you can hear them a little if you're on the surface, but if you can swim down 5' or so, it can be unbelievable. Yesterday, we were at Kekaha Kai and a whale swam by about 50 yards away (did I see it underwater? No, I did not. Darn.). They were breaching and slapping tails all over. Plus, we get surf, but it's very user-friendly (maybe 2-3'). So tall enough to ride, but small enough to swim through very safely. Kekaha Kai is a hot place to go boogie-boarding and I was actually swimming around inside the waves, watching people take off. Which was cool until my camera flooded. It was just a cheap submersible disposable from Longs, but still, what a rip. Good thing that whale didn't swim by! |
|
|
|
|
Saturday, February 09, 2008 |
|
|
OK, so if you see this and it's more than a few hours after the posting time, that's good news. |
Saturday, February 09, 2008 11:35:57 AM (Hawaiian Standard Time, UTC-10:00) | Disqus link |
|
|
|
|
Monday, February 04, 2008 |
|
|
I've got six years of DasBlog entries in my /content directory. I don't have time to maintain my blogging infrastructure (it's hard enough to justify the time I spend just writing the darn thing). For whatever reason, DasBlog and my hosting company just don't seem to get along ... problems with the comments, problems with memory consumption, I dunno... My only caveats are: I want it to be locally hosted, I want to customize the templates, and I don't want any limitations against uploading other types of pages via FTP (i.e., static HTML pages or ASP.NET programs or whatever). If you have an opinion on the pain or ease of switching from DasBlog to WordPress, please leave a comment or send email. |
Monday, February 04, 2008 7:59:07 AM (Hawaiian Standard Time, UTC-10:00) | Disqus link |
|
|
|
|
|
While I talked about being blown away by certain talks at Lang.NET, from a pragmatic standpoint I very much enjoyed the practical talks, such as those given by Harry Pierson and, especially, Martin Maly. Martin is one of the IronPython / DLR developers and hand-wrote a compiler for a language called "ToyScript." This compiler is now part of the IronPython distribution. Harry wrote an F# PEG parser (is that redundant?) of ToyScript and I wrote an ANTLR-based parser. The hope is to show 3 different approaches to building the compiler front-end, but all using the same backend ("Hand off the AST to the DLR"). Now, on the way to that, I started yesterday writing a series of examples that do things exactly backward: start with the handoff to the DLR ("GenerateNopFunction()"), add nodes (Using XML to represent the AST), and then say "Oh, and you create that AST using compiler front-end techniques." The sad thing is that all of this will have to be in my copious spare time, since my language stuff isn't supported by paying articles (I did the Lang.NET conference on my own dime). |
|
|
|
|
Sunday, February 03, 2008 |
|
|
Ok, after despairing of getting the comment issue in dasBlog worked out, I have switched over to Disqus. Let me know if this causes headaches... |
Sunday, February 03, 2008 7:01:05 AM (Hawaiian Standard Time, UTC-10:00) | Disqus link |
|
|
|
|
|
Like Charles Petzold, my first reaction to Jeff Atwood's question "What Can You Build in 600 Lines of Code?" was along the lines of "5 articles!" But actually, I think 600 lines is just about the right benchmark size for a language, because it's: - Small enough to develop in a weekend
- Large enough so that "finger typing" is neither dominant nor drowned-out
- Large enough to exploit a language's particular idioms and strengths
A caveat though: the use of libraries and frameworks can grossly distort this discussion. Frankly, the quote "commercial project written in less than 600 lines of Ruby code" (ibid.) is wrong: it ought to be "of Rails code." It's akin to saying "In DOS batch I can create a spreadsheet in a line of code -- all I have to do is type 'excel'!" (I know it's not exactly the same, but there's a similarity.) This is one of the reasons why writing a parser has always been a measure of a programming language -- it involves complex pattern matching, the creation of a complex datastructure, transforms of that structure, and a fair amount of IO. Harry Pierson's F# PEG parsers (is that redundant?) are a good example: I don't doubt he'll complete a parsing front-end to the "ToyScript" language in less than 600 lines of code. The first night at Lang.NET, I wrote an ANTLR parser for ToyScript (# lines in ANTLR, expands to # lines of C#!). From the impression I got of Newspeak, I think it would take significantly less than F#. |
|
|
|
|
Saturday, February 02, 2008 |
|
|
At least two problems: - Some-to-all (?) people don't see the CAPTCHA image, and
- The system is crashing the application pool every several minutes
I've disabled the comments to see if the system instability is definitely associated with them... |
|
| | |