1. 28

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. 11

      After helping polish up a few things with the Fennel lisp compiler (https://github.com/bakpakin/Fennel) I’ve created an Emacs mode for it (https://gitlab.com/technomancy/fennel-mode) and am hoping to try sketching out a few simple games in the Love2d game engine to put it thru the paces.

      1. 1

        I’ve published a tutorial on using Fennel: https://github.com/bakpakin/Fennel/blob/master/tutorial.md

      2. 1

        Is there a reason why Fennel is hosted on GitHub and Emacs mode on GitLab. Why not host them both on either GitLab or GitHub?

        1. 2

          Fennel is not my own project; it was started in 2016 by Calvin Rose, but he only worked on it a couple weeks before moving on. I discovered it last week and started submitting patches, and now he’s picked it back up. I just created the Emacs mode yesterday, and I host all my own projects on GitLab.

    2. 9

      I made this little interactive notebook about drawing better looking Bézier curves: https://beta.observablehq.com/@dhotson/drawing-better-looking-curves

      I’m also currently working on a plugin for Adobe Illustrator based on this. Screenshot: https://i.imgur.com/tIPTjLsr.png

    3. 8

      At work I’m going to be introduced to some new projects written in Javascript and Python, which is good for a change, I guess (as opposed to doing only Ruby in the last years). I also want to upgrade a Puppet setup by a couple of major versions, but that may or may not happen this week.

      At home I want to finish up my first contribution to Rust which has been going slower than I wanted to. Mainly because I got a faster laptop where the tests I wrote behave differently for some reason. Once that’s fixed I want to spend some time reviewing my Rust learning and also figure out what I want to learn about next.

    4. 8

      I’m working on two projects in my spare time right now:

      -going through Type-Driven Development With Idris, to learn Idris for the dependent-types goodness

      -trying to teach myself the nuts and bolts of type theory by implementing Hindley-Milner type checking in the toy programming language interpreter I’ve been working on for a while. I’ve found a few resources about exactly how to go about doing this (most notably, this Haskell conference talk and this section from Stephen Diehl’s incomplete tutorial on implementing a Haskell-like functional programming language. I’ve actually had a bit of trouble translating the code from those resources, which is in Haskell and assumes a particular design for the AST data structures, to my own interpreter, which is in Rust and has a different AST design. If anyone is knowledgeable about actually implementing Hindley-Milner in a real programming language, I’d love to get some advice.

      1. 4

        I’ve got that book sitting in front of me right now! It’s so cool how you can specify protocols and valid state transitions so nicely in idris! I’m fantasizing about using it as the basis for a smart contract language.

      2. 4

        I tried going through that book, too, but I was not convinced by the examples it used. I recall one example which added the runtime length of an array to the typesystem. Nice, but you still needed do (runtime) checks for the length…

        1. 2

          You don’t always need to do runtime checks for the length. For example, if the length of a vector is n you can use a data type Fin n to represent an index. If you ask a user for an input, you’ll have to check it there - but once you have a Fin n you can pass it around your program without checking it. It’s always a valid index.

      3. 1

        If anyone is knowledgeable about actually implementing Hindley-Milner in a real programming language…

        I have experience with doing it in Haskell, but it seems like you’re implying that Haskell is not a real programming language…

        1. 1

          Haha far from it, I’ve written ostensibly-useful code in Haskell myself. There are a number of impedence mismatches between Haskell-style code and Rust-style code, that have made it hard for me to take the example Haskell code I’ve seen for Hindely-Milner and apply it to my own project.

    5. 8

      Last week:


      • Last week was a tiny bit stressful, but everything to delivered on time for soft launch today
      • At our weekly report emails I got to talk in broad strokes about Touhou music, so that was quite nice. One of the bosses actually asked for a playlist on that haha. (We do company-wide update emails, I do my report and then take big liberties with what I talk about of interest that week. I often share music and other interests.)


      • Continued reading bits and bobs of The Pragmatic Programmer. Watched a couple tech talks I think. Plenty of Joe Rogan and other podcasts
      • More game dev stuff, though not as much as would be ideal to make real progress
      • Relaunched my website! https://greduan.com Hopefully a blog post about it soon

      This week I’m not too sure, but:

      • Fixing kinks after the soft launch, improving documentation and fixing other bugs, and then expanding functionality
      • I hope more game dev (get acquainted with OpenGL itself)
      • More work on my project RoarSS, just a tiny RSS web client. Of course I’ll share when I do put it out somewhere.
      1. 2

        What stack/languages are you using for RoarSS?

        1. 4

          Much to the dismay of some, a Node.js server. Very simple and basic though.

          Using Koa for HTTP handling and good olde Handlebars for the template rendering. Using a home-made rendering function assigned to Koa’s ctx object.

          Right now, actually, I can already give it feeds and look at them, but it fetches the links live (no DB) and it doesn’t fetch the feed’s content, it just shares a link to the original post (a way which I personally prefer).

    6. 7

      Still working on open source project, web cache server nuster, added support for disable/enable cache by name on runtime. Will release this week.

    7. 7

      In preparation for tax season, I’m tweaking my plaintext accounting setup. I recorded all of 2017: every transaction that touched my bank or credit cards is queryable. I’m switching processors for 2018 to a setup that’s already saved me about two hours per month. I’d love to get to a point where I can do make irs1040 and it spits out the content of all of the boxes that my transaction data can reflect.

      I’ve already got make networth and make cashflow working, complete with nice graphs in the terminal courtesy of iTerm2’s imgcat.

      I’m hoping to generalize my setup so that I can release it eventually. I’ve found very few examples of workflows so I want to contribute mine to the world so that the plaintext accounting ecosystem is more approachable.

      1. 2

        Some friends and me collected quite a few interesting ledger-cli graphs (using GNUplot and a pie-charting tool of mine) on Github: https://github.com/cbdevnet/ledger-reports

        Though some of them break when using them with multiple commodities… Might have to get around fixing that some time after my exams :)

        1. 2

          This looks really awesome! Any chance you could throw up some example images?

          1. 1

            Good suggestion, thanks! I’ve just opened an issue for that. As I’m not quite comfortable with using my own data for presentation purposes, this will include generating a somewhat-random example ledger file and generating the demo statistics from that :)

      2. 1

        I’d be very interested in seeing your setup when you’re done. The notion of using a CLI program for doing this sort of accounting intrigues me a bit.

        1. 3

          A good start is to watch a recording of one of my talks and those of some others who have produced some content about it: https://www.youtube.com/results?search_query=plaintext+accounting&page=&utm_source=opensearch

          I’m probably still a few months away from having my stuff sufficiently abstracted.

        2. 1

          “The notion of using a CLI program for doing this sort of accounting intrigues me a bit.”

          It was the default on most cash registers of big chains for a long time. The ones in my area I shop at just now all got the graphical apps. It was mainframe, terminal-style stuff on backend for some. So, CLI on each side. Here is one for UNIX I found when I looked up that stuff.

          1. 3

            There’s a difference between CLI and TUI. Most cash registers I’ve seen were TUI, IIRC.

            Still, there’s a certain Spartan flavor to TUIs, such that they can be quite efficient for their tasks.

            1. 1

              Ok, yeah, TUI was more what I was thinking of. The ones I dealt with were usually more efficient than their GUI replacements. Way more reliable, too.

    8. 6

      I’m working on:

      • new release of ziggurat_foundations set of mixins for sqlalchemy that provide user permission system to applications
      • new release of channelstream - gevent websocket server for rapid real-time communication building, reworked demo UI to Polymer 2.x + redux and now I need to polish new release server side.
    9. 6


      • More ticketing, as per usual
      • Working on a little TCL script that has buttons for copy/pasting text on it, since there’s a lot of reuse (especially of ticket numbers)


      • Had a very laid-back weekend
      • Played a lot of Heat Signature (maybe too much)
      • Started work on switching my wiki to include created/updated times. When I’m done, I plan on adding three sort modes for the wiki: One by created, one by id, and one by most-recently modified. In this process, I’ve discovered that Erlang’s date/time support isn’t super straightforward. It’s not horrible, but it’s not straightforward either.


      • Ported my syntax highlighting snippet (based on google’s prettify.js) to my wiki repository (Not the change but an example of it in action)
    10. 5

      I still haven’t recovered fully from an illness that started two weeks ago, so this is the second Monday in a row that starts with catching up/deleting information from the previous few days.

      My team has asked for an “overview of software engineering” (it’s largely comprised of people who are new to the company or the company and the industry) so I’m giving that this week, I’ll talk through the “lifecycle of a story” from vague idea to deployed to production. I also have management training, but more “how to use our HR/L&D systems” than “how to be an effective manager”.

      Side projects: the only thing I managed to do from my sickbed was carry on the Russian learning, so there’s some of that. If I get some mental energy back I’d like to implement some GNUstep APIs I found stubbed out when I ported Freecell for Mac.

    11. 5

      Preparing a talk about AI misconceptions and misuse for the University of Milan.
      Guys, it’s hard to fit in just 20 minutes!

      Also, looking for a CI solution to avoid this sort of mess to hit other Open Source contributors.
      I’m thinking of a script based on git blame and awk, but I’m not sure… it wouldn’t work if you add git rebase to the equation.

    12. 5


      • Speed up deployments of teams so we can spend less time on it
      • Work on an interface to let devs deploys with some kind of semantics


      • Continue studying Haskell on CIS194, I really like the exercises, they a bit challenging, exactly what’s needed to actually have to spend a bit of time on it.
    13. 5

      I created a small python library to parse HTML meta tags, in particular opengraph and twitter card schemes, but it can support any custom meta tag scheme. It supports opengraph arrays and complex nested structures. This was harder than it seemed at first: https://github.com/harel/metatron/

    14. 5

      Transactions for sled! I’ve been going through the literature and arriving at a concurrency control scheme loosely based on cicada but a little less complexity around timestamp synchronization, but giving it a clear path toward implementing less centralized timestamp allocation in the future if 100+ core machines become targets. It has been super interesting as a distributed systems person working on a main-memory database to see techniques from the distributed world being applied recently to reduce coordination costs of transaction techniques. I’ve been holding off on releasing sled as alpha because of a few known rare dataloss bugs, but I think it might be better to just roll forward and be clear that it’s got bugs still, which will be the case whether I know about them or not, because it’s still so young.

    15. 5

      Back to looking at Elm alternatives (I got distracted last week. Purescript looks promising).

      Slowly start looking for a proper job again. https://angel.co I find useful to find interesting companies. Any other tips for that?

      1. 1

        Dont Forget to look at the Lobsters Linkedin group ;) You might find nice job descriptions there too!

        1. 1

          Linkedin? Lobsters? I’ll go search.

          1. 2

            https://www.linkedin.com/groups/8646069/jobs ;) Just ask to join if you’re not in the group!

            1. 1

              I signed up a few days ago, but the status is still ‘pending’.

              1. 2

                Sorry for the delay, you should now have access :)

                1. 1

                  got it, thanks!

    16. 4

      Back to work this week so my plans are limited. However, I have some solid plans on implementing macros and maybe even variables for my configuration parser. I’ll also clean up a lot of code and remove dead features like trimming strings (might move that into a function). I feel like macros are something most configuration languages are missing, with them you could make deploying a PHP app with nginx or Apache much much easier. I might also look into the viability as a template language for HTML pages, it should be possible, maybe it’s fun (Go lacks some alternatives to html/template)

    17. 4

      I’ve decided to get back into coding this week. I’ve tried many, many times since the 80’s but I always seem to derail myself. I suppose I’m a glutton for punishment because I keep coming back to try again. Next year I will be 50 (yikes! I did not think I would be saying that so soon) so I’d like to actually build something of substance that I can be proud of.

      I really enjoy talking to other coders, so I’m going to re-setup my microphone and start screencasting/podcasting again. If anyone would like to be a guest or would like to suggest someone just drop me a line at miles@coderpath.com. Website(s) will go live at http://coderpath.com and http://milesforrest.com when I’m ready to publish.

      1. 1

        Wow. You’re old.

        1. 1

          …and I’m not ever smart or good looking either. Not like you, of course ;)

    18. 3

      At work, I’m building out a budgeting tool for research universities in Django. So I’m spending most of my time writing tests.

      At home I’m refactoring a side project into a multi-tenant SaaS architecture. So that instead of using postgres’ public schema for everything, the public schema will just be used for shared tables and customer specific schemas will be used for tables that store data that needs to be segregated.

    19. 3

      Reading Programming Rust which I picked up from https://www.humblebundle.com/books/functional-programming-books ($15 USD). It is highly illuminating, and even reading the early chapters will probably teach you a lot, if you’re not already in the top few % of Rust experts. I’m 1/6 of the way through now, and have already learned/unlearned a ton of Rust tricks/mistakes. Amazing book!

    20. 2

      I have been working on learning some Go the last few weeks, mostly writing basic scripts and utilities so far. Thoughts so far:

      Being that I mostly work with Ruby and Python now, I’d been interested to try a language with real threading. I think I’m starting to get the hang of Go’s killer concurrency features, goroutines and channels, but I don’t actually have any killer applications for it in my list of things I was thinking about coding right now.

      Go does bring back some of my annoyances at spending way too much time wrestling with types in a way that seems to overcomplicate simple problems. That may be an artifact of using it on small scripts that don’t really benefit from that rather than large projects though.

      I am impressed by how thorough the standard library is, and how easy it is to add third-party libs.

      I think I actually like the compiler errors for unused vars and imports, even if they’re a bit annoying at times.

      Go handles strongly-typed multiple returns well too. I’d like to see something like that in other languages.

      I’m not sure I’ll bother doing anything else in it unless something I’m thinking of doing would really benefit from real concurrency or being able to run on other systems without a interpreter/runtime. Maybe I’ll play with Haskell again or Rust one of these days.

    21. 2

      As I write this, we’ve finally got production for $CLIENT migrated to a newer environment.

      Thanks to this accomplishment, I’m take a short break from regular work for $CLIENT this week, and hoping for no emergencies.

      So, hopefully some work on the Shell Script Library and associated tools to finally release an initial public version.

      Probably some more DIY around the house - more floodlights to install, another weatherproof powerbox to install further out from the last one.

    22. 2

      I’m sitting in an airport drinking waiting for my flight home from vacation, so I can proudly say I didn’t produce anything in the last week, but rather left behind a lot of stress.

      This next week I hope to pick up my rust CoAP library again. That’s a project I’ve been working on off and on again for quite awhile now and it’s in a state where I can kinda claim it “works”, it’s just not anything anyone would want to use. Now that the tokio updates are out, I want to actually start working on making it a useful library for others.

      At work (SmartThings), we’re preparing for the release of a rewrite of some of the LAN interface code, so I’m sure there will be a handful of coredumps from alpha hubs waiting for me to diagnose when I get back. Other than that, time will tell.

    23. 2

      Finding my stolen bicycles. It’s a hard life.

    24. 1


      • removing compile time device-specific configuration from the integration test suite so we can run our CI and tests in a more repeatable way
      • mentoring an intern who will add features to our development tools for our embedded development tools
      • spoon feeding the contractors we engaged to build some small mobile apps for testing
      • trying to find a side project to help reach my personal goals


      • triaging all of my various inboxes to get a handle on all of the things I absolutely must do or might like to do some day
      • trying to not dislike computers long enough to work on any one of my side projects: a personal wiki, a gtd application, a personal budgeting tool
      • attempting to make some sense of my finances and make a plan to buy some land
    25. 1

      A set of traits in Rust to map standard REST semantics to different contexts, among them Flickr, the local file system, CIFS, et cetera.

      At work I’m preparing a set of Python tutorials for co workers who want to cross the divide from R.

    26. 1

      I have been hacking on a fork of Festoon which is a random text generator from Research Unix.

    27. 1

      I am new here but I’ve always enjoyed these “What are you working on this week?” and have discovered many cool things from the previous posts, so thanks everyone.

      Recently I got a patch into Firefox that added some decentralization custom protocol schemas to the webextension whitelist. With that ready, I started working on a Secure Scuttlebutt client as a Firefox Add-on built with WebExtensions API. I recently got a grant to develop that and am maintaining a developer diary on Scuttlebutt itself but you can view it on the web too.

    28. 1

      It turns out there are no cross-platform data-directory libraries for C. I was looking for something to implement xdg support and the equivalents on windows/macos, but all I found was appdirs. Hence, c-appdir. I currently have a linux implementation piggy-backing off of libxdg-basedir, but I’m working on getting access to macos and windows development environments to code that aspect.