1. 26

It’s Monday, which means it’s time for our (semi-) weekly “What are you working on” thread! Please share links and tell us about your current project. Do you need feedback, proofreading, collaborators?


  2. 22

    Hi, I’m new here.

    I recently updated my Nexus 5 to Android 5 and hated it, so I’ve started using my iPhone 6 development device as my daily driver. The only app that I don’t yet have on iOS is Firefox, which I used on Android with a few different extensions like HTTPS Everywhere, Ghostery, and Self-Destructing Cookies.

    While Mozilla has started hacking on an iOS browser, from what I’ve gathered it’s just going to be focused on providing Firefox Sync functionality, which I don’t use.

    So last weekend I started hacking some stuff together into my own browser and made a native implementation of HTTPS Everywhere, so now the browser has all 11,000+ rules of the Firefox plugin integrated.

    This morning I finished up the concept of separate tab views and an interface to flip between them, and when I get some more free time I’m going to start on importing Ghostery’s rule list for blocking web trackers. The URL interceptor used for HTTPS Everywhere should make that pretty easy. Then I’ll work on the cookie whitelisting interface (as the default will kill all cookies received in a tab when it closes or navigates away from the site after X number of seconds) and probably a way to disable specific HTTPS Everywhere rules.

    1. 11

      Welcome to lobste.rs, enjoy your stay.

      1. 4

        Hi, I’m new here.

        You’re joking, right? I’m genuinely concerned.

        1. 8

          I’m new to the “what are you working on this week” threads.

        2. 3

          Why did you transition to Apple? What’s so bad about lollipop?

          1. 1

            I’m wondering this as well. I’ve been using Lollipop on my Nexus 7 since August (developers preview image), and I don’t have any problems. My phone doesn’t have the update yet, so haven’t used it on a small device yet.

            My girlfriend, who’s using a Nexus 4, has had the update and has been very unhappy with it as well though.

            1. 4

              I didn’t like a lot of the visual changes in the OS, especially in the notification area. It also removes lock screen widgets, which I used. The activity transitions performed pretty poorly on my Nexus 5, which I implemented in my application but then disabled because they didn’t really add anything useful.

              One could say, “then just stay at 4.x” but that doesn’t really solve the problem. The OS is already headed in that direction and I would have to upgrade eventually (especially as a developer that has to make sure my app works properly on 5).

              iOS isn’t perfect and I stayed away from it for a long time just because the iPhone 5 and below were so small. The iPhone 6 has a good footprint coming from a Nexus 5, and iOS 8 is pretty decent. I also favor Apple’s stance on privacy and security to Google’s, although there are certainly tradeoffs with both companies/OSes.

        3. 19

          Two things are interesting about this week for me:

          1. It’s my first week on the Rust core team! More meetings, woo!
          2. It’s the last week of my contract with Mozilla. We have some legal stuff to sort out, but we’re hoping to get an extension going, though I may have a bit of a gap. I probably could use the vacation anyway :)

          As far as my actual work goes, I’m waiting on one or two more changes to closures, so that I can finish up the last bit of long-form documentation. I’m also interested in making a large change to the formatting of the docs, going from this: http://doc.rust-lang.org/guide.html to this: http://steveklabnik.github.io/the_rust_programming_language/

          The styling on the second is very, very basic, but I like the organization significantly more. Migrating this involves a lot of tooling work.

          In hobby world, this week is the big tournament week for Netrunner, the card game I play. Different places around the city hold different tournaments at different times, and every so often, they all land on the same week. Thursday, Saturday, and Sunday are going to be busy!

          1. 1

            I’m surprise you have time for a hobby… I’m not nearly as involved in as many tech things and I don’t have time for hobbies…

            1. 3

              I wrote a blog post about this once: http://words.steveklabnik.com/how-do-you-find-the-time

              1. 1

                nice article. I listen to classical music when I’m at work – typically.

            2. 1

              @Steve, have you played with moving to asciidoctor? I’ve heard great things about it and it seems like that might support the sort of formatting changes you’re interested in.

              1. 2

                I’m guessing you meant AsciiDoc? We have a long thread about it on Discuss, but basically, Markdown has won so much mindshare, and is Good Enough, that we’re gonna stick with it.

            3. 15

              In Hython, I’ve started work on implementing support for loading modules within scripts via the import keyword. I will need to adjust scoping along the way to accommodate these changes. Right now the scoping is very incorrect: it unions the symbol table of the entire call chain along the way. Doing this lets me easily simulate consulting the global symbol table with the side effect that callees get read access to caller symbols. :)

              Python’s scoping rules dictate that names are looked up in the following order:

              1. L - locals
              2. E - enclosing scopes
              3. G - globals (aka module)
              4. B - builtins

              My question is: how do I determine when to build-up enclosing scopes, and when to start fresh on them with function calls? It looks like I have to tag functions as being enclosed/not-enclosed when I encounter a def. And if they are enclosed, I need to change my representation to form a closure around the current environment, and store that somewhere.

              1. 12

                I’ve had quite a week. I’ve happily avoided needing to go to Jakarta for a new visa and don’t need to travel out of the country that I’m in until mid-February.

                For my client, I’ve been working on moving them to the fastcomp emscripten compiler. I’ve been going through a lot of generated code and finding various issues on all sides. A particularly interesting one (to me at least) was this one: https://github.com/kripken/emscripten/issues/3070 where emscripten is generating unaligned loads for C++ function pointers.

                I’m thinking of writing a blog post series on the ins and outs of reading emscripten-generated code. There’s a lot to cover from HEAP representation, alignment, stack handling, how things get inlined, what common idioms end up looking like in the JS (to improve your pattern recognition when skimming the generated code), how common optimizations (like RVO) can transform your code, etc. These would be a good bit of work so I’d like to know if there might be interest in such a thing.

                I have been really busy with other projects as well, so this weekend, I decided that I’d only hack on something new and different for a change in pace.

                In Dylan, we have an editor framework called Deuce, which is a descendant of ZWEI from the Lisp Machines. (It was written by someone who had previously worked for Symbolics.) I wrote about it a bit long ago at https://discuss.atom.io/t/the-deuce-editor-architecture/2218. It has only had a Win32 GUI though for a long time and that wasn’t a great one, so I figured I’d give a shot at giving it a console / terminal UI. It was designed so that the UI was fully pluggable when it was written (back in the 1990s), so this is pretty feasible.

                I started by writing bindings for termbox, but quickly ran into some limitations with how it handles input, specifically that it lacks mouse input. I found libtermkey which handles that and then found the related library libtickit. In the process of writing bindings for that, I found some deficiencies in our bindings generator melange and decided to fix them as well. This also led to me writing some tests finally for various input files and the expected output. I found a few other issues while doing this and am working on them.

                There’s a joy to undirected programming work … I’m still working on the Deuce terminal UI, but I’ve also had a good time fixing the issues in melange. It has also been fun to discover libraries like libtickit and work with them. I haven’t written serious terminal UI code in many years (maybe over 20?).

                1. 3

                  I’m thinking of writing a blog post series on the ins and outs of reading emscripten-generated code. There’s a lot to cover from HEAP representation, alignment, stack handling, how things get inlined, what common idioms end up looking like in the JS (to improve your pattern recognition when skimming the generated code), how common optimizations (like RVO) can transform your code, etc. These would be a good bit of work so I’d like to know if there might be interest in such a thing.

                  I would be interested in this! I am experimenting with some complex uses of emscripten, and this guide sounds potentially quite helpful.

                2. 10

                  Sending out the (formal, an informal one was already sent) proposal for the book to a publisher.

                  Adding something nice to Hackage to fulfill my end of a tit-for-tat deal.

                  Working on the book.

                  Starting work later this week on a contract to port the primary API backend of a company from Clojure to Haskell.

                  I PR’d a library last week to more fully cabalize the project and make it into a library, with better documentation.

                  1. 2

                    This API project of yours sounds pretty cool.

                  2. 10
                    • Finishing up 24 days of PureScript
                    • Hoping to finish my work on the new PureScript lexer, and associated work on parsing documentation in comments
                    • Make some headway on a new Haskell project
                    1. 8

                      Prolog screencasts.

                      1. 4

                        Got a link? I’ve always found Prolog interesting.

                      2. 7

                        About to put the finishing touches on a Ceph Object Gateway deployment at work. We’ve currently got the storage cluster running and providing RBD volumes for our OpenStack cloud, but the object gateway will provide S3-like services on-site for our users.

                        1. 7

                          This week I tried to set up a KVM windows appliance with vfio passthrough to setup a high performance gaming virtual machine on my Linux box. I had everything, a CPU with vt-d and vt-x, 2 graphics card BUT my machine was a laptop with an integrated GPU. So I did everything that I could, following multiple guides only to find out that trying to passthrough a dedicated GPU and conserving the integrated one for Linux caused some problems because the IGP automatically takes the “vga slot” which is the slot you want to passthrough (and you want to have your dedicated GPU in that slot).

                          That means that when you start the VM, it says that your device does not support the x-vga option. Luckily to solve this issue, there are several kernel patches, that are not official AND not updated/do-not-work anymore, for me at least.

                          While remaining a failure, that experience was instructive and if i’m building a desktop in the near future, i’ll make something crazy with kvm and xen ( 4 graphics card: 1 nvidia for linux 2 nvidia in SLI for kvm and 1 amd in xen just for fun… Or i will just take 3 nvidia card for kvm or something like that. ) Note that this method can help create a multi-headed gaming pc, for lan parties and whatnot with each screen having a different input stream because with kvm you can passthrough any device listed in the command lspci: usb hubs (peripherals), wifi cards, sound cards,… isn’t that wonderful!

                          I’ve also thaught about making an external gpu so that my kvm setup would work but i’m not ready to take the risk to “ruin” a gpu for fun (says the guy that wanted an amd xen passthrough for fun when he hypothetically already had a kvm nvidia SLI :) But if anyone has any experience/success in setting up external gpu’s on linux laptops, he can feel free to share it, i won’t bite ^^ Oh and since i’m stealthly calling for help, if anyone knows a workaround for km gpu passthrough on laptops having a 1 dedicated and 1 integrated GPU, feel free to share it too!

                          Last week I had to face some data corruption, on my MAIN rig, the laptop above, of course I never backed-up any data, cauz' ain’t nothin' can happen to me, well I was obviously wrong. But don’t think it was due to my system, my drive or anything, no, it was simply me not resizing the file system before resizing a partition., that’s the kind of stupid stuff that happens to me…

                          Otherwise, I’m still working on the terminal client of Lutris, an open source gaming client. It’s in python so, it’s pretty straight forward, but that helps me get better in programming and designing nice curse interfaces. That’s about it :)

                          Note tat, a huge chunk of my week was my exam session, high school everyone :). So everything mentionned here happened during the week-end or the week before…

                          1. 6

                            At $work I’ve some slack time after shipping a big (couple of months) feature at last, tidying up loose ends & getting a few branches I’ve spiked up locally for various fixes/experiments into shape for shipping. Last full week of work before xmas, looking forward to having a couple of weeks entirely away from computing this year. (I say entirely, I’ll probably tinker with some stuff at home no doubt.)

                            Outside of $work, I’m getting closer to what I want with my SmartOS home server. Very happy with Plex and the consumption side of home media from it, now I’m sorting out automating the collection of media into it. Feeling like I need something new to stretch myself with programming wise to, I’m thinking something web-based in Go should be a good start. Pastebin or bash.org style site perhaps. (I learned merb back in the day building a bash.org clone, and I’ve already built an IRC Bot in go, hah.)

                            1. 6

                              I think I will start going over everything I write in my notebook and try to make blog posts out of them.

                              Interesting (to me) topics include:

                              • Why I consider JavaScript harmful
                              • A comparison of type expressivity in Erlang and Haskell
                              • Building static-site apps with Elm

                              I’m also interested in writing either a plugin for Hakyll or a new static site generator specifically for getting asset precompiling, bundling and optimizing features for free + using Blaze and Clay as the preprocessors (also a JS minifier library for Haskell would be really useful too).

                              Everything is up in the air and I’m not working on any real projects nor contributing to GitHub repos at the moment.

                              1. 5

                                I’m writing an http client for Rust! It’s exciting because there’s nothing in the standard library to help you, from parsing MIME headers to case insensitive dictionaries - you have to open the socket yourself and go from there. (Yes, there is a HTTP library being built for the stdlib, but it’s not complete and I am trying something different with the interface.) I’m trying to apply everything important I’ve learned from working on two Python HTTP libraries and working with the go http library.

                                I’m running into some issues around lifetimes and ownership that I’m working through; everything needs to be split apart into functions as well, but importing code from other files confused me initially so everything’s in the same file for the moment. Just trying to make a HTTP request and get a Response and then I’ll go from there.


                                1. 4

                                  there is a HTTP library being built for the stdlib,

                                  This isn’t true, Rust’s stdlib will not have an HTTP library. That’s what Cargo packages are for :)

                                2. 5

                                  Outside of work, I’ve been designing a sensor network and instruments that I’d like to build for sailing (particularly racing), which is a welcome mix of hardware and embedded software engineering. I’ve also been working on a forth-ish (more a Forth subset) command shell for the ATmega328P (the same processor in the Arduino Uno R3), which I’ll eventually port to some of my ARM boards. I have a basic, fairly janky first pass done where I can turn on an LED in the shell and look at what various sensors return.

                                  1. 5


                                    • Possibly switching a relatively new codebase to TypeScript
                                    • Experiment with using Gulp rather than Grunt


                                    1. 3

                                      I’d be interesting in hearing how things go with TypeScript, the tooling that you end up using, etc.

                                      I’m working on an Atom Shell-based application with TypeScript and it seems to be going pretty well so far. It definitely seems like a nice step up from JS for a larger project.

                                      1. 2

                                        Certainly. It’s pretty likely that I’ll end up writing a post on the subject for my company’s engineering blog. But I’ll report back here one way or another.

                                    2. 4

                                      I’ve just finished a semester of University, so I’ve taken a few days to put my feet up and relocate back home for Christmas. I’m now starting to write up all of my notes for the semester, which should keep me busy for a couple of weeks at least.

                                      1. 4

                                        Last Week

                                        I updated the drawing canvas API in Fire★ to return references to the graphics object displayed. This allows you to not have to clear and re-create for each screen update reducing flicker on old machines and increasing performance if you want to write a game.

                                        This Week

                                        For Fire★, I want to add more widgets to the API, like drop downs, and maybe expose Qt’s CSS type styling so that you can make Apps more pretty.

                                        I have also revived my old TODO list application called Muda List and am trying to modernize it a bit. It is one of those programs I use every day and I think I might make it available for others. It is also a web app written in C++, so there is that.

                                        1. 4

                                          I know it’s a bit antithetical for the venue, but I’ll be working on sales, sales, sales.

                                          So if anyone needs an awesome team to work on your ruby/rails/clojure/haskell/jsMVC project, hit me up: brad@bendyworks.com

                                          1. 4

                                            Writing a patch for MediaWiki. Specifically, getting the new reCaptcha working. MediaWiki shows it’s age as a crusty old PHP mess with its lack of namespaces that created some collisions. PHP being PHP, it wasn’t terribly obvious that was the problem…

                                            Last time I went deep into MediaWiki it was an extension for the most poorly documented and unupdated parts of course, the media handlers.

                                            1. 3

                                              Migrating a series of ETL’s to Luigi, follow-up work for incremental load on https://napofearth.com/, and getting Emscripten builds into the Jenkins workflow.

                                              Spoon against the wall, spoon against the wall. (https://books.google.com/books?id=EDAbPknr8nMC&lpg=PA24&ots=qzWtZ6hNdP&dq=spoon%20against%20the%20wall%20lead%20serra&pg=PA24#v=snippet&q=%22spoon%20against%20the%20wall%22&f=false)

                                              1. 3

                                                At work, we’re having a “bug blitz,” so I’ve been fixing random bugs this week and last.

                                                Outside of work, I haven’t been working on anything in particular. I finished reading “Effective Modern C++,” and now I’m reading through “Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp.”

                                                I’m still playing with Lisp, getting practice by implementing some data structures (like tries), and thinking about creating a simple computation geometry library.

                                                1. 1

                                                  Could you expand on how simple do you want it to be? I have a lisp project that creates 3d objects and generates .dae files (right now it has examples for creating cubes and spheres) - https://github.com/rjmacready/helix -, my next step for it should be, probably, binding it to CGAL (https://www.cgal.org/) or such, to allow more sophisticated stuff. Are you interested in teaming up?

                                                  1. 2

                                                    I’m afraid I don’t have the time for such a project right now.

                                                    My idea was more to implement a few of the simpler algorithms, like convex hull and maybe some triangulations, as practice with Lisp. Probably with output to SVG.

                                                    I do like the idea of Lisp bindings to CGAL, though, and if you start a project for it, I’ll try to contribute to it in the future.

                                                2. 3

                                                  I’m building and getting ready to run the 34th iteration of a biweekly real time live game/tournament that XX million people play online. As usual the designers have made a plethora of last minute backend changes, Apple hasn’t approved our latest client build yet to get rid of key bugs, the static data and the cdn aren’t set up yet, and a quarter of the staff are out sick. Fortunately, the other three of us have seen and done this all before; and, erlang.

                                                  1. 3

                                                    I’ve finished onboarding Kafka at my company. Rabbit and SQS are now only being used for command-based queuing rather than a medium for data transfer. Woohoo!

                                                    Now that it’s out there, I’ve been slogging through onboarding new services to Kafka. We receive crowdsourced corrections (explicit feedback) and various forms of implicit feedback data we can feed into training our algorithms. That data currently gets funneled into tables in a MySQL DB, but pushing it onto Kafka will allow us to develop online services a little easier.

                                                    And automating an analytics process, which at some point moved from a one-off “sure, we can find that out for you” to “where’s this month’s report?” as reports usually do. It’s a Scalding job that processes log data from our edge servers to produce various reports.

                                                    Does anyone else ever feel like they’re keeping a dozen plates spinning constantly?

                                                    1. 3

                                                      Does anyone else ever feel like they’re keeping a dozen plates spinning constantly?

                                                      Put them in your new queue so you only have to spin them one at a time. ;)

                                                    2. 3

                                                      I’m working on extending the MOAI application framework. (http://getmoai.com/) I’m adding stuff to the Hanappe module (https://github.com/makotok/Hanappe/), and doing whatever is needed to keep the MOAI hosts in sync on new stuff. I’m also testing some of the 1.6 branches that are out there, helping where I can with pull requests.

                                                      I really enjoy the MOAI approach to things .. its an efficient, useful way to build applications, although - like most new open source stuff - it still has a few rough edges. Doesn’t matter, its fun to be working on it ..

                                                      (Actually its not work. If anyone is looking for a developer, I’m looking for real work!)

                                                      1. 1

                                                        I have started adopting Amazon CodeDeploy and combing that with Auto scaling is amazing. To some that may not be new thing but moving to completely elastic infrastructure is really amazing.