1. 27

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.

  1.  

  2. 41

    This week is very significant for Rust. On Friday, we will release Rust 1.0.0-beta. This means three things:

    1. this is the first release that we have ever claimed any kind of backwards compatibility. 1.0.0-beta will not have any breaking changes, unless we find something overwhelmingly important.
    2. While we technically changed to the idea of ‘release channels’ a while ago, this is the first time we’ll have a non-nightly channel. So testing out all of that stuff will be fun.
    3. Now that we’re not breaking stuff all the time, my job gets easier and more intense. No more excuses about breaking changes causing my work to become outdated!

    So most of my week is preparing for that. So much to do, such an exciting time. And a little scary.

    1. 21

      I’m working in rlite.

      Last week I worked on pubsub, which is now working.

      I have three things I want to finish before considering the project ready for a first stable version:

      • Adding brpop/brpoplpush, which should be easy considering pubsub is implemented.
      • Implementing *scan functions.
      • Fixing a test that is failing.

      None of those are really big on its own, but since they are not big enough I’m having problems finding motivation to actually do them. Just reaching completeness (for some definition of completeness) will have to do it.

      1. 4

        Oh wow that looks supercool, thanks for sharing!

        1. 2

          Ooh, interesting. There is an in-memory port of redis in ruby called fakeredis which I’ve found indispensable in testing ruby apps that use redis. (To the point of helping maintain it where feature parity was lacking with actual redis.) Having a server-less, in-memory version of redis that’s feature compatible and language agnostic (and probably faster due to being in C) will be super useful.

          1. 2

            It might not be faster, because it is optimized for disk storaged. For example, key-values maps are implemented using btree, strings are split into segments, strings are copied from ruby to c. You might want to try it, but I would not expect it to be faster than a ruby implementation for just in-memory usage.

        2. 13

          I got a talk about Roller Coaster Tycoon accepted to OSCON! Which is awesome.

          Now, I have to do the work. I have four months to build this out. Starting this week by taking the awesome ride rating work done by the OpenRCT2 team and expanding on it - decompiling functions that update ride ratings for having helixes, inversions, etc. Don’t put more than six inversions in your coaster, the excitement stops increasing after six.

          1. 11

            Last week, I added support for sets and dictionaries in Hython! Or at least, the start of support.

            Right now, I’m stuck on the fact that I use Data.Hashable to compute hashes for objects in a HashMap. I’ve started declaring instances of hash for my Object type, but I’m stuck on what to do for user-defined objects, as calculating that involves calling the object’s __hash__() method, which is decidedly impure, due to my use of various monads.

            I’m not sure how to bridge this. It seems wrong/impossible to call into monadic code from pure code.

            1. 3

              I know it’s not a complete language implementation yet, but this still seems super-cool!

              Any performance comparison with CPython?

              1. 2

                Thanks!

                Perf comparison: probably something from “eh, not bad” to laughably slow. Unfortunately, it’s not written with an eye toward performance.

            2. 10

              Last week:

              • Minor surgery for one of my children, which derailed most other plans

              This week, I will be:

              • Bug fixing and refactoring at the day job
              • Writing a newsletter for a Drip of JavaScript
              • Writing chapter 3 for Prose for Programmers

              I’d love to get some feedback on the first two chapters of Prose for Programmers, as well, if anyone has a bit of time to read through them. :-D

              1. 7

                Good luck with your child and hope they’re doing well and getting better.

                Our daughter spent Friday night through Sunday afternoon in the hospital for an unexpected and rather sudden upper respiratory infection.

                1. 6

                  Good luck with your daughter as well! Hope she’s feeling better!

              2. 7

                Mostly this week I am relaxing on holiday from work, and starting triathlon training again in earnest which I’ve been severely lax with so far this year. Seriously looking forward to doing my first open water swim of the season on Friday, and trying out a new wetsuit I picked up in the January Sales.

                Also getting itchy to replace SmartOS on my HP Microserver with something that’ll let me access the USB ports in a useful manner, although I like the separation (& power) that native zones gives me over KVM or virtualisation. Thinking of swapping in FreeBSD with jails, which means it’s time to play with it in a VM to spike up a working replacement before touching the physical server itself. Learning new things FTW!

                1. 1

                  Swap weeks? :)

                2. 6

                  Continuing my game-engine project in C++.

                  I am also going to test out Node.js with the new Visual Studio tools that were released.

                  1. 6

                    I’m setting up the steps to give GTD a shot again. I’m generally allergic to self help books and I feel pretty sheepish trying to implement a ‘system’, but recently I’ve started to hit peak anxiety with respect to my responsibilities and ad hoc isn’t cutting it anymore.

                    I’m always astounded by how much everyone habitually knocks out on this thread and really I’m less interested in a productivity spike than feeling like I’ve got things under control. Has anybody here made things better for their brain through organization or similar?

                    1. 4

                      I have had run-ins with anxiety in the past, and it will flare up occasionally, probably because I’m still trying to recover from trying to control everything. I’m not someone who’s especially neat, but I dislike chaos, too.

                      For tasks, I generally just put everything on a calendar. On OS X, it gives me little notification bubbles. I don’t close them until the task is done; it’s just annoying enough for me to be reminded by, and it syncs between phone and computer. I put my community obligations, monthly days of paying bills & rent, and all appointments (social/doctor) on my calendar right when they’re made. There is tremendous peace in committing these details to some form of persistent storage with higher durability than my brain.

                      It’s just enough of a system to work for me. Don’t be afraid to try out the bare minimum approach to see if it works for you.

                      1. 2

                        I do something similar: I have a small notebook that I keep in my jacket pocket. Everything gets written down there. I’ve tried computerizing it but I end up spending so much time tweaking it to get it to my liking that it ceases to be worthwhile.

                        1. 1

                          Thanks for the advice, really appreciate it!

                        2. 2

                          I’ve been successful with using trello. I put every task I start, no matter how short, on it and then mark them complete. It gives good feedback and makes me feel like I am accomplishing things. I’ve tried to clean it up weekly to make sure it doesn’t get crowded.

                          1. 2

                            org-mode runs my life. It’s been pretty useful for organising things.

                            1. 1

                              I’m a big fan too, I haven’t yet done the requisite yak-shaving required to get all of my calendars and things where I want them.

                          2. 6

                            Working on a json-api adapter for phoenix. Mostly centered around views and a couple helper functions for controllers.

                            1. 1

                              Are you working on it in the open? If so, I would love a link.

                            2. 5

                              Added a shuffle button to my app Sorrce

                              Not getting stranded in white sands national monument in NM!

                              1. 5

                                Welp, it’s time to scrap a large chunk of my project again. Testing has shown that an in-depth, separate onboarding solution just leads to user confusion (and that leads to hate, which leads to the dork si…where was I?).

                                I’ll either be using some plugin (this is JS, there are dozens) or hacking up my own (dozens plus one!) to do a “product tour.”

                                Crypto Challenge #12 was finally felled, now on to lucky #13. Really enjoying spending an hour or two on these, it’s like a breath mint for coders.

                                There’s some other misc stuff I need to do: finish a couple of blog posts, write up another script for my video project & deal with whatever bugs come up in commander.js.

                                1. 4

                                  I have postponed my GNUnet adventures with Fire★ to concentrate on UI improvements. I had done more user testing with Fire★ and people gave me really good input.

                                  So this week I am going to fix certain issues with the chat and also minimizing Apps. I also added nice animation transitions for color changes in the contact list and tab alerts. I also removed the annoying allerts from the alerts tab.

                                  If anyone has any UI suggestions, please PM me or send an email to the mailing list.

                                  1. 1

                                    Finished the UI enhancements, now what!?

                                    If anyone cares to try it and let me know what other wacky things I can improve, let me know. I appreciate any input and help.

                                  2. 4

                                    I made some progress on my Medcouple article (People of the future: this link is unstable and should some day just live on in Wikipedia.)

                                    Still not done, though. I have the fast algorithm very clear in my head, but I think I need to draw diagrams to most clearly convey it. Drawing the diagrams seems like it’s going to be very time-consuming.

                                    It’s a very clever algorithm, though. It’s conceivably applicable to things other than the medcouple computation. The idea is to find the median of a matrix with sorted rows and columns (or any element of specified rank, not just the one in the middle).

                                    I’ve been digging into Haskell more deeply. Translating some of my old toy Python code into Haskell. Still not quite getting the hang of it, but I feel like I’m making progress.

                                    At work, I’ve gotten most of my backburner projects done.

                                    I’m looking for a new job! I like math and stuff. If you know of someone, please let me know.

                                    1. 4

                                      Working on architecting a new project for my day job, planning my trip to Denmark, and writing a “myanimelist.com” for movies. Probably going to submit a PR to LightTable to enable node in -debug.

                                      1. 4

                                        Spent a lot of time playing with new programming languages the past two weeks or so. Not sure if this is productive yet, but it’s at least interesting. The underlying motivation is that I don’t currently have a language I’ve settled on as a default language to write interactive audiovisual type stuff in.

                                        This week, did a little bit of documentation reading and experimentation with Julia, Gibber, and Processing.js, which all seem to have pretty different strengths and weaknesses. Julia seems the most solid as a language, but it seems (?) you can’t yet deploy things made with it to either mobile or web, which excludes some uses.

                                        People have also pointed me at Clojure/ClojureScript, haxe, and Extempore for this kind of thing, but I haven’t gotten to doing anything with them yet.

                                        1. 4

                                          I’m working on my pet Clojure interpreter written in Swift (link here). I have a branch adding support for namespaces that I hope to finalize and merge in the next few days, and will probably choose hash set support as the next feature to build.

                                          I always welcome comments, feedback, or criticism. If nothing else, building this thing has been a tremendously educational experience for me.

                                          1. 3

                                            I released m4s2, the tool I use for building my website. It’s nothing fancy, just a makefile and a shell script. It uses the macro processor m4, hence the name. Even if it’s very plain, the fact that it uses m4 means it can be extended by the end users in many different ways.

                                            I’m also working on ox, which is a template for building Cuba-based JSON APIs. It uses make for all commands, and the dependencies are installed inside the project directory. That makes it easy to try and very easy to remove if necessary.

                                            1. 2

                                              To teach myself and some friends Node and Redis, a Gravatar-compatible web service. Just hacking at it to make it work, then hopefully polish up the codebase.

                                              1. 2

                                                This week, I’m not working on much in the way of programming for once!

                                                Instead, I’m designing and building a new system for live video production, including switching, standards conversion and recording, as well as various camera equipment.

                                                1. 2

                                                  At work, fighting UEFI and Secure Boot, as well as continuing work on our internal SSL infrastructure.

                                                  Outside of work, I’ve

                                                  • been toying with [Mirage OS](www.openmirage.org/) (and having to relearn OCaml) and starting to eye HalVM
                                                  • signed up to give a Papers We Love, Too mini talk (on Out of the Tar Pit)
                                                  • been working to port a prototype project I wrote in Clojure to Haskell as a tangible project to work on to learn the language
                                                  1. 2

                                                    Decided to take a break for while and train for an upcoming century. Its a tough one so as long as its not raining I’m going to try for the metric and if I feel good, maybe more.

                                                    1. 2

                                                      I’m still yacc shaving (no typo), on a project I’ve been playing with. I’ve now started rewriting it in C from Go, for no other reason than to see if I can make it faster than the sloppy Go code (which is fairly fast) from before. I don’t intend to have enough time to actually finish this, though, this week, but should have a pretty decent start.

                                                      1. 2

                                                        I found a bunch of bugs in the only Java version of TweetNaCl I could find, so I’ve ported it again from the C myself. TweetNaCl-java Currently debugging it.. Using Nashorn to verify it against the well tested TweetNaCl.js implementation.

                                                        1. 1

                                                          $work: Deploy went off without a hitch last friday, first time in a while that’s happened. Got sick the first couple days of this week, probably due to the 80-90h I’ve been dumping into things. The good news is that it’s slowing down and we’re starting to get ahead of the deficit. Things are starting to look like they’re not getting worse, which is significant. I’ve learned quite a lot about disaster mitigation + recovery, and given the Murphy-laden few months we’ve had, it’s certainly been some hardwon lessons. Word to the wise managers who might read these threads – take a moment, look at your teams – are they happy? Do they have complaints or bugbears about the infrastructure, code base, or other things they deal with daily? Have you given the opportunity to relate these details to you? Technical debt isn’t technical debt, it’s an unhedged call option, and that’s about the most dangerous, costly thing in your life right now. Empower your engineers to fix it. Give them a pipeline to report issues, and take fixing those issues seriously as features. If you do not, you will suffer the same costs my company has in the last few months. Costs which are significant in terms of not only people’s stress, but in terms of actual money. Our sales management team has spent many hours they could have been using to sell the product, instead managing the complaints of customers as rotting infrastructure finally gave out. That’s real money that we lost. Not to mention the future cost of relearning what exists so we can rebuild or replace it. Not to mention the cost of lost knowledge. Not to mention the cost of customers lost due to infrastructural failure. Not to mention the cost of time lost developing features because we have to clean up the mess we were forced to make. That last cost especially is mitigated primarily through amortization. You, dear pointy-haired manager, are the one who gets to decide if you want to take out unhedged call options on our mutual employer’s behalf.

                                                          Do you want to be responsible when they’re called in?

                                                          !$work: Still working on gandalf, it’s coming along nicely. I also jumped back into the Rust waters, futzing around with an n-queens problem solver. Just trying different approaches out and seeing what sticks. Right now I’m having a fun time with traits, after having decided that higher-order programming (aka, tossing closures around with the levity and carelessness of a insane Lisper or normal Haskeller) is a bit more complicated than I’d like. I’ve found the Rust book to be simultaneously invaluable and frustratingly incomplete (for instance, it took me a little while to figure out what flavor of math operators Rust preferred – a trivial matter, for sure, but frustrating that it wasn’t immediately present). I’m sure the estimable steveklabnik is working doggedly towards filling in the gaps, and his effort is certainly not unappreciated.

                                                          Despite my minor frustrations, I’m finding the language altogether fairly pleasant. A nice balance of Haskell’s power tools in a convenient imperative context. Traits are powerful for abstraction like type classes, but a few of their caveats are somewhat confusing. I suspect after I’ve taken some more time to learn the personality of the compiler and it’s error messages, it’ll feel less frustrating and more fun. This unlike my experience with Go, which left me more frustrated as I found myself smashing against it’s limits fairly often (not to say that Go isn’t a fine language, it just doesn’t fit my brain). All told, I like Rust, and you probably should too, because it’s awesome.

                                                          1. 1

                                                            $WORK

                                                            The sign-up flow front-end part of web-application. Using Reagent (react.js library) & Clojure.

                                                            Life.

                                                            Dealing with a situation of a co-operative I’m a director of, in which two directors want to resign. I spent 3 days figuring out our legal standing with regards to this. I’ve seen both the best and the worst in people in this time, wow.

                                                            I’ve been thinking about a co-operative for IT consulting (this is unrelated to the purpose of the co-operative I’m currently a director of). But I’ve since seen this idea put out there, so I thought I’d put it out there: I’m a director of a co-operative, this is the second co-operative I’ve been a director of, and I also do IT consulting as a sole-trader. AMA :)

                                                            1. 1

                                                              Busy week at $work. We are working on a kiosk solution based on Firefox and getting ready to implement a frontend (possibly cli) for Kea, PowerDNS and OpenRADIUS to replace our old setup. Anyone interested in participating, by the way?

                                                              1. 1

                                                                Today I’m finishing up a fix for a LiquidHaskell issue, where LH would accept and ignore certain invalid type signatures. Then classes, classes, classes, as I’m back at school.

                                                                Last week I submitted my proposal for GSoC ‘15! LiquidHaskell currently parses special type signatures from comments near function definitions, like:

                                                                {-@ add :: x:Int -> y:Int -> {v:Int | v = x + y} @-}
                                                                add :: Int -> Int -> Int
                                                                add x y = x + y
                                                                

                                                                This implementation has always had various issues and unfriendly points for new LiquidHaskell users. I hope to replace this by merging LH types into native Haskell types:

                                                                add :: x ::: Int -> y ::: Int -> (v ::: Int || v == x + y)
                                                                add x y = x + y
                                                                

                                                                (Haven’t nailed down the exact operators to use yet, so ::: and || aren’t final.)

                                                                Until then, I’ll be continuing with my work in integrating LiquidHaskell with Cabal, the Haskell package manager.

                                                                1. 1

                                                                  $work: porting everything to docker containers and redeploying all our sites. it’s been fun doing devops as opposed to coding for a change.

                                                                  $personal: i’ve been working on my dotfiles: http://git.io/.files

                                                                  i created a new vim status line and color scheme, updated my tmux tab line to match, and ported the new color scheme to my shell. i call it “sourcerer”

                                                                  preview: https://raw.githubusercontent.com/xero/dotfiles/master/previews/scrot_nightcity-5.png