|
Personal Info:
Joe  leads the architecture of an experimental OS's developer platform, where
he is also chief architect of its programming language. His current mission is to enable
writing large-scale software that is reliable, secure, and scalable by-construction. Before this, Joe
founded the Parallel Extensions to .NET project.
He has been granted 19 patents, with 49 pending. When not working, Joe enjoys travelling with his wife,
writing books, writing music,
studying music theory & mathematics, and doing anything involving food & wine.
My books
My music
Disclaimer:
The content of this site are my own personal opinions and do
not represent my employer's view in anyway.
© 2012, Joe Duffy
|
|
 Thursday, July 29, 2004
 Wednesday, July 28, 2004
These people are nuts (I'm including myself in this broad categorization, too, btw). Microsofties definitely utilize a different vocabulary than normal human beings. Sometimes this entails noun-izing verbs, mutating existing words, or even just plain making stuff up. I've noticed that I'm now incorporating nearly all of these into my daily speech, so before I've completely conformed I wanted to document the odd experience of being subjected to it all...
Here's a brief guide to the top ones I've encountered thus far:
ask noun A requirement or request that something happen. Example: The Speedo team has an ask that we add red dancing baboons to our product's splash screen. Example: What are the Speedo team's asks?
bar noun A dichotomy in which a set of criteria defines a categorization status of below/above. Things which fall below the bar are considered to be necessary to address, while things above the bar are not (most likely temporarily). The bar is subject to move up and down at will. Example: We have a defined a bar for the Super Soaker 5000's release criteria.
blocked verb Prevented from making progress due to a dependency on someone or something else. Example: Are you blocked on getting feedback from Henry?
bits noun Software. Example: The Whidbey Beta1 bits are now available on MSDN.
drop noun A release of software intended for a specific purpose. Example: We should expect the next product drop in May.
feature-complete adjective A product state in which all features have been completed, albeit not completely stabilized and tested. Example: As of September 12th, you must be feature-complete.
Franken-build noun A conglomoration of unfinished software components which evidently function together, although the steps are typically Black Magic to reproduce. Example: Hey, could you send me some reproducable steps to get a Franken-build of System.Collections, JIT hotspot inlining, and tuned GC working together?
needs noun The set of asks that a particular entity needs. This implies they are not full of shit. (See also: wants.) Example: We should address team ZoomZoom's needs in our next status meeting.
own verb If you screw it up, your head is on the chopping block. Example: Joe owns this initiative.
triage verb The act of taking a set of things, comparing it to a defined bar, and assigning a status to those things - i.e. above or below. noun An effort to perform triaging against a large set of items. Example: We triaged our feature requests against the minbar, and came up with this set of items which need completion by the end of today.
S+ (or Sched+) noun An Outlook meeting request. Example: S+ me w/ the details.
scrub verb When some set of things are reviewed to ensure that they are up-to-date, and if not updated to reflect the current state of affairs. noun A large-scale effort to perform scrubbing against a large set of items. Example: By scrubbing our database, we were able to close out 90% of the issues.
vett verb Finalizing, discussing, and agreeing on a common outcome. Example: Have you vetted the design yet?
wants noun The set of asks that a particular entity wants. This carries with it a connotation of not believing that the entity actually requires them, but rather that they are nice-to-haves. Example: Do we have a good handle on team ZoomZoom's wants?
 Friday, July 23, 2004
My primary machine at work has two partitions. One hosts WinXP, the other Windows Longhorn.
The cool thing about this randomness is that I haven't even booted into WinXP for about a week, and have been using Longhorn as my primary OS for the past three weeks. This includes development with Whidbey, Office-stuff, blog reading, surfing, etc., etc.
I'd be lying if I said I have had absolutely no problems, but considering the early state of the product and amount of functionality I've received as a result of the switch, I'm extremely happy. And I will come forth and say that I haven't had a single crash. Zero.
I'd cry if I didn't have my little analog clock and gray minibar any longer. Never looking back. ;)
 Thursday, July 22, 2004
I have an interface I1 which produces a Î A, and you have an interface I2 which consumes b Î B.
It takes a(x | x Î A) Þ y Î B to tango.
There is a cost to building and maintaining a, but along with that comes composability.
If I3 comes along expecting c Î C, and wishing to dance, b(x | x Î B) Þ y Î C and b°a(x | x Î A) Þ y Î C solves world hunger.
Simple functional and set-based arithmetic is amazingly expressive. Anything can be defined as a simple transformation or mapping. Tell me your pattern, and I tell you there's a simple, concise means with which to tell the story using such constructs.
Notice how nicely this applies to service orientation and messaging, a technology in which abstract things flow through endpoints which often perform transformations and handoffs to other endpoints.
 Wednesday, July 21, 2004
Microsoft Research has a number of very interesting programming languages currently baking in the oven. I find most of them extremely interesting, and will probably be babbling on about some of them in the coming weeks. Here’s a quick breakdown of what appears to be available:
AsmL: Stands for the Abstract State Machine Language, and is an “executable specification language.” It was designed to assist the engineering process, and to allow people to write executable, verifiable design blueprints through the use of abstract state machines. This one is a CLI language, and sounds like it integrates nicely with the rest of the Framework.
Cw: X#, then Xen, and now Cw (C-Omega). Based on C#, but extends it in some particularly cool ways. It enables first class support for XML and data manipulation. The core concept is discussed in good detail within a number of very well known essays (Programming with Rectangles, Triangles, and Circles, and Unifying Tables, Objects, and Documents [PDF]). A managed language.
F#: A great mixed language (functional and imperative) based on ML and Caml. This one is also CLI-based, and as such one of its primary goals was to function nicely with the rest of the Framework. That said, it implements many of the OCaml libraries so it remains autonomous if that’s what you’re looking for.
Pan: An odd little one. A Haskell-based functional language, whose primary goal is to enable image manipulation and pretty nifty graphical effects. Looks like a fun language (and would be even better if it was implemented against Avalon!). It ships with its own interpreter, so it’s definitely not CLI-based.
Vault: A C-like grammar which adds to the classic language some syntactic sugar and many managed-code-ish features. It also uses the notion of API interfaces which, in addition to defining logical groupings of functionality, supports some contract-driven features. For example, compile-enforced pre-conditions are a core language facet. While it isn’t a CLI language, it still looks to be scrumbibilyunctious.
 Thursday, July 15, 2004
I have a growing respect for Microsoft employees who actually have ample time to blog about meaningful stuff. (As a side note, it is somewhat consoling, however, that there aren't many people who fit into this category. (Hah!))
Person p = PersonFactory.Load(“JoeDu“); Random r = new Random(); p.AcceptJob(msPosition); while (true) { p.Work(); p.Work(); p.Work(); p.Eat(); if (r.Next(0, 100) < 50) p.Sleep(); }
Where exactly do I insert the p.Blog() statement? :P
With that said, I've been living under a rock without internet access for over three weeks now. And without 99.9% of my belongings (some clothes, laptop, and books - all a geek needs... although I guess the first is optional). I'm sure this is contributing to the problem.
On to the exciting news... our stuff was delivered today, and we're moving out from underneath the rock and into our [semi-]permanent residence. And internet access is on its way... Wahoooooo!
I'm sure I'll find my way out of the dark shroud soon enough.
BTW, once I get Ponghorn functioning on the WinHEC drop of LH, I'll be talking a bit more about it. I'm super excited because the facts are:
- I was able to build a functioning WinFX application that spans the pillars.
- It wasn't forced - it was very natural to use the various pillars together.
- It was easy and took very little time.
- It works!
 Friday, July 09, 2004

WinFX... Avalon, Indigo, WinFS. All wrapped up together. Fairly realistic game physics and dynamics. Networked multiplayer frenzies.
Lots of fun building the demo, and lots more fun to be had DMing on top of the best platform ever.
 Saturday, July 03, 2004
I have now completed a full work week at Microsoft.
And I freaking love it here. The environment, the people, the work. I think my biggest challenge moving forward is to remember that there is life outside of work... Nearly every day this week I ended up so involved in what I was doing that I ended up working between 14 and 16 hours. And I loved every moment of it!
If I wasn't explicit about it previously, I've joined the CLR BCL team as a Program Manager working for BradA. My focus will be primarily on API design and multithreading in WinFX. In particular, ensuring that developers can walk up to the programming model and be productive immediately, while at the same time providing the ability to create very powerful software.
For me, this is a dream come true. I'm able to focus on the big picture of how various pieces fit together (and in fact ensuring that they fit together nicely!), while at the same time having to understand the platform in fairly granular technical detail.
I'll have plenty of stuff to say in the coming weeks. If you have any feedback you'd like to provide, there are a number of channels with which to do so...
- Leave comments on this blog;
- Email my Microsoft email: johnduffNOSPAM at microsoft dot com (Note: my Microsoft email address should be changing shortly to joeduNOSPAM at microsoft dot com);
- Email my personal email: joeNOSPAM at bluebytesoftware dot com.
 Wednesday, June 23, 2004
I've recently had a resurgence in my interests with regards to functional programming, and have decided that I want to dive deeper. More specifically, I'm looking to purchase a set of authoritative texts on the subject.
I'm moderately familiar Haskell and ML, and a bit more so with LISP (Scheme and Common). I've also toyed with F#, but only just enough to be dangerous. I'm more interested in the core fundamentals and theory of functional programming versus a specific language or how-to focus, although discussions on the historical evolution of languages is cool, too. Hardcore math and textbook style reading is welcome.
Any suggestions?
 Tuesday, June 22, 2004
|
|
Recent Entries:
Search:
Browse by Date:
| | Sun | Mon | Tue | Wed | Thu | Fri | Sat | | 27 | 28 | 29 | 30 | 1 | 2 | 3 | | 4 | 5 | 6 | 7 | 8 | 9 | 10 | | 11 | 12 | 13 | 14 | 15 | 16 | 17 | | 18 | 19 | 20 | 21 | 22 | 23 | 24 | | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Browse by Category:
Notables:
|