1. 24

This is the weekly thread to discuss what you’ve done recently and are working on this week.

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


  2. 16

    I’m actually home for a full week for the first time in a while!

    I’m largely working on two things: more Rust docs, as usual, and getting JSON API 1.0 out the door. We’re pretty happy with the format, but when you’re trying to launch something, you need tutorials and howtos and a decent site and all this other stuff that we don’t currently have.

    1. 13

      Welcome to a new week, everyone!

      For my work, I’ve been trying to sort out code size issues in code generated by emscripten. Some of the usual metrics that LLVM would apply don’t map entirely well to emscripten output due to the increased size of generating a loop in JS vs in machine code. This matters because LLVM turns some things into calls to memset / memcpy and then emscripten tries to get rid of those calls, which sometimes bulks up the code substantially.

      For Dylan, I’ve been doing more work on improving debugging Dylan code with LLDB. This has been pretty fun and some real progress is being made. I did find that sometimes, LLVM is losing debug information in unexpected ways in optimized builds. I’ve created a test case for this and filed an LLVM bug: https://llvm.org/bugs/show_bug.cgi?id=22892

      For my other project … I’ve been learning a lot and getting a template project with Typescript and related tools going. I’ve been thinking a lot about how to marry concepts from CLIM and the HTML world and will start sketching that out in code form within the next 2 weeks.

      1. 9

        … tough-Monday-much? :) Given the lack of replies I think I’ll join the party this time.

        I’ve been reading about text editors (I’ve a couple of interesting reads in my queue, http://www.finseth.com/craft/craft.pdf and https://www.cs.unm.edu/~crowley/papers/sds.pdf), trying to find cool ideas for a pgn editor I’m making to entertain myself (as of now, it’s just a pgn viewer). I was trying to pursue the road of structured text editors (as in http://www.guilabs.net/); instead of editing raw text, you’re editing directly a sort of AST. Lets see how I’ll use this in possibly large pgn files, as I already have a pgn file parser.

        I’ve been also keen to read/learn about emacs architecture, but haven’t found good resources other than the source code itself (this https://www.gnu.org/software/emacs/manual/html_node/elisp/GNU-Emacs-Internals.html seems like low-level internals stuff, not really what I wanted).

        I might get a little crazy and take a peak at TempleOS text editor, I’ve read somewhere that it supports files with text / images / etc.

        Any links/feedback appreciated.

        1. 3

          I’m a big fan of structure editors, for what it’s worth. Emacs’s nxml-mode is almost one (for XML, sadly), and its paredit is one (for Common Lisp). Since Emacs fundamentally stores text in its buffers, these function by restricting what edits can be performed to validity-preserving ones, but it’s otherwise the same basic idea as the native-weird-data-structures editors.

          A large problem that structure editors must solve is that there are quite a few important workflows that involve making things structurally invalid temporarily.

          For example, in a plaintext editor, one might copy-paste some semi-formatted data table, then massage it with a series of manual edits and grep-replaces into function invocations or object literals. Structure editors typically can’t do this at all.

          Or one might want to duplicate only a snippet of code from elsewhere, fixing up the names of its free variables after pasting it; this can’t be done naively because it’s generally a constraint that all variable references must correspond to variable bindings at all times.

          If you have ideas in mind for this sort of thing, great! I definitely think it’s all solvable; I just think it does need to be dealt with.

          On another note, I’d honestly encourage you not to spend too much time trying to understand the Emacs codebase. It has thirty years of cruft at this point… :(

          1. 2

            Drop by IRC (in the usual location) sometime and I’ll be happy to start you on a tour of a zmacs-style editor codebase.

          2. 9

            Yesterday, I created Vetinari Clock Simulator. It is a web page that plays a distractingly irregular tick-tock sound, mimicking Vetinari’s clock from Terry Pratchett’s Discworld series. I recently finished reading Feet of Clay, and was inspired by a passage describing the clock.

            Here is Going Postal’s description of the clock the page simulates:

            The clock in Lord Vetinari’s anteroom didn’t tick right. Sometimes the tick was just a fraction late, sometimes the tock was early. Occasionally, one or the other didn’t happen at all. This wasn’t really noticeable until you’d been in there for five minutes, by which time small but significant parts of the brain were going crazy.

            The page is written with simple JavaScript, scheduling ticks with setTimeout. I started out playing audio with just new Audio(), but switched to the howler.js library for cross-browser compatibility. The problem was not support for Audio(), but that Firefox for Android didn’t let me play() the same audio element twice without re-load()ing it, unlike other browsers I tested on.

            1. 8

              Last two weeks have been busy with travel, work, Heroes of the Storm, and such. I’m still committing to Hython, though:

              • Almost all of the Parser is done, though I avoided defining a representation for things that I had no clue on (thank you bottom type). Keyword arguments are the only thing left here.
              • Implemented the with statement in it’s entirety. This ended up being an AST desugaring, much like for was. Hython now supports all the statements in the Python language!

              This week, I hope to work on a few more data structures (sets/dictionaries) or start looking at how to implement the yield expression.

              1. 7

                I took a crack at a roguelike ascii display using om. So far it works but is slow, have some plans to benchmark it and see if I can make it work, if not, there’s some canvas in my future :)

                I looked wistfully at the 7 Day Roguelike entries but really only had time to peck away at a few pieces rather than any cohesive project.

                1. 5

                  Last week, I managed to:

                  • Begin a new chapter of Prose for Programmers
                  • Write an issue of A Drip of JavaScript on the const keyword (to be published tomorrow)
                  • Determine that Mailbox for iOS does not support the white-space: pre; CSS property in HTML emails. :-(
                  • Complete a tentative “UI Tech Stack” document for my company

                  This week, I hope to:

                  • Write a newsletter on unit testing
                  • Finish the General Rules chapter of Prose for Programmers.
                  • Start the ball rolling for dropping IE9 support at my company.
                  • Look at the JS errors New Relic is capturing and turn the most common ones into bug tickets
                  1. 5

                    I started shaving a yak at the end of last week and produced some shitty code: lack. It works well enough for the task at hand, but I may try to spend some time making it less horrible, and more generally useful, perhaps even going so far as to providing basic AWK like functionality…

                    1. 4

                      I got some great ideas for more optimizations for Fire★ after reading some papers and watching some talks. So this week, either I will implement some of those, or try to implement the Raft protocol for conversations. Having a leader in a conversation along with a replicated store could enable some interesting p2p apps.

                      I am also working on a prototype for a cool new system for work on the side. I can’t speak about the details but I have a nice working prototype. So this week I will write a paper describing some of the ideas hoping to convince others how awesome it is.

                      What is better than a paper describing a system? A working mini version of that system!

                      1. 4

                        Did another user interview, with only one major complaint! Oh goodie. I’m getting somewhere. Whipped up a quick solution (Problem: user thought the onboarding process was the entire product. Solution: Show screenshots of product in action as first step). Looked terrible.

                        Took a break from the UI/UX stuff (ugh) to slam out the first set of CryptoPals solutions (http://cryptopals.com)! Had an enormous amount of fun with that, can’t wait to tackle the next section. When your day job is frontend you forget how fun the complicated stuff can be.

                        1. 3

                          I just took a final in my abstract algebra class and feel humbled. Aside from that I get to devote my attention to a project in my cloud computing class now. My team is building a coding challenge site similar to ProjectEuler.

                          We are using Go, MongoDB, and Firebase which has been a pleasant experience. I have also found the Gin framework to be very fun to use. It’s performance is great and it allows us to add new functionality rather easily.

                          1. 3

                            Just finished up a pre-alpha integration with PingFederate as an IdP Adapter. It was fairly tough only because the documentation is sparse and the examples are pretty basic/old. Made a few false starts but once it got going it was done over this last weekend. That’s going on the back burner until I hear back from integration partner. Just blew away some work on a reporting dashboard that I stupidly did in place and am going to try and resurrect that. Then I’m going to continue on the Rules Engine track to implement some behavioral rules. Not sure how much I can get in this week but thats my plan.

                            1. 3

                              reading through the Z machine spec and seeing whether i want to embark on that particular rite of passage :)

                              as a bonus, i did stumble upon the best use of a literary quotation in a technical document ever: http://inform-fiction.org/zmachine/standards/z1point1/sect04.html

                              1. 3

                                Work: Finally wrote something in Golang again (in contrast to the usual Rails/Ruby work); internal tool, but high visibility for collegues and clients.

                                Big milestone considering we now have 2 project in Golang (versus the 150+ in Ruby).

                                Not Work: * Continuing work on my “all disrupting” PaaS ;-) (trying to put in 10 hrs a week) * Still learning Haskell (6 hours) * Kids (72 hours a week)

                                1. 3

                                  I’m writing up my dissertation. Well, I’m procrastinating on writing it up. I hope to be able to release it openly pretty soon, because I know lots of people are interested in the work (Idris -> Erlang compiler + associated stuff)

                                  1. 2

                                    At work, still working on improving the installation experience for OpenStack on Ubuntu.

                                    At home, I decided I needed a sync'ed GTD-esque todo list, and didn’t want to stick with a Mac-only solution, so I ended up writing some code to work with todotxt format files in DropBox. It’s been working well, but if Mac-only isn’t a problem for you, I recommend OmniFocus. I’ve spent a little bit of time recently on some scripts to work with multiple files (e.g. waiting, someday-maybe and next-week files) and to do a review.

                                    There are several python libraries around to do this, but none of the ones I found quite worked out of the box for me, or they weren’t comfortable to hack on, so I wrote my own. I’ve had it on github, but just now wrote a Readme: todotxt-py. I don’t plan on making it a big project, but if anyone else finds it useful, that’d be cool.

                                    1. 1

                                      I’m reading up about population genetics and some approaches to modeling genetic variability in fake populations because I want to implement code to model large populations (of the order of 1,000,000) of genomes.

                                      1. 1

                                        I started on a tiny HTTP service for logging pixel tracking events to downstream consumers – really just UDP syslog for starters. Most of the work this week, though, are new API endpoints – nothing too fancy.

                                        1. 1

                                          Finals, unfortunately. Lots of stress and studying!

                                          Afterwards, I’ll be putting more work into LiquidHaskell. I’m working on module-by-module code verification (instead of all-modules-at-once), reusing work between modules, and, ultimately, integration with Cabal, Haskell’s package manager.

                                          I’ll also be drafting a proposal for GSoC ‘15 this week, for more work connected to LiquidHaskell. Very excited for this especially! One idea we’ve been talking about is using type synonyms to encode LiquidHaskell type signatures in native Haskell, instead of parsing special comments like we do now—so something like this.