Flippant Remarks about “What Your Culture Really Says”

I’ve been reading the work of @shanley—work like “What’s Wrong With @antirez’s Post on Sexism in IT”—and I can immediately tell that I don’t need to be writing carefully around her thinking. I sense an authenticity in her strength of character—whether the character is one designed for writing publically or actually hers in “real” life.

I wrote in “Why I failed to talk to Carl Franklin about “Race” in the IT (Information Technology) World…” that the prejudice against women in the IT workplace is almost identical to that of the racist aesthetic used to poison “minorities.” In “What Your Culture Really Says,” @shanley makes my point without really trying:

What your culture might actually be saying is… We have implemented a loosely coordinated social policy to ensure homogeneity in our workforce. We are able to reject qualified, diverse candidates on the grounds that they “aren’t a culture fit” while not having to examine what that means – and it might mean that we’re all white, mostly male, mostly college-educated, mostly young/unmarried, mostly binge drinkers, mostly from a similar work background. We tend to hire within our employees’ friend and social groups.

I am embarrassed for the self-described Black women and men of tech that I’ve encountered digitally over the years because I know that too many of these folks would not only fail to write like this in public—even under an assumed name like “The Corporate Negro”—but off the record they would fail to write or speak like this in relative privacy. How do I know that @shanley is not Black? Surprise me. I dare you.

Anyway, I’m pretty sure that @shanley is not Black.

What’s deeper here is that I am almost certain that @shanley and I would agree that most IT “cultures” are Lord-of-the-Flies boy’s clubs (you can even have a “diverse” boy’s club but everyone speaks with the same Valley-Girl, posh American, Metro-sexual accent, wearing that same Star Trek uniform with a goatee) and we would also agree that there is nothing “evil” about these clubs—until they start telling lies to themselves and others that they represent a “universal” view. They should be honest and self-realized about their cave-man frat-boy, ethnic, provincial shit. Who am I to say this? These are the words coming from a physics student out of UCSB. I’ve worked in astrophysics labs and some of the first personal computer labs for institutional education in the country. I’ve worked in multi-billion-dollar finance, pharmaceutical and entertainment companies. I’m not talking out of ignorance. I don’t have an Al-Sharpton perm cascading split ends over my eyes, giving me an over-simplified black-plastic view of the world.

I know that I am dealing with a bunch of assholes (regardless of color-of-skin) when it becomes clear to me that the bunch has no accurate, well-researched idea of how they are perceived by outsiders. When a group can respectfully and almost-joyfully imagine why people would not want to be in their group then that group has something actually going on in the realm of reality-touching… The key is that imaginative respect. In the world of IT we often prioritize artificial intelligence over organic intellection. When I strongly suspect that my “team leader” used to openly call his mother a “bitch”—to her face—then I know it’s only a matter of time before I’m no longer a “cultural fit” for the “universal” business team of hurray-for-everything…

Related Links

Why I failed to talk to Carl Franklin about “Race” in the IT (Information Technology) World…

After over 18 years in the IT world of Southern Californian corporate America, I have learned that it’s “good business” to never complain. So here’s my chief complaint: I almost always dislike interacting with the boss of my project manager and what I dislike is easily discovered.

The boss of my project manager appears to me too far removed from actually solving the problem that I am in his presence to solve. It follows that the relationship I have with the boss of my project manager is largely political, cultural, ceremonial, psychological and—through no fault of my own—physical (with this one word, physical, I just made a suggestion that recognizes the existence of racism—just in case it was missed).

After over 18 years in the IT world of Southern Californian corporate America, I have learned that, in order for me to be recognized as a “successful” corporate resource, the boss of my project manager must be pleasured because of me. I have learned long ago and see time and time again that simply solving technical problems for the greater benefit of the business and, of late, excelling technically is “not good enough” for the boss of my project manager. There are other ‘intangibles’ that I’ve become aware of over the years that “must” be addressed in order for my success as a professional individual can be recognized as a collective corporate asset. I have written public notes like these over the years to symbolize my abjection away from the childishness of this sophisticated adult behavior and to memorialize my survival (to date) in the IT world of Southern Californian corporate America—and to suggest that some thriving is taking place… raging in the darkness.

Here are some of these ‘intangibles’ expressed as “vicious,” “bitter,” terse statements of negation:

I do not admire who you are and what you do. I do not think you are a “bad” person. I do not think you deserve rudeness. I do not think you deserve disrespect. I simply do not admire the fact that anyone—including myself—working at will for another person, regardless of the salary, possesses a social status symbol greater than its dollar value. This lack of admiration does not come from ignorance or jealousy. It comes from decades of experience and study of history.

When it becomes clear to me that you are a “company man” (which often takes seconds), I know it will be just a matter of time before you start to construct a (racial) profile (of “moral” bankruptcy) that will justify you taking some kind of preemptive action against me (even when it means undermining the productivity of your own company). What I am supposed to do, to delay the inevitable, is pretend how much I admire you—because, after all, this stuff which has nothing to do with what I need to solve your problem is your life’s work. I refuse to indulge you not because I think I am better than you, on the contrary, I have no childhood-survival instinct to pleasure people in such a way. Being such a liar would have laid out way, way more girlfriends for me over the years. I find it quite difficult to be highly technically trained ongoing and an effective political charmer at the same time.

I am not ‘grateful’ to be working for you. Michael Palin of Monty Python fame wrote a line in a script that’s memorable to me, “Isn’t nice to free a chap?” He was making fun of the middle-class, white-liberal sentiment of providing freedom for the “underlings.” And of course, as the ridiculing joke continues, we make fun of the expectations of gratitude oozing out of our white-liberal savior (of any skin color). Every sane Black person knows who is first to be fired and the last to be hired. It has been no illusion to me that I have been working for the last 18 years in the IT world because the company could find no one else remotely qualified to the do the job. Most of my career has been spent working for companies as a Microsoft developer that Microsoft itself would be reluctant to recognize as a model for a case study.

I am very, very aware (usually within my first week) of what the company has been doing wrong before I was brought on board. In the first decade of my IT career, I allowed myself to succumb to the very strong suggestions that I was living in a technical fantasy world. Over the last eight years it has been crystal clear to me that these fools should be grateful that I have been working with them for so damn long. After what has happened to Sony Pictures and Target, it should be clear to any fool that there are serious company cultural problems around IT—making me quite a proud, poor “cultural fit” for the “team.”

I am not your friend and I am not glad to see you. When I am working for other people, these three things happen: (i) I am gathering and building economic resources that can be used to take care of my children; (ii) I am separated from my children who have never been allowed to see me work; (iii) I am placed in an uncomfortable working environment, often a food desert, polluted with noise, airborne infections, traffic jams, low temperatures (from office air conditioning) and the very subtle daily suggestions that I am not welcome (yet another unwelcome reference to racism—‘traditional’ American social rituals of the collective unconscious).

Any self-respecting person that values their true freedom has the same ‘intangible’ problems I’ve just outlined here (with or without the accelerant of racism). Many of these people would become angry that I bring these issues up like I think they are something new. No, —this is 19th century shit—these are old issues:

  • I do not admire who you are and what you do.
  • I am not ‘grateful’ to be working for you.
  • I am not your friend and I am not glad to see you.

Besides plotting for my eventual demise, is there anything else you can do for me?

Yes. You can address the bullet points listed above directly by enriching your life outside of corporate America such that the core of your identity is not dependent on your employment. When you do that, you will authentically not really care whether I admire you or not. You will also be taking care of yourself on a holistic level which definitely deserves my admiration and gratitude. You are actually helping to change the world by taking care of your true self—not your fake-ass corporate self. I would genuinely be glad to see you (even when you are still a little racist).

Yes, here it is in “company man” talk: when you hire me as a contractor treat me like one. Do not speak to me (apart from the first-day meet and greet) unless you are there to terminate me, provide some information for solving your technical/business problem or congratulate me for making your business successful. Let your project manager serve as a buffer between me and you. Your project manager works with me, boots on the ground in the shit every day—and she knows how valuable I am. Trust her trust in me. It will not hurt my feelings should you find yourself not wanting to be around me (even when you know I am helping significantly to solve your business problems), on the contrary: I only need people around me that will make me a better person holistically, provide me with technical information or teach me business skills relevant to the “ubiquitous language” of the clearly-defined problem domain. I don’t need little emotional parasites around me that are curious about me for ‘historical reasons’ (racism again) or those possessing small talk about their fucked-up little consumerist lives and the HBO (or AMC) serials that frame them. Don’t force yourself to invite me out for drinks. I don’t drink and I probably don’t like you. Consider that possibility and move the fuck on: let’s keep it strictly business. Distance and formality does not always mean hostility. The absence of a smile does not always mean sadness. Have patience and introspective respect—stop being so morbidly nosey. Have courage before the void of the unknown—unless of course you are a cowardly little man-bitch.

“Why don’t you start your own business?”

Every person who has suggested to me that I should start my own IT business are not running their own IT business. Often making suggestions around this is similar to suggesting to an obese person they should lose weight: we’ve thought about it and many of us do the research. You see, kids, I’m not one of those bitches that can forget about fundamental challenges. I’m continually listening for signals to plot a course forward.

What I hear from listening to years upon years of tech-podcast episodes, watching international-conference videos (and meeting actual people in person) are these points for consideration:

  • You can start your own business and do W2 labor at the same time (at the beginning).
  • Get at least a DBA and a business checking account for consulting jobs that need it for tax purposes. Advance to incorporation when you are confident you can maintain it (even as a vanity expense).
  • When you run your own consulting business you run the risk of doing very little coding/design and more “relationship management,” often with crappy people.
  • Don’t start a business without dedicated customers lined up, customers that recognize your social-media “brand” and its compelling story.
  • Have an escape plan for economic downturns. Don’t let a payroll burn down your personal savings just because you are too much of a cowardly fake to tell your employees it’s over.

The racist side of the American need to be liked

When I was a young Black teenager of the 1980s, I remember reading about clever Japanese business men gaining an advantage over North-American dealmakers because the ‘weakness’ Americans have around the need to be liked. “Hey, buddy!” “Hey, pal!” I remember snickering to myself ignorantly assuming that this ‘weakness’ would have no effect on me. I was profoundly wrong.

An American “company man” at the very least needs to be feared let alone being liked. Couple these base needs with “old,” traditional American rituals around instilling terror in slaves, and it becomes elementary how the neutrality of a Black person insisting on being an outsider can be interpreted as the hostility of a ‘traditional servant’ supposed to be an insider. “You are either for me or against me.” When a self-described “white man” calls me his “buddy” or his “pal” in a business situation, he is speaking volumes to me (some of these volumes, written by Mark Twain)—and, of course, he would claim nothing is going on and may ask, “What’s my problem?” On the fake-ass, glossy, corporate-polished surface, he would be absolutely correct. Surely, he’s called “everybody” buddy.

After 18 years working with corporate America, I still insist that I am a neutral outsider (when it comes to interacting with the individual persons of the organization). Most of my career, I have been given the title “business analyst,” “contractor” or “consultant”—these all seem like ‘outsider’ titles to me. Most of my career I have not been a permanent employee. Most of my career, the “family” corporate culture of America here in Southern California has effectively insisted socially that I am insider (superficially), while systematically taking the advantage of me as an outsider (no health insurance coverage… no paid sick days… no paid holidays). So from the outset, we have a fundamental disagreement. What I found is that I have not been ‘allowed’ to be respected as a neutral outsider by the boss of my project manager. What I found are a prescribed set of social roles ‘allowed’ for me (very similar to the dramatic roles ‘allowed’ for Black actors in Hollywood). When I am not playing these parts—then surely I am playing the villain (which, again, is yet another insult from the corporate narcissist).

Morgan Freeman

The situation I am describing above is very similar to what happens to young women in corporate America. There has been much talk of late about women in tech and their woes are almost always identical to mine. Almost…

But it must be said that my youth in corporate America—my 20s and my 30s—were the worst of my years when it came to these ‘intangibles.’ What I have been finding of late in my 40s (for those not savvy enough to find my writings yet on the Internet) is that I am more and more treated like Morgan Freeman’s character in the Batman movies (this is actually another Mark Twain reference which would require a whole new Blog post).

I am sure that Morgan Freeman himself would disagree with me (publically) but I assert that his career is like my career in this one aspect: when Morgan was young Black actor he was out of work most of the time and obscure but when he got his gray hair he suddenly “fit in” with “the team” and became “successful.” Morgan would be very socially adept to let “the world” assume that when he was a young man he was a complete idiot and it’s just a coincidence that his career took off when he is seen as physically past his prime (and when the world would like to see itself as less racist).

I’m not as “smart” as Morgan Freeman. Using the Internet, I think I need to explain to my children and other young Black folk what has happened to me from my point of view. Silly. I was not “of service” to you.

  • I do not admire who you are and what you do.
  • I am not ‘grateful’ to be working for you.
  • I am not your friend and I am not glad to see you.

Related Links

My Three WCF Paths to Silverlight Data Access

Flippantly, here they are:

  • One: Silverlight-enabled WCF Service (backing View Model collections with ObservableCollection<T> by default)
  • Two: WCF Data Service (OData, backing View Model collections with DataServiceCollection<T>)
  • Three: Domain Service Class (RIA Services, backing View Model collections with LoadOperation<T>)

ServiceReferences.ClientConfig Is Useless in a XAP That Is Loaded by Another XAP.

My Songhay.Silverlight.ApplicationLoader compiles into an 8KB XAP file and is designed to load a bigger XAP file—which in turn uses MEF to load even bigger XAP files. One of these MEF-composed XAP files may contain a Service Reference, which, by default, generates ServiceReferences.ClientConfig. This file is designed to be used by the initial XAP declared in the HTML markup used to call Silverlight. My initial XAP is only 8KB and has no room for one or more Service Reference entries.

My way around this issue is to replicate the ServiceReferences.ClientConfig declarations imperatively. I have written an extension method to System.Windows.Application that accomplishes this:

public static BasicHttpBinaryBinding GetServiceClientBinding(this Application app)
    var mode = app.Host.Source.Scheme.Equals("https",
        StringComparison.InvariantCultureIgnoreCase) ?
        BasicHttpSecurityMode.Transport : BasicHttpSecurityMode.None;
    var binding = new BasicHttpBinaryBinding(mode);
    binding.MaxReceivedMessageSize = int.MaxValue;
    binding.MaxBufferSize = int.MaxValue;
    return binding;

For more details, see “Silverlight ServiceReferences.ClientConfig Alternatives” by Manish Dalal. Notice the my extension method returns a binary HTTP binding—Silverlight requires this more payload-efficient binding, which is the chief characteristic of a Silverlight-enabled WCF service.

IEditableObject Moves CRUD Eventing into the View Model

Controls like the DataForm use IEditableObject by convention, defining three methods BeginEdit, CancelEdit and EndEdit. The “begin” method is an opportunity to cache the instance implementing IEditableObject such that the “cancel” method can be used to restore data from this cache. The “end” method passes the instance implementing IEditableObject to the data layer.

Based on my current level of experience with this IEditableObject pattern, I am recklessly confident that my “end” method will not need to distinguish between Insert and Update. This suggests that I am rather foolish and/or I am setting a default value for the primary key associated with my instance implementing IEditableObject—like this:

[Display(Name = "Primary Key", Order = 0)]
[Key, Editable(false)]
public int? PrimaryKey
    get { return this.GetPrimaryKey(ref this._key); }
        this._key = value;

My private method GetPrimaryKey() passes the key field by reference and should be able to derive a valid key for the real-world underlying database. In fact, it can actually perform an Insert operation and have an “empty” record persisted before the user begins an edit session. This technique strongly suggests that the “cancel” method in the IEditableObject contract needs a cleanup procedure to ensure that the underlying database is not littered with “empty” records. I may need to study how more experienced developers address these issues.

What I do notice is that there appears to be no way to use IEditableObject with Delete operations. I assume that one would have to fall back on control eventing to handle any ceremony around deletes. The DataForm, for example, has a DeletingItem event, described by Tim Heuer in “Silverlight DataForm and confirming deleting an item.” Another DataForm event to consider is the EditEnded event, covered by Dino Esposito in “The DataForm Control in Silverlight 3—Revisited.”

My Scroll-into-View Strategy for the DataGrid

As of this writing this is my scroll-into-view strategy for the DataGrid:

this.DataGridOne.SelectionChanged += (s, args) =>
    if(this.DataGridOne.SelectedIndex == this._previousSelectedIndex) return;
    this._previousSelectedIndex = this.DataGridOne.SelectedIndex;

This approach requires declaring an x:Name on the DataGrid.

PagedCollectionView Swallows Collections Whole!

As of this writing, I know of only ways to implement the classic Master-Detail relationship between, say, the DataGrid and DataForm: with a PagedCollectionView and with the simpler CollectionViewSource. Both of these types implement ICollectionView (for details, see the 2008 article “ICollectionView explained”).

Because the PagedCollectionView supports client-side paging (and the DataPager), I prefer the CollectionViewSource (however, when server-side paging is in effect the CollectionViewSource might be useful when a more lightweight design is required). With the PagedCollectionView, the initial problem for me was getting synchronization to work between the Master control and the Detail control—the ObservableCollection<T> was not working out of the box. However, passing an instance of ObservableCollection<T> into the constructor of PagedCollectionView did the trick!

DataServiceCollection<T> is not “Blendable”

Because DataServiceCollection<T> has a dependency on some data-service “context,” DataServiceCollection<T> is not “Blendable” because mocking up design-time data is non-trivial (it may require a live, local OData service always running). However, because DataServiceCollection<T> is a subclass of ObservableCollection<T>, the recommendation here is to use ObservableCollection<T> in View Models.

Flippant Remarks about Job Interview Questions

In my ever-changing world, there interview questions that are well placed and worth my time and then there are ‘trick’ questions that are (to me) more of a personality test than a technical test (based on the technology actually used in the workplace). It is better to ask about personality directly in an interview rather than indirectly inquiring (either deliberately or out of ignorance).

Adam is a Hash Table

These are the questions I’ve encountered (that I could not answer) over the last few weeks that are worth my time:

  • What is the difference between the Logical Tree and the Visual Tree? This question can be considered a fundamental WPF question—but it is the kind of question that only comes from experience with advanced scenarios—or by reading some extensive prose meditating on how WPF works. In 2007, Josh Smith does exactly that in “Understanding the Visual Tree and Logical Tree in WPF.” As Jason Dolinger of lab49 suggests in “Exploring the WPF Logical and Visual Trees,” the logical tree closely represents programmers intent (what is declared by the programmer in XAML) while the Visual Tree represents what WPF or Silverlight is doing under the hood to actually render what is intended.
  • What is _ViewStart.cshtml? I actually was very warm on this one. This is a great question to test for MVC3-level intimacy. I have not been working with MVC on a daily basis over the last three months so I’m not too upset for not getting this one.
  • What is the purpose of the yield keyword? This question opens a whole new subject of computer science under the heading “state machine”—according to stackoverflow.com: “Yield is implemented by the compiler as a custom class that implements a state machine.” Erik Forbes: “Yield is used to create implementations of the Enumerable pattern—a software pattern that allows you to treat a collection of things as an enumeration, over which you can perform some process.” MSDN: “The yield statement can only appear inside an iterator block, which can be implemented as the body of a method, operator, or accessor.” I really should know about this topic. No “excuses” here.
  • What is the difference between ref and out parameter modifiers? “…semantically, ref provides both ‘in’ and ‘out’ functionality, whereas out only provides ‘out’ functionality.” Where in refers to initializing the variable/parameter (with the expectation that it will be read inside the method accepting the parameter). This implies that out suggests that the parameter is write-only. I cannot think of a situation (outside of Interop and TryParse patterns) where using ref or out parameters are required. I prefer to use a struct or a class (stacking complexity vertically) over using multiple parameters (stacking complexity horizontally).
  • How can custom validation be centralized/reused by several view models? The CustomValidationAttribute accepts a Type and a method-name string where the Type points to a central validation class. I have actually written code using this kind of centralized custom validation—but clearly not enough to memorize this level of detail during a job interview.
  • What is the volatile keyword? “The volatile modifier is usually used for a field that is accessed by multiple threads without using the lock statement to serialize access. Using the volatile modifier ensures that one thread retrieves the most up-to-date value written by another thread.” My limited understanding of threading is a known issue—I was actually relieved to find out that this question was related to threading.

Here are some parlor-trick questions that are not really worth my time (but they are apparently worth serious money):

  • How would you swap the contents of two variables? I am unable to think of any real-world situation where I would need to do this. I actually got angry when I was asked this question—which prevented me from answering the question properly.
  • Given a LinkedList, with a head and a tail, how would you make the head a tail and the tail a head? I assume that the short answer here is to use the Reverse() method (see MSDN). When you can’t use Reverse(), then you can (ha, ha) swap the contents of the Next and Previous properties of LinkedListNode<T> in a state machine with null checks—null implying a head/tail. When this question was presented to me, I assumed that the head was at the top of a hierarchy (like a parent node) and the tail was the last child in this hierarchy—this caused me to shut down and short circuit at the whiteboard in more inappropriate fits of anger. (This question, by the way, was not asked of me within the last few weeks but about four months ago—before I took my last job.)
  • What is the difference between a Dictionary and a HashTable? As far as I’m concerned, a Dictionary supports generics and HashTable does not (it boxes values in object)—that’s the difference. The lack of generics support implies that HashTable is irrelevant to me for most of my work (but this may imply that I’m ignorant of the use of HashTable in distributed cache systems—used in the real world of high-traffic Web sites).

So the personality test that I’m failing is that I get angry when people f around with me—such that my anger prevents me from protecting myself. My anger causes me to go into a form a paralysis that renders me useless. When sadists sense this, they attempt to press my buttons with abandon.

Beyond the anger, some of these parlor trick questions are really tests that look for computer science training over, say, physics training. So here are some ‘pure’ computer science subjects I’m sensing out there:

  • The technical history of collections. (Who invented the LinkedList and why?)
  • Memorializing sort algorithms. (What is a bubble sort?)
  • Bitwise operations. (What is the [Flags] attribute used for?)

I do admit that these subjects are of little interest to me and I maintain that it is unfair to refuse to hire a person based almost entirely on whether they are knowledgeable in these areas. To me, you don’t hire a person that is not aware of, say, how MVC3 works intimately (which I have been guilty of). I am also guilty of being afraid of confrontation in these interviews (turning my anger against me)—what I should do is ask this question:

I do not understand this question, is there another one?

In the real world there should always be another question. The real world always operates in holistic diversity. There is no perfect, one way in real life. When my tester says no, there are no other questions, I should have the courage to politely conclude the interview, stand up and leave the building.

Related Resources

@elijahmanor, @jongalloway and others…

@elijahmanor Elijah Manor

“Modernizr.js : Feature Detection” by @OdeToCode #webdev z-t.go.ly

@elijahmanor Elijah Manor

“KnockoutJS Custom Binding for Invoking an Action with Enter Key” by @smichelotti #javascript sd3.go.ly

@jongalloway Jon Galloway

JSON Formatter & Validator—can take a URL and return validated / formatted JSON – jsonformatter.curiousconcept.com

@elijahmanor Elijah Manor

“Setting up ASP.NET MVC 3 to work with jQuery UI 1.9” #jquery http://v8h.go.ly

@elijahmanor Elijah Manor

“Replacing Text Nodes With jQuery” by @bennadel #jquery http://t5v.go.ly

@mtaulty Mike Taulty

I missed this “Was .NET all a mistake” bit.ly/peV466—the background is well written and it’s a good (provocative) discussion

@elijahmanor Elijah Manor

“SassAndCoffee 1.1 Released for ASP.NET (MVC & WebForms)” by @xpaulbettsx #aspnetmvc http://j.mp/owcJ6A

@pluralsight Pluralsight

Free Webcast—Improving Web Performance with Robert Boedigheimer—starts in 30 minutes! http://ow.ly/66uND RT

@codinghorror Jeff Atwood

“HTML5 standardizes every terrible practice inflicted on us by browser authors, making them part of the web forever.” stackoverflow.com/questions/3434…

@pluralsight Pluralsight

Steve Michelotti @smichelotti has just published a new course: ASP.NET MVC Scaffolding bit.ly/qQf8zy

@kazuhito Kazuhito Kidachi

Don’t use IDs in CSS selectors? ❧ Oli.jp (@boblet) – http://icio.us/kLHLoH

@jongalloway Jon Galloway

Strange to see IE Conditional Comments go http://bit.ly/qka6HV—handy for IE6 specific stylesheets, hopefully no longer as necessary.

@LeaVerou Lea Verou

Microsoft removes conditional comments, behaviors and XML Data Islands from IE10, due to incompatibilities with HTML5 blogs.msdn.com/b/ie/archive/2…

@JohnBristowe John Bristowe

Awesome scrolling experience is awesome: http://www.newzealand.com/

@KyleMcClellan Kyle McClellan

Survey: Tell me what you think of the RIA DomainService Wizard http://bit.ly/ljXCEq #RIAServices

@martinfowler Martin Fowler

I’ve published an article on eradicating non-determinism in tests: http://martinfowler.com/articles/nonDeterminism.html

@mattpodwysocki Matthew Podwysocki

Erik Meijer’s CoSQL paper on the duality of SQL and NoSQL got Slashdotted: http://bit.ly/feNxRE #cosql

@maryjofoley Mary Jo Foley

Microsoft readies three new Office service packs: http://zd.net/eW2kPK

@JesseLiberty Jesse Liberty

Posted: Linq: SelectMany http://ow.ly/1bT14x

@mtaulty Mike Taulty

Building with WCF RIA Services? http://goo.gl/fb/B3ysB

@davewiner Dave Winer ☮

I’ve never understood what the browsers guys do with RSS. http://r2.ly/6zem

@amyhoy Amy Hoy

i hate watching smart, capable people defend crap—or refuse to express strong opinions—in the name of “professionalism”