I made a tiny tool for myself today, to make it easier to display both HTML and PHP code in this site (if you just input it as is it will get filtered, as it would be unsafe otherwise)
It’s a small webform that lives as a shortcut in my browser bar:

Which calls itself when submitted, and if there is some input it will encode it by calling the PHP function htmlentities twice (otherwise it would just show the right output, but not what is needed to get that output). The result is shown above the form. Maybe I’ll add a step to put it on the clipboard instead. That would save another step. Currently I run it on an internet accessible webserver, I will likely move it to the webserver I run locally on my laptop Moved it my laptop’s local webserver (making it both safer, and independent from having internet access).
<?php echo "<pre>".htmlentities(htmlentities($_POST["input_tekst"], ENT_QUOTES))."</pre>"; ?>
This makes it possible to document code changes much better in my site. Such as my recent language adaptations.
The code snippet above has of course been made with this form.
During next week’s DojoCon Netherlands, the annual conference of the Dutch CoderDojo community, Felienne Hermans will be one of the keynote speakers (I’m one of others). Preparing for the conference I looked at the other speakers, and Felienne’s twitter stream ( pointed to her presentation at R Studion Conference 2019 early this year. It’s just under an hour long, but I watched it with pleasure.
The hand drawn slides are cool (can’t imagine the time that went into it, or at least the time I’d need for something like that.), and so is the story, about how to teach (children) programming.
Starting from the quote ‘how’s the water?’, saying in contrast to e.g. reading, we don’t know much of anything about teaching programming. There’s no body of work (which is what she’s now building at Leiden University).
That the way many of us acquired our own tech skills strongly shapes the assumptions about learning to code. Many people growing up in the 70s and 80s learned to work with computers by spending endless hours behind the keyboard, without parental oversight or guidance from knowledgeable adults. I definitely fall in this category too.
That those experiences covertly influence the way the field thinks about teaching coding, where exploration and getting stuck and unstuck on your own is the way to go.
Research of children learning Scratch suggests however that there are many drop-outs that way, that the acquired skill level flattens out quickly, and that there’s no efficiency gain visible in consequent activities of the children involved.
Her research shows that age-old reading teaching tactics such as vocalisation and repeating out loud do work and show consistent results. And that tests work well too. Not to grade children, but to find out as a teacher where you are at.
Oh, and that creating applications in Excel is real programming too. Don’t say, or let people say, that some form of something isn’t real work / the real thing.
I feel vindicated by that last point (made early in the keynote) My meanest programming feat still is building the first intranet (2001/2) of my then employer by hand from scratch using the browser as a window on / to interact with Excel, the folder structure on the shared drives, and back-office systems like time writing, and having the browser grab stuff from Excel files. It was a jumble of HTML, Perl, Visual Basic, and Excel formulas, but it worked and helped cut significant time out of quality assurance processes and made things like starting a new project way easier and actually helpful for my colleagues, instead of being dreary bureaucracy for them. I’d never call myself a real programmer. But it was real programming. Even the tiniest little bits, like yesterday’s simple hack, are real.
This post, in reply to Ton’s on encoding HTML (and PHP) for display on the web, is (probably) visible through RSS only.
With that outta the way, I nearly always end up at Mathias’s https://mothereff.in/html-entities.
Made a small php snippet that gives E the day number of today, which she uses to number some of her postings. Even if it basically is just a single php date function
<?php echo date(z)+1;?>, it is somehow very satisfying to create these tiny tools (like the earlier one creating the right html encoding for that code snippet).First in Peter’s favourites from his feedreader, then from Matt Webb’s feed directly, which both showed up right beneath eachother when I opened my feedreader this morning, I read Personal Software vs Factory Produced Software.
In that posting Matt points to Rev Dan Catt’s recent week notes, in which he describes the types of tools he makes for himself. Like Matt I love this kind of stuff. I have some small tools for myself like that, and it is the primary reason I have been running a local webserver on my laptop: it allows me to do anything I could do online right on my laptop, as home cooking. Transposing code snippets into safe HTML output for instance. Or converting bank statements into something I can import in my accounting spreadsheet. Those are however somewhat of a mechanical nature. They’re by me, but not about me. And that is the qualitative difference specifically of the letter/cards tracking tool described in Rev Dan Catt’s post.
That is more akin to what I am trying to slowly build for myself since forever. Something that closely follows my own routines and process, and guides me along. Not just as a reference, like my notes or wiki, or as a guide like my todo-lists and weekly overviews. But something that welcomes me in the morning by starting me on my morning routine “Shall I read some feeds first, or shall I start with a brief review of today’s agenda.” and nudges me kindly “it’s been 15mins, shall I continue with …?”, or “shall I review …, before it becomes urgent next week?”. A coach and PA rolled into one, that is bascially me, scripted, I suppose. I’ve always been an avid note taker and lists keeper, even way before I started using computers in 1983. Those lists weren’t always very kind I realised in 2016, it became more a musts/shoulds thing than mights/coulds. Too harsh on myself, which reduces its effectiveness (not just to 0 at times, but an active hindrance causing ineffectiveness). I wanted a kinder thing, a personal operating system of sorts. Rev Dan Scott’s correspondence tool feels like that. I reminds me of what Rick Klau described earlier about his contacts ‘management’, although that stays closer to the mechanical, the less personal I feel, and skirts closer to the point where it feels inpersonal (or rather it challenges the assumption ‘if you don’t know it yourself and keep a list it’s not authentic’ more).
Building personalised tools, that are synchronised with the personality and routines of the person using it, not as an add-on (you can add your own filter rules to our e-mail client!), but as its core design, is mostly unexplored terrain I think. Because from a business perspective it doesn’t obviously “scale”, so no unicorn potential. That sort of generic scaling is unneeded anyway I think, and there is a very much available other path for scaling. Through the invisible hand of networks, where solutions and examples are replicated and tweaked across contexts, people and groups. That way lie the tools that are smaller than us, and therefore really provide agency.
It’s also why I think the title of Matt’s post Personal Software versus Factory Produced Software is a false dilemma. It’s not just a choice between personal and mass, between n=1 and statistics. There is a level in between, which is also where the complexity lives that makes us search for new tools in the first place: the level of you and your immediate context of relationships and things relevant to them. It’s the place where the thinking behind IndieWeb extends to all technology and methods. It’s where federation of tools live, and why I think you should run personal instances of tools that federate, not join someone else’s server, unless it is a pre-existing group launching a server and adopting it as their collective hang-out. Running personal or group tools, that can talk to others if you want it to and are potentially more valuable when connected to others, that have the network effect built in as an option.