1. 20

It’s that time of the week again - time to discuss what you have done recently and any projects you are planning.

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


  2. 9


    As is typical, I’ve done things I had no plans to do in the last week.

    I was pretty interested in the NextBSD announcement. The dispatch, xpc and related libraries from Mac OS X are pretty nice and having them more widely available would be great. (An interesting aside, Microsoft has improved the implementation of the dispatch library on Windows as part of WinObjC project.)

    Thinking about the dispatch library was the prodding that I needed to get back around to looking at using it from Dylan. And, so began a few days of doing other things to get to that point!

    We have a bindings generator, melange, that I have largely been the primary maintainer and developer for over the last couple of years. It contains a home-grown C header parser as we haven’t had the time to deal with switching over to libclang. Attempting to parse dispatch/dispatch.h and friends immediately ran into some issues:

    • It used clang’s feature check stuff in the C preprocessor.
    • It used clang’s extension to C syntax for block signatures.
    • It used __VA_ARGS__ in the C preprocessor.

    I fixed all of that over the course of a couple of days of spare time. Then, I started trying to use the bindings to call dispatch_async_f to execute some Dylan code via a dispatch queue. At that point, it crashed once it tried to invoke a method that hadn’t been optimized to a regular function call (any dynamic dispatch) as the dispatch process requires some thread local data that wasn’t set up yet since we were running on a foreign thread and not one that had been created from Dylan. I started looking at fixing this and will (in the coming days / weeks) make it so that the runtime exports some functions for entering and exiting a Dylan environment on any thread (not hard) and make that work with both our C and LLVM compiler back-ends and run-times (also not hard). Just a matter of time, I suspect … until I see what else I run into.

    This is fun stuff (to me) and a good example of how just getting something working is just the start of a project. Quality of implementation and longer term maintenance take up a lot of time!

    Along those lines, I also spent some more time on the documentation fixing some minor issues and working on some larger cleanups in the background. The larger work will land in the coming days.

    Finally, I updated our GTK+3 bindings to work with a relatively current version of GTK+3 (whatever is provided by homebrew on my Mac). I also fixed a couple of issues with the GTK+3 backend to DUIM (reference). There’s a lot more work to do there, especially work best done by someone that actually knows GTK+3 (not me).

    I’ve also got a backlog of changes to LLDB to get out and pushed out for review upstream and I’m working on a fix for an issue with emscripten on Windows.

    All in all, an enjoyable week. This week, my daughter goes back to school for her reception (kindergarten) year, so I’m looking forward to some increased productivity.

    1. 6

      Over the weekend, I wrote and released a time travelling debugger for Cycle.js.

      Here’s a video and here’s a live example.

      You can check out the code/instructions here.

      I’m really excited by this project. I already can’t imagine writing Cycle.js app without it, and I think it has very cool possibilities. I want to add a feature for recording and exporting integration tests, and investigate fixing bugs in the past with hotloading.

      Much of this is inspired by Dan Abramov’s recent talk about similar tools for redux.

      1. 6

        This is a bit meta, but I on establishing “What are you working on”-style posts in the Rust community.

        https://www.reddit.com/r/programming/comments/3ioy9b/andrei_alexandrescu_c_guru_leaves_facebook_to/ https://forum.rustplatz.de/t/was-macht-ihr-diese-woche-kw-36-2015/55

        I’ve got a lot of community work on my plate this week: reestablishing the Rust Hack and Learn in Berlin and preparing for presenting Rust at OpenSourceBash, which is a Berlin event to present Open Source projects to potential newcomers.

        1. 6

          Career planning. Kinda burned out on consulting, have some major life events coming up anyways, so I’m looking around for a new job with new challenges and opportunities to learn and teach. If you know of Chicago or remote work in Haskell or Rails, message me (or ph@ my blog domain).

          Otherwise I’m finishing chapter 2 of 9 of the ebook on mutability and side effects in Ruby and week 6 of cis194, depending on free time after phone screens.

          1. 1

            I need to do some serious career planning, as well. I like my current gig, but it is short term, and I’m having trouble articulating to myself what I want to be doing and when.

          2. 5

            The IBM XL compiler. (My new job.)

            It’s fascinating working at IBM after working at a startups for the past five years. Things get very different in a team of 100+ devs and a code base with literally hundreds of man years behind it.

            1. 4

              That’s awesome! Can you say what sort of thing you’re doing with it?

              And learning a new and huge codebase is a lot of fun. You might enjoy keeping a notebook and seeing how your opinions of various things in the codebase evolves over time as you get to understand it better.

              1. 2

                I’ll be working on auto-parallelization transformations as part of the optimization stages. But right now I’m mostly getting used to new workflows.

                And keeping a notebook is a good idea.

              2. 1

                Enjoy! I interned on the TPO team years back, and enjoyed my time greatly. Working with the JIT team now.

              3. 4

                Making some progress on cross-browser hot-swappable JavaScript here.

                1. 2

                  The function proxy and versioning method is clever. The eventListener example seems especially tricky. Nice work!

                2. 4

                  I’m doing a few things:

                  • After I do some paperwork, I have a cool announcement. Can’t say till it’s signed….
                  • I made reference to getting an MVP of ArtisanAssistant out the door a week or two ago. Last night I came really close to actually doing so, so it should be this week.
                  • I want to do some investigations into the Rust ecosystem and the long tail of docs. Someone told me last week that there’s a bit of a lop-sidedness.to it, and that the official docs are so good that it set them up for disappointment in the broader Rust ecosystem. I want to try to figure out a way to evaluate this claim…
                  1. 4

                    Right now I’m looking into getting my amateur radio license technician class. But this weekend I’m going to a hackathon and will be making a DIY smart fridge kit.

                    1. 1

                      I was thinking about that the other day. A simple version could be a largish tablet (10"+?) with magnets stuck to the back just sitting on the fridge. It could default to either a shopping list (Todo or sketch application) or calendar app. Kind of expensive unless you happen to have an old one lying around (I didn’t :( ) and you would need some pretty strong magnets. And you might need charging every week or so? You could have a charger plugged in on the top of the fridge and dangle it down for a few hours each week when you need to charge it?

                    2. 3

                      Running some roundtrip numbers on image recognition in a canned video on the Jetson; depending on results, plugging in a webcam and doing a live test. Also, plugging something less janky than filesystem inotify for IPC between front and back end applications, although inotify is sweet in how simple it is.

                      1. 3
                        • Writing a post for my company’s engineering blog
                        • Continuing development of an internal CSS framework
                        • Try writing some custom lint rules with sass-lint
                        • Miscellaneous bug fixes and feature additions
                        • Continue writing chapter 5 of my steampunk novel
                        1. 2

                          Trying to set up a Vagrant test environment for our puppet repository so I can do a spring clean of our puppet & hiera code to remove cruft and be reasonable sure of not bricking the boxes in the datacentre. Having to work around spacewalk & rhn (don’t want to have to register with spacewalk on every vagrant up) and list of minor issues.

                          1. 2
                            • Preparing a Django REST Framework talk for Pycon Canada.
                            • Preparing some patches for DRF
                            • Working on Bernoulli numbers as a stepping stone towards learning more about the Riemann zeta function. Damn, Riemann was insane. How did he come up with this stuff? What was he thinking? Why didn’t he provide enough details? Why did he think the estimate for zeros on the critical line was accurate?
                            • Trying to improve my swim times. Still can’t swim 50m under 30 seconds. Best time was around 31 or 32 seconds.
                            • Getting a bit more roller skating done before the snow and ice make me switch to ice skates.
                            1. 2

                              Last week I published the code for my TODO list project called Muda. Here is a screenshot. It is a web app written in C++ and has an AGPL license.

                              This week I am going to add a README and some documentation on how to get it running. I think long term I might host it and make it available for a nominal yearly fee for those that don’t want to run it themselves.

                              1. 2

                                About a month ago I took over a project to redesign/refactor the drive management code in our product, after the person previously working on it left the company. After some transition time and ramp up, I finally got all the unit tests to pass last week. Now I’m working to get the system tests working. I get the feeling it’s going to take a while :-/

                                Outside of work I’ve been reading Game of Thrones.

                                1. 2

                                  I’ve recently developed a small tool to grab the certificate of a TLS service and going through the paces of testing it across a ton of different configurations and servers. It’s surprisingly painful to script getting the certificate using OpenSSL’s or GnuTLS’s CLI tools.

                                  Last weekend (22nd-24th) was Ludum Dare 33 so me, my brother, and a bunch of friends made a small HTML5 Javascript game called “Small Blob Friend”. Now that the primary voting is over, I’m free to make some improvements this week from the feedback we got.

                                  Lastly, I’m looking for a job. If anyone needs an excellent DevOps person, here’s my resume.

                                  1. 2

                                    Oh man… lots of stuff. Where to start:

                                    One. Just finished putting together a preliminary proposal for a possible project using our products, that came from an unsolicited inbound lead. That’s always exciting, as I like it when people come to us.

                                    Two. A lot of what we do involves integrating existing OSS components into our overall stack. Right now I’m working on writing up our process for evaluating and integrating other projects, as I work through doing one. Once I have it all documented and well defined, I want to start trying to apply some of Doug Engelbart’s ideas about “bootstrapping” (his version of “continous improvement”) to improve our ability at improving our ability to evaluate and incorporate new projects.

                                    That “meta” stuff aside, the project I’m working on right now has a Maven dependency that is broken in the public repos. I’ve been meaning to setup an internal repo for a while anyway, so I think this week I’ll be setting up Artifactory (or whatever) so we’ll have it for local use anyway. And then I’ll download and build that broken dependency and install it into the repo.

                                    Then, I’ll be doing some work on the demo server, and will probably start looking at some work on SSO support in our products that is seriously lagging.

                                    If I have any free time, I’ll be continuing my process of learning some new languages and tools. I’ve got quite a laundry list of things I’m working on (see: http://mindcrime.github.io) including R, Common Lisp and more.

                                    1. 1

                                      Porting CouchDB 2.0-alpha to Windows. Made a lot of progress over the weekend - I kind of need a break now. This involved getting Erlang 17.5, ICU 55.1, libcurl 44 and SpiderMonkey 1.8.5 to build under VS2013, plus a whole lot of tweaking of various rebar files to get the NIFs to compile correctly.

                                      It runs, though it crashes in some common scenarios now. For now I’m handing off to my partner in crime, but if others feel like helping my latest notes are online.

                                      1. 1

                                        Nothing too crazy. Getting some lxc containers going with MPI and Slurm on a little linux server (16 cores) so that I can play with a program called CRAM, developed at LLNL. I’m not doing it for any purpose besides learning about these programs. In the future, I’ll be doing some tests on network congestion in supercomputers.

                                        Also, stressing about grad school apps. I’m thinking about getting some sort of research-related position after I finish undergrad this year. I’d like to learn more about HPC and gain some programming skills before starting a Ph.D. in CS. My only idea right now is GaTech Research Institute. Anyone have any ideas?

                                        1. 1

                                          This week was more an enjoyment week since i got my first job offer.

                                          Just got the news that i have cleared amazon’s first round hence starting to practice competitive programming (which IMO is a waste of time).

                                          Experimenting with Go’s new buildmode, maybe a Go lib to communicate with an API and a Qt desktop interface would be a good idea.

                                          1. 1

                                            Are you concerned with all the bad publicity Amazon has gotten recently about 80-hour weeks and such?

                                            1. 1

                                              Not really, I like writing code and solving problems, i have been doing it since i was 12. Plus amazon’s name as a first company is good for my career. If it doesn’t work out it does.

                                              But i need to clear the next rounds first. :)

                                          2. 1

                                            I got the first file successfully shared through our end-to-end encrypted, file storage network, Peergos, using the demo. Super excited about that. The UI still needs a lot of work, but that was a big milestone. Users can send follow requests to each other in a similar fashion to instagram. However, the network can’t see the sender of a follow request, to hide your friendship graph.

                                            This week I’m also writing a Java binding for the IPFS HTTP api. (We hope to use it in Peergos).