Framework 2.6

February 21, 2020

Without further ado, Framework 2.6 is available with the following changelog:

  • Renamed sendMessage to sendEmail
  • sendEmail now takes the first argument as a template file located in template/emails and the second argument as the data provided to the template. (Keep in mind that it is required to have a to and subject data set).
  • New method setTemplateData which helps you set global template data
  • When you have errors in your .hbs files, you can now see why

That's right, emails are now also Handlebars templates! Oh and, I've also updated Boilerplate to 1.2 so it takes advantage of the new stuff of Framework.

A change of direction

February 15, 2020

I started out this adventure with my pal, Kevin. The idea was that I would get us the clients, he would do most of the client work while I would focus on the biggest client we have and project management. And this worked, for a while anyway. Until it became increasingly apparent that I just dug a hole for myself to lie in. You see, I ended up doing 12-15 hour days. Ending with a health issue of having to deal with anxiety attacks that come out of nowhere.

All this I did just to ensure Kevin a stable monthly income while I was ramping up the business because I know a happy developer is one with a stable income. However, there were a few shortcomings on my side.

First of all; I didn't consider into the equation the amount of hours I'd have to work to make this happen, which ultimately ended up ruining my health and honestly, if I'd thought about this before, I would have not done it.

Second of all; Since Kevin is a junior engineer, I didn't quite consider that things would take quite a bit longer for him to do, and with software estimations being hard enough as it is even for a senior engineer it is especially hard for junior engineers. This ultimately ended up costing us a new client that could've been very good business for many years to come.

Third of all; I also took on a few clients that could not afford my services at my usual hourly price, but I took them on so that Kevin would have work to do in the beginning and that we would make at least some money from the get-go. With me helping Kevin for free, and doing a bit of work for these clients for an extremely low hourly price, I was losing a lot more money than I thought I would.

All-in-all, this adventure was an all-around bad adventure. It cost me a lot of money and health. However, with this having happened in the first 3 months of the business' life, and in a way that I'm fully able to recover from, I'm able to take a new direction with my company. Or rather, the same, but more thought-out.

From now on I no longer promote my company as "Contract engineers for hire", but rather just me for hire. I struck a deal with Kevin and no longer employ him. I'm giving him the few clients that I don't want for myself anyway and he will start his own contracting business, just like I am. After the restructuring is done I intend to take a few weeks to a month off from most of the client work and will get back at it after that, this time smarter, and only taking on work I actually would like to do.

I still intend to do work with Kevin, whenever the opportunity strikes. Synergy is important after all. But I refuse to lose any more money, there are no free lunches. I also refuse to sacrifice my health for work, which I will start taking a lot more seriously from now on. And I sure as hell am not taking on work I don't like doing or for which I don't get paid what I think I deserve.

Framework 2.5

February 15, 2020

I announce the immediate availability of Framework 2.5. This time around I've removed all the legacy snake_case mirrors of otherwise camelCase functions, as well as added strong types to it which means Framework will no longer work if you're running on a PHP version lower than 7.4, so make sure you to run on 7.4 or up.

It also comes with a input helper method to retrieve anything in the $_REQUEST superglobal in a sanitized way (that means every user input in $_POST and $_GET).

Framework 2.4

February 2, 2020

Framework 2.4 brings with it two additional conditional callbacks, the isPostType and isPostTypeArchive callbacks.


The isPostType callback can be used like this:

$app->isPostType('icecream', function() use ($app) {

  // your code goes here.


Where the icecream is the post type name in slug form.


The isPostTypeArchive callback can be used like this:

$app->isPostTypeArchive('icecream', function() use ($app) {

  // your code goes here.


Where the icecream, again, is the post type name in slug form.

Announcing Boilerplate & Framework

January 29, 2020

It brings me great pleasure to announce today the immediate availability of Boilerplate and Framework, our two new products. While our main technology that pays the bills is Clojure, it's getting more and more clear that at some point this year WordPress related work will be the source of at least half of our revenue and thus, we've decided to commit to it and attempt to make our WordPress related developments as painless and fast as possible while maintaining the highest quality of work that we can.

These two products are just scratching the surface of what we want to achieve in 2020 when it comes to WordPress in general.


A WordPress starter theme to kickstart your development. This is intended to work hand-in-hand with Framework and while it doesn't have much to offer just yet, it will as we use it more and more in our work.


A WordPress theme development framework that we previously called BaboonWP. We have released a couple of significant versions of it and renamed it to a simpler name. Framework's main goal is to separate logic and markup so that front-end developers could just do front-end and back-end developers could just do back-end. There's a lot of stuff to still do achieve that fully, but I believe we are on the right track.

BaboonWP 2.0

January 10, 2020

Announcing the immediate availability of version 2.0 of our WordPress theme helper class & JavaScript library, except that from now on we'll call it a theme development framework because that's what it essentially is starting the pretty damn big 2.0 update.


  • BaboonWP is now a WordPress plugin, so to install it simply upload the .zip file from releases to the admin panel.
  • No longer using static methods, so you must first initialize the class with new and set it to a variable.
  • Added conditional callbacks
  • Added templating
  • Added querying content

Conditional callbacks

Conditionals in WordPress you already know about, the is_home, is_page, etc. Since with BaboonWP we are moving away from classic theme files (PHP & HTML mix), we tend to do everything within functions.php. Conditional callbacks help us achieve a number of things. For example, to execute a bunch of code only on a certain page:

$app->is_page('about', function() use($app) {

  // execute stuff here


Or to maybe just execute stuff on the front page:

$app->is_front_page(function() use($app) {

  // execute stuff here



The biggest change to 2.0 is the templating, with what we intend to entirely abandon the old PHP/HTML spaghetti practices that have plagued WordPress for so long. To use BaboonWP templating, simply call the template method, like so:

$app->is_front_page(function() use($app) {

  $app->template('home', [
    'name' => 'John'


That will then load the Handlebars template file located at templates/home.hbs. And then in your handlebars file you can do stuff like this:

Hi, {{name}}.

Querying content

Since WP_Query itself isn't templating language friendly (with its nested objects and stuff), we now have a wrapper on top of it, which you can access with the query method. It doesn't support just about everything yet, but we'll get there.

You can query for stuff, for templates, like this:

$app->is_front_page(function() use($app) {

  $app->template('blog', [
    'posts' => $app->query(['post_type' => 'post'])


As you can see, you can pass the exact same parameters to the query that you can pass to WP_Query.

To conclude

BaboonWP 2.0 is a big update and a shift in a new bold direction, it is by no means ready for use with big and complex WordPress sites just yet, but we'll be adding to it as we use it and need the stuff to be there. All tough the flexibility of it should allow for quite complex stuff already.

There's a lot more that I didn't cover in this post, but you can read in the documentation.

Promo Tooted

January 7, 2020

With our pleasure, we introduce to the world our client Dot Capital's newest project, Promo Tooted, which has launched to Estonian markets as of today. We've made the entire thing, design, and development.

While we mostly don't get the chance to do full website solutions like this and we rarely ever do design (partly because none of us here is a designer, and I only make designs once under a blue moon, like in this case), we do like the occasional challenge and making something completely from scratch is thing of joy.

The home page

The client wished for a simple, bloat-free and straight-forward experience where the showcase of the products sold is listed on the front page of the site with a category switcher that does not take the user to a new page.

The product page

Following in the same spirit, the product page itself is minimalist, with playful animations and clear-contrasted content putting the users' eyes exactly where they need to be.

The contact page

We were adamant that the home page of the site would be kept about what the site itself is about instead of blasting it full with information that the potential customer doesn't care about. Thus, all the actual information about the company is on the contact page. Cleanly designed, showcasing what the site is about, who is behind it, who are their clients and how to get in touch. I think it achieves all the mission goals of the site and I wish them great success with it.

Introducing BaboonWP

January 1, 2020

We do quite a bit of WordPress theme development here at Baboon and since a lot of what we do is very repetitive, we decided to go ahead and create an abstraction on top to make our lives easier (and if you develop WordPress stuff, your life easier, too) and thus came to be what we call BaboonWP.

It makes a lot of things like enqueueing scripts and styles a matter of just 1 line of PHP and it also simplifies creating AJAX actions, both in PHP and JS. There's more to it than that though, so go check it out on our Github repository. We'll be adding more stuff to it as we use it, but any and all contributions are also welcome!

Will work for money

December 28, 2019

Hi there! I’m Asko, chief software engineer around these parts of the internet. I’m behind this little two-man racket, kicking bugs and taking features. Jokes aside, the real news here is that we are open for business. Code business. Whether you are a digital agency, a start-up or any sort of company in-need of engineers, we can quite possibly help out with that. So get in touch and let’s fill up the calendar.

A little history

Honestly, there isn’t that much history given that Digital Baboon is just about 1 month old at this point, but I can give you a little story I guess. About one and a half years ago I was wandering the streets of Barcelona, Spain, and I happened to get hired by a local renewable energy company called GreenPowerMonitor. I wasn’t a contractor then. Digital Baboon certainly didn’t exist yet. I was just your regular salaried employee.

Fast forward 6 months and I found myself wanting to move back to my home country, but I didn’t want to change jobs. I liked my colleagues and the work we were doing too much. Thankfully I had a super cool boss who had nothing against remote work and so I moved to my home country and I kept the job. Except now I worked as a contractor for them.

Fast forward another 6 months or so and I suddenly realized that all I have now is just this one client and there’s no employee protection anymore. I don’t get a huge lump of cash when being let go. I get nothing once I’m declared redundant or my job is finished. I’ve never much cared for networking, but I have made a few friends along the way in my ~10-year career, so I started thinking how could I make sure I will be fine when this client of mine eventually stops being a client of mine.

Then an idea struck me; what if instead of being self-employed, I would open up a small company and take on multiple clients? Then it won’t hurt as much when one of my clients disappears. And long story short; I did. I also hired a good friend of mine, Kevin, who’ll be walking senior engineer shoes soon enough. It hasn’t been even a full month since the ink on incorporation papers dried and we’re doing pretty good so far.

What kind of stuff do you do?

All kinds of stuff. Web development (front-end and back-end), API development, mobile app development and whatever fits in-between. You can check the about page for more information on languages and frameworks that we have experience with. Keep in mind though that we’re not only limited to those languages and frameworks, we can pretty much do anything, but if it’s not on the list – it’ll cost you about ~2 weeks of invoicing just so we could get up to speed with your tech stack.

Carry on!

And that's the gist of it. 2020 will be a hell of a year. Stay tuned for more.