Sunday, April 19, 2009

The shackles of IP taint

or
How it’s easier to drink the Kool-Aid™
if it’s the only drink you’re allowed to have.

The problem: If you, as a developer, introduce intellectual property into Microsoft’s distributable software portfolio1, and the ownership of that intellectual property is under dispute, Microsoft may come under (additional) threat of lawsuit.

The “solution”: Make the policy such that Microsoft employees have no way of copying any external IP—make it against the rules to read Open Source code by default, even outside of their job.2 To a lesser extent, except for specific competitive reviews, even using alternative products (esp., if it’s a development product) is frowned upon lest you absorb possible IP in the visible framework code.

The ramifications for your average Microsoft software group aren’t that problematic. They’re generally consuming the Windows OS (Microsoft), using the Visual Studio tools to build their project (Microsoft), and the majority of the analysis and testing tools are Microsoft. Furthermore, if you don’t understand an API’s MSDN documentation, you can just load the symbols and debug right into it and find out for yourself what is going on (or going wrong).

But it does mean that you are limited to what the “state of the art” is to what the Microsoft-available solutions are, and furthermore to not really know what you’re missing.3

As soon as you get on the fringe, the all-Microsoft strategy starts to slip. As a MacBU developer and now as a CLR developer working at least part time on the Macintosh CoreCLR, very little is in-house. Trying to track down something in a closed-source Apple product is just as bad as Apple trying to track something down in our closed-source products, so we get a taste of what it’s like to be a third party. But even when it’s open source, we still can’t download it and look at it. Even if it would be expedient to do so to figure out what our (mis)use of it was. Even when the documentation is sketchy or ambiguous.

So as it stands, we rely heavily on ADC. We can’t peer into the code, but they can and give us hints, or code samples. And obviously, they go and fix bugs we report in their software, as well as in the family of open source projects that are released with Mac OS X. Which leaves us back again working in our own sandbox.

It sometimes takes years for external ideas and outstanding tools to penetrate into Microsoft, and it seems to me, almost entirely through people who are new industry or college hires, bringing in their previous backgrounds (taint notwithstanding4) with, generally, open source community. The rest of us have to work hard (and run a rather annoying gauntlet) to keep from relaxing into navel-gazing.
--
1As opposed to in-house tools that are not distributed.
2Unless it can be demonstrated that there are sufficient business reasons to justify the expense of having the legal team review the licensing, and incur the additional risk to Microsoft.
3On the other hand, we also have the problem that there are usually many different (sometimes nigh identical) solutions to the same problem that aren’t well publicized and thus proliferate.
4If a new hire made significant contributions to an open source product, then they’d be barred from working on any Microsoft product that would be of similar ilk, presuming that that would be the IP they might leak from external sources into the MS codebase. Unfortunately, there’s no good mechanism to determine what the overlap is, so it’s just a matter of how much risk the dev managers and legal team think they’d incur.

Tuesday, April 07, 2009

Baked Mac & Cheese

I’ve never really been particularly good in the kitchen. I tend to need a recipe and to have all the ingredients, and generally to only work on one thing at a time. That and I’m never quite sure where everything is, and generally have to look in three separate places.

Nonetheless, recently, I’ve been making a particular dish multiple times, and am getting better at timing things to be ready Just In Time™: The Joy of Cooking (‘97 edition)’s Baked Macaroni and Cheese.

My friend Mason, author of the Tiny Kitchen iPhone application, swears by the Cook’s Illustrated version (the older, adult version), and I will have to try it eventually. Nonetheless, his app has helped me on more than one occasion to set up a shopping list so I can remember to get everything I need for it.

Towards that end, I am adding it here, in Tiny Kitchen form, sans Joy’s copyrighted description:

---begin-tinykitchen---
Title: Baked Macaroni and Cheese (Joy of Cooking)
Time To Cook (in minutes): 45
Tags: dinner

----
2 cups elbow macaroni
3 tbsp. butter
2 tbsp. flour
2 cups milk
0.5000 - onion (minced)
1 - bay leaf
0.2500 tsp. paprika
2.2500 cups sharp Cheddar or Colby cheese (grated)
- - black pepper (freshly ground)
0.5000 cups bread crumbs (fresh)

----

Guid: 4EC3A73B-5A81-4EA2-A600-8C20A84AC72F
---end-tinykitchen---

I’ve tended to shop at Trader Joe’s for the ingredients, and use these specifics:
  • Like Cook’s Illustrated suggests, I use a blend of mostly sharp cheddar (extra sharp Celtic or extra sharp Wisconsin, for more orange-y look), and some Monterey Jack.

  • I use fusilli rather than elbow macaroni.

  • I use (organic) whole milk.

  • I also buy frozen chicken breasts, and broil two to add a little tasty protein to my fat and salt.

I’ve used Tiny Kitchen’s recipe scaling feature multiple times, having prepared it in a single batch only once. More often it’s in two or three times quantities. I’ve found it difficult to figure out what the right amount of time, or really, the right creamy consistency to reach before pulling it off the stove and adding the cheese. Also, trying to add salt and pepper to taste for varying quantities seems hard to get right.

I made it again this past weekend in a double batch, half for us, and half for our newly-parents-again friends S. Ben, Meghan, “little” Nathan, and now Eliza. From my own tastebuds, it was a good run.

Saturday, April 04, 2009

IP for loans?

With the big three auto manufacturers repeatedly asking the government for loans to stay alive, I think now is an excellent time to use our leverage to make those loans with the condition that they sell the IP rights on selected parts of their patent portfolio into the public domain in exchange for some amount of debt forgiveness. Whereas it’s going to be impossible to clean up the patent law in any near term, it would be interesting if some of those defensive patents became available for use without licensing. I wonder how much is in there that inhibited competition?

On the other hand, as an alternative to releasing them into the public domain, it might behoove American citizens to have the government retain these patent rights on our behalf. In today’s world of cross-licensing deals, and having one patent-infringement case always spawn a host of counter patent-infringment cases (in a MAD sense), perhaps it’s better to have a defense for the public.

Right now, if you, as an individual, infringe on a patent without the requisite licensing, you may get a cease-and-desist order (if they find out), and may have to pay a rather hefty fine (with treble damages if you knew you were infringing). Companies can get hosed, because if their product is based in part on the infringed patent, then, depending on the licensing that is available, it may no longer be a viable product once that happens. In the case where they’re simply copying the idea, that might be a good thing, but in the case where it was parallel discovery1, then they’re just out of luck.

If, like the companies with big patent portfolios, the government managed this portfolio on behalf of its citizens, they could do some interesting things. Try out this thought experiment based on the following licensing strategy:
  • Every citizen gets license to use anything it the government managed portfolio for non-commercial use. This equates nicely to the same effect of having the patent be in the public domain.

  • Any commercial entity can acquire a low cost license to use the patent, iff they agree to cross-license anything in their portfolio to the entire American public for non-commercial use as above for as long as they use the license.

  • Any commercial entity can retain licensing privileges for their IP, but there will be a much higher licensing cost to use a patent in the government portfolio.
Furthermore, the government can renew the patent as long as anyone else could.

Using this mechanism, we improve on the benefit to the public over these patents going into the public domain by (1) giving incentive to the companies to open their portfolio to the public, and (2) providing extra government income, which could be earmarked for the maintenance of the offices managing the government portfolio, as well as the patent office itself.

Personally, I think the IP system needs a fairly large overhaul to fix the issues of (1) the increasing (and varied) pace of discovery and obsolescence, (2) the volume of ideas and the general lack of cross-referencing2. Nonetheless, in lieu of a big rewrite (which is unlikely to occur wholesale), this incremental fix might be worthwhile. And GM could start us off.
--
1Parallel discovery is actually very likely to occur. Since there are treble damages for knowing you’re infringing, it behooves one to not know. Ultimately, companies stick their head in the sand and hope not to infringe, while their legal teams, separated from the rest of R&D by a Chinese wall sit ready to do patent searches if a lawsuit comes in the front door.
2I expect that the patent publications are like dry versions of the Whole Earth Catalog rather than a hierarchically organized, indexed, and cross-referenced document that leaves little doubt whether you’re product infringes and/or your claim is a new claim.

Thursday, April 02, 2009

When the government speculates

I’ve been listening to the Planet Money Podcast recently, since its recent cross-over broadcast on This American Life (375: Bad Bank). They’re doing a brilliant job at explaining the complicated financial strangeness that’s going on. In a recent episode, #23: In Search Of Bad Guys, about half-way through (14m 9s), they talk about solvency vs. liquidity. Check it out, and then come back.

The upshot is that the mortgages the banks are holding aren’t worth the full fair value, as not everyone is going to pay them. The banks want to sell them at as little loss as possible in exchange for reducing risk. The question is, is the price at which people will buy these (the bid price), artificially reduced by the market’s general lack of available funds to invest.
If we had prescient bean counters today, they would foretell that the real value is going to fall in one of these three segments.
  • Above what the bank is willing to sell it for—This is a real win for all folks involved, though least for the banks. The banks take a loss to reduce risk, but remain solvent. The investor-taxpayers make money on their investment while also staving off general economic problems caused by the closing of an insolvent bank.

  • Between what the bank is willing to sell the “toxic” asset and what the current market says it’s worth—This is the big hedge. The idea here is that the bank has already lost money on the investment, and the taxpayers are going to eat further losses in exchange for keeping the bank solvent, as insolvency presumably would cause even bigger losses than these across the whole economy. However, it’s still not as bad as the market currently looks (which is what the banks are currently arguing—whether it’s lack of liquidity or lack of good forecasting, the market is unnaturally depressed).

  • Below even what the current market thinks—This is the true ugliness, where we, the taxpayers, are eating even more of the bank’s losses. The bank is, for all of its previous losses, getting a great deal here, basically being given taxpayer funds to pay for its bad bets. As these costs increase, it becomes harder and harder to justify keeping the bank alive vs. just letting it fail. (I suspect the FDIC costs would be pretty easy to calculate; it’d be the derivative issues in the economy that would be hard to figure.)
There is an awesome self-reinforcement built into this system. If the government produces a program to buy toxic assets and preserve the banking infrastructure, then the economy is likely to improve (or at least improve sooner) resulting in an increased likelihood that the mortgages that are so toxic will actually be paid on. Now, if only they could show how we’re going to pay all this back and how long it will take.

Tuesday, December 02, 2008

iPhone-to-iTunes Fail

The May-December relationship between my new iPhone 3G and my G4 cube has quickly and suddenly given up the ghost. Two days after getting the 2.2 software on my phone (which I would have done with my G4 cube, but its 802.1b connection was way too slow to download the software, and I used my 802.1n on my MacBook Pro), my phone showed the graphic that I needed to plug it into iTunes. Le sigh. So I try to connect to the G4 (which has finally downloaded the software by now), and I get:
 iTunes could not connect to the iPhone Mr. Herring’ Æther Engine because an unknown error occurred (0xE8000001).Well, carp. I go back to my MacBook Pro and restore the phone. At this point, I suspect I should be able to hook it back up to the G4, but no. iPhoto realizes it needs to launch, but iTunes spends most of two minutes showing the beachball and finally pops up the same error. Unfortunately, my MacBook Pro, which is a working machine (many enlistments in lots of source), has a pittance of the music / podcasts / playlists / etc. compared to that of the cube. I’ve finally given up and copied my various applications over to its iTunes installation, and am about to sync using the laptop instead.

Also, is it too much to ask to have the backup remember the text correction data that it's learned? I’ve taught it not to correct certain words and now it appears I get to do it again. :(

Updated (12/3):
After spending a week of trying to get this to work (rebooting the cube, rebooting the iPhone, force quitting the iTunes Helper app, etc.), and finally getting worked up enough to post about it, last night after posting, it finally worked. For some reason, connecting the phone while iTunes was up was causing the error, but connecting the phone first, and then booting iTunes got me to the “You need to put in your phone password” error, and thence to actual connection (again, having to quit iTunes and ensure the phone was connected and unlocked, and then launching iTunes again). Now, after several hours of USB v1 synching, my phone is mostly back. For some strange reason, the AppStore thinks all of the applications are out of date and is now downloading replacements, but whatever.

Monday, July 07, 2008

Redefining free

From the ASP.net website,
ASP.NET is a free technology that allows anyone to create a modern web site.
and from the getting started page,
All you need to get started with ASP.NET is the free .NET Framework and the free Visual Web Developer.
I am now wondering whether Microsoft is now issuing also free licenses to Windows, so that as a Macintosh owner, I can actually use the technology. No, not so much. Perhaps they need a superscript asterisk*.
--
*Requires the purchase of a qualified Microsoft Windows operating system.

Wednesday, July 02, 2008

Setup woes

Could someone explain to me why installers are often the least thought-through part of the application development process? And more importantly, why, especially at Microsoft, the people who write the software and thus know the limitations it has on file layout (including files comprising the application and its support libraries, but also plugins, caches, temporary user data, persistent user data, configuration files or *puke* registry keys) are usually not the people producing the software installation packages? And even when they are, they think first Test Matrix and second Customer Utility.

Installation is the very first user experience (after opening the box, in the case of full package product, which rarely happens anymore with web downloads), and is a regular experience as upgrades come out, or more likely, security patches. Getting your installer right enables people to install your application where they want it to. Whether that means an alternate volume (other than the boot volume) or in a user-specific directory (in the case where they’re not an admin and don't have access to the root of the volume), or on some network share for multiple people to use, they should be able to get it there, and installer writers are notorious for arbitrarily limiting this.

Furthermore, custom installer scripts do the most insane things, requiring you to quit apps that have nothing to do with the thing you're installing, or to reboot because they couldn’t figure out how to gracefully install in a way that lets running apps continue to work correctly. Gaah!

I downloaded the RDC update (well, from v2.0 Beta to v2.0 RTW) and tried to install it. It wouldn’t allow me to install to my data volume. Why? No reason that I can fathom. (It doesn't have the same installation requirements promise that Mac Office 2008 made; it's an RTW product and free–they could change it to be whatever they wanted, even 10.4.10. Heck, that would even reduce the all-important testing matrix.) Even if I use the same hack to fix that, the package was not marked as relocatable, so it would have installed the thing to /Volumes/OtherVolume/Applications, rather than let me nicely select where to put it (i.e., to replace the Beta version that was on the data volume and running fine from there). So, I decided to install it “normally” and just move it after the fact. While running, it asks me to quit Entourage. Why does it need to quit Entourage? There’s no shared libraries between Entourage and RDC. Ah, but it needs to install Microsoft AutoUpdate, and Entourage uses that. There are two obvious problems here: (1) There was nothing in the package that said it was installing two different items, RDC and AutoUpdate. If AutoUpdate is not in the package of RDC, then it should be its own separate line item to be installed. Even if the developers wanted to enforce an (unnecessary) dependency between RDC and AutoUpdate, having it called out would be actually useful. (2) Why does Entourage have to quit in order to update Microsoft AutoUpdate? Even presuming that there was an actual update that was occurring (which seems strange considering I just updated to Office 12.1.1, and would have expected that any updates to AutoUpdate would have been in that package as well). The best part is that your only choice when Entourage is running is to quit Entourage, because the only button available to you in the installer is “Continue”, and if you click that while Entourage is still up, it just causes the dialog to reappear. I suppose there’s always Force Quit.

So, in summary, the installer fails on several fronts:
  • relocatable installation
    • different path
    • different volume (unless the volume happens to be a system volume of 10.4.9 or later
  • non-admin installation to ~/Applications
and is a little annoying about hiding multiple packages with weird installation requirements.

Guess I’m back to fighting the uphill battle.