Zebra/Eltron/UPS 2844 label printing with Stamps.com

Labels are both more convenient and professional-looking than plain paper for printing postage labels, and the 2844 is a great little thermal workhorse of a printer.  Even better, it’s pretty cheap to pick up a used one, partly because UPS gave these away for free for use exclusively with the UPS service.

On the down side, if you do pick up a used one, it’s probably not going to be quite as easy as just plugging it in and hitting print.  (In particular, it took me a while to sort out why it was printing a blank label for every label it printed, which was surprisingly tricky to fix.)

First, update the firmware by navigating here and selecting “TLP 2844.”  You’ll need the ZDownloader and the latest standard firmware.

Pick up Windows drivers and setup utilities from the same page, under “drivers.”  Note:  if you have a USB model, you might need to guess what virtual USB port your printer is configured on, which may take a few tries.  Mine was on “USB002.”

Go ahead and load 4×6 label stock, then load up the Zebra Setup Utilities, and select Tools->Action>Calibrate Media.  This will scroll through a bunch of labels, but you should only have to do this once.

Also in Zebra Setup Utilities, go to configure printer settings, and set the label size to 4×6.  The defaults should be fine for everything else.

At this point, you should have a Windows printer called “ZDesigner LP 2844,” which is exactly what you want.  You can use it at this point, but it will print out extra labels when used with Stamps.com.

To correct that, right-click on the printer to open properties, then on the General tab, select “Printing Preferences.”  On the “Options” tab, make sure that the setting for “Stocks” matches your label size (if not, go back and set up the stock.)  Then go to the “Advanced Setup” tab, and make sure that double-buffering is on.

LP2844 Miscellaneous Advanced SettingsOnce in the Stamps.com software, “printing on” can be set to “Zebra/Eltron Type – Standard 4×6 label – roll” and then selecting “ZDesigner LP 2844” as the destination.  Of course, I recommend using “print sample” first, to make sure that everything is dark enough and aligned properly before printing actual postage.



Green backups with BackupPC and WOL

In an effort to reduce power consumption, I’ve moved most systems I use regularly onto a pair of virtual servers, enabling me to keep many machines off most of the time, except for occasional use.  There are still a few physical machines, and I do prefer to have current backups of everything, so I decided to use the wake-on-LAN protocol, which seems to work for most modern computers hard-wired to ethernet (on the same segment.)

I started with this post by Salik Rafiq, but my first problem was that I didn’t want to turn every machine on, back it up, and then just leave it on.  Nor did I particularly want to turn every machine off after being backed up, since it’s not unusual for a machine to be backed up while I’m actually using it for something.  The obvious solution is to store whether or not a machine is actually on, then return it to that state afterward.

I made a few other changes, which I’ll briefly outline:

  • My BackupPC sends 5 arguments to ping, so I lazily hacked in arguments 3 and 4.  (There are much more elegant ways to do this.) so this script assumes that the last argument is the machine name.
  • I replaced “ethwake” with “wakeonlan,” for the sake of simplicity (not that etherwake doesn’t work, but since WOL packets require a hardware address anyway, why not just use the hardware address?)
  • Related to the above, I retrieve and store the hardware addresses for each machine using the simple command “arp -a machine > machine.wol” which gives me a file with the hardware address for each machine.
  • Note that I use the hardcoded directory “/usr/tools/wol” for both hardware and state information.  The $WOLDIR directory is used for hardware and state information.

As with Salik’s original script, this replaces the “ping” command for BackupPC, and is reasonable to use with every machine, whether or not it supports wake-on-lan.


#this script is totally designed for the backuppc ping command
#which is the first thing it does before it starts a backup
#this is a substitute which pings the machine, if it is not
#awake then it wakes it using a magic packet - using the wol.bsh script
#then pings again to make sure


logger "Backuppc pinging $ARGS $WAKEHOST"

function getwol {
	if [ -f $WOLDIR/$1.wol ]; then
	   hwaddr=$(cat $WOLDIR/$1.wol | cut -d" " -f4)
	   logger "No MAC address for $1"
	   exit -1

function fwol {
	getwol $1
        sudo $ETHWAKE $hwaddr

$PING $ARGS $WAKEHOST >>/dev/null 2>&1

if [ $? -ne 0 ]; then
        fwol $WAKEHOST
        if [ "$WOL_RES" = "FAIL" ]; then
                exit 1
	echo "OFF" > $WOLDIR/$WAKEHOST.state
        sleep $SLEEPTIME
        if [ $? -eq 0 ]
           logger "success waking $WAKEHOST."
           logger "unable to wake $WAKEHOST."
           exit 1
   echo "ON" > $WOLDIR/$WAKEHOST.state

exit 0

To turn the machines back on, I updated my postcmd.sh script (see this post for details) to look up the machine state, and if it was off before, turn it off now:

PID=$($WINEXE -U $UNAME -W $WRKGRP --password=$PWD //$BOX 'cmd /c echo '1'
> c:\backuppc\wake.up')
echo "Rsync and shadow copy unloaded"
if [ -f /usr/tools/wol/$BOX.state ]; then
   read wasoff < /usr/tools/wol/$BOX.state
   if [ "$wasoff" = "OFF" ]; then
      $WINEXE -U $UNAME --password=$PWD //$BOX 'shutdown -f -s -c "Backup

Although it only recognizes “on” and “off” as valid machine states (it doesn’t detect nor return a system to hibernated, sleeping, etc. states) it at least takes care of the simple function of turning machines on, backing them up, then turning them back off.

For systems that don’t support wake-on-lan, like those connected through wireless, I’m considering using X10.


Home Water Treatment Plant

Home Water Treatment Plant

Pump, filters, valve

Water in Chicago comes straight from Lake Michigan, and is pretty decent quality in general. Most houses do not have water meters, which I suspect leads to very little incentive to conserve water.  During the summer months, especially during lawn-watering season, it’s not unusual for our water to dwindle to a mere trickle.  A few spot measurements indicate that our water pressure is normally about 30 psi, but can drop to 15 psi or less at points during the summer.  In practical terms, this means that the shower stops if somebody turns on the kitchen faucet.

Meanwhile, my wife requested that I put in a system to remove chlorine from the water, for various health and hairstyle reasons.  Even with large, high-flow filters, this necessarily results in a pressure drop through the filters.

Cramped space

Pressure Reduction Valve

After a number of calculations, and toying with ideas such as placing the hose outlets upstream from the system so as to not bother filtering water that goes on the lawn (a bad idea for an active system, which could potentially draw water into the house from the hoses) I settled on a design which has worked beautifully for months.

In order from the inlet, the system consists of:

The order is important — placing the booster pump after the filters, for example, would mean that the pressure going into the filters could be as low as 15 psi, and therefore as low as 5 psi before the pump.  That’s too low — the pump would refuse to operate — or worse, become damaged.  Water can be pushed, but it can’t be pulled.

Booster Pump

Booster Pump

The pump adds 40 psi, so that if intake water pressure is 30 psi, the pressure at the first filter should be about 70 psi.  I’ve never measured intake pressure above 35 psi, and 75 psi is still comfortably below the filter housing maximum recommended pressure.  The pressure reduction valve ensures that intake pressure to the house doesn’t exceed 50 psi.  Measurements demonstrate that this is remarkably consistent, regardless of variations in intake pressure.

After all this, water in the house tastes pure and clean, the pressure is consistent and wonderful (we can water the plants, run the dishwasher and take showers at the same time.)

After all this work, the main thing I’d do differently is consider smaller filters.  The 4.5″ x 20″ filters are huge.  Each one holds a bit over 5 gallons, which is about 40 pounds of water.  I was primarily concerned with water flow and pressure drop, and bigger filters are better, but I doubt the difference would be noticeable for say, a 2.5″x 20″ filter, which would be a lot easier to change and handle.


Entreprenurial Steve in Profile

While working for an Internet startup, our founder, CEO, and perhaps most importantly, boss, was a dynamic, unusual personality whom I’ll call Steve. Entreprenurial Steve.

A bundle of contradictions, in some ways I felt perfectly aligned, and in other ways, his thinking was so foreign to me that I couldn’t make heads nor tails of it. In all the time we worked together, for example, Steve never let anybody else pick up the check for a meal, and he was generous about inviting us out.  During a period where nobody in the company had any money and we were essentially working for free, Steve didn’t hesitate to take us to lunch every day, and often out to dinner.

Steve had (at least) two BMW’s, which seemed like kind of a status thing, except that Steve wouldn’t hesitate to loan them to whoever needed them.  Our secretary borrowed one and managed to total it in the parking garage (yes, I’m still unclear on how this can be accomplished) and Steve simply shrugged it off, saying, “It’s only a thing.  The important thing is if you’re okay.”

Yet, when I stopped on the street to hand some cash to a homeless person with a sign, Steve was completely baffled.  “Why would you give your money to that guy?  He’s not doing anything for you.”

“Five dollars means a lot more to him than it does to me,” I tried to explain.  “He needs it more than I do.”

“That’s crazy,” said Steve, shaking his head.  “I’m sure you can do something better with that five dollars.”  Weirdly, he handed me a five.  “Here,” he said.  “Don’t give this away.”

At times, it seemed that Steve held the company together through sheer force of will, when paychecks were bouncing and vendors weren’t being paid, his optimism and willingness to do anything to get it done for our customers was infectious, truly believing that our next sale would put us on firmer financial footing (which it always did, for a while) and that stability and prosperity was within our grasp.

Steve always seemed to know who to pay.  Starting, I suppose, with the lawyers.  “Get the most expensive lawyers you can,” Steve once explained to me.  “Even if you have to skimp on everything else.”

Our lights were always on.  Our Internet connection always worked.  Our phones always worked.  Other than that, I’m not sure anybody was paid at all.

Occasionally, a process server would come by, and Steve would invariably be gone.  Otherwise, he always seemed to be around, and I have no idea how he managed it.

Although clearly uncomfortable with kids, my precocious daughter asked him if she could use a computer.  Without hesitation, Steve handed her his personal laptop, explaining that he was going to a meeting and wouldn’t need it until the next day.  She dutifully returned it to his desk before we left.

The next day, we had a meeting with a potential customer.  Our presentations and servers were all online, so there was little prep necessary except for connecting to the Internet.  Steve booted his laptop, and instead of the familiar Windows chime, the room was treated to:

“Uh ohhhh!” from the Teletubbies.

A number of people in the room clearly had kids.  Steve was thrown off kilter, but shook off his utter mortification and made an excellent presentation.  (We got the deal, and I suspect the unexpected presence of the Teletubbies made us seem more human than slick and polished.)

A week later, my daughter asked to borrow Steve’s laptop.  Without hesitating, he handed it to her, but paused before letting it go.  “Try not to leave anything in the drive this time.”


Unhelpful Reviews

Like many modern consumers faced with a variety of possibly arbitrary choices, I find it useful to consult with others who have purchased similar items.  The Internet brings with it a plethora of unbiased and helpful product reviews, collected and categorized by retailers, bloggers, and, well, fake sites set up to sell stuff.  The Internet also brings with it reviews for which I fail to understand the motivation entirely; reviews that are so intensely unhelpful, they actually damage other reviews by being averaged into the ratings.

My journey started when it was time to replace our snow blower.  I don’t know what it is about snow blower reviews that attracts retards, but these are a sample of reviews that people felt the need to take their time and write:

1.0 out of 5 stars WORX SNOWBLOWER, March 4, 2011


Well, you haven’t helped me select a snowblower, but you have announced to the world that you’re kind of a jerk. Was your original plan to use it for the snow, then return it?

There were equally helpful positive reviews to balance this out:

5.0 out of 5 stars snow blower, December 17, 2010
I can tell you that it not long after I ordered it, it arrived. However, I guess purchasing it was a bit of insurance. No snow as of yet, but I am ready when it does.

You ordered it, and it arrived? I guess if you’re impressed by this, it may call for a review, but this is slightly less helpful to people than reviewing the box it came in based on color choice.

Later, I noticed it’s possible to review a product that’s still in the box, based on your unshakable belief in the brand:

5.0 out of 5 stars still in the box, haven’t even checked it out yet, November 1, 2010
to this day i still have not taken my rangefinder out of it’s box, but real soon, i’m sure i will enjoy what it can do for my hunting, it’s Nikon, i have several more Nikon products and that is why i ordered this rangefinder, if i didn’t beleive in the Nikon name then rest knowing i would have already had it out and checking it, i have not to this day ever had trouble or returned any Nikon product

I guess that’s about as good as a review asking you to rate your religion, but you posted this as the review for a product. Then again, a product that can make you feel this good without even opening the box probably deserves five stars.

Amazingly, this is actually a step up from this review:

3.0 out of 5 stars
Sounds like just what I need., February 18, 2011
I haven’t bought this yet but it sounds perfect for my needs because splitting the stereo into right and left channels is what I want.

Putting aside the fact that you’re reviewing it sight unseen, if it’s perfect for your needs, wouldn’t that be 5 out of 5 stars? Did some voice in your head say, well, I shouldn’t give it a bad review just because I don’t have one, and it shouldn’t get a good review because I don’t have one yet, I’d better just split the difference?

And yet, that still seems better than a review that does nothing but convey your level of extreme incompetence:

2.0 out of 5 stars Flimsy Firepit, January 21, 2011
I put this together and it fell apart cmpletely WITH A FIRE IN IT. Later I picked up the pieces and read the manual I noticed that I was supposed to attach nuts to the screws on the inside where you can’t even see them. This should have been in VERY BIG LETTERS in the instructions but all there was was a little diagram and a small note.


Golden Age of the Internet Startup – Part 2

With a few sales under our belts, we packed up what little equipment we had, and moved to our new space in a downtown commercial high-rise, where we had an entire floor to ourselves.

An entire floor is a huge amount of space. There were ten of us now, including sales, marketing, etc., in a space that could hold 300. The space was fully furnished, and included a boardroom with a view, where all of us could sit, and have ample room for 20 more people.

This wasn’t unusual for any dot-com era startup, but perhaps it was unusual for one without venture capital funding. Bill explained that we hoped to expand quickly, and that more importantly, customers should be able to visit a place that inspires confidence.

One walked off the elevators into a large, well appointed lobby with leather seats and a stainless steel version of our logo on the wall, up to a reception desk, behind which was a glass wall displaying our opulent (and usually empty) boardroom, where one looked through it onto an expansive view of the city. From there, one could go right or left to weave through cube farms before reaching either outer wall, all floor-to-ceiling glass. The few employees scattered about and a few well placed plants and personal items give the impression that a large office had just gone to lunch, or is sequestered in meetings somewhere. You’d probably end up at a huge, well appointed corner office to meet the CEO, or perhaps the head of marketing, or the CTO, or the COO — there were four corners, after all.

Bill was right — the entire place spoke of money and confidence, without being too opulent. On the occasions when customers did come by, we avoided an empty look by using 3-4 cubes each, and inviting friends over to sit around for lunch. (Nobody would ask if all the people in the office actually worked there, but we certainly would not have lied if it came up.)

Along with the cubes and chairs came a big PBX system with hundreds of phones, handy partly since we were so far away from each other. This was in our full server room, where Bill invested in two racks full of servers, along with new PCs for everybody, plus a bunch for empty cubes.

None of the equipment was unused. For every empty cube with a PC humming under the desk, there was a system running tests, compiling code, copying backups, running competitor’s systems, providing remote access, and so on. In addition to selling our main line of software, we also did odd bits of consulting in order to provide the company with income — this included setting up and integrating competitor’s systems (which was handy for a number of obvious reasons) as well as odd jobs like data mining for grocery stores and other utterly unrelated technical tasks.

I sat in the back, near the server room, which gave me a unique view and made it easy to concentrate on writing code.

On the floor below us was a radio station, which we didn’t notice at all our first few months — then they either changed formats or management, or both, and suddenly it was apparent that my office was directly over some kind of listening or sound booth — and during the day, they started cranking up the noise so that not only could it clearly be heard in our office, it was hard to speak to somebody in the same room. I called the building management to complain.

“I’d like you to do something about our downstairs neighbors,” I shouted over the din. “We can’t hear ourselves think up here.”

“I can’t understand you,” said the building manager (a dour woman we’ll call Leslie.) “Maybe you could turn down your music.”

“That’s really my point,” I shouted. “That’s not our music. It’s coming from downstairs.”

“I’ll be right up,” said Leslie, lying through her teeth.

A couple hours and a few phone calls later, Leslie appeared. Perhaps coincidentally, but probably not, the music had been turned off moments before she marched up to my desk.

“I don’t hear anything,” Leslie told me, in an accusatory tone.

“Well, obviously you did when I called, since you complained you couldn’t hear me over the music,” I explained.

“That could have been anybody’s music,” said Leslie dismissively.

This seemed pretty disingenuous and odd, but this same pattern repeated itself a few times, before Leslie actually appeared in my office while a deep bass thump was still shaking my furniture.

“I don’t hear anything,” said Leslie.

“What?” I said, shouting over the noise.

“I said, I don’t hear anything,” she shouted. “I can ask them to turn it down, I guess, but I don’t hear any music at all.”

I didn’t know what to say at this point. I talked to our business manager later, who mumbled something about a possible dispute with the lease. Were they trying to make us leave? I’m not sure, but I was beginning to hate Leslie.

I once had a friend with the curious habit of jumping up in moving elevators, landing with stiff legs. This created a booming sound that resonated throughout a building, and he’d nonchalantly walk off the elevator to nervous stares of people waiting to get on, some of whom would think better of the idea.

With this in mind, I brought in a bowling ball. Next time the music started up, I ceremoniously dropped it on the floor, right above where the music seemed loudest, which was near the server room on a little bit of linoleum floor (the rest of the office was carpeted.) It worked better than I could have imagined — it sounded like the building had been hit with a wrecking ball, sending a BOOOOOM that resonated through the floor and walls. I did this a few more times before the music stopped, and put the ball into a desk drawer.

Leslie showed up a moment later. “Are you guys doing any construction up here?”

“Heavens no,” I told her. “Surely we’d notify the building.”

She eyed me suspiciously. “We’ve had complaints from the floor downstairs, the noise is interfering with their radio broadcast.”

“Is that so,” I mused. “Well, I don’t hear anything.”

She stood, listening, and looking around, presumably for signs of construction equipment.

“I said, I DON’T HEAR ANYTHING,” I shouted at her.

She left in a bit of a huff.

The radio station’s volume got loud a few more times, but a few drops of the bowling ball were enough to stop it quickly. Our downstairs neighbors seem to have quickly learned the cause-and-effect relationship, and the bowling ball became an ornament on my desk.

Leslie dropped by one day on an unrelated matter and noticed it, and appeared to connect the dots all of a sudden.

“Were you dropping that bowling ball on the floor? Because I have to warn you, that would be unacceptable,” she lectured. “I could hear something like that all the way on the first floor.”

Really? Awesome.

“Madam, that’s a valuable ball,” I replied. “Besides, I’m certain it would cause quite a bit of noise, which would be completely unreasonable in a professional office environment. It might be more appropriate for some kind of party floor with loud music. Do you hear any music?”

She ground her teeth a bit, but said nothing. We didn’t have any more trouble from her or the neighbors for the duration of our stay.


Sharing Speakers with Multiple Computers

If you’re like me, you have several devices on your desk that emit audio (or are at least capable of it) — on my desk alone, I’ve got two PCs, a laptop, a Chumby, an iPad, an iPhone, a Mac, and an iPod.

It seems sensible to me that rather than clutter my desk with a cheap pair of speakers for each of these devices, to get one good pair of speakers and connect everything to it.  I have a couple of audio mixers with cables that cost around $10 each in order to properly connect it; at the time, it’s the best thing I could come up with short of building a dedicated device.

N.B.:  y-cables may work okay for a couple of devices, but the signal is attenuated and multiplied, and plugging and unplugging devices from a gob of y-cables is just asking for trouble.

Stoweblank TinyMix

Stoweblank TinyMix

Our friends at Stoweblank produce a high-quality audio mixer that takes the 1/8″ (3.5mm) stereo inputs that all these devices put out, saving a ton on cabling.  As a bonus, it’s USB-powered.

I can hear alerts from my laptop while clicking away on my desktop and playing music on the Chumby, at the same time, plug in and unplug the iPad without causing problems.

In the interests of full disclosure, purchasing anything from a link in this post helps support this site as well.


Golden Age of the Internet Startup

Y2K was a weird time for many in technology fields.  For my part, I was in charge of an e-commerce team at the time that many companies were just beginning to realize the importance of having a presence on the web at all.  Revenues for my brick-and-mortar company were just topping $1 billion…  then overnight, one of our biggest customers made a few dramatic changes, and as a company, we had to shrink to about a quarter of our size to match our wildly decreased revenues.

As the fledgling wing of the business, the e-commerce team bore a disproportionate amount of the downsizing effort, so I laid off most of my very large team.  Another round later, most of my considerably smaller team were laid off.  By the third or fourth round, I’d decided it would be better to taste the riches of the dot-com era than preside over a rapidly-dwindling department, and laid myself off.

Within a week, I had about a dozen job interviews lined up — the availability of dot-com money was in full swing, companies were paying a premium for barely-competent java programmers, and my Vice President of e-Commerce title placed me in demand.  I rejected most of them for various reasons:  I didn’t think much of their technology, or their business, or didn’t have enough control, or just plain didn’t like the interviewer — within two weeks, I settled on a company that seemed to have everything going for it:  supply chain software, capital provided by a consulting business, a foundation for a product, domain skills, and a fair (but not exorbitant) salary.  Perhaps even more important was the contagious enthusiasm exuded by the founder, whom we’ll call “Bill.”

Bill hired two people right away — me, as the Chief Development Officer, in charge of building and supporting our products, and “Jeff,” as the Chief Technical Officer, in charge of infrastructure, IT, and everything else.  Jeff showed me the clause in his contract that included a foosball table in the lounge — something I neglected to ask for — but presumably, we’d have the same lounge, so I wasn’t about to complain.

Our first offices were temporary space with Regus.  We had four desks or so, reception, internet service — a whole office presence.  Since it was shared office space, we rubbed elbows with other Internet startups, cheap lawyers, and a handful of dismal people doing god-knows-what, whom I’d notice carrying a paper lunch bag into their office, and sitting at a desk all day by themselves.  I never saw them with computers or on the phone, so I imagined them spending their waning years pretending to go to a job that no longer existed.

A few years earlier, when I worked for a company on behalf of the CTA, I was shown an empty room with four older people in it with computer printouts and those old adding machines with the crank handles.  It was explained to me that due to their seniority, they effectively could not be laid off, nor could they be forced to train for other jobs, but their skills were utterly obsolete.  So they were put to work verifying account spreadsheets printed by the mainframe, which was deliberately pointless and mind numbing work.  They were not allowed to read books, and had to be strictly on time every day and take only prescribed breaks, or be fired.  Meanwhile, they carefully ran their crank machines, their work destined immediately for the trash bins, waiting out their retirement clocks.  I couldn’t help thinking I might go insane first, or at least beg to be retrained for something.  Anything.

I was reminded of this every day at Regus as I walked past the office of a little guy with a moustache, who didn’t ever have anything on his desk but his lunch, and seemed to spend most of his time looking at a spot on the desk.  I’d flash him a sunny smile and wave, and I might get a half-hearted smile in return, if I was acknowledged at all.  I called him “Willy Loman” and looked forward to days when his door was closed.

We didn’t have dedicated connections or server hardware, so I set up web and email servers in my basement, which had pretty decent connectivity.  The old consulting wing of the company was based in California (with a few employees there) and a few more scattered around.  I managed to marshall these few people into building something we were able to sell to a large retailer, to manage their shipping process.  We didn’t have health insurance yet, but paychecks were regular and covered COBRA payments.

While Jeff and Bill sought funding, I used the few resources we had to build what we could, and put together increasingly ambitious plans based on our ability to secure funding, and our ability to sell what we already had to the burgeoning Internet retail market.

To put this in context, this is an era where a company could boost their stock price by putting an “e-” or a “.com” in their name, where startups would spend millions on waterfalls in their lobbies, Webvan and Pets.com were in full, inexplicable swing, along with Kozmo and Flooz demonstrating that startup capital and a dot-com model were the fast track to corporate success.

On the other hand, we were a down-to-Earth, hard working company, were careful about our spending, and didn’t yet have funding.  What we did have was part of a product, a handful of competent employees, and an office that after a while, nobody bothered going to.  After all, the servers weren’t there, the employees were remote, and venture capitalists were elsewhere — as nice as Regus was, it was clearly temporary, shared office space, not the place you’d bring venture capitalists to impress them with your waterfall, and god knows you wouldn’t want Willy Loman around.

The CEO called and said we’d leased permanent space — it was time to move.


Interlude with Apple Developer Support

As a consumer, getting support for Apple’s devices is pretty easy.  If it’s in warranty or you have AppleCare, it’s not hard to get something fixed.  As a developer, however, working with Apple is … not so easy.

Apple has one of my widgets available for download, which periodically gets updated.  The usual procedure is to log in to Apple, update a few fields, point to the new URL, and everything’s fine in a day or two.

Lately, though, the form has been failing with the error, “Please fill in all required fields.”  There’s no indication of which fields or what to do, so after weeks of trying different combinations of things, I contacted Apple Developer Support.

Dear Apple Developer Support:

I maintain an OSX widget available at [URL.] I am trying to update it using the form at https://developer.apple.com/submission/mac/form_edit.php

However, the form *always* returns the same error: “Please fill in all required fields.”

There is no indication of what fields are not filled out, and I have meticulously filled out every single field. I have attempted to do so from every major browser, including Safari, Firefox, IE, and Chrome, from every OS including OSX and Windows, and from several countries including the US, Canada, and India.

I cannot get this form to work. Is there anything that can be done? Can you tell me what this form wants?

Almost immediately, I got a form letter that they are working diligently on whatever my issue may be, and then a few days after that:

Please include the line below in follow-up emails for this request.
Follow-up: 136749696

Re: Software Downloads feedback


Thank you for contacting Apple Developer Support regarding Software Downloads.

Feedback regarding Software Downloads may be submitted to Apple via the Mac OS X web

Please know that the email address you have written to is
used to provide program-level support to members of the Apple Developer Program. We are unable to provide general product support via this Apple channel.

Thank you for understanding our support policies. We appreciate the time that you have taken to send your comments to Apple.

Best regards,

Yutaka Ikeda
Apple Developer Support

So, I’m essentially told that they don’t help with downloads, only developer issues, and I’m directed back to the contact page where I found the address I sent my original email to.
Dear Apple Developer Support:

I am not trying to download anything. I am trying to use the developer site, which is not working.

Omitted: Several back and forth emails where I beg somebody to read my request, and not just send me a random form letter directing me to the contact page.  Also omitted:  I repeat the problem each time.

Please include the line below in follow-up emails for this request.

Follow-up: 136749696

Re: iOS Developer Program


Please know in order to consider your request, we need you to furnish the following

– Step by step information to reproduce the issue
– Screenshots reflecting the error messages
– System hardware and operating system configuration
– Browser and version
– Indicate type of connection (i.e., cable, DSL, corporate network, etc.)
– Indicate if you are behind a firewall
– Provide text for any error messages that you have received
– Indicate if you are behind a proxy server

Thank you for your assistance.

Best regards,

Jeremy Nickel
Apple Developer Support

Wait, what? Well, fine, at least I’ve been routed to the correct department.

Dear Apple Developer Support:

Are these delaying tactics? Because seriously, the initial instructions I
included aren’t hard to follow.

Go here:

Update the version. Or anything. Use any browser. It doesn’t matter.
Naturally, I’m logged in as me.

Watch it tell you you’re missing a required field.

I usually stop here, but for the full experience, you can spend weeks
trying to get somebody to take a look and provide anything other than a
moronic form response or a nonsensical request for more information.

A few days later, I got this response:

Please include the line below in follow-up emails for this request.

Follow-up: 136749696

Re: iOS Developer Program


Please know in order to consider your request, we need you to furnish the following

– Step by step information to reproduce the issue
– Screenshots reflecting the error messages
– System hardware and operating system configuration
– Browser and version
– Indicate type of connection (i.e., cable, DSL, corporate network, etc.)
– Indicate if you are behind a firewall
– Provide text for any error messages that you have received
– Indicate if you are behind a proxy server

Thank you for your assistance.

Best regards,

Jeremy Nickel
Apple Developer Support

Yes. It’s the exact same form letter. Frankly, at this point, I hate Jeremy Nickel, and I want him to burn in hell. Is it really so difficult to understand that a web page is broken? Seriously, Jeremy, if you can’t be bothered to actually read any of the email you get, are you really in the right position?

Dear Apple Developer Support:

Please do not send me this useless form letter again, I’ve answered every
goddamned question more than once. If you have an actual question, feel
free to ask. If you want to send me a form letter, please just tell me
directly “I’m really too stupid to handle this,” it’s more honest and

> Please include the line below in follow-up emails for this request.
> Follow-up: 136749696
> Re: iOS Developer Program
> Hello,
> Please know in order to consider your request, we need you to furnish the
> following information:
> – Step by step information to reproduce the issue

Provided. Three times.

> – Screenshots reflecting the error messages

Imagine the screen, with a red “Please fill out all required fields” on
it. If you seriously need a screen shot of that, let me know.

> – System hardware and operating system configuration

I’ve tried several dozen. It does not fucking matter.

> – Browser and version

I’ve tried several dozen. Safari, Firefox, IE, whatever.

> – Indicate type of connection (i.e., cable, DSL, corporate network,
> etc.)

Again, tried on dozens.

> – Indicate if you are behind a firewallÂ


> – Provide text for any error messages that you have receivedÂ

Once again, “Please fill out all required fields.”

> – Indicate if you are behind a proxy server

No. And yes. What the fuck? Who fucking cares? I’m just going to get the same fucking form letter from you anyway.

Tell you what, Jeremy, just fucking GO to the URL, and if it miraculously works for you, send me your operating system, your browser version, and whatever the fuck you filled in to make it work.


L4D2 OS Paged Pool Memory Low on XP

From Steam, I installed and played Left for Dead 2 (L4D2) for a few hours without any problems.  After rebooting after an update, the warning “OS Paged Pool Memory Low” in red appeared in the game, followed shortly by bizarre visuals, halting sound, jerky game play, and ultimately, a lockup or crash.  A few days later (and after rebooting) I tried it again, and it was fine.  Until I rebooted …

It seemed that pawing at it like a confused monkey was not solving my problem, so I consulted the Internet, which recommended a curious mixture of unrelated voodoo and homeopathic remedies, and Steam themselves has a page that mumbles incoherently about drivers and suggests removing parameters that nobody has.  Those few people who have had, and solved this problem, appear to have tried hundreds of things all at once and were clueless as to what fixed the issue.

While making sure drivers are up-to-date is rarely bad advice, it’s unlikely to actually fix anything unless your current drivers happen to be buggy.

So, what’s happening, and how does one fix it?

XP has two memory pools, paged and non-paged, and without going into too much technical detail, paged memory can use disk space to expand its total pool (“virtual memory.”)  XP uses heuristics at boot time to determine how much memory to dedicate to the non-paged and paged pools.

Specifically, XP calculates a limit for the paged pool based on how much address space that other resources, like page table entries, want.  With a lot of RAM and a reasonable amount of swap, XP can still apparently get it wrong.  On the plus side, it can be tweaked manually to solve the issue.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

in the registry has all kinds of nifty knobs, and the most important one is “PagedPoolSize.”

Note:  before doing this, make sure you have a reasonable amount of physical ram and that virtual memory (My Computer->Properties->Advanced->Performance->Virtual Memory) is set either to automatic, or at least a gig or two or twice physical ram size.

PagedPoolSize is almost undoubtedly set to “0,” which means XP will automatically determine the limits.  Setting this to “0xFFFFFFFF” means “set this as high as possible,” which is a dynamic value, but based on your amount of physical RAM rather than every other knob in the system.  As a troubleshooting step, it’s reasonable to start here — reboot, then try out L4D2.

If it works, you can back this number down a bit:  some testing has shown that 256M is sufficient to play without problems (“0x10000000” hex, or “268435456” decimal) but your mileage may vary.