Millenials are ruining web development!!

I read this post from CSS Tricks that lists a number of “CSS utility libraries” with curiosity, which quickly turned into a mixture of confusion, panic and disgust, with each new example of CSS class names you would use with these libraries.

Let’s look at some of the class names; highlights are mine.

  • d:i-b f-w:700 p-x:3 p-y:.7 b-r:.4 f:2 c:white bg:blue t-t:u hover/bg:blue.9
  • mw9 center pa4 pt5-ns ph7-l
  • f3 fw1 georgia i
  • flex flex-wrap items-center mt4
  • tcg50 ft10 fw3 mb2 md-mb3
  • display-title color-white
  • pad-1-bottom text-blue border-bottom marg-3-bottom
  • bgr-green text-white grid-3 s-grid-12 pad-2-vert pad-1-sides
  • constrain-md md:constrain-lg mx-auto pt-24 pb-16 px-4
  • fontSize-xxxl
  • xs-col-12 sm-col-9 lg-col-10 sm-offset-3 lg-offset-2

These frameworks claim to use humanised classes that will make your development faster. But…

  1. Where is the separation of concerns? Did they not get the memo about not including font names, colours, and other visual attributes in the HTML? What if they decide to change the headers’ colour? Then you need to change all headers to go from class=”white” to class=”orange”, etc? Your development is going to be “fast” for a moment, but once you start having to maintain the code you’re going to regret this brilliant idea.
  2. There’s nothing human to using those classes. They are a step away from being a domain specific language… a programming language. Humans do not use programming languages to communicate between them (much to the chagrin of some “humans” who would like otherwise).

I can’t believe it’s 2017 and we still have to see this (let alone argue about it).

I guess they didn’t see the <p style=”color: red; font-family: Times New Roman;”><i><center>Old times</center></i></p> when we had to write crap like that not because we wanted, but because that was the only way. And oh how happy we were when we could take all that formatting out of the mark up and put it into a file and not have it scattered across all the files in the site, interspersed with the content. Ah, the audacity of youth…! Millenials are ruining web development! Groar! 👹

But if that wasn’t enough for you to disturb your calm on this fine Friday morning, here’s this excellent example of deeply offensive CSS, except we need to look at the class and the HTML tag to get the full kick in your ancient guts feeling 👟💥👵🏼:

<a href="#" download="" class="button button--secondary xs-mr1 xs-mb1">

If they want a button that looks and acts like a button… why… don’t… they… use… A <BUTTON>???!?! 😱

Please don’t do this. It’s not good for anyone–neither users, neither future developers that have to pick the maintenance after you were ‘clever’ and ‘humanised’ the code.

Or maybe it’s an ironic version of 90s vintage code, hipsterised. That must be it 💁🏻

Dodging garbage fires

Trigger warning: harassment, non consensual sex, porn, and all other sorts of gross things I have dealt with.

You might have heard about “the Google guy“. I won’t rehash it again. Instead, I want to focus on the questions that people ask me: “have you seen that?” and “how come I’m not outraged?”

Short answer: because I’ve been seeing this, in one way or another, since I was in kindergarten and I’m very, extremely, incredibly tired.


  • I’m in kindergarten. I want to climb trees, play football and explore the playground. A mean bully boy surrounded by its group of coward groupies declares I can’t, because I’m a girl, and also because I am wearing a dress.
  • I’m in primary school and I want to play with construction games. I am told that is what boys would do. Do I not want to play with Barbie?
  • Later I want to attend computer classes after school. I am told that is something boys would do.
  • In secondary school, I want to enter the drawing contest in my school. I am told nope, girls can’t enter the drawing contest, they have to do aerobic or be cheerleaders during the (male) football match.
  • I’ve been accepted at uni to study Computer Science, I proudly tell one of my class mates. He looks at me with a troubled face and asks/declares “that isn’t something women would study, is it?”
  • I’m at one of the practice labs in the uni, and a male teacher makes a sexist comment about women being really good at cleaning up, when I say I’m tidying up our assignment before submitting it.
  • Later, the mentor where I’m interning describes in a very nonchalant and clinical way his proposition: that I allow him to perform some sexual acts on me, so he could decide if he really likes his girlfriend enough to go live with her forever. In parallel, one of my intern colleagues declares he’s in love with me and gets upset that I refuse him and his gifts. I quit, because jesus freaking christ, I just want to build videogames and my curriculum, not have sex with my coworkers.
  • Elsewhere, we built a website, then I’m told that it’s best if we don’t say that a woman built it, because then people would try really hard to hack it.
  • I’m at a demoscene party and I’m surrounded by men watching porn. I’m confused because a demoscene party is meant to be a computer event and it’s supposed to be about technical excellence, so… why are they watching this here? What is wrong with people?
  • At another demoscene party a guy asks me if I’m “a real demoscener”. I am…
    • releasing a demo which I coded myself with my own scripting system based in Lua and C++,
    • plus a song,
    • and I’m being interviewed and joining a panel or two (I don’t even remember),
    • and also teaching a seminar
    • … and I still need to prove myself somehow. Do I need to dress like Trinity from the Matrix?
  • On my first startup I’m the only woman developer out of 8 developers, and I accidentally get cc:ed on an email in which the CTO refers to me as “the girl in the office”, and wonders if I know any programming language.
  • On the first day of another job, I’m introduced to one coworker, who asks what I’m going to do there. His reply: “Oh. I didn’t think women could program”. Perhaps not ironically, he was terrible at programming. Also at being human.
  • In conferences, meetups, and similar gatherings, I’m warned when technical discussions are happening, just in case I want to refill my drink or retouch my nail polish, I guess.
  • In another startup, the CTO tells me “in confidence” that the VC of the startup where I work is “slightly against women in tech” and so was “slightly reluctant” to me being hired, but he “is fine now”. I “slightly wonder” if I need to give him a medal or send flowers in appreciation.
  • Someone apologised, in retrospect and “in confidence”, for assuming I was a man when they read my CV.
  • A very well known speaker told me people were very interested in seeing me speak… because “I am a very good woman speaker”. Not because I have interesting things to say, it seems.
  • At the after party at a conference where I spoke, a stranger holds me by the waist, then gets very upset that I immediately free myself from his embrace and ask him what the heck is he doing. Later, another guy tries really hard to hook up with me, despite my absolute lack of interest and continuous “no” and refusals. His colleagues assume that he’s going to be successful anyway, and ask him whether they should just leave already, since this is pretty much “a done deal”. I am the one who leaves in a whim because I’m done with all this shit; I just wanted to enjoy a drink and talk to interesting people, not be harassed by randos.
  • And the list goes on, and
  • on, and
  • on, and
  • on forever

And so it looks like I have ‘toughened up’, but not really, because what happens is that you develop this kind of automatic system that detects garbage from a distance, and when I see a barrel of garbage in flames like all these guys rolling my way, I just dodge it as fast as I possibly can, because if you get too close you’re going to get burnt out. There’s no extinguisher for this kind of fires; the only solution is to let them consume themselves to ashes.

But it is tiring. I am expending all this energy that men do not have to expend, and that’s simply in order to exist and do my job without being run over by somebody else’s prejudices or taken advantage of.

I would prefer if I could focus on being my authentic, efficient and greatly productive me.

Because the truth is that I’m actually freaking good at all those things I’m told I can’t or mustn’t do. I’m great at climbing, and at drawing, and playing with construction sets, and telling weirdos to get lost (I’m very good at this), and developing software and systems (I’m even better at this), and fixing and building stuff.

And it’s not only that I’m good, but that I’m actually way better than those self-appointed gurus of biology and gender studies who diagonally read a Wikipedia article once and then decided to go around “weighing in” unasked and telling people what they can or cannot do.

And so are all my friends who have had to put up with all this bullshit already, and are freaking good at their jobs… if only you would let them do them!

Many, who are not as stubborn as I am, have left towards fields in which they are treated like human beings, not sexual accessories, and aren’t questioned every single day. Even I consider leaving from time to time.

And that’s why we’re not “reacting” to this. Because we’re tired of “reacting”.

That said, if the rest of people wanted to “act”, instead of expecting the minorities to “react” as if it were a live entertainment show, it would be appreciated. Tell them they’re being sexist. Tell them they are dressing up facts made out of thin air as science, to support their own discriminatory narrative. Or just tell them to STFU and grow up. It would be nice to not to have to do it ourselves, just the once.

Mulder, this is the field in which I grow my fucks. You will note that it is barren.
Mulder, this is the field in which I grow my f****. You will note that it is barren.

Service Workers in iOS?!!!!111one

Someone has spotted a bug in WebKit’s Bugzilla with a patch for implementing Web IDL and stub for Service Workers.

The “PWA community” is 🔥 on fire 🔥 on Twitter right now.

I find this amusing, as I think it was only yesterday that I was reading Yet Another Rant in Medium by someone who had to learn React Native instead of just building a website, because iOS didn’t support Service Workers, also accusing Apple of not supporting the Web because it doesn’t make them any money directly. I don’t think that was the straw that broke the camel’s back, but it’s a funny coincidence.

I also don’t know where the rant is, as people share so many Medium “pieces” in twitter and I find it hard to differentiate between them. I also often just open in an incognito window out of habit so I can’t even find it in my history.

Anyway, I’m excited! It won’t be implemented next month (I reckon), and we’ll probably have to wait until the next big iOS roll out that ships a new Safari, but it is nice to see movement rather than a stern ‘under consideration’. In the future, you will not need to build two or more different versions of a native app, using different programming languages, in order to get offline support, push notifications, etc, etc. Yay!

I’m also secretly happy that WebKit use Bugzilla as well. There’s something about shared pain that fortifies the soul… 😂

Laptop alternatives to Mac

As computer people, we’re never happy with the state of things. But maybe that’s how it should be? Maybe. Anyway—I have been using Macs for many years, and they do stupid things from time to time (perhaps more and more with each revision, but that’s for another story). So I keep checking other platforms to time to time.

Windows has the biggest platform share after all, and we want to make sure that Firefox is absolutely awesome on it. So I decided to contribute to the cause, leave my POSIX regrets aside, and got a Dell XPS 13″ to work with. I was very excited initially. The touch screen looks like a gimmick initially, but it’s really easy to get into it and then I find myself tapping all other screens—without luck, of course! It becomes very natural.

But the rest…

Let’s start with the biggest horror of all: Windows.

Windows 10 is perhaps a little bit less terrible than I expected, but it’s still atrocious.

I spent like 30 minutes disabling useless and distracting fluff that was pinned as default on the Start menu: game widgets, news feeds, gossip stories, a calendar, a widget demanding my email credentials, spinning cubes with weather widgets, etc, etc… and I had to search on the internet to find out how to do that, because it was not clear at all.

It still requires extremely complicated sequences of actions to configure things that are very simple to configure in other systems. I don’t remember the specifics right now, because I gave up, but you had to find some registry setting to configure something regarding the lock screen or something ridiculous like that. Oh and also there were like 3 or 4 alternative ways, each one more complicated than or different to the other. And you never know if they will work, because some screenshots in the guides look like they come from the Windows NT, class of ’97 times. And you’re like: but is this still current? And yes, it is. Heritage!

I had high hopes for Bash on windows (or Bash subsystem, or however they want to call it—everything is complicated in Microsoft land). But it’s like a sort of virtual system on top of the actual Windows file system, and you address files with paths such as /mnt/c, and the repositories it uses are really old. So when you try to use things like Mercurial with Mozilla’s repository, it won’t work, because the client is too old. I felt like I was using a modern version of DOSBox, but simulating Linux.

Installing things felt like travelling back in time to when I only had a Windows XP machine. You have to go to websites, double check you’re in the correct one and not a scam, and look for the package and download it and unzip (sometimes) and install it, which involves copious amounts of clicking on NEXT NEXT NEXT and NEXT! And restart the computer. Oh, how I fondly remembered all the times I just typed brew install… Or apt-get install…

On this note: installing Git is one of the most surreal things I did. It will ask you questions you never considered as “do you want me to change carriage returns to Windows style when you commit” (and you press NO as you shake your head frantically, from side to side, as to make the NO more NO than ever) or “do you also want me to install a Bash for you?” and you’re like WHY IS GIT ASKING ME THIS? but turns out later that Git’s Bash is the only functional Bash that money can get you in Windows. Bizarre.

I also had to register for a Microsoft account to download Visual Studio so I could compile Firefox. I do not intend to program anything using Microsoft’s products on my free time, yet their registration program did not accept my account because it was “corporate”, and it forced me to use a personal account instead. Please let’s all give them a nice communal shrug: ¯\_(ツ)_/¯

The console is awkward to use and scroll, copying and pasting is more of the same. If you paste something from a website which contains some sort of formatting or ‘escape character’, it will not remove them on paste, but they are invisible, yet when you press enter it will complain about the command being incorrect. And you can’t understand what is it that is incorrect, yet it seems fine? IT SHOULD BE FINE! And it’s because there’s an invisible character at the beginning of the line that you can’t see. As a developer, I find myself fighting this UI weirdnesses all the time.

There are high DPI quirks everywhere. When you move windows between monitors, the applications resize: sometimes to double size. Sometimes not. Some applications display minuscule text. Others show a mixture. It feels like some things are hardcoded whereas other use resolution independent units. It’s extremely unsettling, but perhaps not as unsettling as the…

… SOFTWARE UPDATES! Which will pop up from nowhere, when you less expect them. “There are updates to install!” And you click and then it will tell you that “THERE ARE NO UPDATES TO INSTALL”. And you get very confused and try to dismiss the pop up, which uses its own custom UI widgets and so it’s very hard to dismiss because the click area is very small, and when you finally manage to make that damn little window which is on top of your work go away, it POPS UP AGAIN and demands your attention again. “THERE ARE 5 SOFTWARE UPDATES!”, it says now. I really wish it said “WELL ACTUALLY, THERE ARE UPDATES INDEED”. At least it would be more in line with my perception. But anyway. You know. The updates. They sometimes require 3 consecutive restarts. I’m never sure if they’ll be done on the first or second run, so I restart and log in again, and observe the computer for a few minutes before I attempt to resume my work, because I don’t want to be interrupted once I have opened and set everything up again.

And you could disable the automatic updates, but how can you trust Windows computers without updates? You can’t. I am really scared to open the laptop after a while—has it woken up from sleep and got infected by some sort of malware in the meantime? Will I DDOS all the computers in the office?

I don’t really know how people can get work done with this; it requires an incredible amount of focus and concentration. And noise cancelling headphones: because this laptop has a fan, which will turn on the minute you least expect it. So if you didn’t have a headache after using that unpredictable terminal, now you can have one. The fan is LOUD.

And the power charger is still a brick. Despite having a USB-C connector, this still ships with a brick with a thick mickey-mouse ended cable on one side, and another thinner cable on the other side, ending on an LED that doesn’t indicate charging or charged. It just indicates power on the brick, which can be very misleading if you forget to actually plug it on the laptop, and walk away from your desk with the confidence that a lit LED gives you. And ha haaa! You come back to a flat battery because the laptop was not plugged. You need to look at the LED on the laptop front. Because the designers of this thing chose to ignore the laws of causality (I connect it and the light in the connector lights up) and least surprise (this is what other laptops do), because they either know better than us, or have no clue of how people use computers nowadays.

On a similar note, the webcam is on the lower left corner. You will look like Gulliver talking to the Lilliputians, and whether that’s bad or good, I leave it up to you.


I really want to be able to free myself from the Mac prison, but this is not looking very positive. Arguably you could install Linux on this laptop, and in theory Dell supports that, but I have only read reviews of people unable to make function keys work (as usual), or unable to update the BIOS because they do not have Windows installed—unless they dare running the update via a Windows emulator like WINE (and maybe… render the computer unusable if anything goes wrong). And so they cannot use some hardware ports. Hm.

There are other interesting options out there that might be worth keeping an eye on: the Huawei Matebook X (although it seems to overheat), Purism Librem and System 76’s Galago. All these seem lightweight, not-too-ugly and “promise to” run Linux. If anyone has experience with these—please let me know!

“Would you like a receipt?”

I recently got a phone that lets me do contactless payments.

It sounds very fancy but it’s just about creating a virtual copy of your card in your phone, and using the NFC antenna in the phone to act as your contactless card.

I was quite intrigued as to whether I’d actually use this fancy new technology… and turns out that it is really convenient, and I do use it a lot, all the time.

However, it’s not a perfect workflow. You’re constantly asked: “Would you like a receipt?”. Some places just automatically print it.

It is a sign, I think, of an unfinished job. We got rid of the physicality of money exchanges by replacing cash with card payments, then we got rid of cards themselves (albeit virtually), but still rely on physical paper for a receipt.

We need to go further: receipts need to be transmitted automatically, as part of the transaction.

And what if we had a standard receipt format, that could be processed with standard tools, and so receipts could be processed automatically? No more manually adding expenses!

One can dream…