1. 13

It’s Monday, which means it’s time to discuss your plans for the week. Feel free to ask for help - many members of the community are experts and more than willing to share advice or expertise. Self-promotion is fine in these threads, so please provide ample links.


  2. 13

    Just launched a project I’ve been working on for six months, the new Soundslice sheet music player: http://www.soundslice.com/v2/auld-lang-syne/

    It renders sheet music and guitar tabs client-side, and it syncs the notation with an audio recording. Plus it’s responsive (try resizing your browser window) and tweak-able in various ways. See my demo video for more.

    1. 1

      Beautifully done!

    2. 12

      I moved out to San Francisco last week, and today I started my new job at CloudFlare, working on SSL infrastructure and some other systems, security, and crypto-related stuff. I’m looking forward to what’s to come here.

      1. 2

        Congrats on the new job and welcome to SF!

        1. 1


        2. 1

          Congrats kyle!

        3. 7

          With Open Dylan, I’m working on a new build tool chain (similar to things like lein). This is going well and initial results are very promising. This is using a command system that is more like what a Lisp Machine provided (http://dishevelled.net/shots/mcclim-listener.png), so it is pretty fun.

          Last week, we also got a Dylan mode for CodeMirror landed in the CodeMirror repo. It has room for improvement, but we’re happy to just get something in place for now. :)

          For work, I’ve been working on changing how some parts of the embind part of emscripten work so that it can be updated to better integrate with emscripten using emscripten’s JS library format.

          1. 6

            This week I’m hoping to release an alpha of cgox, a tool for cross-compiling Go applications with cgo enabled.

            First, a bit of back story. Two of my favorite Go features are easy cross-compilation and single static binaries. However, these features don’t work well cgo. For those that don’t know, cgo is the official bridge for calling between Go and C code. When cross compiling using the provided tools, cgo is disabled, which means you can’t cross compile any code that calls into C*. Before Go 1.2, you also couldn’t statically link C libraries with your Go binary, meaning the machines that ran your binary also had to have the same libraries. Not a problem if you control those machines, but unreasonable if you’re distributing command line tools.

            So how does cgox work? I’m taking advantage of a fork of crosstool-ng that’s able to build native toolchains for Linux / Windows / OS X. To cross compile a binary, cgox downloads the needed toolchains and uses them instead of the system’s C compiler. I download instead of build because toolchains take at least 20 minutes to build and several gigabytes of free disk space.

            The end result will be the ability to create Go binaries that statically link to C libraries using a single Linux build machine.

            What cool things can you do now that it’s easier to use cgo? Capture packets with libpcap. Program games using SDL. Even embed Tor to create anonymous applications.

            *This isn’t entirely true, as you can write C functions in the C dialect understood by the Plan9 compilers, which is similar to C89.

            1. 4

              Evaluating role-based UI generation with AngularJS. I have a backend with security roles, and I’m trying to find out how to render role-specific menu entries with Angular. I have only picked up Angular 2 days, but it’s extremely productive. It replaces Play framework CRUD module for me, without any loss in productivity (edit and refresh development cycle.)

              My ultimate goal is to develop a process-aware UI with Angular, integrating security (Apache Shiro) with workflows (Activiti) and business rules (Drools.)

              Wish me luck, I’m gonna need it.

              1. 4

                At $work, this week is marred by waiting for vSphere to do… anything. What a miserable tool it is, it’s slow, ponderous, and terribly designed. I’m unfortunately hamstrung having to use the UI instead of something scripted and (therefore) reasonable to spin up VMs, but hopefully I’ll be able to keep it all to a minimum and move on to the fun stuff.

                I’m also setting up a Riemann server. I’m really interested to see how it plays out, we need a good monitoring solution, and I really like the openness of Riemann for that, Protobuffers make it easy to interact with, and the full weight of Clojure is very nice for doing the postprocessing part.

                At !$work, I’m continuing to work on katuv — my Domain Specific Language Definition Language (DSLDL) library. It’s rapidly approaching some form of completion, I just have to get the final pieces in place to turn the intermediate AST into the final parser for the target DSL. I’ve really enjoyed working with the ast gem in getting this working. The AST::Processor implementation is effective and simple to use, and has made writing the interpreter bits pretty easy. Once this final part is done, it’s just a matter of doing some polish and releasing 1.0, the other fancy stuff (AOT Compilation of DSL Definitions, Some wrappers around writing processors to add some static checking, as well as some reorganization of code) can wait for a later release.

                That’s it for me this week, I think.

                1. 3

                  At work, I’m finishing the break-up of my ffmpeg-based subtitle decoder, and moving on to testing and documenting the interfaces.

                  Besides that, I’ll be working on a Brackets extension for Open Dylan and/or a caching FUSE filesystem driver for network drives.

                  1. 1

                    If you do the Brackets extension for Open Dylan, you’ll probably find my work on the build tools useful. (They’re meant to be an improvement over just running dylan-compiler.)

                  2. 2

                    Just got back from visiting Stanford and Berkeley, so I didn’t have much time to hack on anything. I did add some more functions to my Go LISP interpreter. I think this week, I will tackle getting a basic FFI working so that you can directly call go functions from LISP.

                    1. 2

                      Company I work for, HERE (http://www.here.com). is having a hack week where we get to do what we want for a week. So I am participating in a team hack. Fun stuff!

                      1. 2

                        At work: product design.

                        For fun I’m learning about topological models of distributed computing by reading Herlihy, Kozlov, and Rajsbaum Distributed Computing Through Combinatorial Topology. It’s so far been a good refresher on simplicial topology and has already proven to be the most formal description of distributed computing I’ve ever personally read. I don’t expect anything groundbreaking, but it’s been a fun read so far.

                        1. 1

                          I’ve been working on a rewrite of JPC (http://jpc.sourceforge.net) for the last year. The new version is purely interpreted so far, but manages to be 10X faster than the old JPC interpreter, and at least as fast, up to 5X faster, than the old JPC with runtime compilation. The new one can also boot windows 3.1, and 95, and almost 98. I’m aiming for XP. It is currently unreleased, though I intend to open source it.

                          I’m also about to launch a crowd funding campaign for my new secure storage and communication startup, Peergos: https://www.seedrs.com/startups/peergos

                          Peergos aims to not only secure the data people store with us, but also hide the metadata of who shares/communicates with who, whilst being fully peer to peer and open source.