In-reply-to » Hi, I am playing with making an event sourcing database. Its super alpha but I thought I would share since others are talking about databases and such.

I have updated my eventDB to have subscriptions! It now has websockets like msgbus. I have also added a in memory store that can be used along side the disk backed wal.

⤋ Read More
In-reply-to » I think I don't understand how threads work on here! I keep replying to threads involving multiple people but there are not in the @ list.

@abucci@anthony.buc.ci It’s been a long time ago, that I looked at the yarnd code. Maybe you need to follow those people to mention them automatically? No idea. I just remember that it was changed. In the beginning there were quite a lot of mentions filled in when replying and then people decided against that behavior for some reason I cannot recall anymore.

⤋ Read More

I think I don’t understand how threads work on here! I keep replying to threads involving multiple people but there are not in the @ list.

⤋ Read More
In-reply-to » Hahaha, great talk about the Worst Programming Language Ever! :-D

@movq@www.uninformativ.de @abucci@anthony.buc.ci Yes, formatting with a special date is incredibly silly. I couldn’t believe it myself either the first time I ran across it. It still drives me nuts every single fucking time I have to deal with it. Not sure why the Go folks still don’t consider it a failed experiment. Luckily, I can often just use the time.RFC3339 or time.RFC3339Nano constants and don’t worry about it.

Maybe the positive effect is that you’re forced to always go to the docs to look everything up when writing the special time pattern, because there’s no chance of remembering anything at all (maybe except the year 2006). With the letter system you might think you know what you do and then skip that check in the docs and finally fail because it was the other way around again. If the Go maintainers wanted to prevent that, then they actually succeeded.

It really depends on the ecosystem you’re in. The lower date and upper time rule e.g. doesn’t work for Java: yyyy-MM-dd'T'HH:mm:ssSSSXXX (not sure on the exact number of Xs though).

⤋ Read More
In-reply-to » I did a take home software engineering test for a company recently, unfortunately I was really sick (have finally recovered) at the time 😢 I was also at the same time interviewing for an SRE position (as well as Software Engineering).

I forgot one thing. Testing for errors is also an important part that is often overlooked in my experience. Another rule we talked about two hours ago is to test error messages preferably exactly. Then there’s a dim chance of spotting a final garbage error message. When seen in total, one might tell if it is understandable and all important context information are present. Lots of error messages I’ve come across are completely useless, I’ve no idea what’s going on or what I have done incorrectly. A frightening lot of times messages don’t even make any sense at all. Not a single bit. Just random words put together. The really bad ones you don’t understand even if you look at the code and exactly know what the situation is but still cannot decipher the message with all that knowledge on top. It happens more often that I would think.

No doubt, writing good error messages is an art in itself and often takes a minute or two (or even more) to come up with something short and still precise. But in the end it will always pay off to provide some quality message. Same with logging in general, of course. But errors returned to somebody else are more important than internal logs.

In a previous commercial software project the customer wanted to have a complete catalog of all info log messages and above. An additional description with more context had to be provided what that log ID and message meant. I think with warning level and above both a solution and verification was required on how to fix it and then validate that it actually worked. Error and fatal included even more stuff I can’t remember anymore.

For us developers that was incredibly annoying, but when we then finally also had to operate that software, this was absolutely awesome to have! Man, did I suddenly understand what all this effort was for. It immediately paid off. There was one guy inhouse just analyzing logs from our different systems all day long and trying to categorize and correlate things. Even with the log message catalog he often had some detail questions to use developers. Can’t imagine what would have happend without that catalog.

That experience was truely an eye-opener for me. I can also see it with my current work mates. Only if you had been forced to analyze yourself with nothing else but the logs what was going on or went wrong, you will appreciate and also write good messages yourself. If you haven’t been in that situation before, there’s basically no way you’ll be in a position to write decent logs. And even then you realize that important context is missing when you have to analyze something. :-)

I’m on the fence with testing log entries. In a previous project we quite often did. But there were also hard requirements to produce certain logs, so then it made sense. Usually I don’t unless there are some weird circumstances. Can’t think of any such situation off the top of my head right now, though.

⤋ Read More
In-reply-to » Hahaha, great talk about the Worst Programming Language Ever! :-D

@abucci@anthony.buc.ci Yeah, I get your point. 🤔 It has to be a magical date, though, to avoid ambiguities. “12:03” could mean “3rd of December” for some weird reason, or “12th of March”.

What I keep confusing is m vs. M, and s vs. S. Like, is that “month” or “minute”, “second” or “timestamp”? If it was YYYY-MM-DD hh:mm:ss and T for a timestamp, it would be easier. But no, it’s Y-m-d H:M:S (according to strftime()), a mixture of upper case and lower case. (The easiest way to remember it is probably: “The time H:M:S is upper case, date y-m-d is lower case – and then they noticed Y2K, so Y got added.”)

⤋ Read More
In-reply-to » I did a take home software engineering test for a company recently, unfortunately I was really sick (have finally recovered) at the time 😢 I was also at the same time interviewing for an SRE position (as well as Software Engineering).

@prologic@twtxt.net Yup, looks good, I also agree with her.

Just a few weeks back I had basically the same idea with inventing a more generic mock implementation for our storage layer at work. Previously, we had tons of new test storage types each implementing another hardcoded behavior based on the exact input. For a start that works well and is incredibly easy, but over time it quickly becomes unmaintainable and also reading the tests is extremely hard. Why is that weird value used as an argument over here? Quite some time later one realizes: Oh, right, it will then trigger that and that.

So my approach basically boils down to the exact same thing Jessica does. To be able to set a mock function in the mocked object that will then do whatever is needed. Setting up more involved tests is now concise and readable. It’s still not perfect, but a large improvement even so. My implementation goes a bit further than Jessica’s and falls back to the real functionality, if not overridden explicitly. This has the advantage to just throw together a bunch of tests without mocking everything, since there are often a lot of steps needed to build the actual scenario.

In Kraftwerk v2 I extended the mock storage to be able to be initialized even more easily with this automatic init(). At work where this mock.Storage type inherits (and not just contains a) memory.Storage forces us to also explicitly create a memory storage for each and every mock.Storage{Storage: memory.NewStorage(…), …}. One day, if I have some time, I’ll refactor the day-job code and apply this simplification, too. Ideally, Go would allow me to write some constructor thingy where I could set up and propagate initial data to the backing memory implementation. Then there’s no chance of forgetting a call to the s.init() in a new function. But that’s the best I’ve come up with so far. I just want to make it as easy as possible to write tests.

So that was very cool for me to see her writing it down as well. It seems my idea the other day was not completely silly. :-) Haven’t seen it anywhere else up until now.

This test subject fits perfectly. Just before quitting time two work mates and I discussed about tests. And one rule we made up now is to prefer table tests, when possible. This helps writing and maintaining better tests. I remember back in the Java days when there were different parameterized test frameworks, as they called it. They worked similarly, but in contrast to Go’s flexibility of the builtin table tests, it doesn’t really compare. Arguably, it’s still heaps of code in Go, but creating parameterized tests in Java was always much more hassle in my opinion. Oh, I need this special runner now, which is the correct one? What was the annotation called again? Oh hang on, now these other tests won’t work anymore with this new test runner, I have to move stuff to new test classes. That’s why I only rarely used them. With Go, it’s a real first-class citizen and not an afterthought and that positively shows. (Not sure if parameterized tests improved after Java 8.)

One thing that the article doesn’t mention, or I already forgot after writing this wall of text. ;-) Thinking about edge cases. That’s super important and often they’re missed in my experience. Here TDD might be a good approach to the problem. Come up with possible cornor cases up front, write some tests and then implement the logic. At least for bug fixes this is a great way. There are limitations of course, if you don’t know in advance how your going to design the API, TDD won’t work in practice. We just had exactly this sitation this week at work. Even with only one fairly simple new function in the end. We threw away four (!) designs and did it quite differently for the final result. If we had strictly followed TDD here, we would have rewritten all our tests a couple of times. And that would have been super annoying and thus demotivating (well, we had to completely rework them once). Granted, that doesn’t happen thiiiis often, but it still occurs every now and then.

One last final thing: I very much enjoy looking at code coverage reports and see a lot of green there. This motivates me writing more tests and thinking of ways I could test that last little thing here as well. And if that turns out to be impossible with reasonable effort, you know that you probably need to refactor things.

⤋ Read More
In-reply-to » This is a weird request, but does anyone have something for me to encode with FFmpeg? The more complicated the project, the better. I am trying to improve my skills and I learn best with real-world use.

@mckinley@twtxt.net Hm, I had a lot of fun with ffmpeg while doing the video of the workflow compilation:

https://nixers.net/Thread-Workflow-Compilation-June-Events-2021

Rescaling the individual videos, fading, adding the background (for smaller videos), adding labels, … Granted, there was quite a bit of ImageMagick, too.

⤋ Read More
In-reply-to » This is a weird request, but does anyone have something for me to encode with FFmpeg? The more complicated the project, the better. I am trying to improve my skills and I learn best with real-world use.

@mckinley@twtxt.net Hmmm not sure how I can help then? Whay about improving yarnd’s video support and transcoding? 🤔

⤋ Read More

This is a weird request, but does anyone have something for me to encode with FFmpeg? The more complicated the project, the better. I am trying to improve my skills and I learn best with real-world use.

⤋ Read More
In-reply-to » Running prologic/static on it will work nicely and consume very little in the way of resources 😅 I use this for all my static site hosting needs 😂

@ocdtrekkie@twtxt.net Yeah it’s actually something I want to build something around too. Something a bit like what Github Pages does. I self-host Gitea but it has no support for this. It’s relatively easy to do yourself, but it would be nice if there was an “app” that just did this, and ways to shove shit online easily.

⤋ Read More
In-reply-to » I did a take home software engineering test for a company recently, unfortunately I was really sick (have finally recovered) at the time 😢 I was also at the same time interviewing for an SRE position (as well as Software Engineering).

@lyse@lyse.isobeef.org I found this article last night as I was trying to get to sleep (still not feeling 100%, sinuses still playing up 😢):

Best Practices for Testing in Go - FOSSA

Some good tips here in by a Jessica Black. I think I mostly agree with.

What do you think? 🤔 Got anything else to share along these lines? 🙏

⤋ Read More
In-reply-to » The US put tornadocash on sanction list. Deleted github accounts and source. Since North Korea used it to launder stolen crypto. And people are surprised that it happened? Github is and never have been a safe place to store code. Tor/i2p is much more safer places to host code. But I understand why people use github, I do so as well for public project, but I also selfhost my other things

@abucci@anthony.buc.ci Thanks! 👌 Merged 😆

⤋ Read More
In-reply-to » So, @prologic, I feel like I should convince you that your self-hosting solution you build should use containerized documents (Sandstorm calls them "grains" for kind of good reasons, but documents is usually applicable). This would have twofold benefits: 1. Your platform would be more secure/better. 2. Apps you build for it would probably be reasonably straightforward to also run on Sandstorm.

@ocdtrekkie@twtxt.net Fair enough 👌 I still have to think about this some more 👌

⤋ Read More
In-reply-to » I did a take home software engineering test for a company recently, unfortunately I was really sick (have finally recovered) at the time 😢 I was also at the same time interviewing for an SRE position (as well as Software Engineering).

@lyse@lyse.isobeef.org Thanks bud 🤗

⤋ Read More

That’s it, I give in. Officially a Lorna Shore fan now, like all the cool kids. // Lorna Shore - Sun Eater // https://www.youtube.com/watch?v=mK8mw2X-4ug #NowPlaying

You gotta admire the quality of today’s audio productions. Everything is crystal clear. That in itself is a pleasure to listen to. 👌 Audio engineering really has come a long way. 😍

(If you like this kind of thing, look up the official video of “Into The Earth”. It’s a short horror film. The imagery might be a bit disturbing, depending on what you’re used to, so I won’t link it.)

⤋ Read More
In-reply-to » I did a take home software engineering test for a company recently, unfortunately I was really sick (have finally recovered) at the time 😢 I was also at the same time interviewing for an SRE position (as well as Software Engineering).

@prologic@twtxt.net It’s been a while, but your code I’ve seen so far didn’t look too bad to me. I remember we had discussions about missing tests, but other than that, I can’t recall any “oh dear, WTF” momements. Obviously, there’s always something, that can be improved, nobody writes perfect code. Only close to perfect. :-) Being sick and having time pressure doesn’t help writing good code either. So, don’t take the harsh feedback too seriously. Let a week pass and have a look again, your perspective might have shifted and you possibly understand what they wanted to tell you, assuming they wanted to give you honest feedback. Buck up! :-)

⤋ Read More
In-reply-to » The vast majority of visits to my web server are: - Me - People or bots looking for vulnerabilities - Web crawlers

That’s exactly what I expected from both of you, @abucci@anthony.buc.ci and @mckinley@twtxt.net. :-) Ah, right, didn’t think of cbl and friends. When I quickly counted by HTTP status code, I thought it would be nice to interactively drill down further. But I couldn’t answer my question of what I actually want to see or look out for, so I stopped.

⤋ Read More
In-reply-to » The US put tornadocash on sanction list. Deleted github accounts and source. Since North Korea used it to launder stolen crypto. And people are surprised that it happened? Github is and never have been a safe place to store code. Tor/i2p is much more safer places to host code. But I understand why people use github, I do so as well for public project, but I also selfhost my other things

@abucci@anthony.buc.ci Can you chuck that up on our Wiki or create a PR and add it somewhere to like I dunno contrib or deployment? 🙏

⤋ Read More
In-reply-to » The US put tornadocash on sanction list. Deleted github accounts and source. Since North Korea used it to launder stolen crypto. And people are surprised that it happened? Github is and never have been a safe place to store code. Tor/i2p is much more safer places to host code. But I understand why people use github, I do so as well for public project, but I also selfhost my other things

@stigatle@twtxt.net Yeah I self host 👌

⤋ Read More
In-reply-to » Kids are in bed, dog is sleeping, Marlyn is watching Tv, and I'm on the computer trying to figure out what to do for the rest of the night. Last week of vacation now, so I get more and more interrested in doing things on the computer. Played around a bit with my Risc-v SBC today (Mangopi), it runs debian, got everything updated and all that, thinking about setting up a webserver on it. It has 512mb ram, so it should be fine to host some static website on it.

@stigatle@twtxt.net Cool! 👌

⤋ Read More

The US put tornadocash on sanction list. Deleted github accounts and source. Since North Korea used it to launder stolen crypto. And people are surprised that it happened? Github is and never have been a safe place to store code. Tor/i2p is much more safer places to host code. But I understand why people use github, I do so as well for public project, but I also selfhost my other things

⤋ Read More
In-reply-to » RP4B based dual-arm robot offers 13 DoF The myBuddy by Elephant Robotics, is a dual-arm platform built around a Raspberry Pi 4B. This platform is enabled with thirteen Degrees of Freedom (DoF) and a maximum payload of 250g for each arm. The platform also supports VR control and integrates a 7” touchscreen display. Following the introduction of the mechArmPi 270, the myBuddy […] ⌘ Read more

@linux_gizmos@feeds.twtxt.net This is really cool! 👌

⤋ Read More
In-reply-to » Kids are in bed, dog is sleeping, Marlyn is watching Tv, and I'm on the computer trying to figure out what to do for the rest of the night. Last week of vacation now, so I get more and more interrested in doing things on the computer. Played around a bit with my Risc-v SBC today (Mangopi), it runs debian, got everything updated and all that, thinking about setting up a webserver on it. It has 512mb ram, so it should be fine to host some static website on it.

Running prologic/static on it will work nicely and consume very little in the way of resources 😅 I use this for all my static site hosting needs 😂

⤋ Read More
In-reply-to » Kids are in bed, dog is sleeping, Marlyn is watching Tv, and I'm on the computer trying to figure out what to do for the rest of the night. Last week of vacation now, so I get more and more interrested in doing things on the computer. Played around a bit with my Risc-v SBC today (Mangopi), it runs debian, got everything updated and all that, thinking about setting up a webserver on it. It has 512mb ram, so it should be fine to host some static website on it.

@stigatle@twtxt.net That’s cool! 👌 Can you link is to the particular board you purchased l?

Got a pic of it to share? 🤔

⤋ Read More
In-reply-to » So, @prologic, I feel like I should convince you that your self-hosting solution you build should use containerized documents (Sandstorm calls them "grains" for kind of good reasons, but documents is usually applicable). This would have twofold benefits: 1. Your platform would be more secure/better. 2. Apps you build for it would probably be reasonably straightforward to also run on Sandstorm.

Hmmm interesting model I can see the benefits here for sure for a certain set of use-cases.

⤋ Read More
In-reply-to » I did a take home software engineering test for a company recently, unfortunately I was really sick (have finally recovered) at the time 😢 I was also at the same time interviewing for an SRE position (as well as Software Engineering).

@mckinley@twtxt.net Yeah thanks man I appreciate it! 🤗 But right now I feel like my code sucks and I’ve been beaten 😢

⤋ Read More
In-reply-to » I did a take home software engineering test for a company recently, unfortunately I was really sick (have finally recovered) at the time 😢 I was also at the same time interviewing for an SRE position (as well as Software Engineering).

I’m also worried about the “lack of unit tests” feedback too, because I am reminded of TDD When did it all go wrong – Where you see so many engineers do “unit tests” wrong 🤦‍♂️ – If you don’t have time to watch this (rather long) video, TL;DR:

Unit tests test the behaviour of the system, or the API boundaries. Unit tests should not test any implementation details. They should let you refactor the implementation.

This was the original intent behind Unit Tests and AFAIK still is.

⤋ Read More

I did a take home software engineering test for a company recently, unfortunately I was really sick (have finally recovered) at the time 😢 I was also at the same time interviewing for an SRE position (as well as Software Engineering).

Got the results of my take-home today and whilst there was some good feedback, man the criticisms of my work were harsh. I’m strictly not allowed to share the work I did for this take-home test, and I really can only agree with the “no unit tests” piece of the feedback, I could have done better there, but I was time pressured, sick and ran out of steam. I was using a lot of libraires to do the work so in the end found it difficult to actually think about a proper set of “Unit Tests”. I did write one (in shell) but I guess it wasn’t seen?

The other points were on my report and future work. Not detailed enough I guess? Hmmm 🤔

Am I really this bad? Does my code suck? 🤔 Have I completely lost touch with software engineering? 🤦‍♂️

⤋ Read More

Problems with my DNS were preventing me to do stuff on my homelab. So I switched DynDNS from inwx.com to desec.io. Much, much better, faster and easier to set up. Awesome! Also, the CNAME entries work much faster than with INWX. But maybe the things with INWX just need to spread a bit longer.

⤋ Read More
In-reply-to » Alright, here we go, it’s been a year now. I have a camera sitting in one of the windows, it takes a shot every day. Here’s a timelapse video:

@movq@www.uninformativ.de I would have never guessed it. Felt different than last time. Looking forward to the next version in half a year where I’m going to be surprised to have already seen two thirds. :-)

⤋ Read More

Kids are in bed, dog is sleeping, Marlyn is watching Tv, and I’m on the computer trying to figure out what to do for the rest of the night. Last week of vacation now, so I get more and more interrested in doing things on the computer. Played around a bit with my Risc-v SBC today (Mangopi), it runs debian, got everything updated and all that, thinking about setting up a webserver on it. It has 512mb ram, so it should be fine to host some static website on it.

⤋ Read More