1. 19

This is the weekly thread to discuss what you have done recently and are working on this week.

Please be descriptive and don’t hesitate to champion your accomplishments or ask for help, advice or other guidance.

    1. 18

      I’m writing a summary article about the design of Merlin, a language server for OCaml. (A language server is a program/service/daemon that talks to editors (Emacs, Vim, SublimeText, vscode etc…) to provide support for language-aware editing actions, making it easier to bring IDE-like features to a new editor for a given programming language. The terminology was popularized by the vscode-specific Language Server Protocol (LSP), but Merlin predates it and uses a different protocol.)

      I’m not one of the developers of Merlin, so it’s a lot of fun to dive into the design and discuss it with them. Having a good language server requires a language frontend (from source to type-checking) that supports incrementality (being fast to react to small updates) and partiality (incomplete or partially erroneous text buffers). The Merlin codebase and authors’ brains are full of very interesting knowledge on how to build incremental lexers, parsers and type checkers.

    2. 9

      I’m working on a cock-pit style station for developers. For example toggle switches to switch between staging and development. Push to deploy buttons.

      1. 1

        That sounds fun. Do post a write-up and pics if you ever finish it. Matter of fact, it might make a nice entry to the next battlestations thread.

    3. 9

      Building an IRC <-> Slack gateway with some friends after Slack’s announcement that they won’t be supporting the gateway going forward.

    4. 8
      1. Learning me a Haskell. I’ve no interest in programming in Haskell, but it’s interesting to see the origin of some of the idiots I see in Rust. And I want to proceed from there to Learn Me An Agda so I can get some formal methods chops.

      2. My dormant github portfolio.

      1. 4

        Did you mean to say “idiots in Rust” ? 😛

        1. 4

          No. THe only idiot I see in Rust is me. I meant idioms.

        2. 2

          They’d be the ones out of habit trying to profile the garbage collection of their Rust app, gripe about standard library’s pervasive lack of referential transparency, or insist Simon Peyton Jones does a talk on every new feature. That I haven’t seen these people doesn’t mean they don’t exist. ;)

      2. 3

        If you’re interested in formal methods, may I recommend starting with Alloy? It’s a very simple, but very powerful, formal specification language in the style of Z or B.

        1. 1

          It’s on my laptop and I have Daniel Jackson’s book. Agda, Alloy and TLA+ are what I’m concentrating on.

    5. 7

      Building my first Yocto system, after years of doing buildroot-based projects.

      A bunch of meetings to kick start new hw development process. Internal team meetings, meetings with subcontractors, phone meetings, in-person meetings, travel for meetings. If you love meetings you’d really envy me now.

    6. 6

      Just finished writing my Advent of D blog post along with its promotion tour. I could only get it to the front page HN by making them talk about concurrency. Hopefully at least a few hapless souls happened to read the rest of it too and accidentally learned something about D.

      This week I want to seriously start writing that screenplay I’ve been planning. Maybe it’s stupid. I haven’t done creative writing, much less in a rigid format. Next week I’m going to try to meet up with a guy who’s already written a screenplay for this story and maybe we can collaborate.

    7. 6

      Doing some side work on a greenfield(ish) rails app for a friend, developing a web app for the first time in a couple of years. It’s interesting to pick things back up and find they’ve not changed a huge amount. Rails is still quick at building out new features, no news there really.

      Home automation efforts have paused somewhat, the sensor stuff is still working great but actual controls of equipment has stalled.

      All in all, not a huge amount. I appear to be in a video games phase currently, getting near completing the storyline of GTA V for the second time (playing it through in FPV on Xbox One this time.)

      1. 3

        I appear to be in a video games phase currently, getting near completing the storyline of GTA V for the second time (playing it through in FPV on Xbox One this time.)

        The characters on that game were excellent. If anything, the money they put into voice actors and content might set the bar too high for most games to beat. Intentional for sure. Of all the things I’ve heard, the best fan theory is that Trevor’s character represents not just a stereotype of meth-addicted hillbillies but the players themselves in how they approach GTA games. Trevor does all the crazy stuff as a NPC that we do as a player.

        Interesting concept that normally could break the suspend disbelief aspect but not here. I wonder how far that could stretch in other games where it gives characters ideas without taking their mind out of the story. Thinking on it, I guess it happens a lot in shooter/war games and maybe RPG’s as there’s plenty of good moves to imitate by lead characters. Probably more opportunities to explore for such characters, though.

    8. 6

      Working on web cache proxy server nuster, added following features and tests:

      • Purge all cache (curl -X PURGE -H "name: *")
      • Purge the cache belong to a proxy (curl -X PURGE -H "name: proxy-name")
      • Purge the cache belong to a cache-rule (curl -X PURGE -H "name: cache-rule-name")
    9. 6

      I’m continuing to work on increasing my productivity by implementing some basic systems. Last week was a huge success. I accomplished about twice as much as normal with roughly the same amount of effort.

      The new additions this week are:

      • A Filofax Saffiano A5 planner, which I have organized into a rough approximation of the GTD method.
      • A weekly planning session where I choose a primary project and distribute it’s tasks throughout the week. Previously, I was rather haphazard about choosing which task to work on, so projects tended to drag on with only occasional progress.

      My primary project for this week is to create a monthly budget with You Need A Budget.

      1. 4

        FWIW, You Need a Budget (YNAB) is great. Definitely give it a few months though. And be sure to connect it to your accounts (just like Mint, read-only, it’s safe). Yes, it is great to get into the habit of entering everything manually - and you have to for cash. But the online connection helps immensely if you forget something. I’m at 1.5 years now and the difference has been HUGE. My ability to budget before was terrible and YNAB has saved my butt. Budgeting used to be last minute - now I’m months ahead and finally saving.

        1. 3

          Also a huge fan of YNAB, been using it for just over a year now and it’s literally changed my life.

          However, I’d argue against linking your accounts. If there’s anything that I forget, I catch it in my weekly reconciliation process, which is yet another good habit to build (doing a weekly review of spending, adjusting budget categories, etc).

          To each their own I suppose! But the account linking just makes it slightly easier to not keep awareness of your transactions, which is against the point for my purposes.

    10. 6

      Tech: I donated a couple of commissions as part of a charity drive: two technical essays of 2,000 words or more. The first buyer asked for something on Nix, so I’ll be doing a formal spec. The second buyer just asked me to dunk on ESR as hard as I can. I want to get most essays mostly done this week. Other stuff: revising book, writing conference proposals.

      Class: we start trauma and bleeding this week.

    11. 6

      X11 bindings for Myrddin. They are already mostly working, but there are still some rough edges – for example, there’s a bug where we select the wrong magic cookies on OpenBSD.

      I’m also experimenting with a decentralized package system that sidesteps the whole version pinning issue by trying to make versions fall naturally out of namespacing. I’ll probably post something about that soon, but there’s nothing usable to announce yet.

    12. 5

      I will present the result of my research at a seminar this Wednesday, and my slides are not quite ready. So I am trying to catch up. On a more hobbyist side, I will try to continue to work on flux and potentially chain, two Haskell libraries I wrote recently. I still need to decide a license (probably GPL), write a tutorial and then I will be able to push that on hackage. At least, this is the plan.

    13. 5

      I’m working on getting an article I wrote published on Hackernoon or Startup Grind, it’s titled ‘How to build a SaaS for $0’. And another one on ‘How my SaaS served 25M API calls for ~$100’. The SaaS in question is ipdata.co

      1. 3

        Maybe post it to Barnacl.es, too. That’s a bootstrapping site that uses Lobste.rs engine.

      2. 2

        Interested to read it.

        1. 1

          Hey ac! It’s finally up here https://lobste.rs/s/0eshtx/how_build_saas_with_0

        2. 1

          Thanks nick! Thanks, the tags there do seem more relevant. I’ve posted there too https://barnacl.es/s/szazay/how_build_saas_with_0

    14. 5

      Attacking a yak with a razor.

      So I’m trying to get Mono working on PPC64BE better, which includes getting their vendored BoringSSL working. It compiled, but some sites seem to cause issues, so I thought it might have been say, endianness issues in ciphers or a broken ifdef. Try to fix the cipher I thought was causing problems, no changes.

      So now I’m trying to run the test suite. In an effort to out-OpenSSL OpenSSL, Google has rewritten the test suite runner in Go, a language without any redeeming qualities. Try to build Go, turns out the latest Go requires POWER8 for big endian PPC64, and thus SIGILLs on the POWER6 - who the hell runs big endian Linux on POWER8? I roll back to Go 1.8, and bootstrap with my amd64 box, and that works, mercifully. Ninja is also required, but that mercifully worked out of the box.

      Then when I finally run the test suite…. nothing was built. Mono did some stuff to the build system to integrate it into their own and build a custom shared library work, and I’m not sure how to handle running the test suite in the context of that.

      I miss autotools already….

    15. 4

      Visiting Iceland and taking care of some formalities required for me to move here.

    16. 4

      Completed recently: cleaned up persistent_doc a bit and made it available.

      Doing this week:

      • guitktk
        • Think of a way to have “class” nodes and “object” nodes. I had some other prototype earlier but it doesn’t seem to mesh well with other features.
        • Look into adding another backend for native Mac (I don’t know anything about OSX). Or enable features on existing backends (Tkinter, Cairo, OpenGL).
      • Blog post about how all my github pages fit together.
    17. 4

      Aside from the usual work on the podcast (generalintellectunit.net), I’m taking a look at ActivityPub with an eye toward making a decentralised reddit-clone, along the lines of Mastodon.

    18. 4

      I’m on my second week of sprint at work, and most of my side-projects are on hold for the duration of the sprint.

      Away from work, I’ve picked up Anki for memorization*, and have finally found a way to memorize things without having a second person to recite things to and get correction from. Especially helpful has been using Cloze deletion for passages/poems. Reviewing the flash cards also makes a good time-filling activity. I’m planning on using it for memorizing other things as the need presents itself, and can recommend it to anyone looking for a way to study information.

      * I’m memorizing passages of the Bible in my case, though I’ll probably use it for other knowledge as the need for learning things relatively quickly presents itself.

    19. 4

      Trying to figure out what I want to be doing for the rest of my life. The enterprising nature of software engineering has proven to be a terrible fit for my personality. I’m considering something that would involve original research in the sciences, but I’m worried that poor job prospects will land me back as a Software Engineer.

    20. 4

      Calibrating an old CRT projector I picked up for cheap!

      It really fascinates me how the entire video path is analog - you can actually visually trace where the signal goes. When I first set up the projector the image was upside-down (oriented for ceiling-mount), and the fix was literally rotating a plug 180 degrees.

      1. 2

        “and the fix was literally rotating a plug 180 degrees.”

        That’s a trip haha. I briefly looked into analog AV for trustworthy devices. For cost and patent reasons, most would have to be on old process nodes with slow digital. I remembered most AV I saw at the time was analog mixers. Turns out, you can still get both audio and video processing chips that are analog probably for legacy setups.

        So, it’s doable but idk how many have the skills. Probably be a mix of older pros and young hobbyists pulling it off if it ever happens.

    21. 3

      I have continued to hack on a Snobol3 interpreter and I’m in my second week of the deeplearning.ai course.

    22. 3

      I’m going to write several developer-related topics for my blog, mostly JavaScript and Web APIs stuff 😀 focusing on keeping things simple

    23. 3

      All work stuff unfortunately, but for good reason – I have a daughter being born any day now! Thankfully I work for an incredible employee-focused organization that gives me paternity leave, so my focus at the moment is making sure my outstanding work tasks have a nice bow on them before I go MIA for a little while.

      As for the work itself, mostly establishing a blue/green deploy process for our serverless application. It’s split into several services at this point (mostly because of CloudFormation resource limits), so there’s some custom orchestration we’re doing. It’s been fun to think through and implement.

      So yeah, working as quickly as I can. It’s a good kind of stress :)

    24. 3

      At work, looking into our task scheduling system and making aspects of it more resilient and scalable.

      Outside work, I’m beginning the gardening season by starting some seedlings; I’m also considering building a space bucket, because I’m curious to try peppers produced under those conditions alongside those grown in a container on a porch. I’m also going to put together a second Nyquist keyboard… and I might start reading Chateaubriand’s memoirs.

      1. 1

        If the system is Luigi, I’d like to trade notes. If it isn’t, I’d like to trade notes.

        1. 1

          The system is not Luigi… it’s an ad hoc thing built around APScheduler… We need decide whether to invest more effort making that work for a bit or look into the best way to move toward something else. It’s an interesting problem!

    25. 3

      I’m still working on a discord bot I’ve been developing for my university’s Math CS and Stats society. This week I wanted to learn Mongo db so I’ve been working on adding detailed user stats and leader-boards that encourage people to be more active, all of which is stored in Mongo.

      I’m still working on improving the homelab. I finally mounted my projector and ran the wiring as well as getting a chromecast. This week I’ll be setting up sonarr, radarr, couch potato and plex to start accruing media for consumption. In addition I moved from dnsmasq to windows server for dns and dhcp so that I can setup Active Directory allowing single sign on to all my VMs. Before I can set that up I’ll be replacing the fans in the hard drive array that I got since I bought it used the fans are old and loud and I’d like to keep the rack’s volume levels at a reasonable amount.

    26. 3

      New & ongoing projects I’m hoping to work on this week:

      1. Convert blog archive to phlog
      2. Improve generative grammars/replies in Meteor.js-based twitter bot system (emulating CheapBotsDoneQuick.com)
      3. Attempt to connect a single Cloudbot instance to multiple twitter accounts based on network, continue customizing comics and whois scripts
      4. Finish braiding a new strap for my mandolin
      5. Write new blog/portfolio content, or publish old drafts (I’m really bad at writing/publishing)
    27. 3

      At work I’m adding some APIs to track the sizes of IO sent to the volumes on our clusters, which will eventually help users adjust their QOS settings to tweak performance.

      I’ve been slacking on my grad school application, so I’m going to stop procrastinating and finish it this week. It was so easy, and then I got to the essays :-/

      I’m also planning some overnight and multi-day bike trips for the coming spring and summer. My goal is to have my bags packed (minus food, etc.) and have several routes ready, so whenever an open weekend comes up with good weather I can just take off with minimal preparation.

    28. 2