We finally launched gambe.ro, the italian equivalent of lobste.rs. This week I(we) have to work on the first batch of feedbacks and maybe work on a dark theme that can be contributed back to lobste.rs
Starting a new job at Lightspeed in Montreal! I’ve been excited for this for six months and now it’s finally happening! All the preparation and visa work has all been for this.
Oh, hey, if you need some friends in town, I volunteer.
Wanna come to Korean dinner this Friday? I’ll be there with some friends, but don’t worry; most of us don’t really know each other, so it’s not like you’d be walking into a clique.
It does. I definitely want to spend more time in old town. I was also super impressed by Le Metro. So clean and efficient! I figured out the whole thing in minutes.
Fun! I’m looking forward to visiting Montreal for the first time at the end of June and I’m very excited. My dad is in the restaurant business so I had heard of Lightspeed but had no idea where they were based.
Finishing up my application to the Recurse Center. I still have to submit a code snippet, so I’m refactoring the work I did on making Delauney Triangulations out of a set of points and rendering them in-browser (https://triangles.jeffbarg.com/)
Continuing to add features to a Django MVP I’m working on
At work:
Starting to do more work with data pipelines and processing log files. It’ll be fun to finally use some Python at work (my primary language is Java)
P.S. This is my first time posting on this thread :)
I am adding exhaustiveness checking to the compiler of Gleam, which is a statically typed language for the Erlang VM that I have been working on for the last year or so.
I’m doing this little project for a job application, it’s a tiny etl system to load some files with coordinates, geolocate them and save in a database.
It’s so fun, though. I’m using flask, and trying to apply some architecture ideas I’ve read about, and it’s been a blast, really. In fact, I’m probably not even taking the job, because I got another, better offer, but I’m still working on this project just cos’ now I wanna see how it ends up!
Been doing C# and Powershell at work, and they’re fine, really, but man, did I miss python, and specially flask.
Recovering from a super ludicrous work jag and working through the Brilliant trigonometry course in service to actually understanding some of the trig functions I’m using writing toy graphics programs in PICO-8.
Also - I just wanna say this is one of my favorite recurring threads on lobste.rs! You all are such an incredibly inspring bunch of people, and it’s a real pleasure to get a peek at what you’re all tinkering with. Thank you one and all for contributing!
Specifically, I need to work on removing the accusation of being an advertisement. I’ve consulted wikilawyers and helpers on IRC to see what needs to happen, and I think I have a good idea now of what to do. It’s been a little stressful, but I like Wikipedia, so I am still going to try to make an effort to navigate their community so that this article can stay and be good.
I was thinking of writing a blog post later if I manage to get the article into an accepted state.
The community guided workflow language we use (Common Workflow Language) has no conditionals. This week I will be implementing a prototype for conditionals in this language. If any one has caveats/warnings for when a DSL moves into this territory, it would be great to hear about them! Thanks!
At work, my manager left last week, and true to form I’m getting a battlefield promotion, with everything he was responsible for landing on my plate, with no diminution of my existing duties. Sigh.
Otherwise, the weather is getting better, so the girls are spending more time outside, which is super fun. I need to do a little monkeying around with my router, having successfully gotten the godawful Bell thing out of the network.
Fresh off a weekend at PyCon US, I’ve got some ideas I’m taking back to my day job team, especially around using DVC, an open source version control system for ML stuff.
I’ve also met a number of people interested in exhibiting at Abstractions, so I’ll be contacting them as well as building out some features to our web sites ahead of the registration bump when we announce the full conference schedule in a few days.
I’d love to attend both, but my employer is not known for sending people to tech conferences, so I’ll likely be paying my own way - Pycon was what I was referring to.
(I have this fantasy about attending a few tech conferences a year when I ‘retire’ and funding that with some on the side consulting :)
If travel is ~affordable, Abstractions is likely within reach. We’re one of the lowest price software conferences of its size on the east coast. 2019 is happening in August and 2020 may happen if 2019 exceeds expectations!
Been a while since I’ve posted in one of these, and a lot has happened since the last one. So, here’s a dump.
In not-tech news:
Moving 1.5 tons of cinderblocks to complete our raised beds
Moving, transporting the soil/compost to fill the raised beds
Starting this weekend, planting things in the raised beds (among other things, I get to grow Carolina Reapers! :D)
Continuing to fight with our former contractor so we can actually finish the renovation we started more than a year and a half ago
Getting back into rock climbing; my partner’s knee surgery went well and they can start doing some climbing again (not lead or bouldering, but top-rope is fine), which is super-exciting
Shopping for a new racquetball racquet (I’ve broken the strings on two racquets in the last two months, and fractured the frame on another)…
Meanwhile, on the digital farm:
Looking for other jobs
Continuing to work on a for-fun prototype of a plugin/addon system implemented as a shared library in C (leveraging libdl) (repo here if interested: libplug)
Continuing to work on a pastebin implemented atop lwan (need to buy a domain and start hosting the reference instance so development can move faster and so that it’s actually available for people)
Getting deeper and more familiar with dependent typing and formal proofs (by following plfa)
Continuing to poke around with making my fork of an untyped lambda-calculus interpreter into a more “usable” programming language (next up is adding rudimentary module support (probably more like C-style #include)). (repo if interested: lci)
Starting to work on an outline and abstract for a talk I have been invited to give on the topic of Undefined Behavior in C
Phew. I think that’s a reasonable summary of life at the moment. Here’s hoping it gets a little less hectic soon. :)
adding a few extra sections to my papers we love talk to present it on Tuesday night to a local Ruby meetup.
Trying to port the 500-line 3D modeler to Ruby, but after finding it was written in extremely old OpenGL, I decided to work through a modern OpenGL tutorial to fully refresh myself. Once I finish that it’s time to make an updated port using opengl-bindings and rmath3d
Work:
still none, had a good phone interview two weeks ago, hoping they get back to me before my health care runs out. :/
I’m working through building Antirez’s kilo text editor following instructions at https://viewsourcecode.org/snaptoken/kilo/ as part of my ongoing attempt at learning c.
I want to make some changes to it, like making the editor modal and have more Emacsy keybinds.
In general, I’m busy with re-creating a DAW GUI in Electron that was formerly written in Gtk2.
Currently I’m working on the new preferences dialog:
Electron based Beast Preferences Dialog
We’ve hit a dead-end with our Gtk based UI code.
So now the UI components are developed with Vue instead - the development tooling for web technologies is inexpressibly better and more fun.
Honestly, I have a hard time to figure where to start ;-)
So I’ll just list a few points that come to mind at random:
There’s no way we could keep our code base up with Gtk API changes with reasonable effort, just look at the sheer amount of incompatible changes in the last 2 or 3 releases here: https://download.gnome.org/sources/gtk/3.96/gtk-3.96.0.news
While many HTML elements are familiar to developers through website maintenance or other side projects, every Gtk UI component we used had to be learned from scratch, most often from source code because Qt/Gtk components never have the broad online presence/community support/article treatment/etc that HTML elements and CSS have. Most Gtk Widgets requirered fixes for corner cases or reactivity in the toolkit before we could use them reliably.
The Gtk version of Beast still uses Gtk2 and yet has to chase deprecation after deprecation, b/c Gtk2 likes to deprecate stuff despite never going to be able to actually remove API because of its ABI stability guarantees.
There’s no match in the Gtk/Qt world for Firefox’ of Chomre’s devtools and the ease with which the browser devtools allow profiling or playing with the UI components through a JS console.
The new Beast UI develpopments have settled on Vue, there’s no match for that in the Qt/Gtk world either.
One line of reactive Vue template can often replace a whole compilation unit of Gtk widget setup, with signal connections, event processing and and glue code, like:
<input type="range" :min="min" :max="max" :step="steps()" :title="tooltip" v-model="value" onfocus="blur()"/>
Recent CSS versions allow wide ranging styling possibilities for which GtkStyle in Gtk2 has no match and Gtk3 comes with yet another home grown “CSS” version that’d have to be re-learned, isn’t API stable and doesn’t have tooling support like e.g. SCSS.
As a DAW, some UI components have soft realtime requirements, e.g. for displaying volume level updates. To be fast enough for 60fps display, updates have to use GPU compositing without Layouting and CPU rendering being involved. Accomplishing this in Gtk would be a major undertaking in itself, in Chrome/JS this boils down to: span.style.setProperty ('transform', 'translateX(' + Math.round (newlevel) + 'px)');
The above is not a comprehensive list of issues, and doesn’t even touch on the complications of dealing with a project that’s adopting the GNOME philosophy of feature minimalism and ignoring user feedback. The bottom line is, no native toolkit has as broad support and is as future-proof as web technologies have become. Looking back, and projecting forward, compatibility for HTML, CSS and JS look way better than Gtk or Qt API and language support. The web APIs are also becoming much more expressive than native toolkits these days, which means an order of magnitude lesser developer involvement for creating any particular UI.
Writing a blog post about a shell I’ve been thinking about writing for a lot of time, hopefully progressing with the parser and the code generation for a sort of C reskin à la ReasonML with a nicer type system, slaying Quelaag with a butter knife in my Dark Souls replay, acquiring a couch for watching movies/coding on my laptop. @work I’m rewriting parts of an old Backbone/Marionette app in React/Typescript and trying to convince some coworkers to try out Elm.
I’m working on Monokex, a protocol framework like Noise for secure key exchanges. (I’m not using Noise because it’s too heavy for my taste. We can do better.)
This week I simplified the design of the state machine (quick peek in the last commits of this repo). I effectively merged the mixHash() and mixKey() functions from Noise, and require much fewer hash calls (they use HKDF, I just use Blake2b).
I hope to release a first version of Monokex before summer, and integrate part of it into Monocypher, my crypto library. When I’m done, the NaCl family of crypto libraries will at last have a decent secure channel story. (The crypto_box() API is not secure enough: naive uses have no forward secrecy, and leave you open to key compromise impersonation.)
My baseball throw. When I was 10–12, I played baseball and could throw the ball anywhere I damn pleased; I had power and I had accuracy. Fast forward 25 years and I don’t have that anymore: the last time I played catch with my Dad, I got embarrassed at how inaccurate my throws were.
When it’s not raining outside, I go to the park and throw balls for 20-30 minutes. Slowly making progress!
I also need to do a bunch of failure-mode testing for $CLIENT’s app, because it uses YAML and the people who wrote the spec for YAML are clearly masochists. Same client has asked to prioritise what I work on, so the impending removal of said YAML may be discussed this week too!
Hopefully installing a bunch more sprinklers in the garden. It’s ~38ºC (100ºF) most days at the moment.
I think I’m spending too much time bike-shedding small details (in forms especially) and should try to just have something ready for the public to show, so that’s my goal this week, trying to have the full flow working for new users even if it’s mostly aimed at other programmers first. (still quite happy about the idea to have liquid template in some user inputs to allow for dynamic inputs without having to handle every possibility myself).
At work I’m still stuck on some manual testing. We’re planning to automate some of this in the near future, so that’s a plus, at least.
Outside of work a friend and I are planning a through ride of the Colorado Trail in July. I’ve been going through my gear and making sure my bike’s ready. I’m swapping out a rigid fork for a suspension fork for this trip, so I ordered that on Saturday and should get it this week.
For coding projects, I’ve been updating my Blend2D Common Lisp bindings to keep up with some recent API changes to the library.
I’m moving more infrastructure into Docker. I’ve setup a simple Docker Swarm, build from two VM nodes on the same host, the current main holdup is making docker containers for some apps where I made modifications for personal use (so I also setup a registry)
Also, I’m waiting on parts to finish my DIY Server Rack Closet (hopefully), then I can make my NAS more tidy and reduce the noise floor a bit.
Other than that, I’m just being lazy outside work, my commute has gotten a bit too long to be productive during the week.
I’ve been thinking on using some Docker orchestration (Docker Swarm or something like https://k3s.io/) for personal projects, but building all the infrastructure including mandatory orchestrator-required configuration in each project, seems a lot of work and complext to maintain… But in the other hand, having everything completely reproducible so I can migrate or recreate the server whenever I want might be really helpful.
How’s your configuration and/or processes for working on your personal projects and deploying them to Swarm?
The biggest hurdle to Swarm is IMO the storage problem. I solved it by mounting my NFS storage server on each node in the same location, so a simple bind mount works on all nodes (though I do have to remember not to schedule more than 1 of some services).
I largely manage the swarm via Portainer, which has a pretty good interface for dealing with Stacks or individual Services. The node itself is entirely managed by ansible and based on a very vanilla Alpine 3.9 install (basically, it’s Alpine 3.9 + build-deps for docker-compose + python2 + docker)
I did consider k3s, but it feels to much aimed at IoT rather than a simple distributed system. K8s is very complex compared to swarm, which was largely 3-4 lines in the terminal to setup, initially and for each node.
I setup Drone CI on top of it and plan to outsource some parts of ansible into the CI system, likely managing all non-Docker containers and VMs.
There is still a lot on my ToDo list until I’ve got everything setup though.
Does it work nicely with a NFS mount? For what kind of storage?
I know Portainer, it’s nice, but there were some perks when I tried it, should give a second shot.
k3s is aimed to IoT, but it makes sense to run it on a cheap VPS in terms of memory usage, but maybe not in complexity.
In my case, I work daily with Kubernetes, so, it’s all shared knowledge… I’m still considering it, once an issue with cert-manager gets properly solved.
Once the full setup is done, a post or something like that would be cool :)
It works pretty much as I expected; pretty well. However I would warn against NFSv3, NFSv4 is an absolute must if you like your data.
My setup isn’t exactly a small or cheap VPS, it’s a larger dedicated server that I got from the Hetzner auction service for relatively cheap. I feel like Docker Swarm is a good choice for my use cases (I feel k8s is complicated and I don’t like software that takes me more than 1 day to explore all the configuration options I could possibly care about)
Yep, k8s is pretty complicated, but it’s powerful. Anyway, it’s useful when you have a bunch of nodes and different applications running in it, not so much for a single node/two node setup.
Can I ask a stupid question about this? What kinds of things are you storing? I’ve managed to work in big infrastructure thus far staying relatively ignorant about containers. In my day job we use regular EC2 instances for just about everything, and from a distance it feels like there’s an awful lot of extra complexity this model brings to the picture.
The largest part of the storage server is my nextcloud instance (about 400GB). Everything after that is largely other data the containers have massed up, ie, sqlite databases, log files, config files, cached data, etc. My mastodon instance is still sitting on it’s own disk and database, which would make it the second largest things once it’s moved over (60GB).
Docker isn’t terribly complicated, neither is Swarm. Atleast when compared to K8s and friends. Portainer makes it a lot easier too.
I don’t use EC2, I have a large dedicated server (128GB, 6c/12t), so splitting up resources properly is important compared to letting AWS do it (plus it’s a neat learning experience to do it manually)
For the past few weeks now I’ve been looking for a code review tool that could be used together with gitolite, and was surprised to find that all of the available options are non-ideal or unusable for me in one way or another. I’m reluctantly turning towards making my own. My requirements are somewhat minimal, but I’d also like to tackle some of the design flaws I think github’s PR review system suffers from, by e.g. storing all versions of a PR, making it easy to compare PR versions, being able to save review progress, etc.
My current implementation is a flask app with a webhook endpoint that takes a repository name; when called, the named repository is fetched, and branches with names matching a given regex are treated as WIP branches. There are some views for diff rendering as well. It’s all refreshingly minimal.
If I manage to get code review working nicely, I’d also like to have test, lint, and code coverage results displayed in-line, per-commit. But that’s a ways off yet.
Your “design doc” readme is quite impressive, detailed yet still readable and interesting (at least to me). Is it customary for you to start projects with such a writeup & analysis? And/or do you keep coming back to it regularly to keep it up-to-date throughout the whole development time of the project, or is it more of a one-off, or a loose scratchpad for ideas?
Thanks! I’m planning on turning it into a blog post in the coming week.
I usually write one up at the start of projects that I expect to be more than just hacking on something over a day or two. I find it helps to keep me on track with what I set out to do, and reduces the chance I’ll jump to another new project. I try to update it as I go but it’s usually not the first thing on the list so these docs can sometimes get quite out of date but at that point I still find them useful to jog my memory of what I was thinking.
I wrote hacked a static site generator cmd line tool together with Python over the weekend. It parses front matter and markdown. It has been fun and I learned a bunch of concepts I had not yet known in regards to Python. I hope to further expand on it this week.
This work week I have to deal with hiring. It’s been a stressful few weeks at the company.
This week I’m mostly working on the 44CON Training and 44CONnect sessions in June. I’m also looking at setting up an Adwords campaign. It’s been a while since I’ve done adwords.
I picked up and installed my Amiga 4000 just this weekend, so on a personal note task number 1 this week is reverse engineering and modifying the Vista Pro 3 binary to work with my Picasso II RTG graphics card. Pics are up here, with more being added as I go.
Just finished the last homework assignment on Haskell cis194 course and started on a first small personal project in this language. It’s been a long time since doing something as basic felt so hard, but it’s starting to feel that it’s all really worth it.
We finally launched gambe.ro, the italian equivalent of lobste.rs. This week I(we) have to work on the first batch of feedbacks and maybe work on a dark theme that can be contributed back to lobste.rs
As italian, congratulations! Can you send me an invite? :)
You can request it directly on the website.
I guess there’s no .te for Aragos.te. Looks great though!
Yep, indeed. We briefly considered spaghettialloscogl.io but we went for gambe.ro
Starting a new job at Lightspeed in Montreal! I’ve been excited for this for six months and now it’s finally happening! All the preparation and visa work has all been for this.
Oh, hey, if you need some friends in town, I volunteer.
Wanna come to Korean dinner this Friday? I’ll be there with some friends, but don’t worry; most of us don’t really know each other, so it’s not like you’d be walking into a clique.
https://www.meetup.com/Korean-Language-Culture/events/259587852/
(Oh, and little to none actual Korean will be spoken; it’s mostly in French and English.)
Congratulations! I love Montreal. I only visited once in junior high and it struck me what a really, truly, honest to god diverse city can look like.
I so want to take my wife and go back as an adult!
It’s a really interesting place. I’ve been taking photos and video for my family back home. It’s got a lovely feel to it though.
It does. I definitely want to spend more time in old town. I was also super impressed by Le Metro. So clean and efficient! I figured out the whole thing in minutes.
Fun! I’m looking forward to visiting Montreal for the first time at the end of June and I’m very excited. My dad is in the restaurant business so I had heard of Lightspeed but had no idea where they were based.
At home:
At work:
P.S. This is my first time posting on this thread :)
Is the Recurse center a venue for ongoing technical / CS education? I had thought it was a boot camp focused on core CS skills.
It’s not a boot camp. Much more interesting. Check out their About and FAQ pages.
I am adding exhaustiveness checking to the compiler of Gleam, which is a statically typed language for the Erlang VM that I have been working on for the last year or so.
I’m doing this little project for a job application, it’s a tiny etl system to load some files with coordinates, geolocate them and save in a database.
It’s so fun, though. I’m using flask, and trying to apply some architecture ideas I’ve read about, and it’s been a blast, really. In fact, I’m probably not even taking the job, because I got another, better offer, but I’m still working on this project just cos’ now I wanna see how it ends up!
Been doing C# and Powershell at work, and they’re fine, really, but man, did I miss python, and specially flask.
Recovering from a super ludicrous work jag and working through the Brilliant trigonometry course in service to actually understanding some of the trig functions I’m using writing toy graphics programs in PICO-8.
Also - I just wanna say this is one of my favorite recurring threads on lobste.rs! You all are such an incredibly inspring bunch of people, and it’s a real pleasure to get a peek at what you’re all tinkering with. Thank you one and all for contributing!
Adding server8 to the pool.
What is this? I’m not able to google it very easily.
Sorry. Thought the hat would make it a little clearer. Adding a new server, server 8, to the OpenBSD vmm/vmd pool of servers of OpenBSD Amsterdam.
I am going to be polishing this Wikipedia article that I wrote:
https://en.wikipedia.org/wiki/The_Mexican_Runner
Specifically, I need to work on removing the accusation of being an advertisement. I’ve consulted wikilawyers and helpers on IRC to see what needs to happen, and I think I have a good idea now of what to do. It’s been a little stressful, but I like Wikipedia, so I am still going to try to make an effort to navigate their community so that this article can stay and be good.
I was thinking of writing a blog post later if I manage to get the article into an accepted state.
The community guided workflow language we use (Common Workflow Language) has no conditionals. This week I will be implementing a prototype for conditionals in this language. If any one has caveats/warnings for when a DSL moves into this territory, it would be great to hear about them! Thanks!
At work, my manager left last week, and true to form I’m getting a battlefield promotion, with everything he was responsible for landing on my plate, with no diminution of my existing duties. Sigh.
Otherwise, the weather is getting better, so the girls are spending more time outside, which is super fun. I need to do a little monkeying around with my router, having successfully gotten the godawful Bell thing out of the network.
DSP time this week. In particular, detecting combinations of tones with incommensurable frequencies in time domain.
Fresh off a weekend at PyCon US, I’ve got some ideas I’m taking back to my day job team, especially around using DVC, an open source version control system for ML stuff.
I’ve also met a number of people interested in exhibiting at Abstractions, so I’ll be contacting them as well as building out some features to our web sites ahead of the registration bump when we announce the full conference schedule in a few days.
I am totally going next year in Pittsburgh!!!! Looking forward to watching the videos.
To PyCon or Abstractions? Both? :-D
I’d love to attend both, but my employer is not known for sending people to tech conferences, so I’ll likely be paying my own way - Pycon was what I was referring to.
(I have this fantasy about attending a few tech conferences a year when I ‘retire’ and funding that with some on the side consulting :)
If travel is ~affordable, Abstractions is likely within reach. We’re one of the lowest price software conferences of its size on the east coast. 2019 is happening in August and 2020 may happen if 2019 exceeds expectations!
Turning on error-prone (https://errorprone.info/) in our java build and trying to convince people that using shellcheck is a great idea too.
I’ll be prepping for BSDCan this week. I need to install OPNsense on one more APU4c4.
Been a while since I’ve posted in one of these, and a lot has happened since the last one. So, here’s a dump.
In not-tech news:
Meanwhile, on the digital farm:
libdl
) (repo here if interested: libplug)lwan
(need to buy a domain and start hosting the reference instance so development can move faster and so that it’s actually available for people)#include
)). (repo if interested: lci)Phew. I think that’s a reasonable summary of life at the moment. Here’s hoping it gets a little less hectic soon. :)
I was wondering if you slept on compost for a while, but then I realized what “beds” meant. facepalm
Personal:
Work:
I’m working through building Antirez’s kilo text editor following instructions at https://viewsourcecode.org/snaptoken/kilo/ as part of my ongoing attempt at learning c.
I want to make some changes to it, like making the editor modal and have more Emacsy keybinds.
In general, I’m busy with re-creating a DAW GUI in Electron that was formerly written in Gtk2. Currently I’m working on the new preferences dialog: Electron based Beast Preferences Dialog
We’ve hit a dead-end with our Gtk based UI code. So now the UI components are developed with Vue instead - the development tooling for web technologies is inexpressibly better and more fun.
Really curious and interested in what kind of a dead-end you’ve hit with Gtk — would there be a chance I could ask you to elaborate some more on that?
Honestly, I have a hard time to figure where to start ;-)
So I’ll just list a few points that come to mind at random:
<input type="range" :min="min" :max="max" :step="steps()" :title="tooltip" v-model="value" onfocus="blur()"/>
span.style.setProperty ('transform', 'translateX(' + Math.round (newlevel) + 'px)');
The above is not a comprehensive list of issues, and doesn’t even touch on the complications of dealing with a project that’s adopting the GNOME philosophy of feature minimalism and ignoring user feedback. The bottom line is, no native toolkit has as broad support and is as future-proof as web technologies have become. Looking back, and projecting forward, compatibility for HTML, CSS and JS look way better than Gtk or Qt API and language support. The web APIs are also becoming much more expressive than native toolkits these days, which means an order of magnitude lesser developer involvement for creating any particular UI.
Writing a blog post about a shell I’ve been thinking about writing for a lot of time, hopefully progressing with the parser and the code generation for a sort of C reskin à la ReasonML with a nicer type system, slaying Quelaag with a butter knife in my Dark Souls replay, acquiring a couch for watching movies/coding on my laptop. @work I’m rewriting parts of an old Backbone/Marionette app in React/Typescript and trying to convince some coworkers to try out Elm.
The Node.js bindings for the DAML smart contracts platform. Still quite immature, would love feedback.
I’m working on Monokex, a protocol framework like Noise for secure key exchanges. (I’m not using Noise because it’s too heavy for my taste. We can do better.)
This week I simplified the design of the state machine (quick peek in the last commits of this repo). I effectively merged the
mixHash()
andmixKey()
functions from Noise, and require much fewer hash calls (they use HKDF, I just use Blake2b).I hope to release a first version of Monokex before summer, and integrate part of it into Monocypher, my crypto library. When I’m done, the NaCl family of crypto libraries will at last have a decent secure channel story. (The
crypto_box()
API is not secure enough: naive uses have no forward secrecy, and leave you open to key compromise impersonation.)My baseball throw. When I was 10–12, I played baseball and could throw the ball anywhere I damn pleased; I had power and I had accuracy. Fast forward 25 years and I don’t have that anymore: the last time I played catch with my Dad, I got embarrassed at how inaccurate my throws were.
When it’s not raining outside, I go to the park and throw balls for 20-30 minutes. Slowly making progress!
Well I didn’t manage to get the v2.5 of https://bitbucket.org/koalephant/shell-script-library out the door last week (https://lobste.rs/s/njn3ib/what_are_you_working_on_this_week#c_mxjphq) so I’m still writing more unit tests (yes, unit tests for a library written in SHELL).
I also need to do a bunch of failure-mode testing for
$CLIENT
’s app, because it uses YAML and the people who wrote the spec for YAML are clearly masochists. Same client has asked to prioritise what I work on, so the impending removal of said YAML may be discussed this week too!Hopefully installing a bunch more sprinklers in the garden. It’s ~38ºC (100ºF) most days at the moment.
last week https://lobste.rs/s/njn3ib/what_are_you_working_on_this_week#c_dqhgxd
I think I’m spending too much time bike-shedding small details (in forms especially) and should try to just have something ready for the public to show, so that’s my goal this week, trying to have the full flow working for new users even if it’s mostly aimed at other programmers first. (still quite happy about the idea to have liquid template in some user inputs to allow for dynamic inputs without having to handle every possibility myself).
At work I’m still stuck on some manual testing. We’re planning to automate some of this in the near future, so that’s a plus, at least.
Outside of work a friend and I are planning a through ride of the Colorado Trail in July. I’ve been going through my gear and making sure my bike’s ready. I’m swapping out a rigid fork for a suspension fork for this trip, so I ordered that on Saturday and should get it this week.
For coding projects, I’ve been updating my Blend2D Common Lisp bindings to keep up with some recent API changes to the library.
I’m moving more infrastructure into Docker. I’ve setup a simple Docker Swarm, build from two VM nodes on the same host, the current main holdup is making docker containers for some apps where I made modifications for personal use (so I also setup a registry)
Also, I’m waiting on parts to finish my DIY Server Rack Closet (hopefully), then I can make my NAS more tidy and reduce the noise floor a bit.
Other than that, I’m just being lazy outside work, my commute has gotten a bit too long to be productive during the week.
I’ve been thinking on using some Docker orchestration (Docker Swarm or something like https://k3s.io/) for personal projects, but building all the infrastructure including mandatory orchestrator-required configuration in each project, seems a lot of work and complext to maintain… But in the other hand, having everything completely reproducible so I can migrate or recreate the server whenever I want might be really helpful.
How’s your configuration and/or processes for working on your personal projects and deploying them to Swarm?
The biggest hurdle to Swarm is IMO the storage problem. I solved it by mounting my NFS storage server on each node in the same location, so a simple bind mount works on all nodes (though I do have to remember not to schedule more than 1 of some services).
I largely manage the swarm via Portainer, which has a pretty good interface for dealing with Stacks or individual Services. The node itself is entirely managed by ansible and based on a very vanilla Alpine 3.9 install (basically, it’s Alpine 3.9 + build-deps for docker-compose + python2 + docker)
I did consider k3s, but it feels to much aimed at IoT rather than a simple distributed system. K8s is very complex compared to swarm, which was largely 3-4 lines in the terminal to setup, initially and for each node.
I setup Drone CI on top of it and plan to outsource some parts of ansible into the CI system, likely managing all non-Docker containers and VMs.
There is still a lot on my ToDo list until I’ve got everything setup though.
Does it work nicely with a NFS mount? For what kind of storage?
I know Portainer, it’s nice, but there were some perks when I tried it, should give a second shot.
k3s is aimed to IoT, but it makes sense to run it on a cheap VPS in terms of memory usage, but maybe not in complexity.
In my case, I work daily with Kubernetes, so, it’s all shared knowledge… I’m still considering it, once an issue with cert-manager gets properly solved.
Once the full setup is done, a post or something like that would be cool :)
It works pretty much as I expected; pretty well. However I would warn against NFSv3, NFSv4 is an absolute must if you like your data.
My setup isn’t exactly a small or cheap VPS, it’s a larger dedicated server that I got from the Hetzner auction service for relatively cheap. I feel like Docker Swarm is a good choice for my use cases (I feel k8s is complicated and I don’t like software that takes me more than 1 day to explore all the configuration options I could possibly care about)
Yep, k8s is pretty complicated, but it’s powerful. Anyway, it’s useful when you have a bunch of nodes and different applications running in it, not so much for a single node/two node setup.
Thanks!
Can I ask a stupid question about this? What kinds of things are you storing? I’ve managed to work in big infrastructure thus far staying relatively ignorant about containers. In my day job we use regular EC2 instances for just about everything, and from a distance it feels like there’s an awful lot of extra complexity this model brings to the picture.
The largest part of the storage server is my nextcloud instance (about 400GB). Everything after that is largely other data the containers have massed up, ie, sqlite databases, log files, config files, cached data, etc. My mastodon instance is still sitting on it’s own disk and database, which would make it the second largest things once it’s moved over (60GB).
Docker isn’t terribly complicated, neither is Swarm. Atleast when compared to K8s and friends. Portainer makes it a lot easier too.
I don’t use EC2, I have a large dedicated server (128GB, 6c/12t), so splitting up resources properly is important compared to letting AWS do it (plus it’s a neat learning experience to do it manually)
Oh I totally agree! And being able to actually stand up servers and the like from whole cloth is a dying art these days :)
Do you find that your masto instance consumes more than its fair share of resource? When i ran one I found the stack to be incredibly heavyweight.
It’s certainly no lightweight but the performance has been fairly decent (atm it’s handling about 6r/s on 2 CPU cores and 4GB RAM without any issues)
For the past few weeks now I’ve been looking for a code review tool that could be used together with gitolite, and was surprised to find that all of the available options are non-ideal or unusable for me in one way or another. I’m reluctantly turning towards making my own. My requirements are somewhat minimal, but I’d also like to tackle some of the design flaws I think github’s PR review system suffers from, by e.g. storing all versions of a PR, making it easy to compare PR versions, being able to save review progress, etc.
My current implementation is a flask app with a webhook endpoint that takes a repository name; when called, the named repository is fetched, and branches with names matching a given regex are treated as WIP branches. There are some views for diff rendering as well. It’s all refreshingly minimal.
If I manage to get code review working nicely, I’d also like to have test, lint, and code coverage results displayed in-line, per-commit. But that’s a ways off yet.
At work:
At home:
Finishing off an initial build of a note taking curator/renderer (needs way more polish) and having a 2nd attempt at a tls1.3 client written in rust for
no_std
(embedded) targetsYour “design doc” readme is quite impressive, detailed yet still readable and interesting (at least to me). Is it customary for you to start projects with such a writeup & analysis? And/or do you keep coming back to it regularly to keep it up-to-date throughout the whole development time of the project, or is it more of a one-off, or a loose scratchpad for ideas?
Thanks! I’m planning on turning it into a blog post in the coming week.
I usually write one up at the start of projects that I expect to be more than just hacking on something over a day or two. I find it helps to keep me on track with what I set out to do, and reduces the chance I’ll jump to another new project. I try to update it as I go but it’s usually not the first thing on the list so these docs can sometimes get quite out of date but at that point I still find them useful to jog my memory of what I was thinking.
I
wrotehacked a static site generator cmd line tool together with Python over the weekend. It parses front matter and markdown. It has been fun and I learned a bunch of concepts I had not yet known in regards to Python. I hope to further expand on it this week.This work week I have to deal with hiring. It’s been a stressful few weeks at the company.
This week I’m mostly working on the 44CON Training and 44CONnect sessions in June. I’m also looking at setting up an Adwords campaign. It’s been a while since I’ve done adwords.
I picked up and installed my Amiga 4000 just this weekend, so on a personal note task number 1 this week is reverse engineering and modifying the Vista Pro 3 binary to work with my Picasso II RTG graphics card. Pics are up here, with more being added as I go.
Just finished the last homework assignment on Haskell cis194 course and started on a first small personal project in this language. It’s been a long time since doing something as basic felt so hard, but it’s starting to feel that it’s all really worth it.