1. 28

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

    I have the final exam of my degree tomorrow (AI & Game theory), then I’m organising moving to Munich which happens on Sunday for my internship at Google. I don’t have time to write more because I need to revise auction theory!

    1. 2

      Oh! Welcome to Munich then!

    2. 9

      Working on the v1.2.0 release of greatest (changelog), my testing library for C. Among other things, this release attempts to add C++ compatibility. I don’t really know modern C++, though (I haven’t touched it since Borland Turbo C++ in the mid 90s), so I’m still investigating whether my changes are sufficient.

      Working on an upcoming presentation about parsers for a local user group. Part of it is finishing and heavily commenting my C Earley/Intersection parsing library, linen.

      1. 1

        You must have heard comparisons to CATCH :) May I ask why also add C++ support? The framework may have a nice niche as an easy to use C only testing library.

        1. 2

          It’ll still be a C library – I’m not adding anything for idiomatic C++ testing. I’m trying to eliminate warnings and linker errors when using greatest from C++ (as a C library), because it shouldn’t get in the way if people need to mix them. I’ve gotten questions about C++ support from time to time.

          greatest’s goal is to avoid imposing architectural constraints on its users, and to depend on as little as possible, while still providing enough infrastructure to be significantly better than (say) MinUnit.

          1. 1

            What sort of errors is it throwing?

            1. 2
              1. A warning (fixed) where C++ is stricter about enum typechecking.
              2. I hadn’t put in the extern "C" { ... } wrapper around the header, which sounds like it could have led to namespace problems of some sort.

              In its present form it compiles without warnings using both C and C++ with lots of warnings enabled, but I’m not familiar enough with C++’s linking edge cases. Any others that come up can be treated as portability bugs.

      2. 8

        My mechanical keyboards have dead keys so it’s time to break out the iron and multimeter

        1. 2

          multiple keyboards with dead keys…. what are you doing to them o___o

          1. 2

            one keyboard experienced inexperienced desoldering hell when I was changing out the plate and the other is all oem minus the case and keycaps, just shitty build quality

        2. 7

          It’s BSDCan this week. DTrace workshop thingy on Wednesday, slacking on Thursday, conf Friday & Saturday. Packed a couple of board with me to play around with throughout the week. I hope to understand why a BeagleBone Black spits out a load of Cs on the console with some operating systems and not others and maybe boot something on the Intel Galileo now that I have db9 to 3.5mm jack serial cable

          1. 3

            Headphone jack is my favorite lolwut serial connector.

          2. 7

            Learning rust by watching live coding sessions, writing a small GUI for pngquant

            Turns out libpng isn’t very straight forward if you don’t want to use malloc or new in your c++ code, once that was figured out, libquant just removed 50% of my image. Need to get a better understanding of how images are represented.

            1. 6

              last week I played with microcorruption https://microcorruption.com a CTF game which run on exotic architecture (not x86 or ARM) with a debugger embedded on the browser.

              1. 6

                Learning way too much about Varnish to help with the caching story at my new workplace! I’m a little over a month in at GitHub and enjoying it very much.

                1. 6
                  • Plugging away at a clone of Lobsters in Elixir/Phoenix with a colleague. It’s butt-ugly, but we now have both users and story submissions and markdown rendering!

                  • Making a cleaner app for doing online robot swarm manipulation experiements.

                  • Fixing a broken table lamp.

                  Not super ambitious, but something to keep me out of trouble. :)

                  1. [Comment removed by author]

                    1. 1

                      What exactly are the functions that you can’t figure out?

                    2. 5

                      Continuing to tweak this Elm implementation of Peter Landin’s SECD machine that I made for Papers We Love Toronto last week: http://jamesmacaulay.github.io/elm-secd/.

                      1. 4

                        I’m going to be remoting in for my intern orientation at Mozilla. Then it’s finals, finals, finals, unfortunately…

                        1. 4

                          I’m considering learning by Guile by rewriting my Vala program. I want to learn a lisp dialect language and I guess I don’t have any attachment to Guile but it seemed the most convenient given my intended project.

                          1. 4

                            If you want to embed Guile in a C/C++ application and have any questions, I’ll be happy to help. I’ve managed to make it work (maybe not in the best of ways …) in a C++ multi threaded application https://github.com/rjmacready/Stockfish/tree/master, just check these 2 commits here and here, There’s still a lot of work to be done scripting-wise, but the boilerplate to call scheme from c++ and vice-versa is working.

                            1. 2

                              That wasn’t part of my original plan, but now that you mention it, it might be! Thanks for the offer!

                            2. 3

                              What are you planning on doing with it? I’ve been using Guile for a project and its been nice to work with.

                                1. 1

                                  So what would guile be used for there? User scripting of calculations? It’s hard to tell from the Readme / site. You mention rewriting stuff that’s in Vala, would you be building the UI in guile?

                                  1. 2

                                    I hadn’t made it that far into the process. My initial thought was to attempt to move “LibBalistica” to Guile then just integrate that in instead of the existing Vala code.

                                    Edit: The code for libbalistica is already compiled separately and statically linked within CMake, so if I were only going to do part of the project up front, it would be this or the GUI.

                            3. 4

                              Plugging away on my side project, https://mailfeedapp.com. Everything works at this point, though I have had some issues with some incorrectly formatted rss feeds that I’m trying to work around as best as possible. The app currently lives on Heroku, but performance is sub-optimal and I’m looking at moving towards a VPS like DigitalOcean.

                              1. 4
                                • Back to (remote) work after moving cross-country
                                • Continue setting up furniture in the new house
                                • Start reading the Site Reliability Engineering book
                                • Re-reading and editing my YA Horror novel
                                1. 3

                                  Had a long week last week, travelling to Munich to meet my colleagues. Managed to get stranded in Amsterdam for about 36 hours due to bad weather on the way there, and 6 hours delayed back home for the same reason. Monday was a complete wash-out, spent entirely at Schipol (the Amsterdam airport) queueing. I spent most of Tuesday sightseeing in Amsterdam. Best bits: I gave a presentation about Emacs functionality I use a lot, and there was a few giggles and a “wow"s and afterwards more than half the tech team was playing with Spacemacs. Got home exhausted, so immediately succumbed to the illness my wife and son had, so today I’ve been home resting. Not sure what the rest of the week will bring.

                                  1. 3

                                    I made a lot of progress in all of my projects except for work last week. I have added most of the mouse and floating layer support to gram. Last night I hit the milestone that the following worked:

                                    (define-key! default-keymap (kbd "Mouse1") view-focus)
                                    

                                    I’ll bet that even without much context, most of you can guess what that does. The only remaining thing for floating layer support is to actually implement drag-to-move/resize, which at this point will be done in Guile as I’ve exposed all the necessary primitives there. EDIT: Done! ^.^

                                    Once I finish that, I’m going to figure out how I intend to document this and write the remainder of the user-motion functions.


                                    I’ve also been experimenting with writing greedy algorithms for work (grad student) in other languages. My first stop was Scheme (specifically Chez because of its reputation for speed, which is crucial for this). Writing the reverse-influence-sampling (sampling probabalistic graphs backwards to estimate node influence) code and the BFS implementation that supports it was surprisingly easy and performs reasonably well. Sampling 1M times from a 5000 node graph takes about 3 seconds, which is more than the C++ implementation I have but also far more readable. Unfortunately, when implementing the greedy algorithm itself things fell apart and performance is abyssmal. I may take a second pass at it because my code is frankly horrifying (lots of do, little recursion), but I’m not confident that it will reach an acceptable level of performance.

                                    Probably the biggest disappointment in this is seeing how the other issues I’ve had with it make this work far more difficult than it needs to be. The Scheme community is extremely fragmented and aside from the relatively few actual R6RS libraries I’ve seen (random R6RS code on github does not count) it seems like that would be the biggest problem with actually using Scheme – even in a situation like this where most of the code needs to be written from scratch to satisfy research requirements (e.g. many graph libraries don’t (easily) support graphs with arbitrary numbers of attributes on nodes and edges). That and the lack of either Clojure-style protocols, Rust-esque traits, or any form of interfaces makes trying out alternate data structure implementations far more time consuming than it should be. I was switching back and forth between SRFI-1 list-sets and ijp’s purely functional sets for performance comparisons and it required almost a full rewrite of the related code.

                                    Once I have some more languages to compare, I’m going to write a (likely lengthy) blog post about the options for this kind of work (pros/cons, etc).

                                    Do any fellow crustaceans have language suggestions? My next stop is probably either going to be OCaml or Rust before I take a look at Common Lisp and maybe (very maybe) Haskell.

                                    1. 3

                                      Work: carrying on with backend Lua API for React Native app. OpenResty is the mutt’s nuts.

                                      Hobby: just worked out (read: finally read the docs properly about) how to return pointers to C structs via the NIF interface and pass them around (& back) as Erlang references, rather than keeping static references in C that “will probably be fine” and risking the whole world blowing up at some unspecified point because I didn’t lock the dogs and the cats in separate rooms. Gonna redo a bunch of modules that way.

                                      1. 3

                                        Theoretically, I am studying for my finals this week (Ring/Field Theory and Web Security) after which I will finally be able to start doing research. Also if anyone knows good resources for Category Theory, I’ll need to crash course that over the summer for my research this fall. At the same time, I’m working on a toy ORM for my databases class which I need to finish by the end of the week. So that’s taking up most of my “study” time. Finally, getting things put in boxes to move up to the east bay for my first security internship this summer, which I am very excited about.

                                        1. 1

                                          Ring/field theory; we’re talking Galois theory here, right? How’d you like it? Do you know how to compute a Galois group, in principle, even if the calculations would be astronomical? I feel like that’s the real acid test to see if you understand Galois theory or not.

                                        2. 3

                                          I’m hoping to put some time into collecting and analyzing data I’m going to need for my Rust Belt Rust talk. The conference isn’t until October, and I’ll have to collect the data again as it gets closer (I want whatever I present to be reasonably recent), but I also don’t want to be building and debugging the collection tools last minute.

                                          I’m also trying to make a variety of improvements to the Rust website. I’ve got a PR open right now to add new answers to the FAQ, and hopefully I can get that merged this week. I’ve also got a rewritten version of one of the Rustonomicon chapters that I’d love to get merged if I can.

                                          Besides that, I’m hoping to have a new Suspect Semantics post up this week. I’m flying on Thursday and Saturday (super short trip), and that should give me some solid uninterrupted writing time.

                                          1. 3

                                            Didn’t have any time to do my Common LISP study last week :( This week I’m going to take up the reader for the 2bit encoding file again, learning macros as I go along. It may be a too ambitious project for a rank beginner, but I can’t get hurt if I fall off, can I?

                                            1. 3

                                              Refactoring an Elixir/Phoenix project. Originally I had kind of thrown the whole thing together into one repo, like a typical Rails app probably except it did have a small supervision tree of processes for business logic. But everything was very tightly coupled to Phoenix and Ecto. I started a new mix project and have been rewriting all that business logic completely independently of Ecto in there, then I added that project as a dependency of my Phoenix app.

                                              So far it’s looking much cleaner and it’s been (with one exception) much easier to test. I’ll try to finish it up in the evenings this week.

                                              1. 3

                                                This week, I will (should) focus on fixing several issues on hawkpost (a software that helps on the task of receiving encrypted information from people who don’t know how to work with PGP). Eventually, if I have the time, I want to give my first steps with rust.

                                                1. 2

                                                  Mostly working on learning Elixir and Phoenix, with an eye to using them in some side-projects in the near future. http://elixirsips.com/ has been invaluable, plus the Programming (Elixir|Phoenix) books from pragprog.

                                                  1. 2

                                                    Still working on https://neuralobjects.com stuff. Specifically now, I’m working on updating the backend service that does all the cluster provisioning to update a database record as it progress, so we can show a graphical indicator in the UI. I also want to be able to send an email / XMPP message / etc. at the end when everything is up and running.

                                                    Unfortunately I got hung up in a bit of a rabbit hole on this over the weekend. I prototyped some of the db stuff using Spring Data JPA which works fine, but the services are deployed as OSGI bundles in ServiceMix… and a lot of the Spring jars are not available as OSGI bundles, and I ran into a lot of issues getting that all to work. So now I’m debating if I want to switch to using Apache Aries or something, or spend the time learning to work with bndtools so I can wrap/repackage the Spring jars myself. sigh

                                                    Edit: this might not be so bad. I just realized that I don’t need to go as far as using Aries, which provides a pile of “Enterprise OSGI” features… Hibernate has an OSGI specific bundle which (purportedly) makes it pretty easy to just use vanilla Hibernate (with or without JPA) from inside OSGI. If this works the way I expect, I should have this database stuff done this week with no problem. fingers crossed

                                                    1. 1

                                                      Got the Hibernate “Unmanaged JPA” OSGI demo app running in ServiceMix, so this should be downhill now. I just need to wire up Hibernate into my service and fix up a few small things, and that bit will be done at least. Hopefully I can get this done tomorrow or Friday.

                                                      Baby steps…

                                                    2. 2

                                                      Today I spent half the day trying to build a test files only jar from gradle with groovy sources, which is very simple. https://github.com/compwron/gradle-executable-jar-demo The other half of the day I paired with teammates on Arcane Continuous Delivery Pipeline Incantations and ended up forking something which will hopefully deprecated next week, because we need everything now now now. https://github.com/compwron/gomatic

                                                      Tomorrow and the rest of the week I get to help thrash out what our new auth system should look like, and then start building it.

                                                      I’m also reading the book Modern Cryptanalysis: Techniques for Advanced Code Breaking.

                                                      In my “spare” time I hope to make some progress on a browser plugin to highlight hotels that are fair to their workers in biz hotel booking tools like Concur (this was inspired by a talk at AlterConf SF this past weekend) https://github.com/compwron/fairhotel-browser-plugin

                                                      1. 2

                                                        I completed porting TensorFlow to FreeBSD, only to learn CPU CNNs are absolutely useless. Woohoo!

                                                        This week: trying out the HTC Vive my friend bought, more running, maybe haircut, and frickin' force myself to work on my Gameboy game. I have to flippin' finish it. I also want to get this vintage calculator working I bought for $3.

                                                        1. 2

                                                          $WORK is getting close to rollout but certain aspects of Java development are driving me crazy.

                                                          Getting ready for PyCon AU where I’ll talk about The Internet of Not Shit Things and trying to make some ongoing progress on Flobot which I talked about at Buzzconf Nights

                                                          And a few other things …

                                                          1. 2

                                                            An event loop library in C++ and an init system which makes use of it. I recently ripped out libev from Dinit, since I don’t want to use a library that aborts when it encounters a malloc failure - if init dies, it brings down the whole system… I probably could have used libevent, but I’ve been toying with the idea of writing an event loop library for a while and this seemed like a good time to start.

                                                            And yes, dinit is intended to become a systemd alternative…

                                                            1. 2

                                                              Currently mostly working my network for possible jobs. The present job is becoming untenable.

                                                              Otherwise I’m learning typescript and angular2.

                                                              1. 2

                                                                wrapping up Webhook-Liason(https://github.com/davidhampgonsalves/webhook-liaison), a configurable filtering/transforming Webhook proxy.

                                                                1. 2

                                                                  Working on adding ML-style type inference to my toy lambda calculus interpreter in Erlang. The end-goal is to have a small functional language that compiles to Core Erlang, but for starters I’ll be very happy just to implement Hindley-Milner from scratch.

                                                                  1. 2

                                                                    This week the job hunt continues: 12 years of Linux/cPanel hosting experience. I’m also going to look into doing some freelancing work and try to pick up a couple of System Administration jobs. I like helping out folks who have their own servers but don’t really know how to run them. I’ve also been making noise about wanting to re-learn web development, and will be starting on RoR this week, mostly because of https://www.railstutorial.org’s approach to teaching all the prerequisites along the way. In that vein I have to get RoR setup on one of my VM’s. Then there’s some yard work and a honey-do list to take care of.

                                                                    1. 1

                                                                      I had good luck creating “real time” animation synced to MP3 music (up to 90 fps), so I’m going to add some widgets for controlling things, and expand to some more interesting animations. If anybody’s looking for some Common Lisp/Qt/Qtools example code, the code is on GitHub: https://github.com/jl2/qt-fft-viz

                                                                      I’ve also been thinking about and planning the hikes and back packing trips I want to do over the summer, but haven’t come up with any definitive plans yet.

                                                                      At work mostly plodding through cases in preparation for an upcoming release.

                                                                      1. [Comment removed by author]

                                                                        1. 1

                                                                          Beating a crippling depression.

                                                                          Hug

                                                                        2. 1

                                                                          Project Boat is getting closer to completion, jobs this week include getting a new tyre on the trailer, sealing the keel back to the hull properly and refitting all the wooden bits that have been well varnished now.

                                                                          Project BMW is waiting on parts arriving this week too, after it dumped coolant all over the high street a week ago. Waiting on a new coolant level sensor, and a new tensioner pulley as the old one’s bearing is shot and why not replace it whilst everything’s out anyway.

                                                                          On a technical front, I’ve started learning rust. Getting somewhere with the exercism exercises and finding it easier going than I expected. Next up is an implementation of cat(1) in rust I think, as that appears to be my go-to project in a new language now.

                                                                          Weather in the UK has been glorious this last week or so, really getting some miles in on the bike at last. Long may it last (not likely, supposed to be pouring down tomorrow.)

                                                                          1. 1
                                                                            1. I’m cooking up another release of https://github.com/gregnavis/active_record_doctor.
                                                                            2. I’m studying PostgreSQL source code with the intent of contributing.