1. 27

It’s Friday again; as always feel free to post your plans or projects for the weekend.

  1. 18

    Sleep and potentially get shitfaced in a tapas pubcrawl.

    1. 11

      460 unread emails, taxes, and the paperwork to start an Amateur Radio club at Cardiff University.

      1. 2

        Nice. Do you have the manpower to give license exams?

        1. 2

          I think so, but still figuring out exactly the order of operations needed. Getting a club call sign, becoming RSGB affiliated, and becoming a University society all have very different requirements. But all three are in motion now. The local clubs and RSGB regional representative are all very supportive.

          1. 1

            Awesome. Bit of a late reply, but I think a big part of getting people initially interested in ham radio is advertising it like a license to hack on RF stuff. And showing them Contact (1997), which has the best treatment of amateur radio in any movie. :-)

        2. 2

          9 unread left, some of the other two done. I think I need to change some behaviors and situations to not have so many weekends spent on life administration. I’d be surprised if this isn’t a fairly common thought.

        3. 8

          Doing some interview practice for a phone screen I have coming up in the next couple weeks. Will be my first technical interview! :)

          1. 2

            I super extra recommend pramp and just found a nice list of questions that could be used for a warm up.

            Remember, tech interviews are a total crap shoot.

            1. 2

              Hey, thanks for this advice! I’ve been using pramp this weekend and so far it’s been pretty decent. I’ve had a 2/3 success rate, and find that talking in front of another person really helps me to practice being succinct and understandable.

              Here’s to hoping that my practice carries into my interview!

          2. 8

            I might actually get around to setting up a Matrix Voice Pi-hat that I’ve had for a few months now. I’d like to have a voice assistant that is more customizable than Google Home!

            I’ve had a Blue Yeti microphone that needs its USB port replaced. I got some USB ports in from China a couple of weeks ago and might try my hand at desoldering and resoldering for the first time in a long time.

            I’m probably going to harvest the rest of my garden before it gets frosty next week. I’ve also got a gaming rig that was hit by a Windows update that broke its USB ports. I got some PS/2 equipment and just need to allow the time to fire it all up.

            1. 1

              If I understand it correctly, Matrix Voice is essentially the hardware for an Amazon Echo like device. You still depend on the Amazon cloud for the voice recognition? Could you use some Open Source non-cloud software, e.g. snips.ai?

              1. 2

                Yes. There are some articles on hackster for setting up Matrix Voice or Matrix creator with Amazon Alexa, Google assistant, or Snips.AI. I also found that the Mycroft project has something called Picroft that maybe adaptable.

                I followed the Google Assistant tutorial last night. it went pretty smoothly and works fairly well, although I realize that I don’t have an unpowered speaker in my possession right now!

                Today, I’m going to set up something that can be chromecasting receiver. where I plan on putting this device, that is the Holy Grail thing that I really want because I have this couple hundred dollars worth of Raspberry Pi, niche microphone board, accessories, and a 5.1 audio system from 2005 connected to a Bluetooth receiver that I almost never use… all to avoid paying $35 for a Chromecast audio or $50 for a Google home Mini. I’m basically building my own Google home Max but with a speaker system that can shake my house.

                Edit 10/20 morning: TIL after about 2 hours of research that Google doesn’t want people making their own Chromecasts basically at all. I might be able to use it as an Airplay server, though, and that might be good enough for my usage.

                Edit 10/20 evening: I got Shairport-sync working but it broke my Google Assistant setup. Some kernel header weirdness.

            2. 7

              I’m planning to wipe Windows (along with my Linux VM dev setup) on my Thinkpad P71 and then install NixOS as the only operating system.

              1. 3

                Sounds fun! Have you used Linux as a full desktop OS before? Curious to know why your choice has fallen on NixOS. (I, myself, have been thinking of switching from Arch to NixOS)

                1. 4

                  I use it to develop web and mobile apps using Haskell. i3 is my preferred window manager (I don’t use desktop managers). Here’s a screenshot.

                  Curious to know why your choice has fallen on NixOS

                  I can declaratively configure everything (packages, services, system configuration, kernel version, display drivers, etc.) and use that reproduce the exact instance anytime I want. Here’s the configuration I use for my Thinkpad P71.

              2. 6

                I want to work on a new audio-related Android app (it’s been a while since my last), primarily so I can play with https://github.com/google/oboe

                I feel a bit claustrophobic stuck inside Android Studio (although I appreciate that it’s gotten better over the years at installing NDKs, SDKs, making it easy to test stuff on my phone, etc.).

                This is a bit vague but is there some acceptable command-line/Makefile workflows for modern Android development? Or should I bite the bullet and accept Android Studio?

                I do mostly operations day to day so I pretty much only use vim + terminal.

                1. 6

                  Going to see the Hamilton broadway musical with my wife, and also chasing down a fix for https://gitlab.gnome.org/GNOME/gdm/issues/432 provided I can cram enough understanding of Gtk and Gdm into my feeble brain :)

                  1. 1

                    Going to see the Hamilton broadway musical with my wife

                    Nice! Have you seen / heard it yet, or will this be a first?

                    1. 2

                      First. We’re super psyched :) Been purposefully avoiding the soundtrack etc :)

                      1. 2

                        It was amazing. Kind of surprised me in that a story for which I KNEW the ending / inevitable outcome could move me that much. Alternately funny, witty, culturally relevant and SUPER poignant.

                        Even if you think you don’t like musicals you should consider going to see Hamilton.

                    2. 6

                      Been thinking about learning Clojure and ClojureScript. As I am tired of all the abstractions in JS/TS and web land in general. I want something simpler and with better tooling like Clojure REPL.

                      Will see how it goes. I know lobsters has quite a few people who are into clojure so it’s gotta worth trying it out.

                      1. 3

                        Also checkout FRP, particularly Reflex-DOM or Miso (or Elm if you prefer not to step into the awesome world of Haskell).

                        1. 2

                          I started reading Clojure for the Brave which was actually an excellent resource for learning Clojure.

                        2. 6

                          I’ll be working on HardenedBSD. Now that FreeBSD has created their stable/12 branch, we need to follow suit: https://github.com/HardenedBSD/hardenedBSD/issues/353

                          1. 5

                            After 3.5 years I’ve finished my prototype FastCGI/SCGI/WebSocket JSON-RPC 2.0 daemon in C, which now serves no purpose whatsoever. But I can tick that one off.

                            Over the last day I’ve been fixing the behaviour of scrollbars in nncmpp, which was very irritating because I had to write this myself: https://is.gd/xLc5zx

                            Is there a proper software to inspect a general function from N to M dimensions?

                            1. 4

                              I just finished my first week at a new job for which we moved acros the country. Tomorrow is full of exploratory dog walks, followed by some OpenBSD hacking. I’m expecting some new furniture on Sunday so will spent most of the day putting it all together.

                              This is also my first real free weekend after 4 years working at a startup… I’m not sure what to do with so much free time O_O

                              1. 4

                                Thinking about language design!

                                Imagine some barebone language with a contains method that should return true if value is contained in some cell:

                                fun contains[T](cell: Cell[T], value: T)
                                

                                The difficulty is that the method needs to returns correct answers in all cases, even in in a situation like this:

                                contains(Cell(NaN), NaN)
                                

                                The core questions are:

                                • how would the implementation look like?
                                • what would be necessary language-wise to allow such an implementation?

                                Previously I made the claim that only two of the following points could be met:

                                1. only one equality operation
                                2. generic types
                                3. correct floating point support

                                E. g. if you satisfy 1. and 2. then you get:

                                fun contains[T](cell: Cell[T], value: T) =
                                  cell.value == value // does not handle NaNs correctly
                                

                                If you satisfy 1. and 3., i. e. (no generics) this means you have to implement contains for every individual type:

                                fun containsFloat(cell: FloatCell, value: Float) =
                                  cell.value == value || (cell.value.isNaN && value.isNaN)
                                ... // more implementations for each and every type
                                

                                If you satisfy 2. and 3. you need to introduce another equality operation, “identity”: === (which violates 1.)

                                fun contains[T](cell: Cell[T], value: T) =
                                  cell.value === value || cell.value == value
                                

                                Now I realized a few minutes ago this is not entirely correct, because the NaN case can be solved like this:

                                fun contains[T](cell: Cell[T], value: T) =
                                  cell.value == value || (cell.value != cell.value && value != value)
                                

                                It seems that 0.0 vs. -0.0 cannot be handled similarly though.

                                Opinions?

                                1. 3

                                  I could argue that your first case does handle NaNs correctly. Maybe you should reconsider what the “correct” answer should be.

                                  Do you know that NaNs can have a payload? What is correct for NaNs with different payloads?

                                  1. 1

                                    Maybe you should reconsider what the “correct” answer should be.

                                    I sorted that out a while ago. Returning false on things like contains or not finding the element to remove on remove is definitely wrong.

                                    It means that you not only can’t reliably use floating point values in collections, but also every other composite type containing a float.

                                    Do you know that NaNs can have a payload? What is correct for NaNs with different payloads?

                                    Yes. Different NaNs are considered to be different.

                                    1. 1

                                      This is an interesting problem so I googled around a little. This SO answer is quite insightful, especially the last paragraph:

                                      To be blunt: the result of NaN == NaN isn’t going to change now. Better to learn to live with it than to complain on the internet. If you want to argue that an order relation suitable for containers should also exist, I would recommend advocating that your favorite programming language implement the totalOrder predicate standardized in IEEE-754 (2008). The fact that it hasn’t already speaks to the validity of Kahan’s concern that motivated the current state of affairs.

                                      Wikipedia says on totalOrder

                                      The normal comparison operations however treat NaNs as unordered and compare −0 and +0 as equal. The totalOrder predicate will order these cases, and it also distinguishes between different representations of NaNs and between the same decimal floating point number encoded in different ways.

                                      IEEE-754 2008 says things like

                                      If x and y are both NaNs, then […] negative sign orders below positive sign […and…] signaling orders below quiet for +NaN, reverse for −NaN.

                                      This does not really provide you an elegant way to implement “contains”, but I learned that there actually is a total order for floating point specified but “<” does not provide it.

                                      1. 1

                                        I’d consider

                                        this === that || this == that
                                        

                                        quite elegant.

                                        === means identity (whose implementation is built in and cannot be changed), and == means equality (whose implementation can be overridden by users).

                                        Both operations can exist on every type without causing too much pain.

                                2. 4

                                  Finally finished putting together a 16-node Slackware-based GPU+CPU compute cluster this afternoon. Final problems were a subnet-related Wake-on-Lan issue and a shutdown script that was unmounting the NFS-based root filesystem too early, preventing a system halt. At some point I’ll put together a detailed writeup on the hardware and software. Tomorrow its Jeep work in the morning and Spartans-Wolverines football at noon.

                                  1. 2

                                    Id be interested in that writeup.

                                  2. 4

                                    Attending my best friend’s wedding and hopefully get a bit of rest and sleep.

                                    1. 4

                                      I’ll be preparing slides for a talk I signed up for at a Python Meetup on Beancount.

                                      1. 4

                                        Rewriting my toy x86 assembler from 2014

                                        x86 assembly is not for the faint of heart, and machine encoding has plenty of its quirks and muddy details. Also, Haskell does not seem to be a perfect tool for this: absence of refinement types and subtyping, tree-ish ADTs often feel out of place and I’d rather use some kind of “table typing”, stateful computation makes much more sense here (I need to bring in an ErrorT/StateT transformer), functions as predicates are black boxes that hinder optimization of instruction encoding tables. I need to sit down and rethink the approach and what parts of Haskell not to use.

                                        Also, hopefully, I finally start another simple program to learn Rust: a Markdown viewer (with fancy styling, line wraps, images, hyperlinks) on top of SDL2 (not the best choice maybe, but will do for a novice). Not a web browser, but at least it’s very limited in scope and hopefully can be done over a couple of weekends.

                                        1. 1

                                          some kind of “table typing”

                                          There could be an interesting idea worth experimenting with in there. Could you elaborate? And maybe with an example or two of what’s there which is kludgy vs what you’d like to see?

                                        2. 4

                                          I will be presenting NixWRT at Nixcon 2018 this coming Friday, so what I should be doing this weekend is installing it on my home router, figuring out what I want to say about it, and starting to put some slides together.

                                          What I’ve actually done, so far, is try several times and fail to get it to reboot reliably using kexec. I’m sure it was working in July before I put the project down for a weekend-that-became-six-weeks to write a mail reader, but even reverting to July’s code … doesn’t work now.

                                          1. 4

                                            Trying to get my personal website up, IndieWeb integrated, and probably going to roll up Hugo and nanopub, though I may yet go with Kaku.

                                            1. 4

                                              first weekend off from new job, gonna go out and take some photos and see if i can find something interesting.

                                              Then get some time to make some improvements to a little project for collecting network data.

                                              1. 1

                                                Are you in Berlin? This looks like Berlin.

                                                1. 2

                                                  Yeah im in Berlin.

                                                2. 1

                                                  Cool photos! What do you normally shoot with?

                                                  1. 1

                                                    thanks, canon ixus 285 HS, and a canon eos 100d

                                                    1. 1

                                                      if your interested i have a telegram group just about showing off your photos

                                                  2. 4

                                                    Watching films in the local film festival… Working on my bot that scrapes local apartment listings and notifies you by messenger… Drinking tea… Baking some bread…

                                                    1. 1

                                                      i got half way through writing a bot to do that in Berlin, its so hard to find apartments here and takes so much time, a bot is a good way to solve that. Will you be adding in an option to auto apply for apartments as well?

                                                      1. 2

                                                        It’s the second version of my bot, I already used the first version last year to find my current flat, and a friend used it to find his as well, now another friend wanted to use it so I rewrote it and improved it, and it got me thinking about moving too.

                                                        No auto-apply for now—around here you basically have to make a phone call right away. Getting a push notification within two minutes of the ad appearing helps!

                                                        1. 1

                                                          That is awesome! Gives you a good advantage!

                                                    2. 4

                                                      Hopefully:

                                                      • Hiking
                                                      • Lunch with parents sunday
                                                      • Pay bills
                                                      • Exercise
                                                      • Relax

                                                      …. I have 2 deadlines monday. So hopefully no working.

                                                      1. 3

                                                        Probably working some more on the latest pet project, it’s nearing “showability”. It’s a limited file-sharing utility where the server is merely a proxy to an ephemerally-connected client. Content is streamed over from the client through the server through ssh (uses pubkey auth), to the client over http(s, potentially).

                                                        Client then exits, voiding the link.

                                                        I’m pretty proud of it, I don’t want to have to put files on GDrive and sharing from Upspin to people out of Upspin was annoying.

                                                        It supports sharing directory by packing a Tar archive on the fly (I’ll add in support for other schemes through the Link’s file extension later).

                                                        1. 3

                                                          Hosting a dinner party tomorrow!

                                                          1. 3

                                                            I’m sinking time into some personal projects to improve “developer life” in my vm lab - a local apt/rpm/pypi mirror and some automation around that.

                                                            1. 1

                                                              I’d love a container for proxy/mirrors of each. I have never had great results with apt mirrors. I set them up in anger, but then they go sour.

                                                            2. 3

                                                              I’m exploring building a game engine, so probably going to keep doing that :D :D :D

                                                              1. 1

                                                                My condolences.

                                                                1. 1

                                                                  Why? :D

                                                                  1. 2

                                                                    I’d consider it a major time sink. There are no limits to how complex it can get, especially in 3D.

                                                                    Not dissuading.

                                                                    1. 1

                                                                      Ah! That’s what I like about it! Something that I can just have fun with :)

                                                              2. 3

                                                                Learning a bit of assembly since I mainly work with functional programming I think this will provide an interesting counter point.

                                                                1. 3

                                                                  Going to a wedding

                                                                  1. 3

                                                                    I’m driving to Savannah, Georgia for the week on Sunday, as well as building out helper tools for my accountability/habit-tracking-as-a-service project (https://consistency.club).

                                                                    1. 3

                                                                      Working on my RSS feed reader, learning some more Docker stuff, and hopefully playing some D&D.

                                                                      1. 1

                                                                        Do you mostly use Docker for work or just personal stuff? If it’s mostly personal stuff how did you get into learning it? Book recommendations?

                                                                        1. 1

                                                                          Personal stuff at the moment. Working on dockerizing my RSS feed reader. I just read through some of the official docs and now I’m just playing around and googling stuff.

                                                                      2. 3
                                                                        • Working on better inline assembly support in rustc.
                                                                          • Already fixed some smaller issues, but we are getting ready for the Inline Assembly RFC to hit the rfcs repo soon.
                                                                        • Hacking on my control group crate for Rust.
                                                                        • Hopefully spending the Sunday working on my super secret project in Rust.
                                                                        • I might finish some stuff that I didn’t finish over the week for $work. Generally to avoid burnout and the associated concerns I avoid working on $work stuff over the weekend, but I’m super excited for what we can accomplish so I might give it a few more hours.

                                                                        Oh and correct a few mistakes in my Operating System Development for the HiFive-1 RISC-V board article!

                                                                        1. 3

                                                                          I’ve just put the finishing touches on the 0.4.0 release of Dinit. So, it’s time to relax a little, do some house work, grab a beer or two tonight, and probably start getting ready for my move back to Australia (in January).

                                                                          1. 3

                                                                            Finished the outside of the extension (24m2 in two floors) to our 17th century farmhouse I’m building, now I’ll start on the inside - clear out organic material which made its way into the crawl space, put plastic on top, put in underside of floor, insulation on top,wooden floor on top of that, etc. Listen to Jordan Peterson discussing something with someone while working, most likely. Maybe Aron Flam (a Swedish stand-up comedian) vs. David Eberhart (a Swedish psychiatrist who tries to battle the Swedish ‘gender mafia’ who’ve been using a whole country as a social experimenting ground for decades.

                                                                            1. 3
                                                                              1. 3

                                                                                I’m on-call again, so not a lot of things probably/hopefully.

                                                                                Going to try and do a clean install of my laptop, re-purpose a nuc in a Linux desktop and maybe fully automate a gitea install.

                                                                                1. 3

                                                                                  I’m visiting my Brother in Sheffield which should be good (depending on the sanitary condition of his student house…).

                                                                                  1. 2
                                                                                    1. 1

                                                                                      I appreciate the domain name.