Posts

  • JPQL Considered Harmful

    In a Java project, it’s not unusual to find database queries using the Jakarta Persistence Query Language (JPQL), a fairly easy to use language with a syntax akin to SQL. While this is a perfectly acceptable way to declare small queries, it can quickly spiral out of control for more advanced requirements. The Criteria API (and its Spring Data derivative Specifications) allow for a modular, programmatic, and type safe declaration of queries. It’s so good, you’ll probably never want to go back to writing string queries again!

  • Effective Use of SQL Identity Columns (Oracle & Postgres)

    The concept of SQL tables with an auto incremental column for its primary key it’s obviously not new, as it is easily implemented using sequences. Now, on December of 2003 the SQL:2003 standard introduced the identity column type, along with the syntax GENERATED AS IDENTITY, which is currently supported by virtually all RDBMS providers. Let’s take a quick look at how we can declare primary key columns with auto generated identifiers, without relying on vendor-specific syntax!

  • Going back in time with Oracle Flashback

    You ever wished you could take a snapshot of your current Oracle development database? One that you could easily go back to in case of trouble. What if you started working on a feature, and accidentally mess up the business logic integrity in some way? Imagine the countless hours just trying to revert the damage done only to finally give up and end up recreating the database from scratch. You ever wished this could be done in a straightforward way (less than 3 commands)? Me too!

  • Introduction to BSD Sockets

    The operating system truly makes developers’ jobs much more easier: we don’t have to worry about the boring details, and can focus on what our programs do instead. Keeping with the same philosophy of abstracting the details, and thanks to the people at UC Berkeley, communicating over a network isn’t that much different as writing some data to a file.

  • Container Authentication with Spring Security

    Spring Security is a framework full of solid features, most of them working nearly out of the box. Yet it’s still flexible enough to adapt to your particular requirements. In this article I’ll demonstrate how to integrate your Spring application authentication with a servlet container, such as WebSphere Application Server (WAS) or Tomcat, using Spring Security.

  • Setting a Correct Value in a select Element

  • cherry-pick Considered Harmful

    or: How I Learned to Stop cherry-picking and Love the merge

  • How to Install Oracle JDK in Ubuntu

    I’ve been a Windows user almost all my life, mainly because I didn’t know better, and I wasn’t into computers either until later on. When I made the switch to Ubuntu, one of the pet peeves I had was installing Java. Sure, installing OpenJDK is very easy, since there’s already a package for it, but what if you need Oracle’s?

  • Handling dotfiles with YADM

    Nothing makes me feel more at $HOME than seeing my dotfiles in place.

  • Using vimrc Files per Directory

    How many times have you wished you could have a different vimrc configuration per directory? I know I have, many times! Specially when you work on different projects which might require different settings. For instance, I like to enable spell checking when working on my school notes, but I don’t wanna set spell spelllang=es,en every time I open a file for editing.

  • Dockerfile: CMD vs. ENTRYPOINT

    Docker provides a couple of instructions to specify what a container does when you want to docker run it: CMD and ENTRYPOINT.

  • Squashing Old References with Django Migrations

    The other day I found a small typo in a function I was referencing in the upload_to field option in one of my models. I fixed the nasty typo, only to discover I had broken the migrations, as it was also being referenced in one of them.

  • VirtualBox: Compacting Disks

    VirtualBox’s dynamically allocated disks are great because they start small, and only stretch when they need to. Thing is, they don’t shrink back automagically once the space is freed, they require a little push. This is what VirtualBox calls compacting, and it’s a great way to trim your machines so they only use as much space as they actually need.

  • Internationalization (i18n) with Yii 2

    Yii 2 provides a very intuitive way to translate your web application, and it makes it easy for both the developers and the translators, by keeping the work that has to be done by both parties nicely separated.

  • Resuming the Journey

    After an extended hiatus, I’ve decided I’ll pick my blog where I left off.

subscribe via RSS