Category: Uncategorized

A couple of weeks ago, I started running River4 on my Synology DS412+ NAS device. At the moment I’m generating just one river, which you can see on

Since I needed River4 to run all the time, and I didn’t want to have to kick it off by hand every time the NAS boots up, I decided to write an init.d script to make River4 start automatically.

If you have a Synology NAS or other Linux-based machine that uses init.d to start daemon processes, you can use or adapt my script to run River4 on your machine.

How to

  1. Install node.js and River4 on your machine.
    • I installed River4 under /opt/share/river4/ since that’s where optional software usually goes on Synology systems, but yours can be wherever you want.
  2. Follow Dave’s instructions here in order to set up River4 with your data, and test that it’s working.
  3. Download the init.d shell script.
  4. Unzip, and copy the script to  /opt/etc/init.d/S58river4 on your NAS/server.
  5. Make the script executable on your NAS/server with:  chmod 755 S58river4
  6. Edit the variables near the top of the script to correspond to the correct paths on your local system.
    • If you’re using a Synology NAS, and the SynoCommunity release of node.js, then the only paths you should need to change are RIVER4_EXEC and RIVER4_FSPATH, which are the path to river4.js and your web-accessible data folder (river4data in Dave’s instructions).
  7. Run River4 using  /opt/etc/init.d/S58river4 start

At this point, River4 should be running.

If your firewall is enabled and want access to the dashboard, you’ll need to add a firewall rule to allow incoming TCP traffic on port 1337. I recommend you only do this for your local network, and not for the Internet at large, since River4 doesn’t currently require authentication.

Once your firewall has been configured, you should be able to access the dashboard via:



The script assumes you’re going to be generating your river of news using the local filesystem, per Dave’s instructions for using River4 with file system storage. I haven’t used it with S3 yet, but you should be able to simply comment out the line in my script that says export fspath, and get the S3 behavior.

There is no watcher, so if River4 crashes or is killed, or if node itself exits, then you’ll need to restart River4 manually. (It should restart automatically if you reboot your NAS.)

Questions, Problems, Caveats

I did this on my own, and it is likely to break in the future if River4 changes substantially. I can’t make any guarantees about support or updates.

If you have problems, for now please post a comment on this post, and I’ll do what I can to help.

Please don’t bug Dave. 😉

Source code

Here’s the source code of the init.d script. (The downloadable version also contains instructions at the top of the file.)


I love this:

Just because you’re building a new product with limited resources, doesn’t mean you can ignore design, usability, or reliability.

(Thanks to Santiago Valdarrama for the retweet.)


Updated: Apparently I’m living in the past, and hadn’t yet educated myself on the implications of the Affordable Care Act. While I knew that the ACA protected people from being denied coverage based on pre-existing conditions, I didn’t know that this was universal across all providers (not just the ones available on, and that it also prevents insurers from hiking rates based on them. Of course this is all true only as long as the ACA isn’t repealed or whittled away, so if you care about this issue make sure to vote!

Regence LogoIn case you needed it, here’s some more evidence of just how broken Health Insurance really is in the United States.

On Friday, I received a letter in the mail from Regency’s “Condition Manager Program” with enclosed materials that “may be helpful to you.”

Dear Participant:

Enclosed are materials from the Regency Condition Manager Program that may be helpful to you. Please look them over and we encourage you to discuss them with your doctor. You can call us toll free at 1 (800) 267-6729 with any questions.

The Regency Condition Manager Program is a free health management program sponsored by Regency BlueShield.

The program provides information, education and support to help you learn more about your condition. You should still see your doctor. If you have any concerns about your health, you should contact your doctor. In an emergency, call 911 or your local emergency services number.

Thank you for allowing us to be a part of your healthcare management team. We look forward to speaking to you again soon.


Your Regency Condition Manager Team


And the condition that the letter refers to? Diabetes.

Here’s the thing: I have never had diabetes. I’ve never been diagnosed with diabetes. I’ve never been treated for diabetes. I was on a medication a couple of years ago that could cause an increase in blood sugar levels, but I’m no longer on the medication, and never needed any intervention.

So my health insurance provider decided unilaterally that I have a pre-existing condition that I don’t actually have.

Presumably they did this based on a badly designed and poorly tested matching algorithm running against their customer database, (I refuse to use the word “patient” since I am not one, and even if I were, I’m not theirs.)

I can’t tell you how messed up this is

For those of you who live outside the United States, or if you’re young enough or fortunate enough to have never had to contend with the pre-existing condition rules we have here, here’s the skinny:

If you have been diagnosed with a condition, and your health insurance ever lapses for more than 30 days (90 in some states including Washington), you are now in a situation where no insurance provider will pay for care related to that condition. Ever. Period. End of story. You’re screwed.

Even worse, some insurance companies are even in the habit of denying coverage as a matter of course if you have a pre-existing condition, and hoping that you won’t contest the decision—which can often be prohibitively costly for the patient. You’re screwed again.

This practice should be illegal

There should be no way for an insurer to attribute someone with a medical condition without an explicit diagnosis and provision of covered care for the specific condition.

Just because you have some mediocre DBA on your cost-control team who had the bright idea that they could mine your customer database to find people who need help managing chronic conditions, doesn’t mean that you now get to decide they have some health issue that they don’t have.

Diagnosis is done by doctors, not database analysts. And certainly not computer systems.

Hey Regence: Stick to what you know

Health insurance companies should stick to the business they understand: Forcing sick people to sell their homes and declare bankruptcy in order to pay for unjustifiable profits for their shareholders and investors.

Oh wait. Did I just say that?

We fixed the problem

I did call them, and the customer service representative was “happy to fix this for you.”

When I told him why I was so concerned, and suggested that they really need to look into fixing the bug in their computer system, he said, “Oh, I know—we’ve been getting complaints, and they’re working on a fix.”


I’ve been working with multiple displays since at least 2004. Back in those days I had a 17″ PowerBook G4 with a PCM/CIA card that provided a second external DVI output. It was slow, but it worked, and for the programming I was doing the lacking performance was not an issue.

For the last few months, I’ve been using a Sorbent USB 2.0 adapter to provide a second video output for my Mid-2011 MacBook Air, so I had two external displays, and the laptop itself for 3 total. The problem is that this MacBook Air doesn’t have USB 3.0, and USB 2.0 just doesn’t have enough throughput to drive a large display, so it had a lot of lag—too much to really be acceptable.

I’d been looking around for solutions. The problem is that all of the Thunderbolt docks can only really drive a single external display unless one of your monitors is itself a Thunderbolt display, which can work via Thunderbolt pass-through. But recently there have been more and more USB 3.0-based docks that support Mac OS X.

Kanex_Thunderbolt_USB_adapterSo I picked up a Kanex KTU10 Thunderbolt to eSATA Plus USB 3.0 adapter, and an Etekcity USB 3.0 dual monitor dock for my late-2011 MacBook Air. This dock has two USB 3.0 ports, 4 USB 2.0 ports, and two display outputs (HDMI and DVI), and the Kanex adapter should in theory provide a USB 3.0 port which the dock needs.

After a little dance with installing the latest DisplayLink driver (2.3 beta), they totally work.

So for about $200 (only a tad more than the cost of one of the single-display Thunderbolt docks), I’m running with three screens again, and the performance is perfectly acceptable for most things I will ever need to do.

Plus I’ve got gigabit Ethernet, more USB 3.0 ports, and an eSATA port which will be great for backing up my machine to an external drive.

Overall I’m very pleased.


We took the verticals that FounderDating Network Cofounder members (those members who have indicated that they are interested in finding cofounders) selected as markets they are interested in started a company in and compared the last six months with the same six months one year ago…

– via Founder Dating

It comes as little surprise to me that the verticals that seem to remain pretty stable include commerce, small business, advertising, cloud services, and enterprise. To my mind, this is reflective of how our economy intersects with technology in a fairly general sense. Of course mobile is still big, and I believe most investment in mobile is driven by commerce (including advertising) and business needs, with cloud services serving a supporting role. It is interesting though that mobile startup investment seems to be reaching a plateau rather than growing or declining.

It’s also no surprise to me that the wearable and smart home verticals are on the rise, given the buzz around “Internet of Things”, health-data scenarios, and clean energy over the last few years. Interest in these verticals has existed for a long time, but investment is happening now for two reasons: maturing new technologies are finally enabling them, and our social norms are changing. It of course remains to be seen whether there will be a bubble in either wearables or smart home startups, but for the moment there’s a scramble to deliver new products and services in both spaces, and there’s a lot of room for growth over the next few years.

The consumer electronics rise is probably related in part to wearables and smart home, though it’s interesting to contemplate what might be happening if some portion of that rise is independent. (I’m not going to do that here though.)

To me, the most interesting stand-out in the Founder Dating verticals report is an apparent decline in interest doing startups in the data & analytics space.

Is Big Data investment waning?

I see more and more job listings these days, in all sorts of technology disciplines that call for “a passion for big data” or “proven ability to analyze data for customer insights”. In part at least [big] data analytics seems to be getting absorbed into the broader technology toolbox—that more an more “Big Data” is seen as a core competency, or from another point of view just another part of the “cost of doing business.”

Simultaneously, the idea of Big Data driving markets in-and-of itself seems to be dwindling. And I think this is a good thing.

Data by itself is just data even if it’s Big

I’ve felt for a few years now that there’s been an over-emphasis on data for its own sake, at least the way it’s been marketed so far: More data, more types of data, more sources of data, more users contributing data, etc.

BigData_2267x1146_whiteThere’s certainly been a huge rise in data warehousing and reporting capability across the many industries touched by high-tech. And many companies have made at times extravagant claims about how Big Data will revolutionize all aspects of your business (technology or otherwise).

It’s true that we can now store, search, and retrieve information with a capacity and speed that was unimaginable even two or three years ago. But for the most part, availability and cost-effectiveness of data collection and reporting by itself has not (so far) revolutionized our lives or our businesses, except in a few niches—web search and social networks being two of the most visible.

It’s the analysis, stupid!

Take Facebook and Twitter in the social space, Google in search, or 23andMe in the consumer DNA analysis space. For at least these verticals there’s also been a correspondingly large investment in data analysis—probably in nearly all cases a much larger investment.

We need to understand that good data analysis requires a lot of creativity, long-term investment in tools and algorithms, and an iterative development process—all of which is far from free. The data by itself is just bits on a disk somewhere.

Access to vast amounts of data has indeed been a fantastic aid that has driven broad, albeit often incremental improvements in decision making, product design, and operational efficiency. More rarely it’s enabled completely new product spaces, though without a real data analysis component, most of the new markets that have opened up have been related to data warehousing. The mere availability of lots of data has not so far been a panacea. And it may never be.

It’s certainly true that we take for granted today that we have comprehensive map data at our fingertips.

Ultimately though, the most interesting Big Data scenarios require that we aggregate and correlate vast data-sets in ways that ask specifically designed questions, and which report results that can be interpreted as effective, meaningful, actionable answers to those questions. (Remember Douglas Adams’ 42?)

And so far asking the right questions is still nearly completely in the domain of human beings.


I have a plan for something I want to do with my site, and could use some advice from experienced WordPress people.

I have two legacy sites that I want to merge into my current WordPress site. Content in this site already consists of the imported content from one of these sites, plus posts I’ve made since switching over.

The other site I want to merge in has conflicting post IDs. In order to redirect old URLs to their new homes in WordPress, I need a way to resolve this conflict in a predictable fashion that can be addressed with mod_rewrite (or something comparably simple).

So I decided to apply an offset of 10,000 as I export the content from that site, so:

  • ID 15 becomes ID 10015.
  • ID 1243 becomes ID 11243.

This guarantees that there will be no conflict with any IDs in the current site.

And since the old IDs can be transformed relatively easily with regex into the new ones, I can create some mod_rewrite rules that are conditional on requests coming to the old host name, which redirect from the old URLs to the new ones. (I’ve already tested this, and it appears to work.)

So basically what I want to know is this:

Is there some reason I should not do this?

Am I painting myself into a corner?

Will the jump from ID ~2000 to ID 10001 cause any issues?

Any gotchas (SEO or otherwise) with my next post after the import starting at roughly ID 12000?

Any comments in favor or against are much appreciated! 🙂

Update: @octothorpe replies on Twitter, “@jsavin That should work, although having a lot of mod_rewrite can add serious latency. Also make the redirects 301s.” — I’m doin’ this thang…


CocoaConf LogoThis June, I was one of the lucky ones who’d won the lottery, and was able to attend WWDC in San Francisco. While I was at the conference, it was awesome to have the whole schedule at my fingertips via the WWDC app on my iPhone. With CocoaConf Seattle just around the corner, I found myself wishing there were a CocoaConf app. No such luck.

Then I remembered iCal feeds are a thing, so went to check on the CocoaConf website for a subscribable calendar feed for the Seattle event, but that also didn’t seem to exist.

So as a public service to my fellow nerds who are attending CocoaConf 2014 in Seattle, I created a public iCal feed using Google Calendar, that you can subscribe to for the schedule of all the sessions, including the Thursday workshops. It should work on iOS devices, Google Calendar, on the Mac, BusyCal, and others. Here’s the link:

If you’re looking at this post on your iPhone, iPad, or Mac you should be able to just click the link to subscribe to the calendar.

Hope to see you at the conference!


If you see this, you’re looking at all of my old site’s content running on my self-hosted WordPress server… Phew!

I think that’s enough for tonight, but there will be more soon. I’ve got a bunch of details I want to write up about this project. Plus now that I have the tools I wrote to migrate from Manila to WordPress, I’ve got a bunch of other old content I want to migrate.

I suppose I should first figure out some redirects though, at least so my RSS subscribers don’t all break.

Stay tuned… 😉

Ps. All of the <guid>’s in my feed are now changed to a new format. I apologize that your RSS aggregator is probably about to freak out now. Fixing this was sadly not worth the effort at this point. 🙁

Pps. I realize it’s now 4:30 am, but I couldn’t let my links rot. I modified my WordPress permalink format to make legacy incoming links continue to work. I still need to do some testing, but for the moment things are much better than having basically every incoming permalink go 404.


Today, sites all over the Web are making a statement by

“[covering] the web with symbolic ‘loading’ icons, to remind everyone what an Internet without net neutrality would look like, and drive record numbers of emails and calls to lawmakers.”

Obviously if you’re reading this, you see that I’m participating. You can too.

Go here:

There are super-simple instructions there (scroll down) for adding a modal or banner to your site, to show your support. The modal like the one you saw here is best because visitors to your site can very easily add their names to the letter for congress, and also get connected to their representative by phone–without even having to dial. Either way all it takes is a few lines of HTML code in your site’s &lt;head> element.

The Web and indeed the Internet as we know it today wouldn’t exist if it weren’t for equal access to bandwidth without the throttling and corporate favoritism that the big ISPs and carriers are lobbying for. Without Net Neutrality, we will be forced to pay more for services we love, and miss out on continued incredible innovation that’s only possible if new and small players have the same access to Internet bandwidth as the BigCo’s.

Please help!

Ps. If you need a spinner (gif or png), check out SpiffyGif.


Canceled Comcast cable and premium channels: -$130/mo
Canceled Comcast home phone: -$55/mo
Canceled TiVo subscription: -$14/mo
Saved: $199/month

Signed up for Ooma basic phone service: $4.66/mo
Signed up for Hulu+: $7.99/mo
New costs: $12.65/mo (less than TiVo alone)

Total Savings: $186.35

Farewell, Comcast Cable. We won’t miss you.

Ps. It was harder to disconnect TiVo than Comcast. Their retention people offered me $10/mo and then $7/mo. They pretended not to understand when I explained that the service has almost no value for me without cable, and even suggested I get an HD over-the-air antenna. I had to actually yell at them to get them to turn us off.