1. 30

You all know the drill. Don’t be afraid to share.

Myself: poking around with GTK#, and the….fun times getting a good building and test environment.

  1. 19

    Hey hey…

    Today, I dropped the 0.1.0 of Jaunt ? (site, changelog, clojars). Jaunt is my fork of Clojure, which seeks to well clean up under the hood in some fairly invasive ways. Jaunt is source compatible but not binary compatible with Clojure 1.8, and at this point largely provides some nicer warnings (deprecations etc) which are not yet in Clojure and cleans up the project codebase so that it’s nicer to hack on featuring several linters and automated deployment infrastructure. CircleCI is basically the bomb, but I had to pull a 200x speedup in cljfmt to make it really reasonable to use.

    This week I’m trying not to fall flat on my face in returning from spring break. I’m now 14 or 16 days in to limiting myself to ~5 commits a day, which has proved a very valuable discipline in terms of sustaining my motivation and interest in projects such as Jaunt while balancing my hobby work with the demands of school work. I’m also doing some other stuff:

    • Working on a blog post “Breaking changes considered essential” which has been sitting around in various drafts since October.
    • Working on a toy Twitter clone based on aleph (in Jaunt).
    • Getting my Fraternity’s Code of Conduct finalized and adopted.
    • Rolling back a feature I built because the users didn’t like it. Fun times….
    1. 6

      wow that 200x speedup PR was awesome… I was on the edge of seat totally geeking out reading that discussion and code… (not sarcasm)

    2. 16

      Unexpected job search. Was supposed to be heading up the R&D division, in downtown Chicago, of a company that you’ve never heard of but that is a big player in a lucrative space. Had a team of 9 people, ready to start, and then the CEO had a life event and, at the last minute, called off the whole project. I think I’m better positioned than some of the others who were affected by this, but it’s never a good thing to have happen.

      So, if anyone needs a CTO/VP-Eng in Chicago who’s capable of being hands-on and writing the code (and, in fact, prefers it that way) and fluent in functional programming (e.g. Clojure, Haskell) and machine learning, I’m around for a while.

      1. 9

        Howdy all.

        I guess in the last week, I haven’t been doing my usual thing much (Dylan), which I guess is a nice change of pace. (I’ve been working on some things in the background, but haven’t pushed much.)

        I’ve been writing (and then deleting) a lot of TypeScript and ReactJS code instead. That’s been pretty fun and it is nice to experiment with building something new and big out while still not really knowing how it is going to work yet entirely. It has been giving me a chance to experiment with a lot of things in addition to just TypeScript and ReactJS, like RxJS.

        I’ve also been submitting some fixes / improvements to ant-design as I learn more about it. I haven’t sorted out with them yet the details of how we’ll manage the English translation of their documentation.

        If anyone has done localized documentation (unfortunately they’re just using a bunch of Markdown for now and comments in the code). I guess related to that would be handling localized JSDoc-style comments in TypeScript .d.ts files … which I don’t think anyone has ever done that I’ve seen so far.

        We’re 2 weeks away from a school term break here … and entering into our very hot time of year where the heat index will regularly be above 40C. We’ll be doing some minor travel during that time, so I am looking forward to that. My office fits in my backpack and it is nice to get out and work from different places.

        1. 2

          Dylan has always fascinated me in that it never seems to go mainstream, but its audience is really, REALLY loyal.

          Not unlike CAML/OCAML it just keeps bubbling up to the surface when you least expect it :)

        2. 8

          I’ve quit my job and I’m leaving the United States in 10 days. I’m working on dealing with the anxiety of traveling internationally with my two cats.

          I’m scheduling interviews for the week after my arrival to Buenos Aires.

          I have not decided whether I want to take a time off or start immediately. On one hand, I think I may need a break, on the other hand, I get bored when I have nothing to do.

          1. 3

            Sounds interesting!

            I’m guessing you speak Spanish, and you’ve probably already been in Buenos Aires. On the off chance that you haven’t, I’d wait with the interviews for a while and enjoy life and explore your new surroundings. Actually, even if you’ve been there before I’d still recommend that. Being a tourist is quite different from being a permanent resident.

            If you do get bored while taking some time off, consider learning something new. Learn some Argentinian recipes, learn a new programming language (Clojure or Erlang (or LFE, Lisp-Flavoured Erlang) are highly recommended), or anything else.

            I’m in the lucky situation that my boss allowed for 100% remote work for half a year, so I’m currently in Cartagena, Colombia on the 5th of 6 months travel around Colombia and Costa Rica with my wife and two kids. I have a work week of 32 hours, and split that over all the days of the week. I work an hour in the morning while the youngest naps, spend the day playing tourist and then work again in the evening when both kids are asleep. It’s a wonderful experience!

            1. 2

              I forgot to mention I am from Buenos Aires and I’m going back home :)

              I guess if I had people to share time I would not be so anxious about starting a new job, but it’s not my current state.

            2. 2

              I’m having trouble with the statements “moving countries” and “having nothing to do outside work” being made in the same context. I moved across the country (which is just under 4 hours by train, here in the UK) last year and although I enjoy my job the three months I took off immediately after the move was not nearly enough.

              1. 1

                Depends on the person, but when I moved countries (US → DK), I liked that I started work fairly soon. Being new to a country was intimidating, since I didn’t know anyone or how things worked. The daily routine of going into an office, having lunch with colleagues, etc. helped ease into it, plus gave me an easy place to ask people boring questions about how everything works (bank accounts, the metro system, shopping, insurance, etc.). Once I’d lived in Copenhagen for a year or so and had my bearings, then it became more fun to go out and do non-work things.

                1. 2

                  You’re right. I suppose the crucial bit was moving countries, or at least somewhere substantially different? I stayed in the same country so didn’t need new bank accounts or anything. (I even stayed with the same electricity provider!) I also had company: my wife and 3-year-old son. In the past, before my son was born, I moved to Hong Kong and that situation was much more like you describe.

              2. 2

                Your cats will be quite anxious too. When I brought mine to Canada, the poor thing had no access to a litter box for nearly 12 hours and peed herself. It took her about a week of hiding in the new location before she readjusted.

                1. 2

                  My two cats already traveled from Buenos Aires to San Francisco, with a ridiculous 17 hours layover in Mexico City. Of course they peed themselves (actually, it was during the layover, so they peed on my coat).

                  On the positive side, they were just fine after arriving, and this time we do not have such a long layover this time and they are more experienced :).

                  I’m still nervous, one thing going wrong is one too many.

                2. 2

                  Take at least a couple of weeks off to get settled, and maybe more if you’ve got burnout/stress left over from your previous gig.

                  My experience is that it’s best to rest until you can’t stand resting anymore–it always takes longer then you think, but it’s time your body and mind usually need.

                  1. 1

                    IMO Always settle your employment situation and then simply schedule your start date out by a week or so.

                    That way you can TRULY relax and know that you’ll have a roof over your head and food in your belly beyond however long your piggy bank lasts :)

                  2. 5

                    Last week I released the first chapter of my book Elements of Clojure, and since some people actually gave me money I have to start working on the second one.

                    Honestly, though, I had forgotten how much I enjoy writing. I have three or four half-complete essays/posts that have been sitting around for a year or more, and I may try to finish them up while my head’s in the right place.

                    1. 4

                      Started reading Deep Work from Cal Newport. So far, so good. Can’t wait to integrate that to my day-to-day workflow!

                      1. 4

                        For work:

                        • Continuing to (carefully!) adjust Khan Academy’s content store without breaking backcompat, but while enabling all the new features we want for the new designs/for mobile
                        • Helping the internationalization initiative figure out how to sanely make it feasible to have different content collections for different languages
                        • Putting together project proposals to take our security from about 30% of where I think we should be to more like 70% of where I think we should be

                        For Factor:

                        • Finish up my TOML module and add it to core
                        • Migrate away from having separate pseudo-plain-text files for vocabularies (libraries) to having a single TOML-formatting vocab descriptoin
                        • Maybe start an ACME implementation so Factor can have turnkey HTTPS support
                        1. 1

                          I’d help but KA made their website closed source :-( I’m still hurt over that decision. I had two active translation projects underway and had contributed code upstream.

                        2. 4

                          I’m working on improving ponylang-mode, an Emacs major mode for Pony.

                          1. 3

                            Adding support for enums to Scala.


                            Sometimes you need nothing more than a flat list of items (vs. a recursive structure) and want it to be usable as a valid enum from Java.


                            • scala.Enumeration isn’t compatible with JVM enums and is terrible in general. Never use it.
                            • sealed traits + objects are not compatible with JVM enums, and have a lot of syntactic overhead.
                            • Writing enums in Java: Doesn’t work in codebases that need to work with Scala.js



                            @enum class Foo {

                            to Java’s enum equivalent:

                            <enum> final class Foo private(ordinal: Int, name: String)
                                extends java.lang.Enum[Foo](ordinal, name) {
                              <static> val BAR = new Foo(0, "BAR")
                              <static> val BAZ = new Foo(0, "BAR")
                              <static> private val $VALUES = Array(BAR, BAZ)
                              <static> values: Array[Foo] = $VALUES.clone
                            object Foo {
                              // Forwarders to class Foo's static members

                            in scalac.

                            Current progress: https://github.com/scala/scala/compare/2.12.x...soc:topic/enums

                            1. 3

                              Last week I started playing around with some very basic anomaly detection based on exponentially weighted control charts. This week, I’ll probably add in Holt-Winters smoothing since the metric I’m looking at monitoring is seasonal with a period of 1 day. In the past, I’ve monitored this metric with a fixed threshold and didn’t catch a significant event, which I’d like to avoid in the future.

                              1. 3

                                Poking around with Common Lisp and trying to figure out how to build SBCL with the detected compiler with CRUX pkgutils.

                                1. 3

                                  I’m trying to build a actor-based Ruby MQTT client library. I’m not sure how far I’ll get or if it will be better than the existing one, but the plan is mostly to get my head around actors and/or immutable values.

                                  1. 3

                                    Today I’m flying home from the 3.8 Mercurial sprint we just had at Mozilla, San Francisco. I think it was our largest sprint yet, with perhaps a total of 40 participants if we count a few remotes that showed up over videochat for a couple of sessions. That’s almost as big as an International Lisp Conference. :-)

                                    I wrote some minor patches for hg’s curses TUI for selecting hunks in diffs, but what I really want to work on is re-doing hg grep to be a bit less confusing and more useful. I’ll be distilling the roadmap for grep into our wiki, summarising the ideas that we discussed in person.

                                    I also learned about PlanPlan, which should unify our histedit/rebase/graft core commands along with Evolve’s split, fold, prune, uncommit, amend commands. There’s a lot of historical design here that needs to be unified. Now that Bitbucket will soon be officially opening Evolve for beta, perhaps we can start showing the world what collaborative commit rewriting looks like. Mozillians have already gotten a taste of this via their custom-made ReviewBoard instance that show interdiffs (diffs of diffs) as pull requests get reviewed and updated.

                                    This sprint has really made me hopeful for Mercurial. Lots of great things in the pipeline by many interested parties. I feel thankful for the people working at Facebook, Google, Bitbucket, and Mozilla who are continuously Mercurial and helped so much with this sprint.

                                    1. 3

                                      Unix-like file split utility in Python (last week, really, but doing more on it this week.)

                                      With some differences from the Unix one, and simpler, but with an interesting idea or two (for the parts to come).


                                      1. 3

                                        Writing support for arbitrary transformations of the core dataset for Leo. This enables plugins to do automatic generation of RSS content, create Archive/Collection pages, remove Drafts, etc.

                                        1. 3

                                          Primarily working on improving x11fs and getting it to a usable and stable state. I’m also following through the: write yourself a scheme in 48 hours tutorial to attempt to teach myself haskell. I really like this tutorial, as it leaves you room to figure some stuff out yourself, whilst hand-holding slightly through some parts.

                                          1. 3

                                            Well, I was hoping to be doing some blogging about Rust, explaining the difference between Higher-Kinded Types and Higher-Rank Trait Bounds, but then the house I live in got a gas leak, and now I’m waiting at a local YMCA to find out from my roommate if we need to get hotel rooms.

                                            If and when things have settled down, and I am no longer waiting at the YMCA, I’ll be working on the blog post, and preparing to head back to California next week to visit family.

                                            1. 2

                                              I’m enjoying my spring break after an absoluely grueling week of finals.

                                              For the past few weeks I’ve been on-and-off researching handwriting synthesis: generating somewhat natural-looking handwriting in software. There’s tons of info out there on using computers to interpret human handwriting, but surprisingly little on the inverse process. Proprietary solutions like Handwriting.io are available, but the model doesn’t really fit my needs. There’s also this demo of now-DeepMind developer Alex Graves’s approach to handwriting synthesis with recurrent neural networks, but the dataset used isn’t public and I don’t think I have the resources to reproduce the results; besides, on atypical inputs, like names, the network often just completely falls down.

                                              I found some other papers and demos related to the subject, but my biggest break came with the discovery of Muse-CGH deep into a trawl of GitHub repos. It’s a brilliant piece of software that unfortunately seems to have flown under the radar. It does pretty much exactly what I’ve been looking for and more—there’s even a built-in editor for glyph shapes!—but the implementation is in Scala while the project I’d like to integrate this into is in Haskell. So I’m working on understanding the algorithm from the source—honestly, it’s so much more useful than a CS paper alone would be—and am simultaneously working on longhand, which will be a Haskell handwriting synthesis engine based on Muse-CGH’s algorithm plus my modifications (like vector graphics support and multiple glyph forms per character). At the end of this journey I plan on doing a formal write-up of what I’ve learned. Goal: finish this all before school starts up again.

                                              On the LiquidHaskell front, I’ve got stuff to work on, but I’m mostly waiting for the next versioned release to get out the door before I pick that back up again. I’ll also likely be helping out my old high school robotics team again this week, and if I can, I’d like to contribute publish-to-Dreamwidth support to StackEdit (should be easy).

                                              1. 2

                                                I hope to have some time to start working on an update to “Write Yourself a Scheme” using modern Haskell.

                                                1. 2

                                                  Before and after work:

                                                  1. 2

                                                    Full of growing existential angst about my skills as a developer and desire to be a developer at all as the deluge of interviews with startups pours down upon me, prompted by the unexpected semi-orderly shutdown of my current team.

                                                    Fixing a nasty daylight savings bug somewhere in the versioned interface between our iOS client, the ice_cube library for ruby, and our back end sever code.

                                                    1. 2

                                                      Working on binding objective c to vala so i can use clutter on osx and still have it feel like an osx app.

                                                      1. 1

                                                        that sounds like a good idea, calling C code from vala is trivial but i am not sure how you’d mix cocoa and clutter. keep us posted!

                                                      2. 2

                                                        Finishing a formatting-aware and variable character width-aware word wrapping algorithm in C for my IRC client. Acknowledging that this language is the wrong choice for most projects and that I should really move on. Still reading about Ruby, as I’m preparing to make some progress on an Asciidoctor-powered static site generator.

                                                        1. 2

                                                          I will hopefully be finishing Programming Phoenix and starting a project to combine my love for technology and automotive modification. Hard to get time with a 4 month old and long hours at the day job. Trying to figure out a schedule that works.

                                                          1. 2

                                                            Still working on my orthogonal Vim clone. Made a lot of progress over the last week and may be able to start using it as a crappy editor to edit itself soon (gotta eat my own dog food at some point).

                                                            I got distracted yesterday by trying to write a script that randomly plays music from my Spotify or SoundCloud playlists. Mopidy supposedly allows you to do this, but the mopidy-soundcloud plugin is broken right now. I’ll finish the script (using pyspotify and soundcloud-python) sometime today and will throw the hacky mess on GitHub for anyone who doesn’t want to have to write it themself :)

                                                            1. 2

                                                              What does orthogonal mean in this context?

                                                              1. 1

                                                                The text editor should just handle text manipulation and file navigation. It shouldn’t handle window layout (that’s done with tmux), nor should it handle text formatting, linting, copy/paste, searching, etc (those should all be handled by piping out to other processes).

                                                                1. 1

                                                                  Ah, makes sense now, thanks. Each part is orthogonal to the others, meaning they don’t duplicate functionality.

                                                                  1. 1

                                                                    Right. It’s the Unix-y way of designing things (which I prefer, since it’s easier and cleaner to write simpler individual components).

                                                              2. 1

                                                                orthogonal Vim clone

                                                                Have you seen this? https://github.com/martanne/vis

                                                                1. 1

                                                                  Yeah… it’s a bit better than Vim since it’s a newer project, but it’s not really that orthogonal. I’m thinking of something closer to kakoune (but written in C and with hotkeys that are closer to Vim bindings).

                                                              3. 2

                                                                I’m a T.A. for a university class on compilers. On Tuesday my students are handing it their second milestone for type checking, so I’ll be spending most of my time grading.

                                                                1. 2

                                                                  Starting a new job today so… No idea!

                                                                  In my personal time I’ve been playing around with building a python distributed systems framework to make it easy(ish) to build programs that scale. I don’t have a huge amount to say about it yet, but the core idea I’m working on is building versioning deep into the system and message protocol with the main intent being to make large-scale deployments easier. I’ve found one of the biggest challenges in really big systems to be deployments - particularly because it can take days or weeks to complete one, so the system uses versioned plugins for pretty much everything. New plugin-versions can be loaded into a running node, so hotfixes are zero-downtime. “Real” deployments are also made easier as the old version of a plugin continues to be used until the new version is requested, so you don’t run into the problems of having different nodes running different-and-maybe-incompatible software versions.

                                                                  One of the most fun things about it right now is that even the message protocol handlers are plugins, which use the nifty trick of ‘respond in the protocol-version that the request came in, unless the request explicitly asks for another one.’ So most of the time messages use a binary format for efficiency but multiple protocols can be supported - this is super handy for debugging as you can just send it messages in a human-readable protocol and get a human-readable response back.

                                                                  The plugin-nature also enables some other neat debugging tricks, like you can load a debug version of some plugin with a “breakpoint” that starts a remote-pdb session so you can remote in and inspect the state of the node.

                                                                  Right now I’m working on making the programming model a little easier for the thing, as right now it’s a bit tricky. Pretty much every operation you want to do requires asking the plugin manager to give you the thing that handles that operation with some version spec, building up a wonky data structure as an input to the plugin, and then invoking the operation on that plugin. It’ll be a lot nicer if I add some Spring-ish dependency injection magic to make getting ahold of the plugins easier, and maybe some magic to make invoking the plugin look more like, you know, a method call.

                                                                  1. 2

                                                                    For work (new job):

                                                                    • Adding features and trying to refactor a lot in our Angular application.
                                                                    • Crying, because our Selenium tests always fail.

                                                                    At home:

                                                                    • Reading about a bit about OpenGL and playing with nanovg (I made a tiny Go-binding).
                                                                    • Writing code for a Django application that keeps track of stored procedures and triggers in Postgres.
                                                                    1. 3

                                                                      I’ve found that using BrowserMob + a real web browser (not phantomjs) fixed a lot of the pain for me.

                                                                    2. 2

                                                                      I’m working on the code for the next book I’m planning to write, on implementing programming language interpreters. Unlike my last book, where each chapter was pretty self-contained, this one has a more coherent narrative from beginning to end. That makes it a lot harder to write it and put it online one chapter at a time. It’s possible that I’ll realize something in a later chapter that requires changes to an earlier one, and I don’t want to lead readers astray.

                                                                      So my plan is to basically write the code for the two interpreters (one in Java, one in C) up front. Once that’s done, I’ll do the full outline, break it into chapters, and start writing and publishing serially. I’ve got the Java one pretty much done, and I’ve made a lot of progress on the C one. This week is getting functions and function calls implements. Hopefully closures soon.

                                                                      1. 2

                                                                        I’m reading The little schemer, I’m about half way through by now.

                                                                        I’m also finally shifting my website over to my openbsd server, mucked around with httpd for a while (nice and simple config!) and I am now currently rebuilding the website from a simple batch of html files to a much nicer hakyll setup, took the time to learn some stack basics at the same time. I also found out that someone has been injecting tracking into my current website so I’ll be working on using letsEncrypt for the new one.

                                                                        Edit: Here is the injected code, if anybody knows what it does?

                                                                        <style style="" type="text/css">code{white-space: pre;}
                                                                            <style type="text/css">:root #content > #right > .dose > .dosesingle,
                                                                        :root #content > #center > .dose > .dosesingle
                                                                        {display:none !important;}
                                                                            <style type="text/css">img[src="http://mandrillapp.com/track/open.php?u=30786374&id=dd4f8616d8da4a2a9bb6599487d06477"]
                                                                        {display:none !important;}
                                                                            <style type="text/css">:root .container > .infoBoxList > .shareInfoBox
                                                                        {display:none !important;}
                                                                            <style type="text/css">:root #content > #right > .dose > .dosesingle,
                                                                        :root #content > #center > .dose > .dosesingle,
                                                                        :root .container > .infoBoxList > .shareInfoBox
                                                                        {display:none !important;}
                                                                            <style type="text/css">img[src="http://mandrillapp.com/track/open.php?u=30786374&id=dd4f8616d8da4a2a9bb6599487d06477"]
                                                                        {display:none !important;}
                                                                        1. 1

                                                                          Looks like an empty gif.

                                                                          1. 1

                                                                            Could be that they’re just using mandrill’s click-through tracking to test whether your site is vulnerable to xss? If they see hits in their analytics page then that means the injection stuck and they know to return. This way they don’t have to risk revealing their payload before knowing you’re vulnerable.

                                                                            1. 1

                                                                              Perhaps, this is my first experience with actual nefarious behavior so I’m a little taken aback. Ssl really isnt just for dynamic websites.

                                                                          2. 2

                                                                            Still working on our new Machine Learning as a Service offering. Right now I’m working on the backend REST API that will be used for submitting jobs and the like. The provisioning code is almost done, but it needs a few tweaks as well. Well, done enough for an MVP anyway. It’s a long way from “done, done”.

                                                                            Anyway, soon we’ll have a service out that lets you dial up a Spark cluster with SystemML1 and run ML jobs using DML and PyDML with no requirement to build, manage and maintain a cluster yourself. Future plans include support for other ML platforms, possibly including TensorFlow, Warp-CTC, CaffeOnSpark, etc.

                                                                            As before, I’d appreciate any comments addressing things like:

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

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

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

                                                                            How much would you pay for such a service?

                                                                            Do you use Azure ML or AWS ML? Or any other similar offering?

                                                                            Anything else you can think of. :-)

                                                                            1. 2

                                                                              I’m working on a Router for Scala.js which takes a lot of insight from Slamdata’s purescript-router. It’s currently still embedded in another project of mine, but here’s the link: https://github.com/tel/scalajs-snafu/tree/master/src/main/scala/tel/fiftythree

                                                                              The core of a router is a printer/parser pair and I describe a DSL for creating these as a Scala trait (https://github.com/tel/scalajs-snafu/blob/master/src/main/scala/tel/fiftythree/Routes.scala#L8) and a possible implementation of this DSL over a specific form elsewhere (https://github.com/tel/scalajs-snafu/blob/master/src/main/scala/tel/fiftythree/RoutingPrism.scala). This pattern is kind of like your standard ML or Haskell “Finally Tagless” style of DSL although the lack of nice higher-rank polymorphic functions makes this awkward in Scala.

                                                                              The router also steals a cute trick from japgolly/scalajs-react’s router implementation (https://github.com/tel/scalajs-snafu/blob/master/src/main/scala/tel/fiftythree/Tuples.scala#L6) which lets me use applicative notation to combine routers but have the natural tuple structure stay “flat” for the most part.

                                                                              Anyway, it’s been an interesting project to learn some Scala idioms from. The DSL is nearly done and I just need to implement a parser for the browser location and a “worker” which can signal changes and update the rendering of the application.

                                                                              1. 2

                                                                                From last week, I got my PR finished and merged which fully builds my glucometer on Travis. (I didn’t work on the location program; I can only handle one side project at a time right now.)

                                                                                This week I want to get the Arduino code working and figure out how to test it. Most of the code is already there, but making it work consistently and in a testable way is the kicker.

                                                                                Also, I’m really liking this weekly thread for keeping me accountable on my project, even if nobody else reads it.

                                                                                1. 2

                                                                                  Work’s not very exciting, I’m mostly bug fixing and investigating new cases.

                                                                                  Outside of work I’ve been playing with my new camera and lenses. Yesterday I disassembled and “reversed” an old 50 mm prime to make a macro lens, so I’m planning to play with that a bit, especially as flowers start blooming and bugs start coming out.

                                                                                  I also bought DxO Optics Pro, and I’m getting familiar with it. My initial impression impression is that it complements Capture One really well, but I need to figure out and standardize a workflow for using them together.

                                                                                  1. 2

                                                                                    Lots and lots of job interviews as well as presentations, then traveling back home for Easter. Not the most relaxed week ever, but definitely all for a good cause.

                                                                                    1. 1

                                                                                      My hard work has paid off! I got a really awesome job at an even more awesome company…. 10 minutes walking distance from my apartment.

                                                                                    2. 2

                                                                                      This week, I’m reading about and implementing a handful of fundamental data structures in plain C. It’s a simple exercise, but it’s something to do. I’ll also be digging a drainage ditch, repairing a chicken tractor, and slaughtering the pigs.

                                                                                      1. 2

                                                                                        Proposals for an upcoming developer gathering on decoupled architecture and APIs for large-scale content providers, in our case public broadcasting corporations. We’ve successfully implemented headless Drupal and want to explore the option of reversing the decoupling, utilizing external data sources in the Drupal data model and editorial tools.

                                                                                        Optimizing my custom keyboard layout based on Dvorak, Space Cadet keyboard modifiers and overall Vim-friendliness. X11 works (as always), but OS X gets slightly confused when switching between internal and external keyboards, resulting in different characters yielded by the same keystrokes.

                                                                                        1. 2

                                                                                          I’m bringing my automated package builds up to speed, using only free infrastructure. That is:

                                                                                          • Push commits to github -> triggers travis-ci builds

                                                                                          • travis-ci sets up a Docker environment to build deb packages

                                                                                          • Upload readily built packages to bintray.

                                                                                          The first project works at this point: https://github.com/tim-janik/rapicorn/

                                                                                          The second depends on the first and still needs work: https://github.com/tim-janik/beast/

                                                                                          Because the raw travis-ci environment is notoriously hard to debug, I’ve previously used pbuilder for the packages, but that’s still hard to deal with. Docker makes all this a breeze, it abstracts from the travis-ci tools and allows easy local rebuilds in case of failures. Also, simply exchanging the FROM line in the Dockerfile allows to trigger package builds for multiple distributions. bintray takes care of the package indexing and provides download space, so I can pass users a simple apt source line to test out development packages freshly built from source code that’s just been pushed 20 minutes ago.

                                                                                          1. 2

                                                                                            Wrapping up the last of the SAP/HTML5 logistics project, to be rolled out in April so I’m looking around for my next gig already.

                                                                                            In the meantime, I’ve actually got some time on my hands so I’ve started on a couple of open-source projects inspired by my kids and their friends:

                                                                                            Early days yet but if either of those are interesting you can follow them on twitter

                                                                                            1. 2

                                                                                              I would like to write next ~600 words of my thermodynamic sci-fi. The problem to solve: If you make a joke about quantum physics 99% or readers are not going to get it. If you explain it you spoil the joke.

                                                                                              1. 2


                                                                                                So lately I’ve been working on the worst possible software/framework landscape of Universal Windows. I am saying that because there is very little community support and framework maturity when compared to Android/iOS.

                                                                                                So I have been working on LevelDB UWP during my weekends. Have already got some incredible performance results, to expand platform coverage will be looking into requirements for Xamarin cross-platform requirements for binaries. In the mean time working on a possibly an ORM/Document store wrapper called KoduStore.

                                                                                                I really want to write a really efficient C# LSM-Tree store (inspired by LevelDB and Cassandra SSTables) but I have little to no experience in implementing a complete database. So yes that is also something really really deep into the future.

                                                                                                1. 1

                                                                                                  Attempting to make sense and hopefully sanitize some awful code @ https://github.com/laclasse-com/service-documents

                                                                                                  1. 1

                                                                                                    Hi all, I’m bringing my Perl 5 knowledge up to date with the goal of updating an ancient CGI script to modern Perl next week. Still have to decide whether to use Mojolicious or Dancer.

                                                                                                    1. 1

                                                                                                      LLVM hacking. Our team at work is looking to make our pitch to the community for a rather large set of changes that will take a while to fully implement. It’s not a secret but it’s not being advertised until we post to the dev list. Hopefully I can say more soon.

                                                                                                      Also, just got back from a vacation in the Bay area. It was nice to visit, but I don’t think I’d want to live there.

                                                                                                      1. 1

                                                                                                        Been working on the ReactJS front-end to my music library API, blaster. This all started as more of an experiment to learn something new so we’ll see how long it lasts. The API just stores your entire collection information into a single JSON file so unfortunately it doesn’t scale well. It would definitely make more sense to introduce a DB back-end and since the methods are already in place it shouldn’t be too hard to swap out some lines of code.

                                                                                                        The front-end is at a point where you can browse your collection, click a song and it’ll start playing (exciting, eh?). An issue I’m running into though is communicating with the player component which is unrelated to all the others components, that is there is no child-parent relationship so I can’t just pass the props. According to the docs they recommend using Flux for this very problem.

                                                                                                        1. 1

                                                                                                          Just got my anvil mounted, next step is to build a gas forge (you can see the top of my current coal forge in the top left of the photo) so I can hammer hot metal without giving my neighbors cancer!

                                                                                                          1. 1

                                                                                                            At work: Finishing up writing a fairly boring thing in Go that’ll run in a cron job and replace some of what we’re doing with Chef. It’s not a great fit for chef - we just need to do some housekeeping work on every host every few minutes. Using chef to get a simple binary onto the host and scheduled in a cron job during our provisioning process seems like a much cleaner solution in the long run than making chef deal with this every few minutes, especially considering the nature of the work means that what the job needs to do is unlikely to change often (actually, probably never. I expect almost any future changes will just be bugfixes and those should be fairly infrequent as this thing really is very very simple.)

                                                                                                            At home: I was working on a proof of concept of a distributed systems framework which just got a near-total rewrite as I realized that my plugin system was totally bogus because I didn’t propagate the everything-is-versioned concept far enough into the architecture - everything was a plugin and plugin implementations were versioned, but plugin interfaces weren’t. Dumb oversight. Now really everything is versioned (except the tiny kernel bit that loads the PluginLoader plugin at startup…) and literally every component can be (mostly) safely upgraded in the running process.

                                                                                                            Now I just need to port all my old plugins to the new system and I’ll almost be back to where I was a month ago…

                                                                                                            I’m also playing way too much Factorio. I am pretty sure there were logistics robots in my dreams last night.

                                                                                                            1. 1

                                                                                                              I don’t know the drill, actually.

                                                                                                              I’m working on paperdoll, a Scala implementation of freer monads. I’m getting close to release, and would welcome any advice - in particular I’m trying to decide how finely to divide the maven modules, and also which effects would be most valuable to implement - should I provide adapters for e.g. the ScalaZ or Cats implementations of Reader/Writer/etc? Doobie is the most major project I know of that makes serious use of Free monads, but are there others?

                                                                                                              1. 3

                                                                                                                I don’t know the drill, actually.

                                                                                                                That’s why I try to copy the text of this weekly thread whenever I start it. It says this:

                                                                                                                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

                                                                                                                  I’m curious how performance works with freer monads in Scala. The reflection without remorse techniques seemed to fail in constant factors for many programs when people were playing with them in Haskell.

                                                                                                                  1. 1

                                                                                                                    Finger-in-the-air estimate: I would expect the runtime performance to be noticeably worse than “basic” Scala/Java, but still better than Python/Ruby. The use case that inspired me to write this is using Scala as a matter of correctness rather than performance, as more of a high-level orchestration layer than anything else, so performance is not a top priority for me. If you’ve got anything on doing benchmarking in a reasonably automated way (ideally integrated with the build) on the JVM I’ll see what I can do though.

                                                                                                                    Compile-time performance is poor (though my laptop’s pretty old now, it might be ok on modern hardware), but for some use cases that might not matter. One thing that would be helpful is making the Eff types concise enough to specify explicitly, but I don’t think that’s possible in Scala (in particular there’s no way to partially specify a type). In practice getting an IDE to one-off infer them is a usable workflow, but it’s not one that sounds good in text examples.