Skip to content

New Year, New Post

My last post was twelve months ago today. And since then I have never worked harder nor have had more fun doing so than I have in helping to create TriSano. Today is also auspicious in that we will cut 1.0 RC2 in a few hours. All in all, it seems like a good time to start blogging again.

This time, however, I have a plan.

Yes, I’m still a proponent of REST. More so than ever, in fact. But my proselytizing days are over. For the next bit of time I plan to take a more pragmatic approach to assisting others to design and build scalable, resilient, Web APIs by showing step by step and line by line how to build a RESTful application and why.

But we won’t build yet another blogging application or social networking, Web 4.0 thingy. What’s needed here is an example of a typical, erm, enterprise application. Problem is, many enterprise applications are industry specific. Such things as trading applications, life insurance applications, loan management applications. What’s more, these kinds of applications are way too complicated to be used for example purposes. But there’s one application I can think of, one I used when explaining REST as a Burton Group consultant, that exemplifies most typical enterprise use cases and is universally understood: expense report management system. It’s got it all: it’s reasonably straightforward, it’s got typical database-oriented functionality, there are stateful resources (an expense report can be open, submitted, approved, etc.), authentication and authorization requirements, and, if we get this far, integration.

I have not already designed or built this application. Instead, we’ll be nice and lean and refine things as we go along. I’ll be using Rails for this, which some might find un-enterprisey, but one fight at a time. If you’re not using Rails or something similar for enterprise Web applications, well, get over it. There’s no more excuses. Besides Rails is something I’m currently familiar with, it’s got REST baked right in, and, honestly, it works. That and we have all these exciting things happening these days with Rack and Metal and Merb and so on.

So, for the next few months, I hope you follow along and contribute as together we build a RESTful enterprise expense reporting system. I will most likely host the code over on Google Code, and will keep the text distinct from this blog. Comments, of course, are extremely welcome. Those related to REST and Rails especially so. Just bear in mind that this project will be starting small and building. So if you see, for instance, that I’ve not used ETags where I should have, then that’s likely because I haven’t gotten there yet. That said, if it looks like I’ve covered a topic, and it’s wrong or could be better, then, by all means, correct me. All content will be licensed under the most liberal of Creative Commons licenses, the Attribution license.

Good to be back. Talk soon

{ 16 } Comments

  1. Bob McCormick | January 4, 2009 at 11:08 pm | Permalink

    I’m glad I didn’t unsubscribe from your RSS feed during your 12 month silence! :-) I’m really excited to see what comes out of your RESTful expense reporting project. As you said, all to many REST tutorials and samples are very Web2.0ish. I’d say that’s also the case with most Rails tutorials!

    I’m hoping that, in addition to posting the actual code to Google code, that you will find the time to write up some blog posts (possibly posted here?) explaining some of the lessons learned along the way: what worked, what didn’t, etc.

  2. Peter Keane | January 4, 2009 at 11:16 pm | Permalink

    I’ll be following your project with great interest, having been engaged in the building of a RESTful enterprise system (a digital content repository) for the last few years. What we really need is something exactly as you are describing: a real-world entrprise app that can demonstrate “best practices” for a RESTful system. We have relied heavily on Atom/AtomPub, but there remain many unanswered questions, especialy regarding relationships between entities, including implicit/explicit hierarchy, and how we “manage” those relationship with REST. (By defining new resources, of course, but that raises the necessary question(s) of media types and link relations). A moderately sophisticated system that would be quite easy to design an ER model for will take quite a lot of work (in my experience) to model in a RESTful architecture. E.g., a many-to-many that would have required a simple bridge table now might require a “link” resource, and the nature of that link resource (i.e., a “role” column on the bridge table) will come into play as that resource is defined. Lack of a real “patch” operation is a challenge as well (I am not convinced that, too, cannot be addressed adequately by defining new sub-resources).

    I have a fairly well-operating production system, yet I still have plenty more questions than answers. It will be fun to see how your project pr0gresses. Good luck!

    –peter keane

  3. Pete | January 5, 2009 at 6:18 pm | Permalink

    Wow, people are still there. Glad to see there’s interest in this project. But, Peter, no guarantees we’ll get as far as you’d like, or that I can even address your concerns to your satisfaction. However, if there’s enough momentum, maybe this project will be opened to continuous improvement by others, and we can come to consensus around issues such as handling partial updates etc.

  4. Peter Keane | January 5, 2009 at 10:31 pm | Permalink


    No worries about expectations on my part. Any sort of description of the processes of building a RESTful application (stumbles and all!) will be helpful.


  5. louisvuittonoutlets | June 21, 2013 at 4:32 pm | Permalink

    I am John, how are you everybody? This piece of writing Pete Lacey’s Weblog : New Year, New Post posted at this site is really nice.

  6. louisvuittonreplicab | June 21, 2013 at 4:33 pm | Permalink

    Hi, I desire to subscribe for this weblog — to obtain most recent updates, therefore where can i do it please assist. louis vuitton replica bags

  7. shoes toms stores | June 21, 2013 at 6:44 pm | Permalink

    Thanks to my father who stated to me about this weblog, this weblog Pete Lacey’s Weblog : New Year, New Post is genuinely remarkable. shoes toms stores

  8. toms shoes for cheap | June 21, 2013 at 6:44 pm | Permalink

    I have read so many — about the blogger lovers however this article is really a nice article, keep it up. toms shoes for cheap

  9. replicalouisvuittonb | June 21, 2013 at 7:58 pm | Permalink

    Hurrah, what a quality it is! As mostly YouTube video lessons have no fastidious feature, but this Pete Lacey’s Weblog : New Year, New Post is actually a fastidious quality video. replica louis vuitton belt

  10. Black Friday 2013 Ugg | November 28, 2013 at 2:40 am | Permalink

    2013 Cyber Monday Coach Sale

  11. ??? LIME | May 21, 2014 at 7:12 am | Permalink

    ????? ??

  12. ????????? | June 1, 2014 at 8:29 pm | Permalink

    ???? ??? ???

  13. PORTER?????? ???????? ?·?? | June 1, 2014 at 8:47 pm | Permalink

    ?? ???

  14. http:// | July 29, 2014 at 11:29 pm | Permalink

    My spouse and I stumbled over here from a different page and thought I might as well check things out.
    I like what I see so now i am following you. Look forward to
    going over your web page yet again.

  15. Rachelle | July 30, 2014 at 2:41 pm | Permalink

    Incredible points. Great arguments. Keep up the amazing

  16. food processor | August 10, 2014 at 9:06 am | Permalink

    Hello, this weekend is pleasant for me, because this occasion i am reading
    this enormous educational piece of writing here at my residence.

{ 1 } Trackback

  1. oakley sunglasses cheap | April 12, 2014 at 11:03 pm | Permalink

    oakley sunglasses cheap…

    billigste nike free sko mor soccer club sneakers til kvinder billigste nike free sko mor soccer club sneakers billigste nike free sko mor soccer club sko til kvinder pÃ¥ salg billigste nike free sko mor soccer club Sport 2 herre sorte nike sko founda…

Post a Comment

Your email is never published nor shared. Required fields are marked *