Adam Tuttle

REST Web APIs: The Book

I've decided to write a book about designing REST Web APIs. I'm calling it REST Web APIs: The Book.

Pre-Order REST Web APIs for $12

I get asked for my opinion on some facet of API design at least once a week, so I decided that I would try to distill my opinions into a concise, pragmatic book so that you can take me with you wherever you go. On a thumb drive or your kindle! (It's going to be an ebook, at least at first.)

This is not a ColdFusion or Taffy book. It will have Taffy (and thus ColdFusion) code toward the end to illustrate the concepts described throughout the book. It's not entirely conceptual, but the bits that are concrete will be referring to the browser or raw http requests moreso than the code you write to make your API work.

I'm targeting completion on or by Noon, December 19th. Of this year. Two weeks from now. Yes, I know that's a little bit crazy; but I'm attempting to embrace the "Just Ship It!" mantra. I'm sure there will be updates, but they will always be free for every buyer, so what are you waiting for? Go pre-order my book!

Once it's done I'll be charging $19 for it. If you pre-order, you can have it for $12, as a thank you for believing in me. And if you're one of the first five buyers to use this link you get even more of a discount for your enthusiasm. Sold Out!

I'll be teasing more information over the next two weeks, but for now I'm just going to leave it at that.

Did I mention that the first 5 pre-orders at this link get an extra discount? I did? Good. Sold Out!

Pre-Order for $12

Published 2014-12-04 @ 08:45 in REST Taffy

Taffy 3.0.0: It's About Ethics in Gaming Journalism

We did it! Taffy 3.0.0 is here.

Download Taffy 3.0.0

As I mentioned with each Release Candidate, there are a few Breaking Changes — things you will have to change in your API code if you upgrade Taffy. I've documented what each of them is in the new Breaking Changes section of the documentation, and not to worry: They're all pretty trivial. Just changing a few base classes and stuff like that.

You can also see a full detailed list of all bug fixes and new features in the documentation.

As ever, my immense thanks go out to everyone that contributed to this release; and there are many of you! I've added your GitHub avatars to the bottom of taffy.io as a thank you!

Published 2014-11-19 @ 10:28 in Taffy

Taffy 3.0.0-RC3

Today I've published Taffy 3.0.0-RC3, which I expect to be the final Release Candidate build for the final 3.0.0 release. Just a few small bug fixes went into this update, and unless anyone reports any issues with this build it will become the official 3.0.0 build some time next week.

There have been many changes between 2.x and 3.0, a few of which will require some minor updates to your code, so if you're upgrading please familiarize yourself with the breaking changes first.

Published 2014-11-13 @ 12:27 in Taffy

Upgrading to OSX Yosemite with CF10 Already Installed

Yesterday morning I decided to take the plunge and upgrade my daily-driver laptop to OSX Yosemite. This is the story of what I did, what I could have done better, and how I dug myself out of that hole.

Before I made the decision I snooped around to see if anyone else had any trouble. By that I mean that I had already seen a relevant bug report and I asked on twitter:

I didn't put much stock into the bug report: It looks like it was written by someone that doesn't really know their way around a CF installer, and I like to think that I do (know my way around a CF installer). And the tweets were generally positive: You'll probably have to reinstall MySQL, and the built-in Apache install will probably get un-configured. Not that big of a deal, all in all.

So I dove in! Knowing that apache config would be mucked with, I was (1) very happy that I had checked it into a git repo a long time ago, and (2) made a backup copy in my home directory just in case. I also backed up all of my mysql databases. That should cover everything that wasn't backed up overnight with Backblaze.

The download went faster than when I upgraded my Mac Mini HTPC the other day (irony: the mac mini is on a wired connection and my laptop is on wifi...), but the installer took for-freaking-ever. When it got down to "2 minutes remaining" it was just about noon so I left it alone and went out for lunch. When I returned an hour later, it still said, "2 minutes remaining."

... Crap.

Not to worry, though, as this appears to be a pretty common problem, especially for people that have a lot of stuff in /usr/local/bin (homebrew, global node.js modules, etc) -- which includes me. So wait it out I did (I did hit Cmd+L to watch the log and confirmed it was actually working that whole time, so at least it wasn't just the dreaded beachball of death). At about 1:40 it finally finished installing, and I was able to use my laptop again.

The first thing I did was install updates for things I was prompted for; probably stuff that required Yosemite: a new version of 1Password, an iTerm update, and Keynote, iMovie, and iPhoto; as well as the updated Command Line Tools. Then it was down to business.

The first thing I wanted to do was verify that I could start CF and Apache and get to the CF Administrator. No complaints when I started them, but as expected, I was not able to get to the CF Administrator: 404.

I went through the diff of changes made to my httpd.conf file (thanks, git!) and adjusted things that made sense to me: re-establishing my preferred default document root, re-enabling my vhosts, adding the Include line for mod_jk that was removed, etc. But still, Apache never seemed to finish starting: there were no errors printed to stdout or stderr when I started it, but I never found httpd in the process list either. Then I found reference to apachectl configtest on Stack Overflow (you may or may not need to use sudo; I did), which does exactly what you should expect: it verifies that your apache configuration is at valid, syntactically and otherwise. I had a few problems. Firstly:

httpd: Syntax error on line 531 of /private/etc/apache2/httpd.conf: Syntax error on line 2 of /private/etc/apache2/modjk.conf: Cannot load /Applications/ColdFusion10/config/wsconfig/1/modjk.so into server: dlopen(/Applications/ColdFusion10/config/wsconfig/1/modjk.so, 10): Symbol not found: _aplogerror\n Referenced from: /Applications/ColdFusion10/config/wsconfig/1/modjk.so\n Expected in: flat namespace\n in /Applications/ColdFusion10/config/wsconfig/1/mod_jk.so

My assumption here was that there's some problem with the webserver connector as built on OSX 10.9, so I commented that out. After doing that, of course, my JkMountFile lines in each vhost were the next problems:

AH00526: Syntax error on line 116 of /private/etc/apache2/extra/httpd-vhosts.conf:
Invalid command 'JkMountFile', perhaps misspelled or defined by a module not included in the server configuration

Commenting each of those out has made Apache successfully start, and I can now browse around my various vhosts, but obviously ColdFusion isn't running. I had run wsconfig at some point previously and it was crashing. I was hopeful that the problem had something to do with my mucked up Apache config, but alas, even once the config was cleaned up the web server connector continued crashing on startup.

Saddened, I downloaded a fresh copy of the CF10 installer and tried to uninstall my existing copy. The uninstaller crashed too. "Oh well," I thought, and figured I would rename the CF10 folder and install anew. The freshly downloaded installer crashes, too. Delightful!

Not that I particularly want it, but ColdFusion11 might work, since it's been released more recently. Since CF10 is still supported (*ahem*) you'd expect its installer to be able to run, but whatever. I downloaded CF11, hoping it would save me from having to reformat my laptop and stay up all night reinstalling stuff from scratch and... hallelujah, it runs!

Let's not get too excited just yet, though. The installer completes (with a very ugly dead give-away "this app was written with Java" dialog box for selecting the path of my existing CF10 installation for settings migration), and the CF Administrator loads! Hooray! I get to sleep tonight!

Mappings copied over and look right. Still don't have a mail server configured (this is how I want it, so check!). My MySQL datasources check out. MSSQL TBD: I need to run windows update in that VM and make sure it's still forwarding ports correctly, but it's not mission critical at the moment.

I did have to figure out where to drop in my Bcrypt.class file so that BCrypt will work (hint: /Applications/ColdFusion11/cfusion/wwwroot/WEB-INF/classes/), but all in all everything appears to be in working order. I'd still prefer to have CF10 installed to match my production servers, but I suppose this will have to do.

... That was not how I wanted to spend my Wednesday.

Published 2014-11-06 @ 09:00 in Apple ColdFusion