Gay marriage: the database engineering perspective

Gay marriage: the database engineering perspective is a rather old article on how gay marriage (and other types of marriages) can affect technology, but somehow I missed it for all these years.

It’s interesting from a variety of perspectives – technical, social, and cultural.  It’s also somewhat tongue in cheek, yet insightful and thought-provoking.  Irrelevant of your views on the subject, I recommend this read.  Where else will you find 14 database schema designs trying to solve the same problem.

The legal ramifications of what I’m about to describe are unguessable. I have no idea what rights a civil union like the ones which would be possible below would have, nor do I have any idea what kind of transhuman universe would require so complex a system. This is the marriage database schema to take us up to the thirty-first century, people.

If databases are that difficult to adjust, I can’t even imagine the effort needed for humans…

The 20 best wireframe tools


Creative Bloq lists 20 best wireframe tools.  The selection varies from free, through cheap, to expensive, and covers web-based, desktop, and mobile solutions.  Quite handy for those of us not involved in web design on a daily basis, but needing a sketch / mockup / wireframe tool once in a while.

The list includes the following:

  2. Moqups
  3. UXPin
  4. Fluid UI
  5. Balsamiq Mockups
  6. Axure
  7. Pidoco
  8. Visio (surprise, surprise)
  9. InDesign CC
  10. Photoshop CC (no surprise)
  11. Photoshare
  12. Penultimate
  13. Pencil Project
  14. OmniGraffle
  15. Gliffy
  16. MockFlow
  17. Frame Box
  18. FlairBuilder
  19. Justinmind
  20. HotGloo

Update (May 22, 2017): Also, have a look at this list of mockup tools.

Google Open Source Website

Google announced its new Open Source website:

Today, we’re launching, a new website for Google Open Source that ties together all of our initiatives with information on how we use, release, and support open source.

This new site showcases the breadth and depth of our love for open source. It will contain the expected things: our programs, organizations we support, and a comprehensive list of open source projects we’ve released. But it also contains something unexpected: a look under the hood at how we “do” open source.

The site currently features over 2,000 open source projects that Google has released and contributes to.

Hellenic Bank Open API

Oh. My. God.  The future is here.  Hellenic Bank is (finally!) introducing an API.  Not sure yet what exactly one would be able to do with it, but even if it’s just to check an account balance, it’s progress already.

I vaguely remember being part of the effort to convince Hellenic Bank (or any Cyprus bank for that matter) to provide an API to my then employer … erm … about 10 years ago.  The effort was beyond describable at the time.  But I knew the day would come, and it’s finally here.

These are probably the biggest technology news since the time PrimeTel became an ISP with its own submarine cables.

Dependency Management and WordPress: A Proposal

I came across this article – “Dependency Management and WordPress: A Proposal“, which provides an excellent overview of some of the recent developments and discussions in the area of composer integration with WordPress, and even more generically, some of the issues around dependency management in an ecosystem as large and complex as that of WordPress.

It’s been a while since I checked what’s going on in this area.  A couple of years back, I linked to an article that shows a way to use composer with WordPress, and since then I’ve built something similar for our use at work.

But it’s good to see that the problem is not tossed and forgotten, and that there are some very smart people still trying to work it out.

Payum – PHP 5.5+ payment processing library

Payum – PHP 5.5+ payment processing library, which is self-described as:

It offers everything you need to work with payments: Credit card & offsite purchasing, subscriptions, payouts etc.

The documentation looks extensive, and the list of supported gateways is probably the longest I’ve seen.

Mautic: Open Source Marketing Automation Software

Mautic is an Open Source marketing automation software, which provides a whole bunch of functionality around contact tracking, campaign management, mass mailing, landing pages, and more.  It can be self-hosted or used as Software-as-a-Service (SaaS).  The source code is on GitHub and licensed under GPLv3.

It provides an API, and is already integrated with a whole lot of services, varying from social networks and instant messengers, to CMSes and CRMs.  Scroll down the Tour page for a comparison table against such alternatives as Marketo, InfusionSoft, Hubspot, Pardot, and Eloqua.


Creating Strictly Typed Arrays and Collections in PHP

This SitePoint PHP blog post (read at Planet PHP if the site is unavailable) brings to light a very useful feature available since PHP 5.6 – ellipses in functional arguments, which allows to define a variable number of arguments to a function.

I’ve seen the mentions of ellipses a few times now, but I assumed that it was a PHP 7 feature.  Turns out PHP 5.6 users can enjoy it as well:

function sum(...$numbers) {
    $acc = 0;
    foreach ($numbers as $n) {
        $acc += $n; 
    return $acc;
echo sum(1, 2, 3, 4); // prints out 10

This is very useful, but, as SitePoint PHP blog most mentions, it can be made even more useful with type hinting of the arguments.  For example:

class Movie { private $dates = [];
    public function setAirDates(\DateTimeImmutable ...$dates) { 
        $this->dates = $dates;

    public function getAirDates() {
        return $this->dates;

The limitation is that you can only hint a single type for all the arguments. The workaround this is to use collection classes, which basically work as strictly typed arrays. – quality metadata badges for open source projects provides a large collection of badges that you can use in your project documentation (like over at GitHub or BitBucket), which shows a variety of metrics for the project – latest version, number of downloads, build status, and more.  Pretty much anything that you’ve seen used by any project on GitHub is supported (I couldn’t think of a badge that wasn’t).

Now, if only there was a way to insert these things automatically somehow …