1. 25

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.


  2. 12

    Regarding the parsing subject of last week, i found an interesting paper but i’m yet to read it.

    I’ve finally started to play with emacs' elisp and org-mode, and i managed to use dynamic blocks to insert images generated by a project of mine that has a web endpoint http://i.imgur.com/KFhIezx.png. I was also able to implement a new type of hyperlink that just POSTs to my project and opens stuff in there. Next step is probably refreshable lists.

    1. 2

      Thanks for the update, always keen to learn more about advanced parsing techniques.

      I will add that paper to my reading pile.

      1. 4

        Me too! I’ve been wondering what the state of the art is in extensible or bidirectional parsers. If anyone here knows anything about the subject, I’d love the extra reading material.

        1. 2

          I can’t say I’m familiar with bidirectional parsers, please send me any material you find :)

    2. 11

      Hello all!

      I’m still working in Rust as I have been for the last month. This has been a lot of fun and I’ve been learning a lot.

      I haven’t poked at the command parser as much in the last week in any public sense. I’ve done a lot of experimentation with ownership and stuff behind the scenes, but nothing that I’ve wanted to push out. A big thing to sort out here is how to handle building the actual command tree without having to use RefCell hopefully. (But maybe I should actually be using RefCell…?)

      I also started a new crate for doing ICU style message formats: https://crates.io/crates/message-format and https://github.com/endoli/message-format.rs … This has a good bit of work to do as I have to sort out how to actually do the argument handling as well as write parsing code. I’d welcome any help here.

      I’m poking at some other crates / libraries that I’ll need to write … but not much interesting to talk about there yet.

      I also noticed that Franz released the CLIM2 source code for the Common Lisp Interface Manager. This is letting me answer a lot of questions about how some things were done in the official versions. It is also pretty cool to be reading through code with a 30 year history and not find it repulsive. :)

      Also, if someone’s interested in learning Rust, I have a bunch of projects that I need to get working and I’d be happy to help mentor someone. Most of these things are even generally useful.

      1. 3

        Franz released the CLIM2

        This thing? https://github.com/franzinc/clim2

        Oh, I have to take a few days to look at this :)

      2. 10

        I’m taking advantage of the long weekend (Memorial Day -> 3 day weekend) to catch up both on sleep, and on my long-neglected window manager project (Gram).

        My motivation for writing this WM is twofold: first, there are very few WMs for Wayland thus far, although all the major display kits are compatible and XWayland is reasonably mature. When the Linux world starts switching over to Wayland sometime in the next decade, I want to have a mature tiling WM to switch to. Second, none of the WM’s I’ve tried have conformed to my exacting, oddball requirements. The ones that have come closest are i3 and xmonad, but they aren’t quite there. My feature list for this goes something like:

        • Scriptable in a reasonable language (I chose Guile Scheme, because I ❤ parens and Guile is easy to embed in another program). XMonad has this (sort-of; I dislike Haskell syntax), but i3 doesn’t.

        • Arbitrary nesting of layouts. i3 allows this and I adore it. This allows, for instance, having a single editor window on one side of the screen, and a tabbed layout on the other containing a browser / terminal / second emacs instance with info pages. On large screens, this isn’t a big deal, but on my laptop I find this sort of flexibility very useful. XMonad, unfortunately, doesn’t allow this and doesn’t appear to have a good way of adding it.

        • An embedded REPL. StumpWM has this and I miss it oh so very much. It made prototyping new functionality hilariously easy, but unfortunately the Stump core was not written with the future in mind, and so it is very tied to both X11 and ASCII (so, for example, if my terminal has a unicode character in its title then the title displays incorrectly in Stump).

        • Stable. Admittedly, my choice of technology is going to make this difficult. It is very difficult to ensure that C code will never have a segmentation fault, especially when external libraries are involved. Scheme is dynamically typed and while I’ve programmed very defensively, I still occasionally get a type error that causes a layout to break. However, my goal is to reach the point that in normal usage I never have to contend with errors, and during experimentation I never get into a situation that I can’t recover from without losing work. Having an embedded REPL makes the latter relatively straightforward, as I can always use the REPL to restore things to a known-good condition.

        • Easy to hack on. This is a very subjective requirement, but I want something that makes it easy for me to try weird(-ish) ideas that go against how TWMs are typically used. For example, a layout that contains window-matching functions instead of windows, which are replaced as matching windows are created. Or logical groups of workspaces that I can switch between (workspaces themselves are insufficient unless nestable and unbound from the 1-1 mapping of visible workspaces to active outputs). None of the TWMs I’ve tried have had the flexibility to handle these without significant modifications (for instance, XMonad’s layouts are tied to windows by their type signature, which would make laying out something like Either (Window → Boolean) Window difficult without a lot of work in the XMonad.Core namespace).

        At this point, I’ve got almost all of the features one would expect from a modern TWM. I just need to finish off support for the floating layer and then I could reasonably switch to using Gram instead of XMonad as my daily driver.

        I had been waiting to add new features until I finished testing what I had, but that requires 1) a headless backend for my compositor (which I’ve been working on as well), and 2) a working coverage tool for Guile (the (system vm coverage) module seems to be broken? or I’m using it wrong). Blocking on testing is a good idea, but was sucking out any motivation I had to work on this project. I ultimately decided to try to get it “done” and then add tests as I fix bugs, because this was the only way I’d ever put in more work on it.

        For my actual job, I’m going to be hopefully finishing off this awful set of experiments. Everything takes forever to run due to the nature of the problem, and none of the code I have was originally written by someone that knows how to write readable code. It’s ostensibly object-oriented, but in the worst possible way: you have to know every detail of the implementation of the classes in order to use them. Thankfully, I should be able to get the last runs done this week and then promptly forget about it once I’ve written them up. Next time I am given code from this author (a student of a frequent collaborator with my advisor, so future run-ins are inevitable), I’ll probably just re-implement it from the relevant paper.

        1. 2

          This project looks awesome! Please try keep your issues section up to date, if I have time I might try have a look at this.

        2. 7

          I’m revising hard for my exams this week (Adv. Algorithms II on Wednesday, Chip Multiprocessors on Thursday). I’ve been having a groundhog day situation recently; wake up, revise, go the gym, revise, cook dinner, revise, bed, which is the manifestation of me walking a very fine line between doing the work required and burning out.

          I am however, looking forward to the remainder of the week after Thursday; my birthday then (I’ll be 21) and most of the pressure will be off since I’ve only got one relatively low priority exam left next week, after which I’m relocating to Germany for the Summer :D

          1. 2

            Good luck! I wish I still had that sort of discipline…

          2. 5

            Home from LambdaConf. The Haskell training, Type-Kwon-Do workshop, talk on Rank N Types, and OOP vs. FP panel all went well.

            Very happy to be back in my house with my dogs. On to editing the Haskell book now, which for now for me means that I am spending my evenings working through our Zendesk backlog. We are on (checks…) ticket number 1,124 for the book. This doesn’t count the private review we do, this is just the public stuff.

            I’ve been poking around asciidoctor, contemplating a potential alternative to doing the next two books entirely in LaTeX. I suspect Julie would be perfectly happy staying in LaTeX and to be quite honest I would too, but I think it would be a source of friction if we collaborated with other people. One issue I’m running into is that all the existing asciidoc -> PDF pipelines are terrible, so it’d be a split build anyway.

            Another thing on my plate is finishing up the blog post on documentation for our micro-publisher thing so that we can publicize it more.

            1. 1

              … the next two books …

              Are they Haskell related?

            2. 5

              My bad idea has taken hold and It’s been a month since I started writing my book. I have crossed the point of no return and I must continue and eventually finish. I’ve written about 60 unedited pages so far (example code included), and my pace is about 1 or 2 pages per hour. I can only put in one or two hours every day in the morning, and am doing it about 4 days a week.

              By the end of this week, I’d like to have a first rough draft of ‘part one’. The book thus far assumes prior experience in programming. But since it is a tutorial on writing a game from scratch, I am slowly feeling the need to include a part on introductory programming for absolute beginners - though that is a deep abyss from which I may never escape.

              Aside from that, work work will be 4 days this week. We start a new iteration every month, so I need to do some planning and organisation. Will also be writing lots of documentation and examples for a newly released service we created. My work work tends to be quite proprietary so I don’t really feel comfortable divulging exactly what we’re doing, but it’s mostly very fun and interesting.

              1. 4

                Apartment hunting! Made it safely to SF (hit me up!) now I just gotta find long term housing before I start with Twitter.

                On a totally unrelated note I’m learning a whole lot about HTTP in the process of building a craigslist screen scraper. Cache-Control, If-Modified-Since, css/js resources and a bunch of other nuts and bolts I haven’t had to mess with before have all suddenly become very very important. Craigslist does some interesting bot detection stuff, and it’s been super interesting so far trying to understand what they’re doing and learn enough about browsers to provide the right behavior. If there’s interest in this I may put together a blog post on the process.

                Once I get settled, I’m looking forwards to continuing working on Haskellbook and mucking with Rust.

                1. 4

                  Mostly offline this week, firstly working on the dinghy and cars, and then off to Strata Conf London at the end of the week.

                  Tinkering with various SmartOS bits on and off in-between things no doubt. Need to get NAT working on the webserver so I can move some sites onto it, and have been tinkering with delegated datasets on the media server to let me rebuild zones more easily.

                  1. 3

                    I’ve been optimizing and adding features to a game my friends and I call UVB. The point of the game is to see who can increment a counter over http fastest. Originally people just tried to make the fastest client. A while back I decided to take a crack at writing a server that could handle serving that number of requests. It is written in C and uses LMDB as the backend to store counters. I’ve been working on it off and on for a couple years and it has been a great exercise for learning C. It is also open source, located at https://github.com/rossdylan/uvb-server

                    1. 3

                      I’m at Pycon! For the conference proper and then two days of the sprints, which I’ve never done before and are supposed to very cool. Trying to figure out which project I want to work on. Pretty excited. Come find me at the Recurse Center booth in the expo hall if you’re there too!

                      1. 3

                        Travelling from north of Egland to Munich (in Germany) for bi-monthly meetup, meeting a couple colleagues for the first time. Currently stranded in Amsterdam due to bad weather, and my onward flight is tomorrow evening. Anyone have any suggestions for how to kill 24 unexpected hours in Amsterdam? Keep in mind I only have the clothes I’m wearing, as luggage is being held at airport. Also, drugs not really my thing.

                        1. 2

                          The Rijksmuseum is one of the wonders of the world. I remember the Amsterdam city museum being really great, too.

                          1. 2

                            I saw it from the canal boat… but I didn’t make it in this time. Perhaps next time I get stranded in Amsterdam :-)

                          2. 2

                            The Van Gogh museum is great if you’re interested in art. Be prepared for queues though.

                            1. 1

                              Thanks for the warning about queues. I think I’m all queued up after spending 90 minutes queueing on the Tarmac before we even left England, followed by 8 hours and counting queueing at Schipole today…

                              1. 2

                                you can buy the tickets online to avoid the queue :)

                                1. 1

                                  you can buy the tickets online to avoid the queue :)

                                  Completely avoid? Or just reduce? I was honestly quite interested in this, but I was knackered and it felt like too much effort. I just strolled around, drank some wine, and enjoyed gliding around the city on the hop-on/off canal boats… All in all, not the worst way to spend a day :-)

                          3. 2

                            I’m closing some loops at the job I’ve had for 10 years, saying good-bye, and going to orientation for my new job with Red Hat! I’ll be working on ManageIQ which may be the oldest, largest, open-source Rails app.

                            1. 2

                              Just changed jobs. Getting up to speed on the code base, trying to get comfortable again in Python after doing Java/Ruby for three years. Reading Designing Software Architectures and trying to do some Kattis problems in my copious free time.

                              1. 2

                                Finish porting TensorFlow to FreeBSD I hope. Nearly there. And then actually do maching learning (convolutional neural network). I’ve hit some missing symbol error while running it.

                                Hopefully I start working with Blender to finish my Unreal Tournament 2004 map. I’m using Unreal Ed 3 but Epic uses a lot of static meshes to add details, which I would like to copy.

                                I would also like to write some elisp to support structural regular expressions in Emacs. Probably won’t happen for a looong time though.

                                Wanted to mention I’m loving running FreeBSD in a Windows Host VM. I get the best of both worlds: Windows for gaming, FreeBSD for everything else. I don’t even access the http:// web outside the VM, just to be safe.

                                1. 1

                                  Finish porting TensorFlow to FreeBSD I hope.

                                  Nice! It’s a shame that nVidia doesn’t support CUDA on FreeBSD :(.

                                  1. 1

                                    :D Hey, I just sold my Macbook Pro Retina (running Debian) in favor of a Thinkpad – now I have Windows 10 and don’t really like it. Do you just immediately boot into a full-screen VirtualBox to do work and such?

                                    I’m also freshly entering the world of *BSD

                                    1. 2

                                      I have no scripts to immediately boot. What I normally do is just go through a start up routine: enter in Steam credentials; click on Virtualbox and start up the VM. There is probably a way to automate this.

                                      I have to sometimes use Chrome on the Windows host because Chromium in FreeBSD crashes a lot. To be extra cautious, I then use a NoScript-like extension and Ghostery (not sure if the latter would really help at all). Keeping that Windows host secure is top priority really. As long as I don’t run malicious JavaScript and don’t download any 3rd party software, I should be fine. Chrome, VLC and a few other software are exceptions to my rule.

                                  2. 2

                                    Graduated high school last week! Woot woot! :D

                                    I got more of my OpenGL scenegraph renderer working. It’s starting to be somewhat usable, which is good. Currently figuring out how to properly generate normals and use them in shaders. I’ll also work on loading textures this week. Once I’ve added a few more features, I’ll pull out the GLFW specific code so threedee can be used with any OpenGL utility library (or wherever an OpenGL context exists).

                                    1. 2

                                      This week I’ll be tackling some chores around the house – repairing gutters, building a raised bed garden, unpacking a few dozen boxes of books – starting a new round of fungicide for the hops, transplanting some of the hops crowns, replacing a severed bushhog blade, and scouting out a couple good trees for a treehouse, among other small tasks that have escaped my mind.

                                      Friday, hopefully, I’ll be able to head home to KY for the weekend, bringing my girlfriend back with me.

                                      1. 5

                                        God lives in Kentucky… now I know.

                                      2. 1

                                        I’m writing an AI for the Flood Wars game in C, for a contest. Currently searching for a way to efficiently do minimax/alpha-beta in depth 10.

                                        1. 1


                                          I’m going to hang out with some hg devs and at least one Octave dev. I see here at least one other lobster at Pycon. I hope to be able to meet others.

                                          1. 1

                                            Trying to shepherd a few proposals through the public Swift language evolution process. Adding some tests that exercise some new Swift standard library functionality. Hoping to dive into the compiler this week and become familiar enough with the code base that I can begin fixing some bugs in it relevant to work.

                                            Once that’s done I would like to turn my attention back to side projects. I’ve got plans to build a modernized, lightweight phpBB-style web forum using Clojure; suggestions welcome. If anyone has any ideas for a hobbyist project that would take advantage of Erlang’s strengths, I welcome ideas - I’ve read through the documentation a few times, but have always been stymied by the lack of something practical I could try building. Finally, I’d like to figure out how to properly configure frameworks in an Xcode project, so I can once-and-for-all fix my Lambdatron project and begin modernizing it.

                                            All that being said, the power is out here and won’t be back up until 4 PM, so I’ll probably go for a bike ride or something to clear my mind.

                                            1. 1

                                              I am gearing up for a job search. $currentjob is laying off remote workers and $newjob backed out at the last minute due to internal issues of their own. Have been doing Customer Service, Linux Admin and Support in the Web Hosting industry for many years, and am looking to work remotely. I’ll be working on some personal projects, and also getting more familiar with RoR, Ansible, and some other technologies that I have been wanting to explore but haven’t had the time for. If anyone is looking for such a person, my username at gmail.com.

                                              1. 1

                                                good luck!

                                              2. 1

                                                At work, making it easier for end-users who sign up with one of our clients to sign up with others. Have been working on some variation of this idea forever (drawn out for tech and nontech reasons) and will be really good to finally ship something.

                                                For fun(?), trying to get files synced with rsync, fsnotify, and duct tape. Maybe I should give up and use Dropbox or Syncthing. Also, so watching the Warriors game in a few hours.

                                                1. 1

                                                  Started working on designs for an Electron-based IRC client. We use IRC at work and I find myself yearning for many of the features that clients like Slack provide, but unfortunately, most IRC clients are severely lacking in the…everything department. Just do a Google search for “inline images IRC.” I’ll wait.

                                                  1. 1

                                                    I’m going to release the code to “jkl”, my gojira tool rewrite (including crappy not-feature-complete “jira-fs”). It’s really not complete but I figure I need to make the code public early. I’d really like to make it be able to talk to different ticket systems. Oh well.

                                                    Otherwise, for money, I’m working on a SQS reader in Go that’s pushing PHP payloads to Redis because Laravel. It’s messy but it outperforms our previous solution by a solid order of magnitude, just because it’s not waiting on deletes (the previous solution had to, because historical reasons).

                                                    1. 1

                                                      Seeking gainful employment in any capacity. Having a hard time solidifying my place in the software world. Could use a casual mentor.

                                                      Practicing building simple applications from scratch to deploy.

                                                      Cleaning my apartment and finding a bridge to sleep under.