Wordpress and Drupal jargon compared

I made the following comparison of Wordpress and Drupal terminology for a customer and figured others might find it useful too.

Important: undoubtedly the very existence of this table will create the impression that Wordpress and Drupal are much alike. This is obviously true in some aspects – both are open source CMS-es based on a XAMPP stack for instance – but the underlying philosophies of both systems can vary wildly.

I will try and give a few examples after the jargon comparison.

Wordpress Drupal
Plugin Module
Theme Theme
Sidebar Region
Widget Block
Menu Menu
Dashboard Dashboard
Admin
menu
Admin
menu
Post Article
Page Page
Custom
post type
Content
type
User User
Template* Template
Template
part*
Template
Hook** Hook
Action** Hook
Filter*** Hook
Filter Filter
n/a Render
array
n/a Form
Shortcode Token****
n/a Entity
n/a Bundle
Media
Library
Media
Library
Blocks n/a
Options Variables
(D7), Config (D8+)
Codex api.drupal.org
wpquery View

* Drupal’s templates are more powerful than Wordpress’. Drupal makes almost everything themable, meaning you can make a template for almost everything. This has advantages for child-themes (you only have to define template parts, which are just called templates; Drupal will figure out which one to load) and for modules, which can define templates for their own output, which in turn can be overwritten by themes. Instead of templates you can also use theming hooks.

** ‘Hook’ is programming terminology. Wordpress sub-divides its hooks into actions and filters. Drupal lets you define hooks by prefixing function names with the name of your custom theme or module. E.g. theming hooks are called THEME_preprocess_HOOK and THEME_process_HOOK, where THEME is the machine name of your theme and HOOK is the part of the page you want to alter, e.g. ‘page’, ‘block’, ‘section’ and so on.

*** Drupal’s filters are typically only used to change text before it is being output to the browser. In Drupal 7 and earlier filters were defined using hooks, in later versions using ‘plugins’ (not the Wordpress kind, obviously).

**** Tokens require a third-party module.

Discussion

Where Wordpress is a CMS, Drupal has historically been more of a CMS construction kit – simply installing Drupal was never enough to run a website. Wordpress on the other hand has its famous 5-minute install: you can literally be up-and-running in that litle time – assuming you do not want anything complicated.

Wordpress has a rich ecosystem of large, monolithic plug-ins (often with paid expansions typically called the Pro version) which give you everything but the kitchen sink for any given functionality.

Drupal on the other hand typically has leaner modules that tend to cooperate well with other modules – meaning you can build functionality from combining modules. Since Drupal sites are typically built by professional coders, this way of glueing together small modules works well for the system.

Drupal even has modules that were specifically made to provide an API – although I am not entirely comfortable with the comparison. Wordpress provides such a large ecosystem, that the combination of Wordpress and a popular plugin can be considered a CMS in its own right.

For example if you considered the Wordpress + Elementor combination to be a CMS of its own, it would be more popular than Drupal. The result is that these popular plugins become their own API’s, even if they are very ugly API’s that can be difficult to develop against.

The existence of the table above suggests that the jargon I have compared is closely related, but the different philosophies underlying both systems permeate through each concept. As a result, finding the right terminology tends to be little more than a starting point.

Blogging is dead and alive!

Blogging is dead, apparently. But blogging is also alive.

Both statements can be true at the same time without it being some weird sort of Schrödinger’s Cat situation.

Blogging as a social activity, as the thing that the cool kids did to hang out together, seems to be mostly dead. I know a few people who maintain their blogs as a way to stay in touch with their fan base — they could have switched to a forum or a Discord, and some have (Jeff Minter seems to want to maintain all three), but why switch to the next fashionable technology when the previous one still works?

But blogging these days is also very much alive, because blogging allows you to write in a manner that the search engines for some reason automatically label ‘organic’. Your posts need to be linked in order for the machines to consider them ‘high quality’, but other than that, you are good to go.

As a result, and as an exercise in search engine optimisation, corporate websites are the place where you find a lot of actively maintained blogs.

Facebook is a bad application

Facebook has been having a lot of bad press lately, so much so that I have started to wonder if they are not feeding some of it to the media themselves, just to draw the attention away from all the other bad press. (Nah, just kidding.)

The big one, however, at least (presumably) to Facebook themselves, is the stock price, which is been having a bit of a tumble after the news broke that for the first time in ages Facebook has been losing users instead of gaining them.

Facebook stock has gone down in the past as well, notably 2 and 4 years ago — so this may just be part of some weird 2-year cycle the company has found itself in — but never as steep as this time, when it went from a share price of approximately 330 USD in January to 210 USD this week.

That Facebook has been losing users (while at the same time gaining them elsewhere) is not news to me. My newsfeed has been getting increasingly quiet the past few years. Sometimes ‘friends’ just have stopped posting, sometimes their frequency has dropped considerably. Also only a few of the younger-than-40-year-olds in my friends list post any more.

As you can see the number of users is not a very good metric anyway, because Facebook probably counts that as people with an account and not necessarily as people who are (very) active.

For a company with a flagship in decline you would think that this is the time they would improve the Facebook experience, would you not? I mean, they obviously should not stop trying to develop new products just to recapture some of that waning interest, but unless they are purposely trying to shed old people, they should not actively work on making the current experience worse.

So over the past 2 years I have been keeping tabs on the ways my personal experience with Facebook has been getting worse. The list is shorter than it should be because I did not always remember to make a note every time I ran into a problem.

  • I now get regular friend requests from porn stars (i.e. entrepreneurs shilling their wares) and scammers that I do not personally know.
  • I get regular message requests from scammers.
  • The entire process of getting rid of unwanted message requests is riddled back to front with dark patterns specifically designed to make it difficult to do so. Presumably this is to drive ‘engagement’, i.e. Facebook would prefer you to become friends with scammers, because the more connections, the better. Right?
  • Red dots that indicate you are missing something important are rarely truthful; on the Pages tab, they mean “Facebook wants you to start worrying about page views” (because Facebook wants you to start buying page views). On the videos tab it is to recommend irrelevant (i.e. unengaging) videos from strangers.
  • It is obvious that Facebook sees pages as a ‘business thing’, but that wasn’t so obvious ten years ago when they started clamping down on the way Groups could be used and drove users to Pages on purpose. So it is a bit weird how since then they have sneakily started turning Pages into something else.
  • When you visit a group, these same red dots cast a shadow. Posts are ordered such that the first one is “From notifications”. This is not the setting I want, nor the setting I need, but more importantly: it is not a setting. I cannot flip a switch so that groups are always listed chronologically.
  • Regular glitches in page refreshes or simply refusals to properly update the time line, i.e. straight up bugs. All software is buggy, but pre-2020 versions of Facebook weren’t this problematic.
  • Ads for Facebook Groups that are really commercial products (presumably scams such as pyramid games and the like) can be reported as spam and hidden, except that they won’t get hidden.

There are a few things about Facebook that are good and that may even have gotten better, explicitly groups and events. In case you don’t know what these are, groups are a way to talk with strangers about a shared interest, i.e. forums but on Facebook.

Events are real-life events of which the information is maintained on Facebook. You can talk about events on the page of each event, and these pages tend to have information like time, location, pricing, a map and a list of participants. So basically like meetup.com but with actual users.

Disclosure: I use the Firefox plugin FB Purity, which helps me fix some of the worst problems with Facebook, but which in doing so might also break the site in subtler ways. I think this is still fair as Facebook forces you to use FB Purity.

Related:

Drawing of a Spyker 7HP

This is a Spyker 7HP automobile (from an era when cars were still called automobiles). Only one model was ever built and this prototype can now be found and admired at the Louwman Museum in the Netherlands.

I made this drawing because I needed a reference for another project. I do not think it is very good – I had to work from 3D references, so it has probably all kinds of perspectival mistakes buried in it. Still, it took me a bunch of time and although it is not good, I think it is passable, so I am sharing it here.

How to use sound in Blender

(Another Memo To Self production.)

The 3D modeller Blender has become a Jack of all trades during its long existence and as such, questions about the program that once had a single, simple answer because of the limited scope of the problem domain have now become an exercise in writing proper Google queries.

Simply put: when I wanted to know if I could use sound in Blender, the answer was yes and then I knew even less.

Here are the ways you can use sound in the graphical program Blender, with some links to more information.

Soundtrack for video editing
Blender has a built-in video editor. This just takes streams: audio, video, both. Works like any video editor, except in Blender’s hard-to-fathom way.

This requires the video editing tab, see the link in the next entry.

Soundtrack for keyed animation
If, say, you are making a 2D cartoon, which Blender lets you do, it is not uncommon to start with the voice acting and draw the cartoon based on your soundtrack.

Blender uses the exact same tool as in the first entry and the only reason I give it its own entry is because it is part of a completely different work-flow and you might not realise you need to use the same tool for that.

Animator Worthikids has a 90 minute tutorial on How To Make A Cartoon, the first 7 minutes of which discuss audio. Don’t forget to check out his work (same Youtube channel).

Sound as a ‘driver’
You can influence animation with the volume of sound, the same way disco-lights work. A simple example would be a series of bars that get taller as the sound gets louder and shorter as it gets softer.

Since this is an easy but impressive effect, there are a ton of short tutorials on Youtube that show you how to achieve this.

You implement the effect in the graph editor using the menu Key / Bake sound.

When people say “almost any value in Blender can be animated”, this is what they mean, and the graph editor is often the place where you work with the animation of values, whether they represent shapes, colours, movements, sizes, textures, rotations and so on.

Ducky 3D: Make Anything React to Music

Make sound as the camera approaches an object
An obscure use of sound in a 3D program, but coincidentally the one I was looking for, is adding a sound to a mesh (a 2D or 3D object). What good is that, you wonder? Well you could use it to add environmental sounds. If leaves rustle, don’t just show it but also produce the sound.

An interesting use case is if you needed to add spatial sound to an existing video.

A more general tutorial.

Other?
Are there other places where sound has managed to sneak into Blender? Let me know in the comments.

What I was really looking for, by the way, is sound that responds to an action, sound that is driven by the graphics instead of the other way around. Let’s say your protagonist flips a switch, you want the switch to make a sound. You could key that, but every time you move the flip, you would have to both re-key the visuals and the audio, which sounds (ha!) like a chore.

I am not sure (not being an animator) if this would be more than just a convenience for the initial stages of your animation project, but it is something I can use for my little hobby projects.

(Yes, you guessed right, laser rays pointed at the moon.)

Blender, however, doesn’t currently seem to support triggering sound.

[Dutch] Juridische strategieën voor contractonderhandeling door freelancers

Als freelancer kom ik het regelmatig tegen: je onderhandelt met een werkvloermanager binnen een groot bedrijf, bent al rond, iedereen kijkt blij, maar dan krijg je nog eens een contract van 20 pagina’s voor de kiezen dat 500 % in jouw nadeel is geschreven en waar je je maar even mee akkoord moet verklaren, anders no klus for you!

(Ik heb meegemaakt dat ik dat contract voor de kiezen kreeg nadat ik er al een tijd had gewerkt en dan was het “tekenen, of we betalen niet voor wat je al hebt gedaan”.)

Wat meestal het geval is, is dat niemand dat echt zo wil – de mensen met wie je moet werken niet en jij al helemaal niet – maar het is nu hoe de dingen eenmaal gedaan worden en een uitzondering maken is van bovenaf streng verboden. Met andere woorden, er is een systeem en iedereen zit er in vast.

Hoe ga je daar praktisch mee om?

Internetjurist Arnoud Engelfriet heeft eens een serie stukjes geschreven over hoe in de onderhandelingsfase praktisch om te gaan met starre bureaucratie. De titels zijn helaas wat klikazig, maar het gaat uiteraard om de inhoud:

Hoe je een bak geld verdient door gewoon de inkoopvoorwaarden te accepteren, wacht wat?
Als voor kleine klusjes de inkoopvoorwaarden te zwaar zijn, maak er dan een grote klus van. Huur me niet in voor 500 euro, maar voor 50.000 euro, dan zijn de risico’s voor mij makkelijker te behappen.
Dure Zuidasadvocaten haten deze contractentruc
Juridische bezwaren bestaan niet, alleen commerciële. Vraag je meer van me? Dat kan, maar dan betaal je meer.
Met deze truc stel je ongemerkt inkoopvoorwaarden buiten werking
Kom je niet onder de inkoopvoorwaarden uit? Prima, accepteer ze zonder morren en zet je eigen voorwaarden in je offerte, met daarbij een tekstje dat die eigen voorwaarden voorgaan.

De teneur van de stukjes is voornamelijk dat je niet moet proberen onverranderlijke zaken te veranderen. Er is in onderhandeling vaak genoeg ruimte voor alternatieve oplossingen.

Ik realiseerde me dat zelf toen ik met een grote partij in 2016 onderhandelde, waar precies het bovenstaande gebeurde: ik moest een nadelig contract maar slikken, anders ging de klus niet door. Een van de dingen in het contract was dat wat er ook misging en aan wie het ook lag, ik de volledige schade moest betalen.

Er was niet veel ruimte om dingen aan te passen – HR zei letterlijk: “we verwachten dat je je naam invult, je tarief en wat je komt doen” –, waarop ik het wat-je-komt-doen heb veranderd van “developer” in “assistent van de developer”. Daarmee kon ik de schade niet afwentelen, maar hopelijk wel de aansprakelijkheid. De assistent van de developer neemt immers niet zelfstandig beslissingen van een niveau hoger dan zelf de koffie inschenken – dat doet de developer.

Of dat in de praktijk gewerkt zou hebben? Geen idee. Zelf betwijfel ik het. Je moet het dan al over de boeg van de redelijkheid en de billijkheid gaan gooien, maar een rechter zou ongetwijfeld zwaar laten wegen dat je een contract hebt getekend waar alle aansprakelijkheid naar jou wordt verschoven. Ik voelde me er echter prettig bij.

Dit is voornamelijk een memo to self, omdat ik nu voor de tweede keer in een half jaar een half uur ben kwijt geweest aan het samenstellen van dit lijstje. Hopelijk hoef ik me voortaan alleen nog maar te herinneren hier een blogje over te hebben geschreven.

English: Internet lawyer Arnout Engelfriet wrote some articles about how a little fish can negotiate with big fish about immutable contracts.

Racing game for the Commodore 64, type-in listing!

Get it here!

So in the olden days, the very first personal computers came with a programming environment built-in. In fact, it was the thing you started in after the computer had fired up.

That sounds like a hassle, and maybe it was because manufacturers started taking these programming environments out and replaced them by operating systems, but it wasn’t that bad.

If you wanted to calculate something, all you had to do was punch in a program to calculate it for you. And if you wanted to play a game, you could copy one from a book or a magazine and play it.

10 rem mega monster racer by venlosoft
12 rem press 1 to go left and 2 to go right
100 x=10
110 weg=5
120 scr=0
300 get c
310 if c=1 then x=x-1
312 if c=2 then x=x+1
320 weg=weg+int(rnd(0)*3)-1
322 if weg<0 then weg=0
324 if weg>20 then weg=20
330 if x<weg then 600
332 if x>weg+10 then 600
400 print tab(weg) "!" tab(x) "v" tab(11+weg) "!"
410 scr=scr+1
500 goto 300
600 print: print "boom!!!"
610 print "you drove" scr "kilometers 
612 print "without incident."
620 print "say goodbye to your deductible!"

This is a small racing game. It is based on similar games I have seen. You control your sleek racing car by pressing 1 for left and 2 for right.

I will leave it as an exercise for the reader how to get this program into a Commodore 64 or one of the many available emulators, as explaining that here could make this post of few dozen times larger. I mean, you could always type it in if you felt particularly … historical.

What one used to do once a BASIC program was typed in was save it to disk or cassette, assuming one was lucky enough to own a device that let one do exactly that.

OK, this ‘one’ stuff isn’t working for me.

[animation of a race]

Once the game is in the C64’s memory, you type ‘run’ to start it.

As you can see in the GIF above, the ‘v’ represents your car, the exclamation points represent the sides of the road and imagination represents your only limit.

The next step would be – and I am not saying I ever did that – change the name of the author, copy the game to a 1,000 cassettes, have a mate design cool covers, go to a computer fair and sell them for 2 bob a piece, as your first steps on the way to becoming a billionaire. By the time players would find out the game was a bit meh, you would be miles away.

You could also add a title screen, a game loop, joystick controls, a high score table and so on.

You could even turn it into flappy bird (assuming gravity is to the side of the screen and not the bottom).

One version I saw even played this on a printer, back when printers were typewriters hooked up to a computer, so that you could see what you were playing.

Porting the game

The game’s BASIC is fairly standard, so you should be able to port it to other BASICs of the time. I imagine that the rnd() and tab() commands may work differently on other machines.

Starting up with BASIC

I would like to get back to this for a second. It was a little bit weird to boot into a programming environment back in the day, especially if you never had any interest in programming yourself.

The experience wasn’t too bad, though.

For one thing, all environments were text based in the late 1970s, early 1980s. You weren’t missing out on some sleek user interface that all the cool kids were using. The cool kids also had a command line.

Second, the programming environment tended to double as the operating system, so you had commands to list files, load programs, run programs and so on.

Third, computers of the day started up fast. Like, really fast. Like, blink and you were there. So if you wanted to load an environment better suited to your needs, you did not need to spend much time inside the programming environment.

Finally, the environment doubled as the editor and was therefore, at least in some respects, more powerful than most other command line interfaces of the day. (Although that power was mostly focussed on editing your code.)

And none of that mattered much if you were into programming. Having an expressive and powerful language (meaning: having a programming language that even relative beginners could use to create meaningful software) on start-up turned out to be the gateway drug for a lot of budding programmers.

ABOHZIS, or the army’s sorting hat

I cannot remember much of how I ended up fulfilling my military service, except that I very much would have liked not to.

As the oldest of three brothers, it was clear in the mid-1980s that I would have to go. The rule was that a third (and fourth and so on) brother would get dispensation. My youngest brother had been talking about a carreer in the army, but he purposely wouldn’t join before I had done my bit. A dick move, I thought, but largely irrelevant it turned out, as he ended up staying away from the army.

I don’t remember the age at which I was called in for the obligatory preliminary physical and mental check-up, but I am guessing I must have been 16 or 17 years old. The place was an army base in Roermond, Limburg, in a building that had what I can describe in no more detail than old-office-feel. We had to undress in front of a doctor who poked and prodded us, we had to read eye charts and listen to beeps, and we had to take part in an interview, of which I mostly remember being asked what role I wanted to play in the army if I ever were to be called up.

This last bit was something that had already been asked on a form I had to fill out in the run-up to the check-up, so I repeated that I wanted to be an officer or an NCO. This sounds strange for somebody who did not want to be in the army in the first place, but the way I figured it was that if I had to go, I might as well make the most of it.

The reputation of the Dutch army for putting the right people in the right place was pretty bad; trained nurses becoming cooks, trained cooks becoming engineers, trained engineers becoming chauffeurs and so on. I don’t know if that reputation was well-deserved, but anecdotes were rife.

During the check-up one was scored along ABOHZIS: Algemeen (general physique), Boven (upper body), Onder (lower body), Horen (hearing), Zien (sight), Intelligentie (intelligence), and Stabiliteit (mental stability). The scores given were 1 (good), 3 (adequate) and 5 (inadequate). Scoring a single 5 meant the army had no use for you.

My mother told a story about her brothers (or so I seem to remember), about how she drove the older one, gung-ho to perform his service, to the army base while collecting the younger one who had done something so that he would be discharged. I guess I could ask either of them what happened, but I fear the story might lose in the telling.

At some point I must have received a message that the army thought me fit to become cannon fodder, though not in those words of course. That did not mean that it was certain I would be called up. Some years there were more young men available than the army needed and then they would not call you up.

Military service was obligatory for young men in the Netherlands, but there was an alternative for conscientious objectors. Actually, there were two. The alternative was that you could apply for so-called alternative service. This meant that you were employed outside the army. Military service lasted 14 months, alternative service lasted 17 months.

In order to apply for alternative service, you had to state that you had serious conscientious problems with being in the army. And to prove this, you had to give an interview in which you stated your objections. The way this had looked to me was that you basically had to tell the interviewers that you were a pacifist, which sounded all very tree-hugging hippie to me. A pacifist to me was somebody with Ghandi-like qualities who would stand back while his house was burnt down and his family murdered.

Then there was the alleged nature of alternative service. The way I heard it, I’d have to clean toilets for seventeen months, or wash old people. If there were a war, I don’t think I would raise arms against an enemy. I could not see myself do this. But performing military service is not the same as going to war. The way I looked at the conundrum was one of the amount of time wasted versus the way that time was wasted. And my choice then was clear – if I were to be called up, I’d sit out my 14 months in the army.

It turns out, or so it was explained to me much later by members of a foundation that helped conscientious objectors, that playing the saint would have been detrimental to one’s classification as a conscientious objector, because it sounds like a lie. People who would say in their interview that they would turn the cheek no matter, would find an invitation to come to dress in olive on their doormat.

Here is how it has been explained to me since then what happens to hard core objectors who wouldn’t or couldn’t perform alternative service. They would either cut their losses and acknowledge the invitation, or they would stay at home the day they were supposed to report for duty. Then a week later or so, the military police would come and collect them and drive them to an army base where they were given some trivial order, like ‘sweep the floor’ or ‘do ten push-ups’. If they refused, that would count as disobeying a direct order. The objector would be arrested and brought before a military court, where they would be sentenced to 1 year in prison.

In the end I did get called up. I received a letter telling me that I was going to be a gunner in the artillery, the least impressive of the fighting arms. I was not going to be an officer or an NCO. My slender frame, resulting in an ABOHZIS score of A3, might have had something to do with that. The letter did not give a reason for me being sorted in the artillery, but it did tell me to report for duty on a freezing Monday morning, which I did.

Fourteen months in the army provided me with plenty of glimpses of promising exits. There was the discharge of the guy who seemed to have upgraded his mental stability score from S1, healthy, to S5, looney tunes. I do not know how he did that, but him consistently calling the wachtmeester (artillery sergeant) ‘sir’, despite having been told numerous times not to, was part of his rich mental tapestry.

Then there were the many cases of unspecified back problems which seemed to get the army shaking in its boots, presumably because it feared having to pay life-long disability pensions. In most cases, claims of back problems were solved with a doctor’s note stating that gunner so-and-so was no longer allowed to lift shells.

After I finished my fourteen months, I started talking to conscientious objectors who had performed or were performing their alternative service. It turned out they all had cushy desk jobs with charities that, contrary to army life, actually prepared them for life and gave them something to put on their resumes. The exceptions were conscripts who at least had gotten their driver’s license or Russian studies out of it.

A lot of the above is memories of conjectures. I don’t really know how the Dutch army selected and assigned its conscripts in the 1980s. Normally I would double check what I write in a blog post to see that it is factually correct, but my goal with this post is to have it be a witness report and nothing more.

A row of M109 howitzers and trucks waiting to move on, while conscripts are milling about

Worth a listen

(Big Thief’s 2016 NPR Tiny Desk concert.)

Some minor blog-keeping

I have changed a few small things on this blog that should make your experience slightly better:

– I replaced the plugin that took care of the Recent Comments section in the sidebar by something called Better Recent Comments… because it is better.

(In this case, because the old one stopped working.)

– I made the blue that I use for links slightly darker to improve contrast.

– I added my famous, home-baked Youtube Nocookie plugin, not even so much for the privacy aspect, but because it lets me display Youtube videos across the width of the screen or column and in the correct aspect ratio (more or less, ’cause rounding errors).

– My implementation of responsive images used to be a bit wonky, causing some pages and posts to be narrower on mobile than strictly necessary; I fixed this.

– All fields of the comment forms are now nice and large, regardless of which device you view this site on.

Apart from bragging rights I mention this so that if any of my improvements turn out to be the opposite, you have a comment form you can use for posting bug reports.