Completely tech-unrelated, but I started again to learn to draw, with some more decent resources and peeps to talk about art to.
Hope I’ll manage to stay motivated for long enough to not burn out this time
I go on and off drawing partly learning with some resources and try to abstract the concept behind what I learned, partly just having fun with an idea. It is the most balanced way that I have found to keep drawing even when I take long break from it. When I draw for me, I try to draw a bit like we can do automatic writing. I don’t have a mental picture and Ior a precise idea but I just try to let out and get in the “emotional flow”.
It depends what you want to achieve with it too. More technical drawings or artistic or just to express yourself?
Messing around with tooling to write a simple Lisp for the Amstrad CPC. Currently struggling a bit with the SDCC compiler; discovering that a couple of issues that I thought were with my decades-rusty (heh) C skills were actually compiler limitations.
Getting a non-trivial app running in my Common Lisp dev environment for the PinePhone. Probably going to start with an itch-scratching app, likely a Signal client.
Work:
Continuing to work as a technical product manager, on long-term contract to a large and growing fintech company. Focusing on helping them grow an internal platform culture - lots of challenges, high pressure, lots of fun :)
For classic Z80 systems you very much have to resort to assembly as you can’t really afford inefficient compilation. I had an interpreter (sans tokenizer) done a while back in Z80 assembly, the concept shamelessly stolen from that old Steele&Sussman MIT memo. A naïve implementation so not the most efficient memory layout (uses 6 bytes per cons cell), but small enough to see how it comes together.
There’s already an assembler element - writing Amstrad firmware specific stuff, and I’ll have to hand-code the bank-switching stuff in assembler too. So maybe I just need to bow to the inevitable :)
No idea whether the McCLIM UI will be usable on mobile; part of this project is to figure that out :)
I’ll use this experiment to refine my tooling. At the moment, it works by having a running SBCL instance on the phone, driven by SLIME inside Emacs on my dev laptop.
Oh, also, I’m not 100% sure that CL startup time will be feasible for mobile apps. I’ll be investigating that too, and workarounds if necessary. E.g. having a pre-warmed SBCL instance loaded at any time, and then have that load an app when requested, then start up a new pre-warmed instance …
Fleshing that out a bit - my thinking is that apps for this mechanism would be shipped in source code form, and compiled as part of the installation process. This is just vaporware that exists inside my head ATM, but the goal is to avoid architecture dependency, and to empower users to inspect and modify the software running on their devices.
Getting a non-trivial app running in my Common Lisp dev environment for the PinePhone. Probably going to start with an itch-scratching app, likely a Signal client.
I thought that Signal didn’t allow third-party clients? Or do they just not want to support them, but won’t ban you like WhatsApp?
I’ll get to know today if I have corona but I’m spending this week recovering from this deadly fever+dehydration combo that is causing my head to split.
How long did you have to wait? Due to a kind of shortness of breath I was experiencing I had a test made last week, but I’m still waiting for a result :/
I finished adding filesystem extended attribute support to tmpfs, which will allow HardenedBSD to ship misbehaving applications (like Firefox and Chromium violating PaX NOEXEC) with certain exploit mitigations pre-toggled. I’m now starting to read the source code for FreeBSD’s package manager (which HardenedBSD also uses) to do that same integration work there.
Final stretch of revision to my book on Python regular expressions. Hoping to finish the updates by this week and publish it next week. Initially I thought I’ll take about a week to improve things here and there and my main reason for new version was just to include epub in addition to pdf. But when I looked into feedback I’ve received over the past year and my own continuing learnings as a writer, I just couldn’t stop myself from a big overhaul. It’s been over a month now into the revision. And along the way, I had plenty of ideas to improve, which I’ve forcefully put it as todo instead of implementing them now. Otherwise I’d never finish the book.
I have to constantly recommend Mastering Regular Expressions to people which is a phenomenal book but for some reason the author decided that Python wasn’t worthy of coverage (Triple bleah) so I have to tell people that it’s all mostly the same with some differences you can come to grips with.
Apart from the differences in regex syntax/features, there’s also finer points regarding how these expressions are used with other methods/functions offered by the language. For example, split/findall/grep etc. Or assignment expressions in Python compared to Ruby which has global variables for matched portions.
I never knew that python has a different approach to regular expressions. If you’re not sick of writing about them, could you at least point to a site/document explaining what differentiates them?
Unless you have tools and programming languages using the same library (PCRE and Onigmo for example), there’s probably some difference between any two tools or programming languages that support regex. Even with same library, not all features might be enabled.
Python’s syntax for the features that it supports is very similar to Perl’s syntax. It doesn’t support features like possessive quantifiers, \K, \G, control verbs like SKIP/FAIL, unicode \p, subexpression calls and so on. All of these can be found in regex module (https://pypi.org/project/regex/).
When it comes to command line tools like grep/sed/awk, they usually support only BRE/ERE versions and even then it differs between GNU/BSD/etc. These do not support non-greedy quantifiers, non-capturing groups, lookarounds, etc. Stackoverflow sees a few posts weekly from users trying out their patterns on sites like regex101 and trying to use \d, non-greedy etc for cli tools - example this and this
I’m working on a new project to help authors generate eBooks and websites. It is early days but I think the usable beta will be ready by next week. I’ve just posted a teaser video to share it with friends and fun communities like this one.
Doing a failover with hot standby redundancy solution for a distributed industrial system. Things that need redundancy are the control system (managing hundreds of networked nodes) and PTP grandmaster clock.
So far thinking along these lines:
Control system C1 is designated primary, C2 secondary, with a heartbeat connection between
When C2 misses C1, it offers takeover to the networked nodes it can reach
Each node affirms takeover to C2 if it also finds C1 unreachable
C2 tallies the replies and over a certain threshold of total amount of nodes commits to takeover
Upon C1 re-availability, it cedes control
The clocks I hope could just be configured with different priority weights.
Not sure if your setup allows it, but why not make it active/active? It would be far easier to scale up in the future, you’re sure the failover node will always work as it’s doing part of the job all the time and dr tests become more boring as it’s just a matter of shutting down one node.
Please note I have no experience whatsoever with industrial systems, only (very high-available) appservers and webservers. Just think the problem you’re having is probably more interesting then a webserver.
It’s a fire detection and evacuation assistance system, where all nodes have to work in sync (hence the clock) and with coordinated actuation. So it’s hard to do with more than one authority at any time.
Finished week 15 of Reuven Lerner’s Weekly Python Exercises. That’s the last week in the course so I’m officially taking a Very Long Break from anything that involves deadlines that isn’t part of my regular paid work.
I feel like I’ve achieved what I set out to over the last year and am a journeyman Python programmer.
Also, install the additional Unifi access point in the kitchen. Even with the new Unifi Dream Machine router/WAP combo the dead zone there is certifiably still present - ~8dbm and 100mbits/s drop which is enough to be worth addressing IMO.
NEVER AGAIN will I have to deal with my guests whining about bad wifi! :)
If I have the brain cycles I may pick up the next bits of The Nature of Code - the current section is on visualizing Gaussian distributions, which is more fun than it sounds :)
Working more on my rulebook for dungeons and dragons style gaming called The Source. It’s inspired and based on 6E (this was a part of that giant Itch.io bundle that came up recently). I’m gonna make this available on Patreon as a PDF once I finish a draft I’m proud of. The images linked there have some previews of the content in that book, but there will be a lot more in the draft I put on Patreon/itch.io.
I’m working on being a little more self reliant with services I use. I am transitioning a large portion of software I use to a self-hosted version if it exists, or just a different software all together if it doesn’t. Also trying to peel away from Microsoft products as much as I can.
Closing on our first house! That’s the biggest thing.
For personal projects, I’ve been working on my personal chat bot framework and have finished up the IRC and Discord backends… Minecraft as a chat backend is getting finished this week (along with the release of 1.16) and then I just need to build a proxy plugin so people in linked channels can see messages from other platforms.
Layoffs at work mean that I’ve got to start doing something to make myself look presentable! Resumë-fluffing, searching for stupid little things to work on, and so forth.
My new keyboard finally arrived so I’ve got some configuring/learning to do!
My dwm experiment was quite successful in a way, I had some fun but will be going back to herbstluftwm. I’ll probably do a clean install too.
$work:
I’m going to deploy a Prometheus setup monitoring a number of machines (> 500, < 1k for now). I’m thinking about deploying Prometheus in the cloud, but it will be an interesting journey network wise as the servers are all located in small clusters of a couple of nodes in different vlans. I’ll use thanos to make the setup more robust.
A colleague wrote a big chunk of terraform code to deploy an OKD cluster and I’ll be testing it this week by setting up an environment using only his code and documentation. He’s consistently able to deploy one, but we like to test stuff with a blind test.
@work We’ve started release testing for our next release, so we’re all working on manual testing. I lucked out (I think) and the tests I’m responsible for should go pretty fast and I can get back to regular work. Manual release testing feels kind of silly in this day and age (IMO), but we’re working on automating it, and it’s getting better, so hopefully soon we won’t have to do this any more…
@home I’ve been trying to stay off the computer, though I’m still reading “Algorithms, Graphs, and Computers,” and may implement some of the algorithms. I may take the opportunity to learn a new programming language (or get re-acquainted with one I haven’t used recently) because I haven’t done so in a while.
Other than that, I need to finish up some lingering spring cleaning.
Trying to produce a static vips executable, because it’s much faster than imagemagick convert and almost replaces pngquant and jpegoptim for me, and the linux distros I use pull in way, way more dependencies than I’d like.
I then recently attempted with staticx, which succeeded but it did not produce a working executable. I filed an issue here and looks like a fix was published which I have yet to try.
Staticx is a great tool, by the way. I recently learned it compresses the executable, which most people regularly do with UPX. Although, it currently does not work for glibc NSS, though if you have a binary that does networking via glibc static linking is sadly not feasible.
Home:
More learning Phoenix/Elixir, I’ve been enjoying the code-watching, rather than the compile/verify cycle I have in Nim. Also will be playing some Outer Wilds this week, I started it this weekend, and enjoyed it a lot.
Work:
Docs, and working on unit tests and backup plans for testing out SSL with client.certs.
On a business trip to a customer in Poland with my colleague (who is our CTO). We’ll be hacking on this project, fixing some old outstanding tickets and drinking a beer or two in the evening.
I got hooked on dot-com bubble related documentaries and books. I’ve always found the late 90s and early 2000s such a fascinating period. For the last couple of days I watched a bunch of documentaries on YouTube and I’m about to begin to listen the whole podcast series over at http://www.internethistorypodcast.com/
I’ve added a few books to my wishlist (such as “Dot.con: How America Lost Its Mind and Money in the Internet Era”, “Origins of the Crash: The Great Bubble and Its Undoing” and “F’d Companies: Spectacular Dot-com Flameouts”).
If anyone knows a good documentary, book or a website that’s covering dot-com bubble and history of the web and startups from that period, do tell.
WORK : Rushing on the end of my contract (next week) to get all the results for the two articles we are working on. The introduction to get bayesian spatio-temporal modelling on lattice data with R-INLA was though. Lot of basic introduction available but when we reach complex use-cases like that one, it is so hard to get access to clear information : Scientific articles are scare on technical (include your code when you publish) and lots of pitfall on the road.
NO WORK: Lot of photographs to post-process to clean my SD memory. Reading and learning about the GameBoy assembler and hardware for fun. Still playing with Julia. Getting my CV updated for the end of my contract to get a new job.
Completely tech-unrelated, but I started again to learn to draw, with some more decent resources and peeps to talk about art to. Hope I’ll manage to stay motivated for long enough to not burn out this time
I go on and off drawing partly learning with some resources and try to abstract the concept behind what I learned, partly just having fun with an idea. It is the most balanced way that I have found to keep drawing even when I take long break from it. When I draw for me, I try to draw a bit like we can do automatic writing. I don’t have a mental picture and Ior a precise idea but I just try to let out and get in the “emotional flow”.
It depends what you want to achieve with it too. More technical drawings or artistic or just to express yourself?
I can’t draw at all. Many times I’d have loved to so others could picture what I saw or imagined. I envy folks that can do it.
Do you or anyone else here have resources for beginners who are definitely non-artists wanting to get something out? I’d appreciate them. :)
I’ve started to pick up drawing on my Surface. Concept art is a great place to start as it can be as messy as you want it to be. I’ve been following this guy’s youtube channel
Another good tip is to practice by drawing stuff in your home / environment.
I asked a few friends and threads about resources, here’s a list I compiled of all the resources mixed
Home:
Messing around with tooling to write a simple Lisp for the Amstrad CPC. Currently struggling a bit with the SDCC compiler; discovering that a couple of issues that I thought were with my decades-rusty (heh) C skills were actually compiler limitations.
Getting a non-trivial app running in my Common Lisp dev environment for the PinePhone. Probably going to start with an itch-scratching app, likely a Signal client.
Work:
For classic Z80 systems you very much have to resort to assembly as you can’t really afford inefficient compilation. I had an interpreter (sans tokenizer) done a while back in Z80 assembly, the concept shamelessly stolen from that old Steele&Sussman MIT memo. A naïve implementation so not the most efficient memory layout (uses 6 bytes per cons cell), but small enough to see how it comes together.
There’s already an assembler element - writing Amstrad firmware specific stuff, and I’ll have to hand-code the bank-switching stuff in assembler too. So maybe I just need to bow to the inevitable :)
Whoa, a Common LISP Signal client for Pinephone? That is incredibly cool!
Will CommonLISP’s UI render properly to that small screen / touch context?
Well … a CL Signal client that uses FFI to drive the Signal C library :) That’s the plan at least. At the moment I have a ‘hello world’ working:
https://gitlab.com/duncan-bayne/mobili/-/raw/master/doc/hello-world-resized.jpg
No idea whether the McCLIM UI will be usable on mobile; part of this project is to figure that out :)
I’ll use this experiment to refine my tooling. At the moment, it works by having a running SBCL instance on the phone, driven by SLIME inside Emacs on my dev laptop.
Oh, also, I’m not 100% sure that CL startup time will be feasible for mobile apps. I’ll be investigating that too, and workarounds if necessary. E.g. having a pre-warmed SBCL instance loaded at any time, and then have that load an app when requested, then start up a new pre-warmed instance …
Fleshing that out a bit - my thinking is that apps for this mechanism would be shipped in source code form, and compiled as part of the installation process. This is just vaporware that exists inside my head ATM, but the goal is to avoid architecture dependency, and to empower users to inspect and modify the software running on their devices.
I thought that Signal didn’t allow third-party clients? Or do they just not want to support them, but won’t ban you like WhatsApp?
[Comment removed by author]
It turns out the C library I found was just for the crypto - they do provide an API client, but it’s Java-only. Needs more investigation …
I’ll get to know today if I have corona but I’m spending this week recovering from this deadly fever+dehydration combo that is causing my head to split.
Update: don’t have corona.
How long did you have to wait? Due to a kind of shortness of breath I was experiencing I had a test made last week, but I’m still waiting for a result :/
They respond with the result in 24 hours (Berlin).
I finished adding filesystem extended attribute support to tmpfs, which will allow HardenedBSD to ship misbehaving applications (like Firefox and Chromium violating PaX NOEXEC) with certain exploit mitigations pre-toggled. I’m now starting to read the source code for FreeBSD’s package manager (which HardenedBSD also uses) to do that same integration work there.
Final stretch of revision to my book on Python regular expressions. Hoping to finish the updates by this week and publish it next week. Initially I thought I’ll take about a week to improve things here and there and my main reason for new version was just to include epub in addition to pdf. But when I looked into feedback I’ve received over the past year and my own continuing learnings as a writer, I just couldn’t stop myself from a big overhaul. It’s been over a month now into the revision. And along the way, I had plenty of ideas to improve, which I’ve forcefully put it as todo instead of implementing them now. Otherwise I’d never finish the book.
SO GLAD you’re writing this book!
I have to constantly recommend Mastering Regular Expressions to people which is a phenomenal book but for some reason the author decided that Python wasn’t worthy of coverage (Triple bleah) so I have to tell people that it’s all mostly the same with some differences you can come to grips with.
I would LOVE a native Python treatment of regex!
Thanks :)
Apart from the differences in regex syntax/features, there’s also finer points regarding how these expressions are used with other methods/functions offered by the language. For example,
split/findall/grep
etc. Or assignment expressions in Python compared to Ruby which has global variables for matched portions.I never knew that python has a different approach to regular expressions. If you’re not sick of writing about them, could you at least point to a site/document explaining what differentiates them?
Unless you have tools and programming languages using the same library (PCRE and Onigmo for example), there’s probably some difference between any two tools or programming languages that support regex. Even with same library, not all features might be enabled.
Python’s syntax for the features that it supports is very similar to Perl’s syntax. It doesn’t support features like possessive quantifiers,
\K
,\G
, control verbs likeSKIP/FAIL
, unicode\p
, subexpression calls and so on. All of these can be found inregex
module (https://pypi.org/project/regex/).When it comes to command line tools like
grep/sed/awk
, they usually support only BRE/ERE versions and even then it differs between GNU/BSD/etc. These do not support non-greedy quantifiers, non-capturing groups, lookarounds, etc. Stackoverflow sees a few posts weekly from users trying out their patterns on sites like regex101 and trying to use\d
, non-greedy etc for cli tools - example this and thisI’m working on a new project to help authors generate eBooks and websites. It is early days but I think the usable beta will be ready by next week. I’ve just posted a teaser video to share it with friends and fun communities like this one.
Continuing my work on my more or less useless irc bot. Maybe I’ll actually add a feature that would justify the bandwidth.
Doing a failover with hot standby redundancy solution for a distributed industrial system. Things that need redundancy are the control system (managing hundreds of networked nodes) and PTP grandmaster clock.
So far thinking along these lines:
The clocks I hope could just be configured with different priority weights.
Not sure if your setup allows it, but why not make it active/active? It would be far easier to scale up in the future, you’re sure the failover node will always work as it’s doing part of the job all the time and dr tests become more boring as it’s just a matter of shutting down one node.
Please note I have no experience whatsoever with industrial systems, only (very high-available) appservers and webservers. Just think the problem you’re having is probably more interesting then a webserver.
It’s a fire detection and evacuation assistance system, where all nodes have to work in sync (hence the clock) and with coordinated actuation. So it’s hard to do with more than one authority at any time.
Getting exhausted :)
Two days of planning out the next twelve weeks of work for my job, despite being on a scrum framework.
If your workplace ever says they’re going to SaFE, run like mad. Burn the place on your way out.
SaFE isn’t safe for your psychological safety.
Finished week 15 of Reuven Lerner’s Weekly Python Exercises. That’s the last week in the course so I’m officially taking a Very Long Break from anything that involves deadlines that isn’t part of my regular paid work.
I feel like I’ve achieved what I set out to over the last year and am a journeyman Python programmer.
Also, install the additional Unifi access point in the kitchen. Even with the new Unifi Dream Machine router/WAP combo the dead zone there is certifiably still present - ~8dbm and 100mbits/s drop which is enough to be worth addressing IMO.
NEVER AGAIN will I have to deal with my guests whining about bad wifi! :)
If I have the brain cycles I may pick up the next bits of The Nature of Code - the current section is on visualizing Gaussian distributions, which is more fun than it sounds :)
Working more on my rulebook for dungeons and dragons style gaming called The Source. It’s inspired and based on 6E (this was a part of that giant Itch.io bundle that came up recently). I’m gonna make this available on Patreon as a PDF once I finish a draft I’m proud of. The images linked there have some previews of the content in that book, but there will be a lot more in the draft I put on Patreon/itch.io.
I set up a mailserver.
I’m working on being a little more self reliant with services I use. I am transitioning a large portion of software I use to a self-hosted version if it exists, or just a different software all together if it doesn’t. Also trying to peel away from Microsoft products as much as I can.
Closing on our first house! That’s the biggest thing.
For personal projects, I’ve been working on my personal chat bot framework and have finished up the IRC and Discord backends… Minecraft as a chat backend is getting finished this week (along with the release of 1.16) and then I just need to build a proxy plugin so people in linked channels can see messages from other platforms.
Outside of work, I’m writing a Multiboot-2 compatible, legacy-free bootloader for x86_64 UEFI systems.
Layoffs at work mean that I’ve got to start doing something to make myself look presentable! Resumë-fluffing, searching for stupid little things to work on, and so forth.
$home:
$work:
@work We’ve started release testing for our next release, so we’re all working on manual testing. I lucked out (I think) and the tests I’m responsible for should go pretty fast and I can get back to regular work. Manual release testing feels kind of silly in this day and age (IMO), but we’re working on automating it, and it’s getting better, so hopefully soon we won’t have to do this any more…
@home I’ve been trying to stay off the computer, though I’m still reading “Algorithms, Graphs, and Computers,” and may implement some of the algorithms. I may take the opportunity to learn a new programming language (or get re-acquainted with one I haven’t used recently) because I haven’t done so in a while.
Other than that, I need to finish up some lingering spring cleaning.
Trying to produce a static
vips
executable, because it’s much faster than imagemagickconvert
and almost replacespngquant
andjpegoptim
for me, and the linux distros I use pull in way, way more dependencies than I’d like.Unfortunately, I wasn’t able to get static compilation working, and according to this the creator and primary maintainer does not know either.
I then recently attempted with staticx, which succeeded but it did not produce a working executable. I filed an issue here and looks like a fix was published which I have yet to try.
Staticx is a great tool, by the way. I recently learned it compresses the executable, which most people regularly do with UPX. Although, it currently does not work for glibc NSS, though if you have a binary that does networking via glibc static linking is sadly not feasible.
Edit: aaaand confirmed working with staticx!
What is vips?
Oh sorry, looks like I didn’t link it. https://github.com/libvips/libvips
Home: More learning Phoenix/Elixir, I’ve been enjoying the code-watching, rather than the compile/verify cycle I have in Nim. Also will be playing some Outer Wilds this week, I started it this weekend, and enjoyed it a lot.
Work: Docs, and working on unit tests and backup plans for testing out SSL with client.certs.
On a business trip to a customer in Poland with my colleague (who is our CTO). We’ll be hacking on this project, fixing some old outstanding tickets and drinking a beer or two in the evening.
I got hooked on dot-com bubble related documentaries and books. I’ve always found the late 90s and early 2000s such a fascinating period. For the last couple of days I watched a bunch of documentaries on YouTube and I’m about to begin to listen the whole podcast series over at http://www.internethistorypodcast.com/
I’ve added a few books to my wishlist (such as “Dot.con: How America Lost Its Mind and Money in the Internet Era”, “Origins of the Crash: The Great Bubble and Its Undoing” and “F’d Companies: Spectacular Dot-com Flameouts”).
If anyone knows a good documentary, book or a website that’s covering dot-com bubble and history of the web and startups from that period, do tell.
WORK : Rushing on the end of my contract (next week) to get all the results for the two articles we are working on. The introduction to get bayesian spatio-temporal modelling on lattice data with R-INLA was though. Lot of basic introduction available but when we reach complex use-cases like that one, it is so hard to get access to clear information : Scientific articles are scare on technical (include your code when you publish) and lots of pitfall on the road.
NO WORK: Lot of photographs to post-process to clean my SD memory. Reading and learning about the GameBoy assembler and hardware for fun. Still playing with Julia. Getting my CV updated for the end of my contract to get a new job.
Getting switchable frontends into pleroma, maybe finally start with a group implementation