1. 28

It’s Monday, and that means it’s time to share as much or as little as you’d like about the thing you’re working on.

  1.  

  2. 15

    Trying to replace an old Debian on a G4 Mac Mini with OpenBSD. However I am too old for this… I feel like I don’t have the same energy to troubleshoot a black screen on kernel boot or OpenFirmware commands.

    Does anybody else feel like this, too? Like the years of experimenting are long gone?

    1. 9

      I have a fond memory from when I was a teen of spending a weekend getting a Gentoo server running. I spent half of the time on IRC asking questions and the other half on wikis/forums digging for answers. I remember having some problem getting the bootloader to run and someone suggested taking the button battery off the motherboard for a few minutes and then trying again, and having my mind blown when that actually worked. It was during times like those that I was forming the knowledge basis that I’d need for a career as a programmer, and I’m incredibly thankful I spent the time doing it.

      I definitely don’t spend my weekends doing stuff like that anymore, partially because I don’t have the energy. Sometimes that makes me upset (have I lost my passion? am I still learning?), but then I remember that I do this stuff for 40 hours a week and that’s a lot more time than I spent as a teen, and I try to give myself a break.

      1. 8

        I remember that I do this stuff for 40 hours a week and that’s a lot more time than I spent as a teen, and I try to give myself a break.

        That’s a great perspective.

        This evening I had ~3 hours to kill after the little one went down. I decided spreading 5 tons of gravel to finish my French drain was a better use of my time than messing around with a computer. So I guess that’s what I’m working on this week - taking a huge pile of rocks and putting them in a long trench. It’s incredibly satisfying watching this kind of progress.

        It’s also making me wish I had a better way to visualize what we do. I don’t think watching my Github punch card increasing in size will keep me happy forever.

        1. 4

          Github Public Activity:
          https://github.com/REPLACEWITHUSER?tab=activity

          I often just look at it to feel better about spending the last few hours/days/weeks on something. “Ahh, finished, hah, that bit of code was fun, gah, wasted many hours fixing that bug, urgh, that’s some ugly code…”

    2. 15

      Wrapped up the RTM of the next version of what we’ve been working on for almost two years.

      http://tft.io/2015-06-22-82.jpg

      1. 2

        …force push?

        1. 1

          Here you go: git push origin master --force

      2. 9

        Three Rust-y things. The last one is the one I’ll prioritize the most, because it is the only one with a deadline.

        • rsedis: Redis re-implemented in Rust https://github.com/seppo0010/rsedis/

          Trying to add harder and less appealing features. During the weekend I did “active rehashing” (main hash tables may shrink to fit in steps without a long blocking rehashing process) and I’m considering starting to work on rdb (or maybe aof) persistence, or redis’s intset (rust’s VecMap).

        • Sending a path to Rust core stdlib

          Implementing a feature I run into a lacking API in the stdlib. I asked in #rust-internals and I was told that the problem was mentioned several times and nobody was working on it. The next steps would be to try to implement an API (for all Map and Set) and submit a PR to get feedback.

        • A Rust talk about my experience building rsedis (see first point)

          I sent a proposal to RustCamp and to a local meet-up group. Neither of those are accepted, but I want to get ready because I don’t have much experience as a public speaker (nor with Rust).

        1. 7

          I didn’t get much done out of work for the past few weeks because I was seeking to change jobs. I found an interesting opportunity and I’m going for it, and in a month’s time I’ll be working at the new place; I’m super excited! Next few weeks will be cleaning up after myself at my current workplace. Then, adjusting to the new one, after a full week off.

          1. 3

            Congrats and good luck on the new gig!

          2. 7

            More vendor integration. Sigh. I hate healthcare so, so, so very much–even when we get to work with good folks.

            Otherwise, I need to start a repo for elixir-2d-physics, which is going to be my (laughable) attempt at a 2D physics engine in Elixir. Basic idea is to just see what kinds of things make sense in that language–does each process do its own collision stuff, does everyone function on the same time scale, or what?

            It should be pretty trippy–looking forward to making a blog post about it.

            1. 1

              Interesting project! I’m impatient for the blog post– are there any resources you’ve been drawing inspiration from?

              1. 2

                So, I kind of like parts of Box2D, and a long time ago when I looked at Physx (back when it was Novodex, lol), I saw some things I liked.

                Main thing, though, is that a lot of that is very OO…set a body, maybe register callbacks, whatever.

                I’m actually curious about an idea where, for example, physics simulation is done on a continuous and ongoing basis instead of during, say, a fixed time during a frame (“go resolve collisions, then draw, then move, then whatever”) we just let the processes simulate themselves whenever.

                Which in turn is weird, right, because we’d really prefer that the objects all simulate against the same world state, and that kind of implies the “simulate objects, new world state, simulate objects, new world state” model.

                1. 1

                  One process per entity, and then a world state process exchanging messages with each entity? Very interesting challenges, makes me want try elixir

            2. 7

              Today, I’ve been working on proper name parsing for my BibTeX parser (and exporter) in Racket:

              http://matt.might.net/articles/parsing-bibtex/

              And, I created a greasemonkey script for automatically rendering BibTeX entries for dl.acm.org articles:

              https://github.com/mattmight/bibgrease

              I plan to add a script for pubmed next.

              And, then, I’m going to integrate citation support into my academic wiki:

              http://matt.might.net/articles/low-level-web-in-racket/

              After that, I’d like to create a bare-bones collaborative citation management app for my lab that integrates with the wiki.

              1. 2

                Hi! I enjoyed your article on BibTeX parsing, it brought back some fond memories of working on BibDesk. I recognized your pain - nested braces and macro support both seemed to be missing in the various tools I wanted to use. Kudos for tackling it.

                I used to have a bunch of obscure BibTeX test files laying around then, I’ll see if I can dig any of them up - the bibdesk testfiles directory has a couple, but there were more. We were using Greg Ward’s widely used btparse library, and found a few bugs in name parsing. IIRC we sent patches but its last release was 2003, so…

                The UI limitations of a shared lab web citations db I was using in 2001 were what led me to start BibDesk. I’ll be curious to see what you do there. I’m also curious, have you looked at Ward Cunningham’s “Federated Wiki” project? It seems like a great fit for academic research.

                1. 1

                  Thanks for the testfiles pointer!

                  Since I put it out there, folks found a number of bugs quickly, notably with name parsing in corner cases. This morning, I fixed the bugs, but it needed a substantial (and more principled) rewrite of the name-parsing approach. Part of the problem is that to do it well gets dangerously close to parsing TeX itself, which is a nightmare (if perhaps a necessary nightmare at some point).

                  I’m going to add a –tokenize flag that will break values into tokens meaningful to TeX, which will fix the remaining (known) issues with name parsing. It should also make it easier for someone to generate correct HTML (or some other format) from an entry.

                  I haven’t seen the federated wiki project, but it’s a great idea. I’ll look deeper into it before I do much more with the wiki.

              2. 6

                This week is a Mozilla ‘work week,’ so we’re all in Whistler for face to face hanging out. I’m really excited!

                I’m also giving a talk at Ruby Remote Conf about Rust and Ruby…

                I’m thinking my spare time will be more like ‘go hiking, you’re in the mountains in Vancouver’ rather than side projects. Gotta take some time off some times, you know?

                1. 6

                  I finally submitted my Endless web browser for iOS to the App Store for approval. I’ve been using it as my primary web browser on my iPhone for probably 5 months, and I figured it’s time to let other people use it and help me add features and fix bugs.

                  1. 5

                    I’ve made some hasty progress on the Noisebridge library scanning project that’s been on the slow burner for the last while. I have a working golang tool which reads ISBNs from stdin, looks for them using the OpenLibrary API, and then records them in a PostgreSQL database which is feeding a small flask app. There’s still lots to do and clean up, but it’s a fun chance to spend some time with golang. Code is on Github

                    1. 5

                      So, this is my first post in one of these threads. My primary project at the moment is a software synthesizer as a VST plug-in.

                      This past weekend, I got another beta/alpha built and distributed to a small pool of testers, and this week I’m handling the ensuing bug-reports (which include null pointer derefs, various openGL platform issues, and just a wonderful smörgåsbord of smaller things). I’ve brought a designer on, so I’m looking forward to the UI (which currently looks like this) becoming less perfunctory and nicer both to look at and use.

                      1. 1

                        I’m an amateur synth buff, so if you have an OSX VST or AU available I’d be happy to help you test!

                        1. 1

                          Sure, I’ll drop you an email. Always good to have more people kicking the tires.

                        2. 1

                          a VST plug-in.

                          Does it crash every 5 minutes, taking down the host application? Just kidding :) In my company’s experience that seems to be a common problem with 3rd party VST plugins. IIRC we now start a separate process for every call to a VST plugin so that it doesn’t take down our whole application when it inevitably crashes.

                          1. 1

                            I’m curious as to what your company does!

                            It’s definitely been my experience that not all VST plugins are well-behaved. I suspect I have one that subtly corrupts memory in the host and leads to random crashes when loading plugins.

                            That said, my synth has been rather stable. I have received very few bug reports of crashing (compared to other issies), and I’m valgrind-clean to boot.

                            1. 1

                              We just make audio and video editors. I’m not in the audio team, but I hear stories about the pain of dealing with 3rd party VST plugins that are essentially a black box but are potentially lethal to the host application :)

                              Running valgrind or even just knowing what it is probably puts you in the top 1% of VST programmers :)

                        3. 4

                          I started working on an Android app for Lobsters about three weeks ago and I’ve been hacking on it here and there basically every day. I got pretty distracted with finals week and moving housing but everything seems to have settled so now I’m kicking it back into high gear! I’m waiting until my actual job kicks in next week and things will get quite interesting.

                          1. 4

                            Still trying to write some articles in my getting started with embedded development series, while building a robot and writing up the project. Haven’t gotten much done on it this week, hopefully this week is more productive in that area. Finding myself still less motivated to partake in tech culture, working on a mini talk for Papers We Love, Too next week (should probably have started sooner :/), and continuing to break out the telescope as often as the Bay Area allows. I’ve got another embedded project in the planning&md;should finish the robot first, though.

                            1. 4

                              !$WORK:

                              • ox, my Clojure clone in Clojure is making headway for the first time in ages. The interpreter is written entirely in terms of the state monad using immutable data structures. I finally got the environment model hammered out today and will likely dump a bunch of free time into Haskell and type theory to try and get a handle on what the prior art is with regards to the type systems I use in my own code and what I find useful.
                              • grimoire has finally gotten some long overdue love in the form of a rewrite of all examples. Some CSS work has been done as well to try and improve the browsing experience and more is on the way. The extent to which Grimoire is just a web host for existing documentation and should serve as the host for comprehensive articles is currently undergoing reevaluation leaning towards comprehensiveness at the price of my time and overall complexity.
                              • Exploring LA!
                              1. 3
                                • Back to writing more of Prose for Programmers
                                • Convincing product managers to update our browser support policy
                                • Planning a major change to our UI architecture
                                • Writing a blog post about our TypeScript experience
                                1. 3

                                  Working on getting a proper parser generator to replace my project’s hand-rolled parsers. I’m starting to write enough configuration languages to warrant this.

                                  1. 3

                                    Figuring out how do to push notifications for https://sublevel.net and some other stuff.

                                    1. 3

                                      This week I have been contributing to the color picker widget on www.husl-colors.org. The widget previously just let you drag sliders or click on the color map to select a color. I added the ability to enter H, S, L, or a color hex code in text boxes, so you can convert any color between RGB hex code and HUSL.

                                      To manage redrawing of the view after any combination of H, S, or L changed, I wrote a custom miniature event propagator. All the data about which view-updating functions should be run at what time are stored in an array of objects, redrawFunctionsInSafeOrderWithDependencyData. Every function that changes a variable just needs to call redrawAfterUpdatingVariables and pass in the variables it has changed plus a key identifying the source of the change – slider drag, clicked on the map, etc. That function uses the data structure to avoid redrawing displays that won’t be affected by the variables that changed, and also avoid redrawing the input that just changed.

                                      I didn’t want to pull in a library to do that event redirection, since the project is someone else’s. But I am curious if there is a microlibrary that implements what I did in a more generic way. I would want to see how they handled not firing a view-updater if the control that would be updated is the one that fired the change event in the first place. My API for that has a small bit of duplication – can another library avoid that?

                                      1. 3

                                        I’m working on being civil. Still not 100% there but I’m reading the docs

                                        1. 2

                                          I’ve been toying around with a library that hot-swaps JavaScript code cross-browser. I still have some edge cases to iron out ..

                                          1. 2

                                            At work: I’ve been off and on working to get our logging server setup in SaltStack. I suspect it would be easier if I were more of a sysadmin, but I keep getting frustrated with it and jumping to other stuff.

                                            I’ve also been looking into Scala. A couple people went off to a Scala conference of some kind a few weeks ago, and came back and are giving a series of presentations/hands on “workshops” on it. My initial impression is that I don’t like it, but I’ll see how it goes.

                                            I also may be moving off of the white box testing team to working on the drive management code, so I’ve been looking into that.

                                            Outside of work I’ve been reading some old books on various computer topics. One of them, “Man and the Computer”, by John Kemeney (co-developer of BASIC) was particularly interesting. The author predicted quite a few concepts that eventually came true, but got the technical details amusingly incorrect in most cases.

                                            I’m now reading through “Communication Nets: Stochastic Message Flow and Delay”, which I picked up in a used book store for cheap.

                                            1. 2

                                              Still learning Haskell, this week beginning playing with pet problem of genetic algorithms and neural networks to get some real experience. Travelling, working on unMonastery.

                                              1. 1

                                                what’s your role at uM? intriguing project. The copy on the website is a bit dense though

                                                1. 1

                                                  I’m working on the unMon project in Athens, which is at an early stage in its development. It’s a broad project so there’s lots of stuff to work on, but I’m particularly interested in what a network of say 10 of these spaces around Europe looks like. My focus is on seeing if we can make ‘light’ structure for co-working and co-living to make spaces where people can safely ‘exit’ the existing intertwined system infrastructure, for a cost of ~500EUR/person/month. I’m also interested in logistical questions when there are 10 (or 100, or 1000) spaces and you want to share resources, co-ordinate work, collaborate on large projects, etc.

                                              2. 2

                                                Arranged to rent an office for use in my new remote contracting job, which starts next week. It’s an ops role, which is an exciting change from development.

                                                Today I’ve been a STEM Ambassador, chatting to students participating in a VEX Robotics Challenge. Good fun!

                                                1. 2

                                                  At work, going through a lot of Python and flask for an api. I’m sick of web related stuff, I don’t like it. I want to go back to C.

                                                  For non work, I got my port of ghc 7.10.1 to alpine linux “finished”. Or started really depending on how you look at it.

                                                  https://github.com/mitchty/alpine-linux-ghc-bootstrap/tree/master

                                                  So, going to be using that to make me proper static binaries on linux that run on any glibc flavors. Been wanting ghc on alpine linux for a while and finally have it. Hooray.

                                                  1. 2

                                                    Re-learning that sometimes you need hammock time, not screen time, to solve a problem.

                                                    1. 1

                                                      A couple of things planned, mainly around revamping the media center (my RPi2 just arrived today) - this time I’m planning to boot it with an open distribution and extending it to also bridge the skybox over the wifi adapter since I moved the router upstairs.

                                                      At work, I have been mostly getting my head around ansible, docker, netscaler and learning ruby/rails.