1. 13

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.  

  2. 6

    This is my one week at home between the end of my third year at UChicago and the start of my internship at Braintree. I’m spending a lot of time on my health: running to keep my body fit, snuggling with my puppo to keep my mind fit.

    I’ve written a blog post about the basics of PLT. I have at least two more posts coming out this week that have been kicking around for a while. Stay tuned!

    I’ve also spent time developing a hugo theme that suits my needs. I’m pretty happy with how it turned out! You can see it in action on my personal site.

    I have a fun project in the works; it’s an interpreter for a silly language that was part of an incredible final-lecture game-day hackathon in my recent programming languages class. It can’t quite be made public yet, but I’m definitely going to write something up and share it as soon as possible.

    I’m also culling through my dotfiles in anticipation of my coming internship. I recently spent a lot of time slimming them down to the extreme, just throwing out entire modules, in the name of minimalism. It’s been great. I want to continue slimming down and making my environment more visually consistent, as well as more focused. I’m endlessly frustrated by my shell: bash, zsh + oh-my-zsh, and fish all have their own quirks that bother me to no end. Per this commit in my dotfiles, I’m currently on “Revert “Revert “Revert “Revert “Revert “Revert “Move back to fish!”””””””. And that’s just the actual git reverts. If anyone has any suggestions for a clean, modern, minimal shell environment, I would really love to talk to you!

    1. 2

      I’m pretty happy with my current ZSH shell config. It uses antibody, so the config is pretty small with everything being pulled in from plugins (and I split the bits I did want from my old config out to plugins to make them reusable) and it’s not using any of the big frameworks like Oh My Zsh, or Prezto, so it’s fast compared to what I had before. If you’re interested, you can find it here.

      1. 1

        Hey, so I finally got around to taking a look and I really like your setup. Can you elaborate a bit on some of your custom plugins? I can’t find any descriptions for these:

        haegin/zsh-magic-history
        haegin/zsh-magic-completion
        haegin/zsh-fzf
        haegin/zsh-asdf
        haegin/zsh-rationalise-dot
        
        1. 1

          Sure thing. I’ll work on adding some readmes to those repos over the next day or so.

          The shortest version is that they’re the bits of my shell config that I couldn’t find in existing plugins, but that’s probably not useful, so here’s a summary of each:

          zsh-fzf - fzf is a fuzzy finder I use. This just sets up the plugin. zsh-asdf - asdf is a programming language version manager with plugins for different languages. This sets it up in the shell. zsh-rationalise-dot - this plugin sets zsh up so when you type more than 2 dots (..) in a row, each dot after the second adds /... zsh-magic-history - sets up history settings that work across multiple shells, so you don’t need to open a new shell to access history from other shells. zsh-magic-completion - this just copies completion settings from the repo I originally copied my config from (https://git.madduck.net/etc/zsh.git). I can’t remember what exactly I found myself missing when I didn’t have this, but I copied it over pretty quickly and haven’t taken the time to go through it to work out if I want to change anything else.

          1. 1

            Thanks, that helps a lot!!

        2. 1

          Ooooh, this is really tantalizing. I like this a lot. Thank you very much for the link!!

      2. 5

        This week I’m:

        • Donating 50 EUR to OpenBSD
        • Updating the list of 44CON talks
        • Continuing the Raw Hex migration to self-hosting everything without external dependencies

        Last week I was at two conferences which was fun but I’ve been pretty ill. Finally started getting better this weekend, so I’m going to take it a little easy but I have a lot of catching up to do.

        1. 5

          Last week I successfully got my Soviet-era desk phone working with my Incredible PBX and a Granstream HT502 ATA that supports pulse-dialing.

          This week I’m aiming to:

          • Finish writing an article about bOING bOING (the zine) for neondystopia.com
          • Document my PBX setup into a series of articles/posts to share the configuration info and have good notes for myself.
          • Troubleshoot my red Western Electric series 500 rotary phone, which looks like it might have multiple issues involving wiring and a dead element in the handset.
          • Finish an article I started writing years ago about emulating a z/OS mainframe.
          • Work on recreating the iconinc yellow Motorola pager from the movie Hackers (1995). I have all of the supplies and need to start it.
          1. 5

            Not exactly “work”, but providing my public Multics service, I’m continuing to learn more about programming in Multics and trying to bring new things to it’s modern users.

            This week I am hoping to complete an implementation of curses that plays nice (that is, works) with the Multics video window system invoked — there is an existing port of System V Curses which doesn’t, and has some other issues, with no extant sources. Once this is complete, a lot of my 85%+ done projects will essentially be completed. Rogue and NetHack and vi, I’m looking at you!

            The games aren’t “real” work, but they are a great learning experience for me, in addition to being a huge draw for casual users, many of whom stick around to learn more about the system and the fascinating people who worked to create it.

            I have way too many other small things to do, in fact, too many to list, but this is a big one I hope to get done this week since it’s blocking otherwise completed work I can’t show off.

            You can visit at https://ban.ai/multics or connect directly with mosh or ssh to dps8@m.trnsz.com

            1. 4

              Main work/life news for me is that I signed a contract to start next year (January 2019) as Assistant Professor of Computer Science at American University in Washington, DC. So I’ll be moving back to the US. Should be interesting and will definitely be a change of pace, though I’ll miss living in this beautiful seaside town in Cornwall.

              In work-adjacent noodling, added a feed to my paper-reading log per a request. The structure of Atom is simple enough that it was pretty easy to DIY it using a Mustache template.

              Besides that, working on something for the General Video Game AI competition. My goal isn’t necessarily to build an agent that performs well, but to better understand the structure of the space. Characterize the different types of challenges encountered by agents in these kinds of arcade games, understand how algorithm/compute/etc. choices relate to performance, and so on.

              1. 2

                Congratulations on the new job!

              2. 4

                Trying to finish my PhD thesis :-D

                1. 4

                  I’m in a new country, so I’m studying the official language. It’s very hard, but also very rewarding. The natives get quite enthusiastic when I try to communicate in their language, and immediately switch back to it if I have to use English for something. They enunciate more clearly, and some want to chat for a bit and exchange language tidbits. “So, now you have to give me some [my first language] in return!”

                  1. 4

                    Moved my language project (dependent typed systems programming language) to a new Github organisation: https://github.com/pikelet-lang - been working up to a 0.1 release, which will sadly just be an interpreter. I am definitely aiming for unboxed data types and closures, linear types, compile time evaluation, and low level interop in order to win the right for the ‘systems language’ moniker though.

                    1. 3

                      Outside of work, I’m working through two coursera classes (maths for machine learning, algorithms & data structures), reading an intro to quantum computing (got some basic exploratory programs working with the Microsoft Quantum SDK and Rigetti’s pyQuil), and trying to refine and explore some ideas I’ve had while learning about natural computing.

                      At work, I mostly fuzz YAML files, but I’ve started to get some actual development work for the first time in about a year.

                      1. 3

                        Still my reimplementation of the FastText embeddings papers in Rust. Now mostly working on optimizing hot loops, while testing on 400M and 28B token corpora.

                        I got quite a bit of a performance improvement by replacing use of prefix sums + binary search (Har-peled, 2011, though the technique is much older) for weighted negative samples by drawing from a Zipfian distribution and writing more SIMD-vectorized loops.

                        The implementation’s speed is now in the same ballpark as FastText, and is mostly bound by memory latency. Though I have some ideas to make it faster (e.g. reusing negative samples).


                        Besides that I was updating some of my older Tensorflow RNN models to use dynamic shapes, so that I can use larger batch sizes during prediction.

                        As usual, all of this is a bit delayed by teaching and other ‘distractions’ ;).

                        1. 3

                          Another slightly odd week, after last week’s unexpected shenanigans travelling to Edinburgh to celebrate my employer being acquired successfully.

                          This week I’m off to meet my new team/employer in person for the first time (job change in August. Unrelated to buyout.) Which means more travelling, albeit to Sheffield this time. (Sheffield is lovely to boot, any excuse to visit.)

                          Working on a parser for a client in-between everything else, which is the first language parsing I’ve seriously undertaken. Interesting stuff, currently writing a library for Ruby so looking at parslet to do the heavy lifting for me.

                          Also the good weather in the UK amazingly continues, which means my garden continues growing. Bought a chainsaw last week and chopped a load of stuff down to start tidying it up, but there’s (as ever) always more to do.

                          1. 3

                            Mostly going to work on finishing up my thesis, and then I’ll be working on a new OS with extreme attention to scalability over multiple cores.

                            Other than this, I’ve been spending some time on the Crystal language. It’s quite niche, can’t wait for it to have support for parallelism.

                            1. 3

                              Work:

                              • Trying to make our convex optimization for energy storage controls run more efficiently and quickly (likely just tweaking these parameters until I get better run times with slightly lower precision)
                              • Continuing to try to raise money in a land where shitty scooters and fruit juicers can raise tens of millions of dollars, but a small clean energy analytics company cannot

                              Home:

                              • Continuing to learn more about quantum computing and planning on writing a basic quantum computer emulator to make sure I understand the fundamentals
                              1. 3

                                At VelocityConf in San Jose, giving a talk on Pat Helland’s paper “Beyond Distributed Transactions” and how we implemented the ideas in Wallaroo. And probably fixing more Pony bugs. We’ve been knocking off a lot of high-priority fixes lately.

                                1. 2
                                  • Either beginning work to migrate to the proposed; or researching a new proposal for a replacement model/Db adapter/etc system for $CLIENT1

                                  • Adjustments to a temporary data-collection tool for $CLIENT2

                                  • for $HOME

                                    • finding a new front door for the renovation. Apparently no amount of treating, oiling or lacquer will protect the pine door we’d chosen.

                                    • planning what/how electrical wiring I’ll be doing once the builders have finished, and what if anything they can put in place in the brickwork to simplify things later.

                                  1. 2

                                    I’m reviving/salvaging an old project I built for an employer about five years ago, and was allowed to open source.

                                    The specific usage of the project was a bit specific to that employer, but it had some really cool concept that can still be very useful in the area of network automation, so I started this weekend trying to salvage the parts. Working with five years old code is a bit challenging - not all components are backwards-compatible I found out.

                                    For the interested, it was written in ruby, with Sinatra as the microframework behind.

                                    1. 2

                                      Outside of work, I’m trying really really hard to figure out what GUI toolkit I can use for Go that can also deploy to Windows, statically linked, that won’t be too much trouble to install. Surprisingly complicated, I’m almost tempted to go back to something like C# and Mono for the purposes of the app in question.

                                      Context: Father is a doctor, and they’re changing their “doctor app” (for lack of a better word in my vocabulary) to something else. The “something else” lacks a pregnancy calculator. Super easy: I need a date of last periods from the user, and from there I need to figure out 1- How many weeks are they along, and 2- when is X, Y and Z weeks from the date of last periods, to plan for follow-up appointments at weeks X, Y and Z, and finally 3- the due date.

                                      It’s super easy to compute in Go, because for date managements I can just do like dateOfLastPeriods.Add(280 * 24 * time.Day) and I’m off to the races. Also I thought it’d be cool to do it in Go, and figure out how to wire a GUI to that, statically linking a library to it, like QT, but it’s less simple than anticipated.

                                      1. 2

                                        Last week I started building a WebSub hub in rust, didn’t make as much progress as I wished to. This week on my free time I will continue in this endeavor. I also used to spend a small amount of time maintaining the Hawkpost service each week, this one will not be different.

                                        1. 2

                                          Work: Think I may finally have finished my re-write of our iOS capture code, to split off the UI from the back end. Took a bit - I’m not really happy working in Objective C++, that’s for sure. Now for some more cleanup and get out of the iOS development business again.

                                          Home: Finish cleaning up my various web sites and the providers. I am slowly consolidating on name server provider, DNS provider and VM provider. Maybe get some of the web sites updated even!

                                          1. 2

                                            Getting XOAUTH2 to work with isync / mbsync.

                                            If not, I’ll be writing yet another program to scrape mail out of Google’s email walled garden.