1. 27

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

    Preparing for an interview at a extremely good company, reading all the important algorithms and data structures is making me nervous.

    1. 17

      Ugh, one of those interviews. I wish we had a better interviewing methodology already.

      1. 2

        can’t agree enough, but you have to do what you have to do.

        1. 2

          Agreed 1000x. It’s a symptom of the fact that we simply do not know how to reliably, reproducibly, produce working software.

        2. 5

          Study hard, but don’t be too subservient during the interview.

          It’s likely your interviewer is a bit nervous too.

        3. 10

          Julie and I are sponsoring NLP Day in Austin this year. Unfortunately, don’t think Julie will be able to make it to the conf, but if I know any lobsters in Austin, TX with an interest in NLP please ping me! We’ll be doing a video interview at Cloudera’s office about what we’re up to tonight.

          Julie just finished some (somewhat heavy duty) refinements to the first (lambda calculus) chapter of the Haskell book which we’re now going to test with learners and run by a couple reviewers. We’ve been working our way through the backlog of public feedback as well.

          I’m starting on the second to last chapter of the book tonight, pretty excited that it’ll be done soon. Be very glad to get this behemoth out the door so we can move on to other projects.

          I adopted the german shepherd dog I’ve been fostering the last month after pulling him out of the county shelter the night before they were going to kill him. He’s a big sweetie and gets along with my pit-mix somehow.

          Protip: In the US “no-kill” means they can still kill 10% of the animals, which is ludicrous. Talk to a local independent humane society before taking anyone at your county shelter’s word on what they do with the animals. I was lied to several times by county employees on this matter.

          Also, I am gathering examples of GHC type errors that have confused people for a proposal to make them more user friendly. If you have any that come to mind, please contact me.

          1. 7

            Got tired of running go test in a terminal inside Emacs so I wrote a plugin to do just that. Who knew writing Emacs plugins was so much fun and easy.

            1. 2

              This is neat! I pretty much exclusively use compilation-mode for this purpose, which works fairly well. But, I don’t have an easy story for “run test at point”!

              1. 1

                Thanks! I’m a bit confused, what do you mean with story?

                1. 1

                  I just mean, i have no way to do what squeak does without typing the whole go test command out.

                  1. 1

                    Ah, right. That’s precisely what I wanted to do with it, since go-mode already provides function name detection. I also wanted something to make it easy re-run tests while modifying the package code.

                    I was thinking of expanding it into other things, e.g., go build which would detect errors Flycheck doesn’t usually detect (like missing packages or undefined variables), and generally using the oracle tool to do all kinds of magic (find usages). So the plan is not to be exclusively a test utility library, but more of a utility kit on top of go-mode. Time will tell!

              2. 1

                Not to discourage you about your plugin, but have you used the M-x compile. You can run compile once, set it to go test -v, this will open a new window with the result and clickable line errors, and after that you can do M-x recompile to re run go test. You can utilize it for build or any other option you need from the go toolkit.

                Compilation manual

                1. 3

                  I have. The behaviour, usability and appearance of M-x compile are exactly the reasons why I wrote this plugin.

                  To be specific, I did not want to:

                  • …initially write the compilation command after typing M-x compile
                  • …have a new buffer appear every time the command runs
                  • …read a bunch of redundant information that can be compressed into a single line
                  • …type the name of a single test after go test -run ... myself
                  • alter the test to be run when I want to run another unit test

                  What I did want was something that

                  • provides simple bindings that do what I mean and work in any Go file
                  • requires no typing effort
                  • compresses information into a concise one-liner
                  • IDEs have already provided since the early 00s

                  I understand the point of M-x compile is generic and the point of this plugin is to be specific.

                  In the future I’ll implement highlighting of succesful and unsuccessful tests using Flycheck or something that lets me put stuff into the gutter.

                2. 1

                  Nice! I’ve been using flymake plus a custom script for the last couple years. Basically by default go build is ran. If I’m editing a _test.go file then go test is ran. go vet is run on everything.

                  1. 1

                    Thanks a lot!

                  2. 6

                    Figured I’d dive into working with Common Lisp for real and make an IRC bot out of it. Still in the works. If only cl-irc was that easy to grasp out of the box.

                    1. [Comment removed by author]

                      1. 6

                        I realised last year that an IRC bot is also my go to project for new languages, mostly for the reasons you’ve already mentioned. Took me a few languages to realise that though, amused other people reach for that as well.

                    2. 5

                      I set up a VPN using Tinc and routed traffic through it.

                      It took days and was a total pain in the ass. I’ve never studied networking, and at the end I think I just took a crash course.

                      1. 4

                        I’m writing a book on Clojure, and am about 2/3rds of the way through the first chapter. It’s a bit of a slog.

                        1. 3

                          On the Khan Academy front:

                          • I’m starting work on redoing our content system to have a much finer-grained content store, with new features. This includes a lot of very “don’t break the site” backcompat deployment maneuvers.
                          • I’ll also probably spend some time improving our interviewing pipeline’s tech stack.
                          • Finally, I’ll work a bit in my spare time on continuing to get a PyPy-powered KA site running “for real”. While I expect no benefits for our normal workload, we do some long-running batch jobs where I’m optimistic PyPy can have a disproportionately positive impact.

                          On the Factor front, since I finished landing SNI support and got us running on LibreSSL, and since Doug got the server side up to an A rating at SSL Labs, I’ll be doing one or more of the following:

                          • Keep eliminating issues blocking the 0.98 release. I closed or helped close about five last week; it’d be great to do that again.
                          • Begin writing a TOML parser, which we may use to replace the authors.txt/platforms.txt/summary.txt file triumvirate that lives in each vocabulary.
                          • Get the RethinkDB driver to a usable state
                          • Write a Mustache parser

                          I want to improve the Visual Studio Code plugin to allow debugging and other rich interactions with Factor, but I’m having trouble motivating myself to write that much ~~JavaScript~~ TypeScript for fun. I’m fine at JavaScript, I get it, but it really never makes me feel relaxed afterwards.

                          1. 2

                            $work: Week 2 at my new gig (@wagonhq) writing Haskell, JS and generally anything that pushes the product forward. Good Times.

                            $non-work: Writing documentation for a static site generator. First step is rewriting the README, which I’m about halfway through. The “Why Leo” section is getting an overhaul next and I’m splitting out a technical overview.

                            1. 2

                              At work I’m trying to learn the ins and outs of openSUSE Build Service. And I’m discovering many sad things, such as that all the enterprise distributions are missing some packages I need (libev, libjansson, help2man). And that Ubuntu “repositories” are missing universe, so I can’t build my stuff for them either. *sighs* At least I have something, though.

                              At home I’m trying to (not very successfully) do several things in parallel, like learning the Ruby standard library, refactoring my IRC client and implementing word wrapping in it, and learning Python’s asyncio by writing a trivial IRC daemon that allows you to watch new posts using *chan JSON APIs.

                              1. 2

                                Finished the first draft of my talk “Lessons of Liskov” for wroc_love.rb, now making slides so I can do proper dress rehearsals before I fly out. I’m considering doing a webcast tonight or tomorrow night, please message/email/tweet me if you’d be interested in giving feedback on this talk:

                                The talk is a redefinition of the Liskov Substitution Principle for folks who know inheritance is a bad idea, giving insight to why Ruby struggles with NoMethodError on nil, why all the Rails Base classes include callbacks, and how to avoid “oh what the hell now” when you get an exception five steps from where bad data was introduced. It is my second Ruby talk secretly about Haskell.

                                1. 1

                                  I’m pretty curious about this talk.

                                2. 2

                                  At work, reaping the benefits of my recent Org to JIRA undertaking. It’s not a complete implementation, but it’s handled everything I’m likely to use in a JIRA issue / comment. I usually write a private Gist where I put the master note, update it there then export to JIRA and paste into the issue. Works quite well :-) Very nice for tables, or checklists (with statistics cookies) which Orgmode handles very nicely and the default JIRA editor not at all.

                                  We’re a remote company and last week the entire tech team met up at HQ, which was nice.

                                  1. 1

                                    That is really cool!

                                    Now to convince everyone to migrate from bugzilla at $work. But jira has that agile stink to it so its not a huge desire for most.

                                    1. 1

                                      Thanks for that, now I have the killer combo with ox-jira. Markup my comments and send them with Emacs. Check out Org-Jira, it’s a great way to turn your tickets into org-heading and viceversa.

                                      1. 2

                                        Oh cool! I’m glad you like it. I’ve tried to get org-jira to work, but I’ve had no luck. We use the hosted implementation at $foo.atlassian.net, and I’m wondering if they don’t provide the SOAP API by default? I’m getting a soap-load-wsdl-from-url: Error retrieving WSDL: 404 error :-/

                                        Update: it looks like the SOAP API was removed some time ago :-(

                                        1. 2

                                          Bummer, at work we host our own, but I guess we don’t have the most recent version. I will see if I can make it work with the REST engine.

                                    2. 2

                                      Not just this week, but:

                                      • Working on vdirsyncer, a synchronization tool for calendars and contacts. I use it to sync with my phone, right now via CalDAV/CardDAV.

                                        Ideally I’d like to have end-to-end encrypted synchronization of calendars/contacts (maybe using remoteStorage), but that would require writing a custom Android app, and I can barely bring up the motivation to get started with Java. This stand-off has been going on for a few months now.

                                      • Working on mysteryshack, a remoteStorage server written in Rust. I’ve done a few smaller Rust projects before, but only after this one I now think I “know” Rust reasonably well. More interestingly, I’ve learned quite a lot of new things about the intersection of infosec and webdev.

                                        Right now I’m trying to figure out how to statically link against libsodium (instead of using the apparently less-mature API of rust-crypto). I fear that bringing in a C dependency like this will have a negative impact on ease-of-use. I can’t depend on distro packages: They’re either too old or are missing dev files (grr Ubuntu) which are (again, apparently) required for linking.

                                      1. 1

                                        vdirsyncer looks very interesting, never thought about syncing and saving as files which ‘normal’ apps can read ?

                                      2. 2

                                        At home, I’m cleaning up the web presence a research collective I was part of several years ago. So far I’ve started a Github org, pushed a website mirror, and a copy of our research snapshot of Encycloedia Dramatica from 2011. Working on a static version of the site that should be considerably more future proof and less maintenance.

                                        1. 4

                                          Uh… what kind of insight are you expecting to glean from ED?

                                          1. 2

                                            Now? None. This was research done in 2011 on meme clustering. It ended up being the only archive of the content when the site went down suddenly. It is for historical purposes at this point.

                                            1. 1

                                              There are a lot of people who have had their personal information compiled on that site and would rather it be allowed to die instead of archived and preserved.

                                        2. 2

                                          Digging into Scala.js which is making me finally take the time to learn Scala.

                                          God, it’s weird. Nice, but weird.

                                          Scala.js is kind of a dream, though. Scala has enough OO to make JS interop really quite seamless.

                                          1. 1

                                            weird how?

                                            1. 2

                                              There are just so many ways to do everything! I suppose I’m not yet understanding the “Scala way” but right now I’m trying to walk out some basic FP idioms as I know them and I feel like there are lots of relatively arbitrary choices I have to make at each step.

                                              1. 2

                                                I got the exact same impression from Scala. Scala makes me think, “you folks just threw everything at the wall to see what would stick when designing this language, didn’t you?” It feels like Perl.

                                                1. 1

                                                  That’s funny, I just wrote how I’m working on bringing java.time to ScalaJS above. :-)

                                                  Let me know if you have any questions about Scala or Scala.js!

                                                  1. 1

                                                    I’m curious about time libs, yeah. I really like Haskell’s time lib, actually.

                                                    1. 1

                                                      The Haskell library looks nice, but it seems to suffer from what a lot of other libraries suffer:

                                                      Implementing the easy 80% and punting on the hard 20%, except that with time libraries, 20% are easy and 80% are hard.

                                                      I’m not a fan of Java, but java.time goes a long way covering all the ugly, hard corner cases and requirements people have in the real world.

                                                      1. 1

                                                        I’d be curious what you put in each column. I feel like Haskell’s time library goes quite far to what I see as the hard 80%. You have to include another like (time-series) to chop off another big part of it (time zone nastiness) but then there’s little else extra I would ask for.

                                            2. 2

                                              I’ve finally created a base host property list for my nodes in Propellor, the only thing left is applying extra tweaks for specific nodes, and I will be fully provisioned and configured with Propellor. Aside from that, I’m moving all my Gentoo nodes to Debian, it’s been a great ride, but I just don’t have the time anymore to commit to Gentoo. As an extra-endeavor, I will try to finish the Haskell exercise from Exercism. Maybe ;-)

                                              At $WORK, I’m doing a performance test on our Kafka setup, finishing our disaster recovery service in Scala, and playing with more Clojurescript.

                                              1. 2

                                                Continuing to work out our new Machine Learning Platform as a Service offering. Right now the focus has been automating the provisioning and install of the backend software. So we have a service that can spin up a number of EC2 nodes, install Ambari and then use Ambari Blueprints to provision a Hadoop/Spark cluster. Next step is to get SystemML installed, and then start working on the API for submitting and managing jobs, getting results, etc. We’ll also be integrating Apache Zeppelin as part of this offering.

                                                Once that’s done, there’s still user signup to do, Stripe integration, Candlepin integration, etc. Oh, and recording an “explainer video”, writing some blog posts, creating marketing material, etc.

                                                Oh, and I also need to write a talk on SystemML for the upcoming RTP Analysts “Analytics Forward” unconference.

                                                If anyone cares to comment, I’d love to hear the following thoughts:

                                                1. What does “Machine Learning PaaS” mean to you, at first blush?

                                                2. Given that, do you see that as something you might use (depending on the details)?

                                                3. What would you want in a ML PaaS if you were considering using one?

                                                4. How much would you pay for such a service?

                                                5. Anything else you can think of. :-)

                                                1. 2

                                                  I’m prepping for finals and putting more work into LiquidHaskell. I’ve just about finished a plugin for LH integration with Cabal and Stack, the main Haskell build tools. Once that’s wrapped up I’ll probably focus on making LiquidHaskell run as a GHC plugin. I’m a large part of the way there but there’s still some code reorganization to do and bugs to fix before it’s ready for real use.

                                                  1. 2

                                                    Working on a pure Scala implementation of java.time for use in Scala.js.

                                                    All tests are green now, thanks to some great contributions, and now we have a look how we can support the API in the browser without dragging half of the JDK. :-)

                                                    Link for the interested: https://github.com/soc/threetenbp

                                                    1. 1

                                                      Not much interesting at the day job.

                                                      GSoC season is upon us, and with that comes wave upon wave of prospective students trying to make sense of our landing page. Kind of difficult to field their questions, but I am trying.

                                                      1. 1

                                                        Working on a Github issue auditor inspired by Docker’s “Gordon the Turtle.” I want to create a fluent interface that can be easily read and understood by contributors and have out-of-the-box support for deploying to AWS Lambda.

                                                        I’ve also been working on a blog post about how to design clear and maintainable shell scripts. I’ve been writing shell scripts for quite some time, but if you think you have any neat tricks I should incorporate, I’d appreciate it!

                                                        1. 1

                                                          I decided to go ahead and do a talk on data formats, where I’m gonna introduce a mostly-web-shop to flatbuffers, capnproto, and a few others as potential alternatives to JSON.

                                                          I intend to demo potential synergy between capnproto and boltdb. Should be tons of fun.

                                                          1. 1

                                                            Last week went entirely out the window when the insurance company informed me my car (with a dent to both doors on the drivers side) was a write-off. I’m all for not repairing things that aren’t worth it, but the car was mechanically sound and safe to drive without any repair, let alone just filling a couple of dents in. The chap who towed the car away as salvage reckons insurance companies are scrapping everything they possibly can at the minute, absolutely crazy.

                                                            On the plus side, I’ve got a higher spec model of the same car with less than half the mileage on the clock. The downside is I now have to fit a towbar to it (having only fitted a towbar to the last one in December.) So most of this week is on fettling a few things on the new car, fitting the towbar and pondering shoving a RPi in there somewhere this time round.

                                                            Also need to sort out restriction profiles for the kids' iPads and some sort of generator (writing XML by hand is for non-programmers) to generate said profiles. That’ll be fun no doubt, excuse to learn what Elixir/Erlang has in the way of XML libraries at least.

                                                            1. 1

                                                              $work: upheaval and excitement as the companies maybe/maybe-not split. I’m keeping an eye on the monday deploy and various “handyman” (triage) tasks. Adding features to our tiny-but-growing rails-monolith. Bringing an important internal gem involving fancy database queries into the beautiful world of ruby 2, finally. Tuning our paging threshholds to only wake me up for important things.

                                                              1. 1

                                                                Rolling up a project to track artifacts from source to deployment. Looking forward to the major release by the end of the week.

                                                                1. 1

                                                                  The Little Prover and grokking Ohm.

                                                                  1. 1

                                                                    Natural Language processing with ANTLR.

                                                                    1. 1

                                                                      I have been learning terraform for the past two weeks or so, doing a some migration work for a client from colocation to AWS. It’s been frustrating and fun.

                                                                      1. 1

                                                                        Working on my very tiny wiki engine…. which got less tiny. I added in-browser editing (with live preview) and rudimentary management. Originally, I was going to use WebDAV. DELETE and PUT look nice enough until you get to PROPFIND. God help you with that.