1. 22

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

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


  2. 10

    The weather is [no longer] broken for UK in May ⛅️☔️???

    Really feel like I’m getting somewhere with puppet at last, in I think my fourth week of tinkering with it. Haven’t touched ansible this week and instead got puppet-git-receiver working on FreeBSD so I push a git repo to the server and a post-receive hook validates & runs the puppet manifests in the repo. Working really nicely for my use case. (Also makes testing easy enough, due to refusing the push if the manifests don’t apply. Amend current commit with fix & git push again.)

    Also got my new bike! Had a secondhand road bike for a couple of years now, upgraded it to a brand new cyclocross bike (Cannondale CAADX). Wasn’t sure at first, but I think that was mostly just being in a different position and it having MASSIVE tyres on. (Coming from 23mm skinny road wheels, these 35mm ones are beasts.) Done a few rides and quickly got used to it though. Didn’t help that the brake levers are SRAM which work slightly differently to the Shimano ones I’m used to. (Still coasts downhill as fast as the road bike, which is a win in my book.)

    Oh, and we might find out this week which bunch of greedy muppets is going to ruin the UK for the next 5 years too. Not that you’d know it to watch the news channels which are all talking about some state figurehead’s granddaughter being born. Fascinating.

    1. 10

      Cleaned out the backlog from presenting at RailsConf and started sending emails to the 100+ people who wanted more info. This week I’m writing more about OO design and continuing to study crypto.

      A few years ago I worked for the Washington Post making sites that went along with stories, sites with more data than could fit in an article or do interactive things an article couldn’t. All but two of them went 404 years ago. Unique information on the 2008 presidential campaign is gone now. The database of Guantanamo detainees is gone, though over 100 “detainees” still remain. The “Faces of the Fallen” feature tracking US military deaths in Iraq and Afghanistan stopped updating last fall, though the deaths continue. The Congressional voting database was frozen this week and will not be updated again.

      I don’t think the web had to be so ephemeral. We could have built a better one.

      1. 1

        I have to wonder if archive.org or another library organization would be interested in doing the archival work for newspapers, going forward. It seems like the kind of thing that would take a lot of negotiation to make happen, which may prevent it. :( The sites you’re describing have very clear historic value, and it really is a shame they’re gone.

        1. 1

          I don’t think the web had to be so ephemeral. We could have built a better one.

          This has hit me real hard lately, both in a general sense, and in a personal one – to the point in the last year I moved everything into Evernote. I don’t bookmark stuff anymore, I save a full copy of it to Evernote. 2100+ notes and counting.

          I abhor doing this – and I hate Evernote as a product, it is by far, in all forms (web, native, mobile, etc) the buggiest app I use regularly. But, it stays just on this side of “too horrific to work with” and has relative good web-clipping and simplification, so I use it lots. So far – already had a couple dozen recentish programming article links go dead and I was happy to have them tucked away in Evernote.

          I am actively seeking an alternative to this ugly arrangement – but everything else seems worse.

          1. 1

            That was a really good talk. I’m looking for places to apply your ideas in my projects.

            1. 1

              Thanks. You should email me (ph@ my blog) about your code. I can’t use client code and would love real-world examples for the further exploration on my mailing list.

          2. 10

            Transforming Nim into Go. Seriously though, I’m bringing Go’s goroutines and channels to Nim while abusing macros to imitate the syntax as much as possible.

            This is what I have working so far: Go version and Nim version of the chinese whispers benchmark.

            To make this possible I had to make the golib library based on gccgo which I already announced on lobste.rs and add the Go garbage collector as an alternative in Nim (only usable in programs using the golib module and that specific main function replacement you see in the benchmark). The module is also usable with –gc:none but where’s the fun in that?

            I need to look more closely into the inner mechanism of the garbage collector to make sure it’s working as it should and I need to make a macro for the channel select. I’ll release the code after that.

            I don’t think I’ll spend time on making the ‘go’ macro work with nested and anonymous procedures any time soon. Convincing Nim to transform a regular procedure with any number of parameters into one that takes only a pointer (needed by the C library) was crazy enough.

            1. 2

              I can’t decide if I consider you a hero or a monster. Either way, good work.

            2. 8

              This week, I’m off to Barcelona! My first time in Spain. I’m excited! If anyone is going to be at API Days, come say hi, and maybe hear me talk about JSON API. 1.0 is coming at the end of the month!

              Speaking of 1.0, I’ve got…11 days until Rust 1.0. So furiously, furiously writing docs. I’ve brought back the Guessing Game example and plan on getting that merged tomorrow. After that, more tutorials.

              1. 8

                Last week I did nothing, NOTHING. Instead, I selfishly enjoyed may day dancing around the maypole. This week I will do some tutorials for Fire★.

                1. 6

                  It’s finals week for me so that’s fun. I’ve got a final in my class on programming languages so I get to reread a lot of my favorite pieces of writing and call it studying.

                  I’ve also been blogging a fair amount and am writing a post on proving the Church-Rosser theorem in Twelf. Outside of that I’m sketching how best to implement my summer project: a compiler for an dependently typed programming language with inductive types, pattern matching, and a reasonable termination checker.

                  1. 6

                    I just finished up a small library for Rust: a bounded, lock-free SPSC queue. I have a bit more fiddling I’d like to do, such as adding internal head/tail caches to avoid coherence traffic until absolutely necessary, as well as adding a drain() and push_all method for batch operations. All in all, it was a fun project to get back up to speed with how Rust has changed over the last few months and flex some braincells thinking about concurrent code.

                    At work, we landed the framework changes to get our new reducer aggs into master. So now it’s back to working on individual aggregations. I’m adding Holt-Winters to the moving average agg today, and then tomorrow will get back to Autocorrelation and Serial Differencing. After that I think I want to investigate FFT and wavelet smoothing.

                    1. 4

                      I started working on a simple web app that’ll allow you to edit files in the filesystem with an online interface. Meant as a nice looking admin interface for clients for when using static site generators: https://github.com/greduan/text-admin

                      1. 2

                        feedback: a friend who has had to work with similar systems when running a small class says the main feature people missed was being able to drag and drop files between folders.

                        1. 1

                          Didn’t read this until now, but thank you very much for this. Hadn’t thought about this feature.

                          1. 2

                            yeah, apparently no one thinks about it :) but it confuses the heck out of newbies who are told their class will be using this online ide rather than one on their local machine, and then find the file manager doesn’t work the way they expect it to.

                            1. 2

                              It’s probably because of how devs are used to using the CLI. After a couple months you completely forget about drag-and-drop in the file system, unless you often use a GUI for it.

                              But I agree, I’ll need to be adding a very nice and intuitive interface. TBH I sorta miss drag-and-drop myself.

                      2. 4

                        At work I’m finishing up some bug fixes and beginning a small project to add tracing around areas of code that can add latency and potentially cause temporary data unavailability on our storage system.

                        Outside of work I’ve been having too much fun finishing up ski season and riding my new bike to get much computer stuff done. Last thread I was looking at components, but I decided to order a pre-built bike instead, and went with the All City “Nature Boy Disc.” I need to get a smaller chain ring (42x17 is killer in Colorado), but otherwise it’s a ton of fun.

                        As far as non-work computer stuff, I’m thinking about hosting a Raspberry Pi centric QuickLisp distro, but I’m not sure how useful it’d be relative to the amount of work. Somebody in #lisp suggested I just add RPi only libraries to the regular QuickLisp dist and use architecture flags to selectively disable everything on non-Pi platforms, so I’m considering that option to.

                        I’m also looking at Clasp (Common Lisp on LLVM), trying to get familiar with the code and maybe start contributing to it in the near future. My first task may be cleaning things up a bit. There are a lot of weird random files all over the source tree (like this text file of atomic weights in src/core/atomicweights.txt) that need to be removed, or at least moved to a more appropriate place. I think the project has a lot of potential, though, and cleaning things up should make it easier for more people to contribute.

                        1. 2

                          How’s the Nature Boy Disc treating you? I’ve got a Big Block that basically wishes it was a nature boy right now, fat tires and all. Pretty big fan of the All City for frames that can be built into whatever you might need. If you bump the cog down to an 11 or 13 on the back you can run a really small ring on the front. It’s pretty spinny but your knees will thank you.

                          1. 2

                            I’m having a ton of fun on it. I may swap out the brakes for hydraulic disc eventually, but for the time being the only thing I might change is the chain ring. It’s setup 42x17 right now, and that’s pretty stiff for some of my favorite rides.

                        2. [Comment removed by author]

                          1. 3

                            On cross-compilation, you’re mostly in luck: if you use only plain Go libs (no C), it’s something like GOOS=linux make.bash at the root of your Go installation and GOOS=linux go build and you’re done. (There may be tools to automate even that.)

                            Image resizing isn’t in the stdlib I don’t think. This is the best I found Googling around, and is plain Go which is handy since you plan to cross-compile.

                            I don’t know of anything exactly like all of PM2. codahale/metrics (which in turn uses expvar) can expose raw data, but pretty presentation of that data is a separate thing. You don’t need a “cluster” of processes to use all cores on one box (thanks to threading), but there are different ways folks do graceful restarts (load balancer + rolling restart or libraries).

                            Generally, vs. other ecosystems, you might find yourself searching the Web at large for your libs, and, with exceptions, each one tends to be a pretty tiny single-function thing.

                            Google App Engine might be an option for deployment, too. They deal with a bunch of little hassles for you (dashboard, logging, etc.), have their own little image service, and they have a free tier it sounds like this might fit under.

                            1. [Comment removed by author]

                              1. 2

                                If you’re installing go with homebrew on OS X, there’s a couple of flags to enable cross-compilation easily too:

                                $ brew info go
                                    Build with cross-compilers and runtime support for all supported platforms
                                    Build with cross-compilers and runtime support for darwin, linux and windows

                                Then you just need GOOS=linux go build as twotwotwo said above when compiling to cross-compile for linux. Winning!

                          2. 2

                            Working on phoenix-framework more this weekend. Adding some token generation for api’s and channels.

                            Been working on a JSON-API library for building JSONAPI style API’s in elixir/phoenix/plug/ecto. Trying to avoid using to many macros and focusing on simple bag of functions.

                            1. 2

                              Getting my head around the Bluetooth spec and bluez and dbus and …. how it all hangs together.

                              My head hurts.

                              The number of function points in the whole lot together….. brr… Imagine having to test it all, brr.

                              1. 2

                                Wrapping a Selenium driver so that it sucks a little less.

                                1. 2

                                  Converting some PHP server stuff to Flask (Python).

                                  Preparing to do a summer internship at Cisco, too!

                                  1. 2

                                    I just finished a major refactoring push of a Rails app on Monday and will be spending much of the rest of the week reading through documentation and API references of Stripe/Recurly/Chargify to see what difference they have from a technical POV. Will also spend some time writing an EPL2 parser in Rust.

                                    1. 2

                                      Working on (yet another) Lorem Ipsum generator in Django. The thing that makes it different is that it generates somewhat readable Lord of the Rings themed text.

                                      Also probably going to start on an open source version of Icon Slate.

                                      Lastly, I am starting a project with a friend for a lightweight modular PHP library. It’s target audience would be someone who doesn’t need a heavy-duty framework like laravel or cake, but just needs, say, DB functions. You could just get a custom download (like jQuery UI), and include it in your project.