Name: Mark Gritter
Member since: 2000-07-18 04:51:12
Last Login: 2010-06-16 19:32:55



I'm a graduate student at Stanford University, working in networking and distributed systems. I'm also a software engineer at Kealia, Inc., a cool startup company.

My current (non-startup) software project is a prototype implementation of a "content router" (extended nameserver) for my research, and embedding this implementation into a simulation framework.

Previous projects with source available:

  • libdelcom++
  • I wrote a web proxy called MeStream which adapted the ThemeStream website to be more to my liking. Unfortunately they're out of business, but the code may be rewritten into a general color-modification proxy for annoying websites.
  • SLIME, an instruction-set simulator for a very simple machine. No homepage, but you can get the (painfully old) source.
  • A port of the SPIM instruction-set emulator to NeXTstep.

Recent blog entries by Grit

Eugene Volokh does an excellent job explaining why John Ashcroft's "obsenity crackdown" is doomed to failure, tyrrany, or both.

Not that that's stopped the "war on drugs".

I do wonder, however: Could a P2P service be hit with obscenity charges more easily than copyright violation? "Substantial noninfringing use" is a copyright defense, not necessarily one for obscenity--- but then, I'm not sure there's a "contributory obscenity" charge anyway.


So, boingboing is having problems paying their "bandwidth bill", and are asking for suggestions on how to raise some cash. In addition to all the usual suspects (sponsorship, tip jars, advertising) there are more than a few suggestions that some sort of P2P technology should be developed to help distribute this content. (Or that they ought to use an existing one.) I like boingboing, but I hate P2P. Hence the following rant.

P2P does not solve server networking costs. Let's ignore UI issues, reliability, security, etc. At the end of the day, N bytes have to be transferred from one computer's uplink to another computer's downlink. (There are certainly advantages to how far across the Internet you have to travel, but nobody I know is charging based on that.) Somebody, somewhere, is paying to send traffic onto the network.

But, you might say, my uplink is idle most of the time. True; most users produce just a small amount of upstream traffic under 'normal' workloads. But there's no free lunch here--- if your upstream provider has any brains at all, they've already taken that into account in engineering their network. Widespread change in user behavior leads to changed costs for the ISP, unless the P2P application is extraordinarily good at reducing wide-area traffic. The ISP has two choices when their costs go up: they can charge more, or they can limit service. Most ISPs appear to be taking the latter route, although some try to push P2P users into a higher-priced plan.

In the long run, wide-area P2P applications will be either squelched by traffic shaping or subsidized by increased connectivity costs. A P2P-friendly ISP almost certainly sends more traffic onto the wide-area Internet than a P2P-limiting ISP, and thus incurs a higher cost structure. The "bandwidth" costs are spread across the P2P-using population at large rather than levied on the operators of a particular service. It's not obvious to me that this is an economic good (or a social good) compared with paying for the services you want the normal way--- subscriptions, ads, or donations.

This is not to belittle the very real problem BoingBoing is facing; maintaining web content or services in the face of increasing popularity is hard for anybody, even those explicitly trying to make money from it.


I ordered some more Delcom USB I/O chips. I'm assembling my own USB-based PIC programmer based on the Delcom part for control and a National Semiconductor LM2585S-ADJ to generate the programming voltage. (The PIC12F675 just uses this as a level indicator, and the PIC16F877s can be programmed at normal voltages, so this device is somewhat overkill.) Unfortunately I picked up the wrong type of ZIF socket on my last trip to Silicon Valley (it can't take 0.3" parts) so I need to find a replacement.

In the long run, it might be worth adding a microcontroller so that the USB communication is less overhead. My current design bit-bangs the programming protocol--- somewhat slow at 3 USB commands per bit!


Been chasing TCP performance problems. We're sending lots of data over a Gigabit Ethernet switch. Unfortunately TCP's timing parameters are tuned for the wide-area; it's ridiculous to wait 500ms for SYN ACK and have a minimum RTT of 200ms when the other end really is less than 1ms away. Having a 1MB transfer sometimes be 11ms and sometimes be 211 ms or 511 ms is no fun.

Fortunately we're using Linux, and we're in a situation where we can just change the constants and recompile. Or, if necessary, we can use a different transport protocol--- but TCP seems to be good enough if tuned. (It's understandable, if a little annoying, that these numbers are compile-time #defines rather than dynamically adjustable variables.)


I got a bunch of sample microcontrollers from Microchip and have been playing around with them. I wrote my own programmer (adding yet another to the hundreds out there) and have only ruined one chip so far due to getting +5V and +12V switched around...

I've using gpasm from gputils as the assembler; it's a well done open source tool.

My I2C "logic analyzer" is complete; I put a couple new pictures on my electronics page. My soldering skills have yet to noticeably improve.


I visited a couple more electronics stores in the Minneapolis area today. AEI Electronics was a little disappointing; they have a lot of audio stuff, but not many parts out and available. Even IC sockets were in the employee-only area; I prefer being able to look at what I'm getting. Plus they overcharged me for the sale items I got but didn't charge me for my resistors.

Midwest Electronics was about what I expected; they do mainly old computer stuff. I restrained myself from buying one of the stack of Sun workstations for $10. I did find a tube of 18-pin DIP sockets which didn't have a price tag, so they let me have it for free.

So it looks like ABC Electronics is the best so far--- unfortunately they're not open on weekends.

20 Feb 2004 (updated 20 Feb 2004 at 17:54 UTC) »

I put up a web page with pictures of my pitiful, pointless electronics projects. Oh, well, at least I'm having fun.

I have gained an amazing amount of respect for capacitance. Virtually every problem I've had has been solved by adding more capacitors.

I'm looking for a good microcontroller to start playing around with. I've been thinking of Microchip's PIC12F629/675 series, since they're (1) flash-programmable, (2) dirt cheap, and (3) have an inexpensive programmer: the PICkit "flash starter kit" ($36). I love living in the future--- who would have predicted you could get a 5 MIPS, 8-pin computer for under $2.00?

But, I would need to buy quite a bunch of them for the project I have in mind and link them together, which is a nontrivial exercise. Or maybe I'm just a wimpy, cushioned C++ programmer who just can't handle having only 64 bytes of RAM. :)

I have a couple of samples of the Dallas Semiconductor DS80C400, but no eval board. I really like this chip--- it's got onboard Ethernet, although it needs an external PHY and transformer which I don't have yet. It can net boot, which is my ideal in terms of programmability. (This is probably not a reasonable possibility, since I don't want to have to solder the LQFP package, unless I buy one of the pre-made modules.)

Any Advogatans have experience to share with either of these, or can suggest a favorite which doesn't require large up-front costs?

I've been playing with a Delcom Engineering USB I/O controller. USB just makes me happy--- control + power together, so no wierdo serial bit-banging or parallel printer connection necessary to interact with electronics, and no $$$ for a power supply.

I started out using Thomas Hargrove's libdelcom, but I wanted a more convenient interface. So, I've written a C++ library called libdelcom++, which I released last night under the GPL. (Woo! First freshmeat entry!)

I'm working on a companion library for talking to I2C devices.

P.S. SWIG rocks. If only it handled nested classes.

13 older entries...


Grit certified others as follows:

  • Grit certified sh as Journeyer
  • Grit certified ncm as Master
  • Grit certified lerdsuwa as Journeyer
  • Grit certified raph as Master
  • Grit certified chalst as Journeyer
  • Grit certified schoen as Journeyer
  • Grit certified goingware as Journeyer
  • Grit certified ftobin as Journeyer
  • Grit certified robilad as Journeyer
  • Grit certified lmb as Master
  • Grit certified Bram as Master
  • Grit certified mchirico as Apprentice
  • Grit certified elanthis as Journeyer

Others have certified Grit as follows:

  • bbense certified Grit as Journeyer
  • chalst certified Grit as Journeyer
  • lerdsuwa certified Grit as Apprentice
  • sashako certified Grit as Journeyer
  • miconof certified Grit as Apprentice
  • mchirico certified Grit as Journeyer

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page