1. 22

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

    Howdy all.

    Been a month since I posted. Sometimes it is just hard to find the energy to write given how much I have to get done. But lately, I’ve been finding it useful to write to help me think through decisions or to make notes to remind future-me of what I was thinking now. Along those lines, I wrote GraphQL beyond the web and Finding a User Interface Library this week. The GraphQL post is essentially a follow up to a post from last week, Querying OS Information.

    In related areas, I’ve been working on fixing up some stuff in Ant Design, a UI library for React. (No, I don’t speak or read Chinese, but there’s no reason to let that stop me.) I’m hoping to help them with a translation of their documentation and web site into English.

    I’m still doing a lot of work on Open Dylan as well. I helped someone out with their UUID library last week and did some further improvements to my libsodium bindings. I need to improve the libsodium bindings a bit more so that I can get further with my implementation of macaroons.

    I’ve also been spending a lot of time with my 5 year old daughter, reading to her, helping her read, and teaching her about some of the fun sides of math. Also had another beautiful skink visit our yard.

    1. 2

      At one point I was thinking about using GraphQL to implement an interface to the Docker daemon API. It’s nice to see exploration in similar areas.

      1. 2

        Thanks for the link to Ant Design, that does look interesting. I’m sad that there isn’t a HTML standard for a datepicker, so something like this might be the next best thing.

        1. 1

          If you want their date component, but without all of their style and other stuff, it is available as a separate component from react-components/calendar. But I like the Ant look, so I’m happy to get it all in a single package. :)

        2. 2

          I was thinking of writing an interface to query OS info through SPARQL. But haven’t found the time and necessary motivation and tech to build upon yet. GraphQL is syntactically cleaner IMHO, but I think there is tremendous value in having a high level query language for those sort of things at all (and SPARQL has been around for some time).

          1. 2

            Hello!

            I thought about that too and talked about it some with @coreload who is a big proponent of SPARQL and related technologies.

            I ended up coming down to the issue that GraphQL is just so much easier and lighter weight to implement and it lets me do exactly what I need in this case, and I’m able to do it in a bit of C that can run on almost any device. I didn’t know of any implementation of SPARQL that would allow me to do the same. Further, if I wanted the capabilities that SPARQL offered, I’d probably want them in whatever front-end I was writing and just by the nature of having my data in a structured format (ala JSON / JSON-LD), I’d be able to pump that into a more capable system when needed.

        3. 11

          Reading! I’ve tired of reading technical books on my ereader, the formatting is all screwed up, so I’ve ordered a bunch of physical books.

          I just received The little schemer and I’m also waiting for The seasoned schemer, sicp, the c programming book and modern operating systems.

          I’m also revamping my cv.

          1. 1

            There are tools to fix pdfs that make them e-reader friendly. In any case, I was thinking of doing the same…Still debating.

            1. 3

              E-Readers work great for novels since you’re generally always reading forward. With technical books you’re often changing the pages, to check on the annex or a previous chapter or just looking at specific pages and unfortunately, e-readers just arent fluid enough to make this work without overhead.

              1. 2

                What tools do you speak of???

                1. 3

                  I’ve been able to get very solid results with k2pdfopt.

                  1. 1

                    I sincerely hope that this changes my life as much as I think that it will!

            2. 9

              Hacking on Rust stuff in my free time. Been doing too much high-level stuff in Clojure for work, so in my free time I’m itching to do low-level hardware code.

              • returning to an old Arduino/Rust based project – an open source glucometer – trying to get it to build on Travis
              • starting a Rust project for working with geolocations from the command line. Will be useful for starting redshift for my current location automatically: $ location -me | redshift, or something like that
              1. 3

                Gluco spikes my interest. At one point I found several reference designs for glucometers from the various microcontroller vendors. The missing piece was the actual test strip and socket for it. I see from the Gluco GitHub that you’re currently integrating with a standalone, off the shelf sensor. Have you looked in to any open source/non-proprietary options for the test strips?

                1. 2

                  Test strips are typically universal, commoditized. I’m not worried about open source versions of the test strips. I’m not sure about a socket, but if it’s been engineered once then it can be (reverse) engineered again :) The other contributor to Gluco is my biomedical engineering buddy, he works on all the hardware stuff, so when I get to that point I’ll work more closely with him.

                  Eventually what I want is an open source version of a continuous glucose monitor. If you have some special knowledge or references on glucometer designs I would love to hear about them!

              2. 5

                Trying to motivate myself to complete this small music collection API so I can finish the front-end. I also decided to stop being a grumpy old dude that dismisses JS. I’ve never really touched it outside of using jQuery at work but after reading A re-introduction to JavaScript and hearing about React I said “why not?”. The use of reusable components to build out the UI is an interesting paradigm and I can’t say that I hate it.

                1. 5

                  That bot in Common Lisp from last week was a terrible idea. Even with namespaces, it feels verbose and unwieldy. Rewrote it in Perl 6 and holy crap managed to pull off a couple of days' worth of CL in ten minutes with zero knowledge of Perl and the module used.

                  Going to get more of this in my toolbox since Perl 6’s the only language from the “holy trinity” of interpreted languages that I can stand (Python and Ruby being the other two). Lesson learned: code to solve problems, not create them.

                  1. 1

                    Care to share the code? I’d be interested in the comparison between the CL and Perl implementation.

                  2. 5

                    I’m trying to do more non-technical reading; I’ve got a collection of unread books to get through. Right now I’m on James Joyce’s “Dubliners,” which will be followed by (in no particular order):

                    • “Kafka on the Shore” by Haruki Murakami
                    • “The Brief Wondrous Life of Oscar Wao” by Junot Díaz
                    • “Gravity’s Rainbow” by Thomas Pynchon
                    • “East of Eden” by John Steinbeck
                    • “The Sublime Object of Ideology” by Slavoj Žižek
                    • “Capital” volumes 1-3 by Karl Marx (if I’m going to hold opinions about Marx and Marxism, they may as well be well-informed)
                    • “The Philosophy of History” by Hegel
                    • “Dialectic of Enlightenment” by Horkheimer & Adorno
                    • “Civilization and Its Discontents” by Sigmund Freud

                    As you can see, this is split into two categories of fiction and philosophy. If anyone has anything to add to this, let me know, although it’ll be a while before I’m done with what I’ve got.

                    On a technical front, I am still slowly tinkering with Ruse, my embedded Scheme for Rust (I’ve been meaning to push what I have, but life’s been getting in the way). I put up a small development blog on the Ruse website yesterday. The only post there now is a tiny one introducing the blog. I intend to use it as a space for contributors to share thoughts and think out loud about design. Ruse is a learning project, and the blog is an extension of that.

                    1. 3

                      I’m about halfway through “East of Eden” right now. I’ve been meaning to try some Steinbeck for a long time and the book came up randomly in enough discussions recently that I took the plunge. I’m really glad I did. I’m trying to read more literary fiction and “classics”, but it can be a chore sometimes. “East of Eden” manages to strike a balance of being pretty weighty while still being an enjoyable read for someone with a modern short attention span.

                      Obviously, his prose is magnificent. The characters leap off the page and crawl into your skull where you start to feel like they have always resided.

                      1. 2

                        Good to hear! I really enjoyed both “Of Mice and Men” and “Grapes of Wrath” when I read them. “East of Eden” may be the next book I read when I finish “Dubliners.”

                      2. 2

                        Fiction wise, I’m going through “Stand on Zanzibar” right now, it’s truly great! No idea why I left it waiting on my ereader for so long.

                        1. 1

                          I’m looking at it now, and it looks good! I don’t read much science fiction, but I may give this a try.

                          1. 1

                            This is near future fiction, there is an ai but its not that much more develloped than walter. Or so it seems at this point in the book.

                      3. 5

                        I gave my talk Lessons of Liskov at wroc_love.rb. Did not die on stage, or worse, throw up. I got a lot of positive response that justified the stress of the very short production time. I’m happy with the material and my presentation, but I do hope I get the chance to give it again to smooth a couple rough edges and further amortize the time I spent on it.

                        This week I’m doing all the things I set aside for talk prep: a new ssl cert for TwoFactorAuth, replacing Mandrill for NearbyGamers, taxes, packing to move house, and some quality time studying Haskell as dessert after these chores.

                        1. 2

                          I said “amortize the time I spent” to be cute about how much up-front work vs. marginal work there is to give a talk a second time, but after it rolled around around in the back of my head I ran the numbers. Between travel + prep time, I could’ve had a 30m one-on-one chat with each of the ~170 attendees. I know there’ll be more people who watch the video than were in attendance, but ouch.

                          I have another talk scheduled in June and the conference organizer has said that not all talks will be filmed. I’m seriously considering canceling. Travel time is heavily reduced, but prep time to write + rehearse will be similar or maybe greater. Saying “film my talk or I won’t show up” sounds kinda prima donna, but that prep is irreplaceable high-quality work time.

                        2. 4

                          i’m trying to use the bitbucket api via haskell/wreq to make a jupyter dashboard thing using ihaskell. the hardest part is figuring out how to actually authenticate to the bitbucket api! it’s not the worlds friendliest…

                          1. 4

                            At work (Parse.ly): finished a project with a colleague migrating a big Tornado API server that gets 2 billion customer requests per month to a new backend infrastructure, saving our company a small fortune in server costs! Was a nice project as codebase got smaller, simpler, and more modern as part of the upgrade.

                            Outside work, just finished reading ‘Patterns of Software’ by Richard Gabriel and have started to become interested in refreshing my C knowledge and perhaps studying Go a little via Kernighan’s writings of old and new (TCPL and TGPL books).

                            1. 4

                              I FINALLY deployed my reporting application (yay me), am working on getting some packaged stuff up on debian, and learned why my current resume is so devops heavy and why I can’t answer algorithm questions in interviews.

                              The basics of why the deployment is such a big deal is that I’m so fast with development that stuff piles up. Devops is not my strong suit so it takes longer. I have to research what to do, how to do it, then do it. With development its just a tiny bit of how, then just do it.

                              I also found a bug that made me feel the same way I feel when faced with algorithm questions in interviews. But this was my bug and I wanted to fix it (unlike interview questions). So the way I approached it was with inputs and tons of trial and error with working code and working tests. I finally got it down. Originally the tests had to be slowed way down to compensate for the bug. Now that its “fixed” its so fast that the testing knocks the server over before knocking the application over.

                              1. 4

                                The startup that I’m at is being sunset, as of last week (long story, will not tell right now) …so it is kind of like the bottom of a pit trap in the office right now. I’m working on “maintenance/stability” tasks like passive ftp fallback for reporting / csv uploads to users' servers, auto-recovery for servers that need restarting, and fixing DST bugs we just discovered. Everyone is openly job hunting. I have some great things lined up but I am worried about some of my less experienced coworkers, and we are all still smarting from the nonsense that is b2b investment strategy. I’ve started doing the exercism.io exercises in python to improve my style (I’ve already done them in ruby and it was great to see other people’s solutions and pick up style guidance)

                                1. 3

                                  My pet project is coming along nicely. The drag results display is still hideous but it’s as good as I’m going to make it right now. I want to move on to other things that are much further from done.

                                  Has anyone ever done graphs or charts with GTK? More specifically Vala + GTK? I’d like to eventually add some to my project but I’ve no idea where to start. It seems like such an obvious thing to need that surely someone has already coded out a charting library.

                                  1. 2

                                    You could use cairo to render charts yourself, or use one of the libs 1 2 3 or if none of these workout (i don’t have experience with this side of Gtk+) you could render the graphs using gnuplot and show them in an image view.

                                  2. 3

                                    I’ve been working some on my Clojure + ClojureScript implementation of the card game Hanabi, which I released recently.

                                    I’ve got reordering cards working, although it is somewhat counter intuitive, as you cannot drag a card between two other cards to reorder them but need to drop it on another card which swaps them. The problems is with HTML5 drag n drop, in that I need a drop target (which currently is the other card). I haven’t found any ClojureScript drag'n'drop libraries that would allow more intuitive reordering (there is dragula, but that’s JS). Additionally I plan to draw the hands with SVG eventually to allow a more flexible and realistic appearance (fanned cards?), so I might have to write my own anyways :(

                                    The game is overall in a quite early stage, but fully playable and I appreciate any form of feedback!

                                    1. 2

                                      Getting to the point I can generate another blog post for my blog. I used a static site generator for it, then failed to update it in months. Apparently the latest version of the generator breaks a bunch of stuff (such is the issue with forward progress) and I’ve half ported it to two different other generators since noticing. I just need to buckle down & get it working in something.

                                      1. 1

                                        Hm, I’ve ultimately decided to write my own using Asciidoctor. No significant progress so far, though.

                                        1. 1

                                          I suspect my ulterior motive of spiking up a change to Middleman was to learn more about it, as we’ve a few things built with it at work now. Seems alright, once I figured out how to have one input file rendered in two different formats in the output. (My markdown files get rendered out as HTML and plaintext.)

                                      2. 2

                                        This is finals week for me, so I won’t have much time at all for fun projects. Even so, I’ve been tapping away at an alternative to protobuf for Haskell<->Java and maybe Rust IPC. protobuf doesn’t really map well to Haskell data types (the only variant support is through oneof, for example), and I’d like something that uses native Haskell instead of bindings. On the Haskell side, I’ve worked up to the point where you can write data types like this:

                                        data Thing = Thing { thingOne :: Int
                                                           , thingTwo :: Text
                                                           }
                                        rosettaType ''Thing
                                        rosettaTranslate ''Thing $ ToJava "test.stuff.Thing"
                                        rosettaTranslate ''Thing $ ToRust "test::stuff::Thing"
                                        

                                        and it generates (de-)serialization code and annotations via Template Haskell. A GHC plugin would then sweep by, pick up those annotations, and generate corresponding Java and Rust code.

                                        However, after getting this far, I think I’m going to switch to defining data types in separate files instead, like protobuf does. Something like:

                                        # Thing.rosetta
                                        data Thing = Hello { one : int
                                                           , two : str
                                                           }
                                                   | World { someList  : [str]
                                                           , someMap   : map str int
                                                           , someTuple : (int, int, int)
                                                           }
                                                     deriving (eq, show)
                                        
                                        newtype Wrapper = Wrapper Thing
                                        
                                        alias Something = Thing
                                        

                                        and then

                                        {- Thing.hs -}
                                        importRosetta "../messages/Thing.rosetta"
                                        

                                        with Template Haskell parsing the message definition file and generating code for the data type(s) and serialization. Then I could do something similar with a Rust compiler plugin (I think) and only fall back to raw code file generation for Java.

                                        Meanwhile there’s also a bunch of LiquidHaskell work queued up for me to do. There should be a new LH release to Hackage sometime soon after the ICFP paper submission deadline passes this week, and then I can properly release the plugin for Cabal/stack integration I developed.

                                        1. 2

                                          Finished the Go testing plugin for Emacs only to realize it had been done before. I couldn’t even scrape together anything original I had done to contribute to that plugin, so I’m shifting focus. I found that Emacs lacks a plugin for interacting with Cassandra, so I’ll start working on a major mode that provides syntax highlighting for .cql files and a REPL mode built around cqlsh. Best of all, I’ll be able to use it at work!

                                          1. 1

                                            ETL using spark/scala and some front-end work in ember/es6.