1. 14

What are you doing this week? Feel free to share!

Keep in mind it’s OK to do nothing at all, too.

  1.  

  2. 22

    Animal crossing is our only hope

    1. 8

      Working full time on my java compiler (which I’ve posted at least three times in the past months, sorry if that’s now bordering on spam).

      Getting lambdas working has taken a long time, but I might be done now. The lambda/invokedynamic part of java and the JVM is a many-layered beast, and my implementation was troubled by several of nasty compiler bugs, the kind where the consequences show up >100k instructions after the problem. Those are usually simple to solve once I can reduce them to a simple test, but the reduction can be a real pain. Facing yet another bug like that is an open invitation to procrastinate. Which is how I found out that Naviki has an excellent procrastination function: Click the loopish icon and enter your preferred distance, and it suggests about eight roughly circular trips.

      Haven’t worked that much due to some recent illness. If you get a massively sore throat and a bit of fever, and it passes, my advice is to stay in bed for another week. Don’t assume that you’re well after just one day. This spring’s illness is a sneaky, nasty one, not like a flu.

      This week I hope to be able to run my first real time-domain benchmark.

      1. 1

        Interesting. Reading your comment below, why not just implement a JVM, rather than the entire compiler toolchain?

        1. 2

          That’s sort of what I do, but my code has enough knowledge of Java that I tend to name one language rather than pretend to handle more… the code does parse .class files as input, but it also uses the debug info in the .class files, knows the java type system, does static analysis that probably assumes things, implements many native methods specified by the JDK, etc, enough that it’s somewhat tied to Java. I’m sure it also has unintended dependencies on Java. So although I secretly expect it’ll also work for Kotlin, Clojure etc. with modest effort, I prefer to say just Java.

        2. 1

          Why are you building a Java compiler? What are you targeting? Source available?

          1. 5

            No source available yet, for several reasons.

            I’m building it because I found a way to do garbage collection that I thought should be very much better than the state of the art, and general enough to handle java and probably most languages that target the JVM, but it not possible to implement by modifiyng e.g. hotspot. That is, the Java specification permits my scheme, but the javac/hotspot implementations don’t.

            Very much better means much lower memory requirements for most programs, better insight into memory use, predictable performance and perhaps better CPU performance, or perhaps not, I’m not able to measure that yet. I’m targeting headless servers, the kinds that are used by the hundreds or thousands to run a single codebase.

            Your next question is perhaps: Explain the GC scheme. I’ve tried to (against advice) and failed. But it works, I’ve the running code to prove it. And I was very relieved when I first saw it run on a complicated self-referential data structure and it it worked, even though n people had told me it couldn’t ;)

            1. 3

              Wouldn’t your proof-of-concept be easier with an easier language, like Lua?

              1. 1

                I considered about half a dozen languages, including one like Lua.

                A proof of concept makes a set of practical effects appear doable. Changing the proof of concept changes the set of practical effects that people will believe in. People’s beliefs may be wrong, they may misunderstand the scope, but that’s life. I concluded that a language like Lua would give me unimpressive, uninteresting results. Results that would not appear likely to be applicable to the kinds of problems where the effects would be bigger.

              2. 1

                Well I’m very curious to read more prose about the project and also some code. I work on runtimes for a living and I’m fascinated by everyone’s personal projects. Please do keep us posted.

                1. 2

                  I’ll post again once I have numbers. Really curious myself to see the effect my code has on e.g. the branch predictor cache. Thanks.

          2. 7

            Working on my semantic web framework/database called Lyncex. Maybe this week I can create a website. It’s made in Prolog.

            1. 1

              Could you keep us posted? I’m really interested to see what you’re creating.

              1. 2

                Yes, of course! It’s my end of degree project, so I will finish “something” at some point. There’s a GitHub repo but no docs and I still think is not very useful yet.

            2. 4

              $work:

              • deploying a couple of openshift clusters
              • team meeting about how we see our future (planned way before corona started messing things up)

              $home:

              • I ordered a chainsaw online and plan to do some yard work. I wasn’t able to do it last year, hence the chainsaw. I’m always amazed by how fast things grow
              • my company allowed you to lend a screen since we have to work from home, so I need to re-organize my desk
              • trying to set up a clustered lxd server and try live migration. I have a small NAS that supports iscsi so I’m going to try something with shared storage too.
              1. 4
                PhD

                All hands on testing is out the window so focusing on simulating new RF power amplifier designs Spending some time contributing to open source tools (QUCS, scikit-rf) in the hope that one day the field won’t all be proprietary

                GNU Radio

                Reviewing Google Summer of Code applications General code reviews & fixes Trialing some 1:1 peer programming/mentoring with community members

                Personally

                Clearing/gardening our tiny backyard since it’s our outside for the next 3-6 months Figuring out PCIe on FPGAs with LiteX, a Python based System on Chip generator

                1. 4

                  Well this weekend I began some assembly experiments. The goal is to stay close to metal while using macros to achieve easy to type and more dense instructions. This week I’ll continue to implement random programs to explore this space.

                  Here are my experiments so far:

                  These are valid assembly files - I’m just using unicode characters in my macros and line separator (;) to make it denser.

                  Comments and concerns are welcome. :)


                  Other than that, Battlefield 1 is back online (down all weekend), so I’ll be playing that and the usual DS2.

                  For work, implementing a new fully specified system. :D Get to live in TypeScript world for a bit which is always a pleasure.

                  1. 4

                    Making pasties, marathoning John Wick, and rationing beer.

                    1. 2

                      work:

                      • I will be polishing a PR to the elastic beats platform that adds an auto-discover mechanism to Nomad (hashicorp container scheduler), we’ve been using this in production for some months now, but got some feedback from the team and I will be going through that.
                      • We’re also trying to implement tracing for all components involved in a user request, which has been challenging. Currently, we’re testing/deploying the OpenTelemtry collector which should be able to ingest traces from multiple services in multiple formats and send them to our common backend.
                      • Customizing a Prometheus exporter for monitoring our fleet of filebeat sidecars and potentially alert when some jobs/containers are too “spammy”.

                      home/personal:

                      • I’m working on a smallish solution for getting analytics of my blog behind Cloudflare. This is a very PoC project but there is one colleague interested in testing the result :).
                      1. 1

                        How are you finding Nomad? We’re using k8s at work and I find it to be disproportionately complicated for what I suspect 95% of people need, us included.

                        1. 2

                          So far me and my team really like it. Compared to k8s I would say that its an order of magnitude simpler. We currently run (in a separated cluster) all our monitoring tooling: ES cluster (~30 nodes), multiple Prometheus instances, M3, etc. and a bunch of periodic jobs.

                          One of my coleagues wrote an article sometime ago about why and how we do our normal operations with Nomad: https://tech.trivago.com/2019/01/25/nomad-our-experiences-and-best-practices/.

                      2. 2

                        $work: end of Q1 deadlines + goals

                        $home:

                        Mostly relaxing, maybe a little bit of blogging, and otherwise just playing with whatever takes my fancy. I have a few longer-term side projects, but I’m taking a bit of a break from them for a couple of weeks

                        Yesterday I ordered a nice big dedibox from Hetzner that I’m planning on replacing some older VPSs with - I’m using it as an opportunity to play with some hypervisor stuff until I can get my homelab properly setup

                        1. 2

                          I’m going to have a longer week than normal. My partner works as a shelter coordinator for a domestic violence shelter. Due to new COVID policies her schedule is shifting, as such I’m shifting to work Friday - Tuesday to match.

                          Home
                          • Due to COVID19 related delays I’m 2-3 weeks behind on everything gardening related.
                            • Wiring new shelf of seedlings, some seeds are already germinated, most of the seeds got delayed
                            • Clearing the over wintering leaf mulch & replacing the top 1-3” of top soil (our neighbor we shared the raised beds with decided to use leaves from around the base building after lead abatement).
                          • Baking more bread.
                          • Working on my blog.
                          • Setting up Drone to manage personal servers.
                          • Working on golang chops & building an audiobook to private podcast feed project.
                          • Milling the top of a workbench.
                          Work

                          Right now things are kind of in a weird state.

                          • We are being indirectly affected by the COVID19 shutdown. Our usage is down and upstream features and requirements are in a holding pattern.
                          • One of our partnering companies that we had been working to integrate with was just purchased, and the new partner company has put a hold on all deals, so our plan to go live with it in early April isn’t happening and and the integration itself is limbo.

                          Right now there is no specific large feature targets. I’m hoping we can use this rest-bit to do a series of papercut releases, and possibly refactor and retool some needed parts.

                          1. 1

                            What’s your go-to bread recipe?

                            Since last week I’ve been thinking, why isn’t there a better recipe database?

                            1. 3

                              So bearing in mind I’m a terrible baker. I use weight rather than volume. My go to recipe is just a ratio:

                              • 100 flour
                              • 60-70 water
                              • 1 yeast
                              • 2 salt

                              For the rest of the instructions I’ll use an sample 500g of flour so between 300 - 350G Water, 5g yeast, & 10g salt.

                              1. Start a poolish with the 5G yeast, 75G flour, 75G Water (warm or tepid). Let yeast activate for 2-6 hours. If the yeast has gone bad start again.
                              2. In a large bowl mix together the remaining flour, and the salt.
                              3. Bring together the poolish, the dry ingredients, and the remaining water. The resulting texture should be either shaggy or tacky depending on how much liquid you added.
                              4. Kneed on a flour worktop, or inside a kitchen aid for 10-15 minutes.
                              5. Transfer into a large lightly oiled bowl, and cover. Let rise somewhere warm for 40 minutes or until roughly doubled in size.
                              6. Knock out the air by scraping down the sides. Cover again but in fridge to rise again for 4-6 hours.
                              7. Put a large dutch oven in the oven and preheat to 400ish. You want be hot before you get to step 8.
                              8. Pull the dutch oven out the oven, carefully transfer the dough inside. Put the lid on and put it back in the oven.
                              9. Bake until golden & the loaf hollow sounding.

                              Due to the store being out of yeast I’ve basically turned a yeast packet into so pseudo sourdough starter and have been feeding it every day. Its actually made some of the best bread I’ve made.

                              On the recipe database

                              There has been a couple of versions that attempts to apply git’s branching system to recipes. Forkthecookbook and cinc.kitchen being the two that I remember the best. It an interesting thought though. Recipes can’t be copyrighted and the the data is generally well structured (e.g. ingredients, steps, cook time, notes, etc.).

                              EDIT: I had a conversation a long while back on the big orange site on this a while back.

                          2. 2

                            Surviving another week of work. Hoping to get a project out we’ve been working on for some time now.

                            In the meantime, playing Mount & Blade II: Bannerlord, a game eight games in the making. This pandemic will give me the justification to sink hours into this game.

                            1. 2

                              @work Second week focused on removing our legacy persistence layer. It’s my white whale. I started debugging through it early on after joining the company, and it was weird, and confusing. I kept diving back in, and eventually ended up knowing more about it than anyone else except perhaps one person (who didn’t want to touch it at all).

                              At some point, unprompted, I wrote up a plan to replace it. Two CTOs later, we’re replacing that layer (using a descendant of my plan that was refined by some consultants). Code is being committed (all currently feature flagged), a new schema is mostly done, there’s a migration plan, etc.

                              @home Working through the Art of Prolog, though a bit slower, now that the Nintendo switch popped up and said “Did you know I have Final Fantasy 7? You’ve wanted to play this again for 15+ years, haven’t you?”

                              1. 2
                                • Keeping daughter entertained while my wife and I attempt to work. This is a lot harder than we expected.
                                • Doing garden work. Lawn needs mowing. Started a compost bin. Will plant vegetables in the coming months.
                                • Working on my Mega Drive emulator; still working on design for Motorola 68000 emulation. It’s more complicated than the 6502 CPU I did for my NES emulator, because at least in the 6502 an entire byte of the opcode tells you what instruction and addressing mode you’re using. I had a giant 256-length lookup table indexed by this byte. Whereas I need finer-grained inspection of bits for the 68k, e.g. the two MSB may tell you it’s a move instruction, or you may need the eight MSB to know it’s a compare instruction, or all 16 bits to know it’s a no-op. So the opcode matching is more progressive rather than a simple lookup table…
                                1. 2

                                  I’m taking leave from my job for two weeks and taking primary parenting responsibilities while my wife figures out how to run a law firm remotely.

                                  1. 2
                                    • Finishing the setup of my network
                                      • Adding an new Netgear dumb switch
                                    • Trying to at least get a Blog post out
                                    1. 2

                                      2D C99 game engine. 4900 LoC, not including 1350 of comments. I’m still plodding along.

                                      1. 2

                                        I’m writing a cookie-less privacy-friendly web analytics tool for my websites and my friend’s sites too. I know there are similar tools but I thought it could be pretty fun to write my own — and it is.

                                        Maybe I’ll set up a public access if the tool is useful enough for us.

                                        1. 1

                                          This week I’m working from home (as per usual). I’ve been writing some tools for myself using gotoB, and I have really liked it.

                                          Other than that, we’ll see.

                                          1. 1

                                            Other than work, which I’m not sure how much I can talk about:

                                            1. Consulting on my friend’s “Cities: Skylines” city. 😄
                                            2. Getting my indoor bike trainer (Wahoo Kickr & Climb) setup, once the tools I need arrive, and trying out Zwift.
                                            3. Probably iterating on my experimental “error return tracing” implementation for Rust.
                                            1. Maybe working on my browser-based multiplayer snake game, https://sneakysnake.io, a bit.
                                            1. 1

                                              Trying to build my own PHP* CRUD generator (yes, really..). Too often I just need something simple (ie a view on some tables). And access to phpMyAdmin is too risky/non user-friendly. And I’ve built the same-ish Bootstrap forms too many times, I thought I could optimize this.

                                              Symfony, Laravel, Yii2, Django and Codeigniter (I have used all these / currently run these in production) are just overkill. It still rubs me the wrong way to deploy 80MB of code for a few PHP pages (which most of these frameworks do).

                                              The goal is connect to a DB, select / set some things and generate CRUD pages. So far (this weekend) I built something to connect to a database, visually select the right tables (give them proper readable names), select the columns (give proper names etc.) : so now I’m looking at using all these variables (stored in one big multidimensional array) to fill PHP templates (or just raw echo / HEREDOC the files…).

                                              *why PHP? Because it’s ubiquitous. You should be able to wget this script/tool and get going.

                                              1. 1

                                                At work, my current major project is rewriting some front-end stuff. Our whole UI got overhauled for the last major release, and most of the work was contracted out to a cut-rate web dev studio who produced a giant mess – which, for some reason, we shipped anyway! Our customers are complaining about how the first page of search results is taking sometimes multiple minutes to load (although the rewrite is only slightly slower than the previous production version, which they’ve been happily using for a decade), so my manager & I have been put on an emergency rewrite. I am not a web dev, and I hate it, but our office is the only one in the company that can be trusted to deliver performant code & I’m the one with the fewest other responsibilities so I’m stuck rewriting a terrible web app to be merely mediocre.

                                                Outside of work, I’ve been putting off my NaNoRenMo entry since the beginning of the month so I’m going to try to quickly push something out. I’ve also been putting off my (more casual) responsibility to put out an article a week for the medium publication I’m part of, so I’m going to try to finish the two or three drafts I have kicking around.

                                                1. 1

                                                  I’m making a discord bot with a friend for a server we’re in, we syncplay movies together every week so this would help coordinate the times (timezones are hard!) and manage backlog and voting.

                                                  I’ve been trying to package it for Nix so I can run it on my rpi. It’s an uphill battle because the bot is in F# and the existing package for the dotnet SDK doesn’t currently support arm64, and I also had very little idea about how packaging works in Nix. I might write a blog post on this later.

                                                  1. 1

                                                    @work Still writing functional tests.

                                                    @home I’m brainstorming ideas about what my Spotify client will look like, reading up on the API, and toying around with some ideas to make the API JSON easier to work with. And there seems to be a bug with auth token refresh, so I need to debug that.

                                                    The last few days I’ve been following along with the OCW class on Finance Theory, and hopefully I’ll get some time to read along in the books.

                                                    1. 1

                                                      Working on Alloy documentation and updating workshop exercises.

                                                      1. 1

                                                        Predictably, with less than a week of billable time left, my “client” (scare quotes because only scare money is involved) has finally had a deep and dramatic change of opinion on how the IA for our app should be organised. So I’m mostly completely rebuilding that. My evenings are largely music sessions held over Zoom or Jitsi.

                                                        1. 1

                                                          Work

                                                          As a technical co-founder of a company that’s trying to bootstrap, the past month (even before the global lockdown) saw me transitioning to marketing/sales role, something I have zero knowledge of. But in order to survive we also need to sell. It’s a SaaS app for product managers, and it’s a hard sell due to competition. Been reading a lot of resources on sales and found Founding Sales a good resource so far.

                                                          Personal IT-related

                                                          Working on a checkin app for ice swimmers. It’s a very popular hobby in the country I live in, lots of clubs. But the only means to track down how much, for how long, and where is by making a note in the paper journal. Decided to try functional languages for this one, Elm and Elixir. It’s still very much in the early stage and will probably be ready for the next season, but going good so far. There’s source available but it’s quite ugly at the moment as I’m doing a lot of prototyping.

                                                          For fun

                                                          Living next to a forest I see lots of fallen trees after winter storms and was thinking of a good use for some of that timber. I only have a hand saw so quite limited in ideas but eventually settled on a small chair made entirely of a single piece of log with no nails. I have cut a ~70cm tall log today and will cut out the inner part to have 4 legs.

                                                          1. 1

                                                            Reviewing notes on a concept for a disease surveillance data aggregation platform for some countries, working on a research data collaboiration/sharing tool and trying to expedite development on it to get some data sharing happening between orgs on COVID-19 research.