2020 With Hindsight, a year to be forgotten

λ December 31, 2020
Tags: life, j, felt

So Long And Thanks For All The Masks

Well what a ride this year has been. Crapped blood on last New Years Day, straight to A&E. Three months later I had 50cm of my bowel removed and was dead(!) lucky not to have had a bag-for-life fitted. I am probably not the only developer now who can say he quite literally has a semi-colon but I still won’t be touching JavaScript with it.

Then I got put on furlough whilst working at one of nicest places I have ever had the pleasure of being involved at (Duesday) and then eventually made redundant as things didn’t work out. It all looked bad but… thanks to the power of LinkedIn I then found a new place to work, it’s fully remote, and again, it has turned out to be an absolutely fantastic role as a back-end Python developer working with Django, GraphQL and loads of other interesting stuff.

The Small Victories

The worst but eventually most satisfying thing I did this year was to fully get GraphQL under my belt, I had started to learn it with Erlang earlier in the year but that got side-lined. This new role of mine requires it and after bout a week of screwing up it all clicked and to be honest I can’t imagine life without it now. It provides validation and a lot of transport level stuff and you only have to provide a single endpoint. I know there are lots of people who don’t like it but for what we use it for, it couldn’t be more perfect.

Sussed Graphql with Django-Graphene

What a combination this turned out to be. Once you get your head around the concept you suddenly realize how much hard work the Graphene team have put in. It uses reflection to figure out the final schemas queries and mutations and then you can go to the Graphiql web console and play away. I also got myself the Pro version of PyCharm and that’s as good as any of the JetBrains products. They have really aced the IDE experience for the jobbing developer.

Xero Integration

The second most satisfying thing was to have managed to create an integration into the company Xero account so that we can automatically raise an invoice. The documentation and sample projects support python but a lot of the code is Flask centric. Whatever, I can deal with stuff like that and now we have the ability to have “in-app purchases” should we require it in the future, currently it’s for raising an invoice at the start of a certification process.

Learning “J”, forever.

Having spent the last 18 months or so learning APL, I then grew tired of not having a proper APL keyboard and also found that Ken Iverson thought he could improve on APL and that’s how I came across “J”. It can be found at at the Official JSoftware Page and to be honest, if it wasn’t for my limited appreciation and wonderment of APL, I might have just walked away but here we are three months down. It’s been emotional as they say. Mostly frustrating. If this was the first language you ever learned I think it would be a lot easier. The language core is composed of various pairings of ASCII symbols and it takes some time to get used to. Expect lots of articles in 2021 about J as it it very very pleasant once you get over the initial pain barrier.

The Small Annoyances

Well, you got to taste the highs first but there were one or two moments this year when I almost gave it all up and went for a life on the open road with just me and my imaginary coder buddy for company.

Failed to complete my Blog Comment Engine

Sorry to Banks. A Dada, I promised him first-blood on the comments! I have a comment engine that -works-, it’s pure Erlang, but for some reason I just can’t bring myself to finish the last little bit… it started to mushroom on the administrative side of things so for now, no comments still, not that anybody reads it. So, until such times as I truly think I need it, it sleeps. I took out the Disqus plug-in for some reason best known to myself. Maybe I should have left it, sleeping dogs and not fixing things that aren’t broken. Whatever.

LinkedIn Banned Me Twice!

And the real truth is that I still don’t really know why. The first time I thought it was because of something vaguely Trump related in the run up to the election, and the second time I suspect it was because some emotionally stunted a-hole couldn’t take the constructive critique I made of their absolutely jaw droppingly banal post. Who cares. If I get canned again, I’m off for good, it has turned into a platform for narcissists just like everywhere else it seems, a sad sign of the times and one I rather dislike.

I got a Pi 4 from Santa

Surely this is in the wrong section? No, I distinctly made it clear to Santa that it would only end up gathering dust. Every time I get into the car I declare, “I am going to build an in-car computer one day” and I guess the Elves were listening. It’s a lovely little kit from Labists, it has a little snazzy black box that has a tripod hole on the bottom so when you fit the camera it could be a web cam or something. But, after just one week, after running Pi-Hole for a week, it’s now turned off. I don’t have a use for it. Yet. Who knows. Today I took delivery of a dead Sony Bravia 55 inch flat screen TV from my brother in law…I suspect it’s just the backlight / voltage circuit and I will be attemping to repair that before very soon… I fancy a 55" monitor, it will make reading J that little bit easier :D

2021 – Projects and Shizzle to Fizzle with

Stuff to get done this year…it’s all mounting up, the world has gone mad, I went mad long before it was trendy, and although it has been a long slow year, next year promises to be… well, given the crazy amount of conspiracy theories out there, who knows what next year promises? For me though it will include working as hard as ever if not more so to finish stuff I started.

FELT – Functionally Equivalent Language Translation

It continues to haunt me. I worked very very hard on it whilst furloughed last year and made great strides. The lexer and parser now generate error messages with the line and column indicated. The code is tighter than ever, it has unit tests, and just before I got made redundant, it was beginning to generate compilable and runnable C code which is pretty exciting to me at least. The site still feels like it works and it’s still a joy to make changes using the FELT code and cache mechanism I built, but it might be time for a small make-over. I’ll see.

Code generation is the final phase for it, it already does C as that is the hardest. It requires the types of variables to be known, and at one point I almost fell down the type inference rabbit hole at one point, it’s coming, but not for now. Once C is working I can finish the round-trip and then start to put in the other core languages I plan to cover; PHP, JavaScript and probably Python now. That will do for starters then it gets released to the uncaring world, something I never did with version one as although it worked, I wasn’t happy with the way it did certain things. Long story.

I can’t wait to put this project to bed, I started it in 2012 would you believe. It has been a labor of love for the most part but I have to draw a line under it next year and move on to other areas of interest.


Sigh, why do I do this to my brain? In the last two years I learned quite a bit of APL and now it has made me go for J. In the short month or three I have been learning it, and coupled with some great help from the IRC channel and mailing list I feel I have progressed to the point where I can at least read a fair amount of the code and figure out what it does! To say that the average J sentence (a line of code) looks like a printer error is not far from the truth.

It is possible to express the Game of Life (yes, that one, the mad blobs thing) in a single line of J code:

    step =: ((]+.&(3&=)+)(+/@(((4&{.,(_4&{.))(>,{,~<i:1))&|.)))~

The full page can be seen here and don’t say I didn’t warn you. It’s getting more addictive than Lisp still is.

Nope, I ain’t gonna even try to explain it. But suffice to say that I can read that and even comprehend it now!

And the rest…

I’ve also started something ‘secret’. That’s all I am saying for now. Be warned.