Antonio Salazar Cardozo

Chasing the best: because what pushes us forward is what we see ahead.

Read this first

Lift Monthly Recap 2

Two months went past this time, which just means there are more goodies to discuss. We gained a new committer, Joe Barnes, who has been working hard on Angular integration for Lift in lift-ng, a bunch of cleanups and exciting new work landed in the Lift 3 development branch, and Lift 2.6-M4 and RC1 both went out the door with several improvements. Let’s get right into it!


June saw a lot of the Lift 3 work go in that hadn’t quite wrapped up by the last monthly recap. The old binding strategy (based on the bind function) was completely removed from Lift 3 (1568), making CSS selector transforms the only supported approach to binding. We also merged a change to make JField no longer be a subtype of JValue in Lift 3 (1584); because this changes several behaviors in the API, it was a change that couldn’t go into Lift 2.6. Also, we renamed the updateListeners method that takes an Any...

Continue reading →

Lift Monthly Recap 1

The weekly recap fell by the wayside a bit as I focused on actually working on Lift 3, so here comes a second attempt with what I hope will be a more manageable pace. I’ll be expounding on features a little less than I did in the weekly recaps; instead, the purpose of monthly recaps will simply be a brief overview of what happened in the previous month.


To fill the gap, I’ll start where the last Lift Weekly Recap left off. The month of March was pretty quiet: @farmdawgnation did some private variable name cleanups, while @dmclean82 fixed an issue with blank parameter values in MockHttpServletRequest, which we weren’t handling correctly. Meantime, I changed the default implementation of lift:with-resource-id to produce a cache-busting query-string that didn’t confuse our unmapped function warning. A little more detail on that: since 2.6-M1, Lift has emitted a warning in the logs...

Continue reading →

Using Commit Messages for Documentation

A consistent problem in software development is reading code. Reading code, like reading a book, consists of a few separate levels of understanding:

  • What does the code say?
  • What does the code mean?
  • Why was that way of expressing that meaning chosen?
  • How do I interact with the code?[1]

These are roughly in reverse order of specificity: “what does the code say” is the most specific and least informative question you can ask, while “how do I interact with the code” is one of the most high-level questions you can ask, and may not necessarily require a detailed understanding of the answers to the first three questions.

To understand what code says, we can simply read the code. That is the most fundamental level of understanding. Often, meaning is just as easy to glean. As when a book describes a character as “tall”, there’s typically nothing more to it, so most code is initially fairly...

Continue reading →

Lift Weekly Recap 6: Speed, data, and elementals

Right on schedule, today we’ll be chatting about some functionality that landed in Lift 2.6 recently, as well as a couple of the most delightful changes in Lift 3… Brace yourselves, this is going to be an awesome recap. Sunglasses on.

As an ongoing rule, if you have any ideas for things that might be mentioned in something like this, drop me a line at savedfastcool AT .

Didn’t you get the memo?

A couple of weeks ago, an intrepid chriswebster found some inefficiencies in the way that lift-json was doing its decomposition of case classes into JValues (the step before a serialized JSON string for lift-json) and offered up a fix for it. PR 1517 memoizes the list of fields for a given class, so that getDeclaredFields need only be called once for a given class. Rather coincidentally, this past week I had to deal with a big performance bottleneck related to the same issue of...

Continue reading →

Lift Weekly Recap 5: Comets and funcNames oh my!

Promise I’m trying to catch up! Since our last recap, a second winter storm of doom hit the Atlanta area, and a variety of other things have conspired to keep me otherwise busy or holed up in an apartment with nothing to keep me company but a cat and a sore throat. It’s been 18 days since the last recap, making this weekly recap a not-so-weekly one, sadly… Fortunately we still haven’t quite caught up to today in our historical retrospective through changes that have made it into Lift 3, so we’ll pretend it’s all okay and continue with some very exciting stuff!

As an ongoing rule, if you have any ideas for things that might be mentioned in something like this, drop me a line at savedfastcool AT . In the meantime, before we get into our continuing coverage of new things in Lift 3, let’s have a look at one of the two changes that landed in Lift 2.6+3 the last couple of weeks.


Continue reading →

Skill is effortless

Last night I was near the front of the dance floor at The Sound Table, vibing to the inspiring beats so skillfully laid out by Anna Lunoe. Seemingly effortlessly, she transitioned from track to track, guiding the crowd and letting the crowd guide her. Listening to another set by the inimitable Eric Prydz today, I started thinking about that effortlessness.

While practicing Hapkido at Black Knight, I first heard the saying: a black belt’s job is not merely executing a technique correctly; it is doing so and making it look easy, making it look effortless. You watch a black belt doing a backspin kick, and you think “I could do that”. Until you try to do it, of course, and you realize that somewhere between you and them lies a huge gap in skill.

I like to say a developer’s skill lies in how good they are at searching for existing solutions and answers. You see a problem, your brain...

Continue reading →

Lift Weekly Recap 4

Ohai, week 4! Yeah, I said I’d try and do this one earlier, but man that did not work out… In the ongoing search for a home other than the mailing list for these, I’m going to try parking them on this fine svbtle blog. This still isn’t the best place—for one thing, it’s not something that can be easily handed off—but I don’t currently have time to put them anywhere else, and I like having a place to link to that isn’t Google Groups. For now, the body will be cross-posted to the mailing list, and we’ll see how folks like that.

As an ongoing rule, if you have any ideas for things that might be mentioned in something like this, drop me a line at savedfastcool AT ! In the meantime, on to the fun stuff!

Firstly, a flash back to the new lift-markdown module. When I first wrote about it, I mentioned that there was a way to turn off verbatim XML. In fact, there’s a fairly...

Continue reading →