15
Decoupling in style: HATEOAS at The Ladders
View Comments · Posted by awarner in Engineering, Technology
In my mind, one of the biggest strengths of a Service-oriented architecture with REST is the ability to truly decouple business objects and their associated rules from the applications that use them. To properly hoist these rules into a service, both client and server code needs to make proper use of HATEOAS. Driving workflows with HATEOAS allows decisions about what content to show and what actions to allow to be made by the services themselves, rather than the client apps interacting with them. It also means that, while today the functionality at any given link may be provided by the service that the client initially started interacting with, it might tomorrow be provided by an entirely different service on a different machine. Most importantly, the client does not have to care about what functionality is exposed at what time and by what service, but just has focus on what to do when that functionality is available.
To help illustrate the above point, let’s look at a concrete example. You might not be surprised to hear that, at TheLadders, one of our most important business objects is the “Job” object. (more…)
Continuing the platform blog series
In writing a business application there are probably few tasks more tedious and unglamorous than the task of validation. It is also often misused, as in some trivial yet over-zealously validated web form where you must enter a phone number in a (123) 456-7890 format or you can’t proceed.
On the other hand consider that validation could be the only thing standing between a hacker and your banking or health records. I’m personally hoping that whoever develops that gets it right. But, you’d say: “What’s the big deal for internal services? After all, the clients of internal services aren’t malicious hackers trying to sabotage your company – they’re other internal applications.” With all due respect to our colleagues in this case we should mostly guard against our old friend – the human error. Well, specifically, programmer error. No matter the error source, malicious intent or an honest mistake, the result could be just as devastating.
If internal service validation must be done, does the process have to be dreadful and repetitive?
In many frameworks, such as Ruby on Rails, validation is a built-in feature, almost a no-brainer. For example in Rails application you can define Person and associated validations like so:
1 2 3 4 5 6 | class Person < ActiveRecord::Base validates :name, :login, :email, :presence => true validates :age, :numericality => true has_many :friends validates_associated :friends end |
That’s simple, clear, and painless. Can the same be done in a java service? (more…)
annotation-based validation · java · Oval · platform · validation
Some Background
In this post I’ll be continuing the thrilling saga of platform development here at TheLadders. As a member of that team I can tell you building REST services right can drive you nuts at times. It’s rigid simplicity is demanding when the end result needs to do everything your legacy code was designed to do without such constraints. If you can get past that, however, the payoff is, if anything, something easier to maintain and adapt as the needs of the business change.
Many of you may find this topic we’re calling “partial update” to be rather boring (I know I do). But if you’re developing anything RESTish and the thought of making the way other developers update objects in your API into a violent tornado of flexibility gets you amped up then read on. (more…)
16
Serving the Business by Serving Developers – REST and Beyond: Creation of a Technology Platform
View Comments · Posted by Ed Cudahy in Engineering, Technology
My name is Ed and I’ve written bad code.
That’s how I’d introduce myself at a Developers Anonymous meeting that probably any developer out there could be a part of. We all take shortcuts at times to serve the delivery goals of the business. And that’s not always the wrong decision, especially when a company is just starting. Things change over time and you’d love to be able to always refactor bad code when you find it. Some would argue you always should, but I don’t think things are that simple and a good developer should be able to decide when it’s worth the investment. That said, if you favor the delivery side too often, at some point you will put yourself into a position where it is so hard and takes so long to change anything due to the codebase complexity that you are doing a disservice to the business by not doing anything about it.
11
How we built TheLadders Mobile website in 2 weeks
View Comments · Posted by Jeegar Maru in Engineering, New features, Technology
Our Scrum team was tasked to build a mobile-friendly version of our website for certain pages offering features to let jobseekers easily respond to recruiters. We wanted to mainly support the iOS and Android platforms. We started the iteration sprint in a gung-ho spirit. We knew that we could produce something useful but, we weren’t sure if we could ship it in 2 weeks. Although, some of us had briefly taken a look at some helpful frameworks, most of us didn’t have experience with developing a mobile webapp and we weren’t sure about how we would achieve this. Another big unknown was how were we going to test what we develop in Dev, QA and Production environments?
(more…)
Android · iOS · iPhone · jquerymobile · mobile · spring · spring-mobile
11
Tech Storm 2.0
View Comments · Posted by Gene Super in Engineering, Events, Technology, Tips and Tricks
TheLadders development team has been doing “Tech Storms” for a while. Every once in a while on Friday afternoon, we would get into our largest conference room, and for about an hour a developer (or a group of developers) would present something new/cool/exciting about the work they’ve done.
This format worked very well and we’ve used it for a while. But in the spirit of continuous improvement and innovation, we wanted to revamp the structure of these TechStorms and try something new. (more…)
agile · innovation · learning
9
Optimize Type on the Web With optimizedLegibility
View Comments · Posted by Adam Olson in design
Dealing with type on the Web has historically been like pulling teeth. In the past few years, though, the situation have improved. We’ve got more fonts from TypeKit and Google, complete control of type with Lettering.js, and more control with CSS3. All those things are great, but what if we could get automatic kerning?
(more…)
28
Content That Resonates
View Comments · Posted by Sue Conroy in Success Stories, User Experience
Nancy Duarte’s book Resonate is designed to help people create presentations that “inform, inspire, and persuade.” Her message is an important one for anyone trying to reach an audience, no matter the medium. The advice shared in this book is as relevant for content authors on the Web as it is for business people trying to make a case in the boardroom.
(more…)
19
Staying Ahead of the Agile Curve
View Comments · Posted by Jesse Schifano in Creative, design, User Experience
During my tenure here at TheLadders, I’ve had the fortune of experiencing firsthand the conversion from a waterfall model to an agile model of development. Many designers lament the sudden transition from lengthier timelines to two-week iterations. It can be disconcerting to adjust to changing roles and relationships within the organization.
(more…)
With the New Year come predictions from SEO industry experts about what the next 12 months will bring in the world of search-engine optimization. Across the board, experts agree on one thing: Social media will play a larger role than ever before in SEO.
(more…)
Bing · Brian Goffman · Danny Sullivan · Facebook · Google · LinkedIn · Matt Cutts · Search Engine Watch · SEO · SEOmoz · The Daily SEO Blog · Twitter