1. 29

Hello crustaceans!

Time for a Monday roll call :-) What are you going to build/work on this week?

Feel free to share, seek help or just talk away whatever you will.

I released the 12th iteration of the Bookiza framework (http://bookiza.io) last week and now am going to continue working on its page generators, add preprocessor support - markdown, haml etc. I hope to finish this by Friday if all goes well.

That’s all folks! Have a great week ahead.


  2. 10

    have my last interview this week then i am done with the job hunt!!

    Got my first mac, and will be setting up XCode and stuff and figuring out how it works!

    1. 4

      Wow, congratulations on both: getting a new job and getting your first mac.

      Especially if you’re coming from Linux, take some time to savour your new Mac’s features. First impressions never have second chances, and I remember my own feelings when I got my first Mac: both a feeling of discovery, something new, and a bit of wow because of the polished interface and integration.

      Do you have an iPhone too? iCloud is the target of many memes but the truth is that mac-phone integration is great this days.

      1. 1

        I use an android phone (Moto X2) as my daily driver eventhough i have an old iphone4s but it is giving me issues with wifi (have to literally freeze it to make the wifi start working for an hour or so).

        The biggest problem i had was that update download stops when i close the lid, weird. since the updates are usually huge i don’t want to leave my mac active using caffeine, This issue was quickly solved using insomniaX.

        It’s a macbook air so i’ve been using nomachine to access my old linux laptop and write code for the linux distro i contribute too, no other solution worked as good as nomachine.

        also getting used to brew, after many years of jumping between apt, yum & pacman. brew is fine, brew cask is very helpful.

        finally App discovery is still a problem for me, trying to find places where i can get good app recommendations.

        1. 3

          There are many threads and FAQs on reddit’s /r/apple regarding “software for switchers”. In general, the builtins work well (safari, mail.app, photos, etc), and for specific tasks you can try OSX counterparts for Linux software.

          brew is crucial if you come from a linux environment, I see that you already discovered it.

          Anyway, if you want any specific recommendation, just ask here and I’m sure we’ll give you more than enough options :)

          1. 2

            thanks a lot! i bought airmail2 as soon as a friend recommended it, amazing app and much better than the mail app in yosemite.

            1. 1

              Dude, yosemity? El Capitan and much more stable, and not updating after it has been out for almost a year… Why not?

              1. 1

                updated last week.

                1. 1

                  Ah great ;)

          2. 3

            Especially if you’re coming from Linux, take some time to savour your new Mac’s features.

            Ah, those wonderful OS X features:

            • no official package manager with which you can control all your installed software
            • incredibly old package versions
            • a fsync() that will not flush the disk’s cache; they have a F_FULLFSYNC fcntl for that that almost no software uses, so enjoy losing PostgreSQL data in the case of a crash ;-)
            1. 1


              I know, but it gives you a good UI with excellent battery life and i don’t plan on install PostgreSQL on this machine anyway, it’s a tiny air. I will use a linux box using ssh or using remote desktop (i do desktop app development for linux too).

              Kinda like some people did with their iPads early on.

              1. 2

                On an old Macbook Air right now and I have no issues with running a PostgreSQL server 24/7. It’s not like you’re going to be running PostgreSQL for non-development purposes and have a fatal crash that will cause you to lose the last few seconds of data.

        2. 2

          Congrats man! Oh ya, you can setup vagrant too to run linux distro seamlessly

          1. 1

            Cool! will running linux desktop applications be possible with vagrant?

          2. 2

            Do remember to head into System Settings -> Security and turn on the local firewall and FileVault (full disk encryption) as one of the first things you do. FileVault doesn’t, in my experience, make your Mac run any slower, but it’s super cool to know that you at least have some security for your sensitive data on you Mac.

            Other than that, give Safari a chance. I used Chrome for many years when I ran Linux as my main operating system, but Safari is so much more smooth and consumes less battery if you’re on a laptop. I’ve been using Safari for 3 years now and every time I use Chrome, which I do everyday to separate work and personal logins, I loathe it.

            Oh, and the built-in terminal is great, but I think iTerm2 is way better! Try it out!

            1. 1

              is safari really that good? i am a firefox user the few things i’ll miss are uBlock origin & sync with my phone (android user)

              1. 2

                It is in my experience.

                The thing about Safari is that the team focuses more on the experience, thus the smoothness, as low power usage as possible and such as opposed to Chrome which focuses on having “all the features”. That, Safari don’t have, but instead they have a browser where scrolling is smooth, it doesn’t eat my ram even with 30 tabs (my max number of tabs ever) and 3 windows, and the whole thing just “feels” better to use. It’s hard to describe, but “feel” is what sets it apart. Chrome on the other hand just feels powerful with no regard to the soul sucking jhankyness that those powers require. Safari also has a better UI in my opinion, which doesn’t hurt either.

                There is uBlock (not origin) for Safari, which is what I use, btw.

                1. 1

                  sold, closing firefox and starting to experiment with safari!

                  can the battery life BE any better

          3. 8

            Hey hey,

            I spent yesterday evening in hospital (allergic to peanuts) but am out and fine only a little worse for wear. Gonna be tired and less active than usual this week as a result.

            This week will probably be an exercise in shaving 2nd and 3rd order yaks. Last week I wrote a patch to deprecate clojure.core/use in Jaunt which has some niceties like providing automatic refactoring suggestions. In the interests of maintaining general “good style” to some epsilon in Jaunt I have a bunch of formatting tools which run to validate both the Java and Clojure/Jaunt code involved. Unfortunately cljfmt really doesn’t like the style in which I use lexical commas. Which means I can’t merge that changeset yet unless I compromise on my code style, being

            ;; instead of
            ;; I do

            It turns out that this is because rewrite-clj, the backing library for dealing with Clojure source as a token tree currently treats [\s,]+ as a “whitespace” token, meaning that all cljfmt’s whitespace normalization implicitly strips commas. It’s a default, just not one I think is particularly desirable. Yesterday I got a pr opened on rewrite-clj to try and create a separate conception of a comma node so that I can hack cljfmt to deal nicely with commas. I also wound up patching emacs clojure-mode to deal with lexical commas better.

            Once I get those yak frames off the stack, next on the chopping block for me are probably:

            On the Jaunt quarter:

            • A more strictly parsed ns macro with better warnings. The rumor is that PEGs probably derived from Colin Fleming’s conj 2015 talk are coming in Clojure 1.9, but short of that I think restricting the ns macro to :refer, :require, :use, :import, :gen-class and maybe a few others would be a reasonable incremental improvement until we know what the PEG stuff looks like. -Landing the use deprecation patch
            • Deprecating clojure.core/refer for many of the same reasons and again with automatic rewriting suggestions

            On the Grimoire side of the house:

            • The new frontpage cheatsheet continues to not be a hit
            • Looks like I forgot some symbols in the new cheatsheet.
            • Gonna add clojure.core.matrix and clojure.algo.generic (contrib library) documentation to Grimoire. One thing which newbies commonly get tripped up on is the fact that Clojure itself doesn’t have sin, cos, tan and some other basic lispy math functions you’d expect. Instead interop on java.lang.Math is used ala (Math/sin a b) etc. This leads to some preventable degree of user frustration when searching for these things.
            • Still need to come up with a better cheatsheet

            Grimoire realistically needs some design help, since web UIs aren’t my strong suit. Especially the per-fn documentation pages because even the good ones aren’t very inspiring. If anyone on here would be interested in working with me on this pro bono or otherwise, I’d be interested to talk.

            School continues

            1. 3

              Grimoire realistically needs some design help

              FWIW, the reasons I use clojuredocs.org instead of Grimoire are because (1) it has better design and (2) is integrated into DuckDuckGo with !clojure.

              That said, if nobody else steps up to the plate, I’d be willing spend a few hours this week to tidy up the Grimoire design. I’d defer to somebody else first because I’m not usually a front-end guy, but I’ve done design in the past and can hold my own.

              1. 2

                +1 for !clojure – I use DuckDuckGo but wasn’t aware of that!

                Checking out what other niceness DuckDuckGo offers.

              2. 1

                So leading commas is a legit lisp thing? I thought it was just used to force proper indentation when posting to mailing lists and google groups… (I’ve only seen it on the clojure.user google groups so far.)

                1. 1

                  I won’t be so bold as to claim that they’re a thing generally. clojure-mode treats them as nonbreaking whitespace, and I discovered that I found it convenient to use the ,, prefix to indent result expressions in cond, case and match forms. I also think that for import forms when using prefix lists it’s likewise convenient. So really this is just a readability hack I use in my code.

              3. 7

                I’m porting GTS (a scanning tool by Studio Ghibli, released together with OpenToonz) to Linux: https://github.com/stefantalpalaru/GTS

                I did the easy part of building it with Autotools and a recent gcc, now I need to replace TWAIN with SANE and handle the Windows-specific paths for config files.

                1. 5

                  I’m creating some app mockups in Xcode for prospective clients. After trying out Sketch.app and many websites to “design” app skeletons, it turns out that the app with the best effort-result ratio is Xcode. It takes just a bit more time than making a sketch with powerpoint or Sketch, but the result is astonishing.

                  So here’s this week’s lesson: if you are already familiar with Xcode, sketch with it.

                  1. 1

                    Seems Apples prototyping teams uses Keynote for prototypes. There’s been sessions at WWDC about it for years.

                    Funny that I find that I like using Xcode for prototyping instead, just like yourself, while Apple, who builds a lot of iOS apps, uses keynote. Maybe I just don’t prototype enough, that Keynote is worth it.

                    1. 1

                      Maybe they have a very good widget library that’s worth it? For me, the evident bad quality of powerpoint-produced prototypes is a drawback, and not having to worry about manual alignments and such is a big plus.

                  2. 5

                    I have my first interview on tuesday! Excited for the opportunity, but also a little stressed.

                    1. 4

                      This is how I deal with the nerves - If a company does not hire me, it is because I either did not fit their needs, or did not fit their culture. If I do not fit their needs, then I would rather not have disappointing them on my resume, and if I do not fit their culture, I do not want to be stuck there, no matter how well I could do the job.

                      Taking a thousand interviews to land the job that is the right place for you is infinitely better than taking only a handful, and landing a job that you will hate, or that will cause you to burn out, or disappoint. Just do your best in the interview to be personable and honest to what you believe you can do, then if it doesn’t work out, it’s only a step on the path to the right place, and the right time.

                      Good luck.

                    2. 4

                      Busy week for me. The main thing is I’ve taken the research that went into my talk expanding the Liskov Substitution Principle into something useful (especially for dynamic languages) and I’ve written a complete draft of an ebook. It will teach you to recognize a problem you’ve been seeing for years as a developer so that you have a handle on it and can write better code. It needs about 200 more words of prose and has exactly 27 todos (like “link that one bug report” or “insert cat photo here”). My goal is to publish it next Monday.

                      Final length will be around 45 pages depending on typesetting, which I’m not allowing myself to geek out on because “if it’s worth doing, it’s worth doing poorly”. I want very much to share useful programming knowledge in a becomes-my-job sort of way, and I need that milestone more than a beautiful typesetting (but boy, do I have some nice ideas for v1.1 in a few weeks).

                      If someone comfortable in C# and could review ~600 words talking about interfaces, I would really appreciate a once-over for glaring mistakes.

                      What else? Last week I broke my 0x engineer streak (see earlier link) after 56 weeks. And this week I’m moving cross-town while I continue to suffer on an OS X loaner due to my Linux machine being in the shop.

                      1. 1

                        Sure, happy to proofread and know a bit about c# …

                        1. 1

                          I could probably find some time to look at your C# thing. Send me a PM!

                        2. 4

                          I’m experimenting with a new approach to example minimization based on regular language theory. The idea is that if we can figure out a regular language that matches the predicate we’re trying to minimize below our current best example then the problem becomes “easy” because it’s now just a shortest path problem in a graph. Inducing regular languages for complex problems is impractical, but we can build the state machine lazily and only compute the bits we need.

                          Initial results are… I wouldn’t go as far as to say “promising”, but at least “interesting”. It’s decidedly a work in progress and I’d give better than 50/50 odds to my abandoning it after concluding it doesn’t work very well, but at least I’m learning a lot about formal language theory while writing it.

                          1. 4

                            Write more of the Parser, for the query language, of a GraphQL implementation in Haskell that I’m calling Blueprint for now. There’s another Haskell implementation that exists, but I hope to embed more of the GraphQL type system in Haskell so that instead of having a GraphQLEnum, you can have a data THING = WHATEVER | OTHER, etc.

                            1. 4

                              always use dark terminal color schemes and wanted to try and push myself out of my comfort zone and make a light theme that i could actually use. i call it blizzard orb - https://redd.it/4c3bf2

                              screen shots: single screen and multihead

                              1. 1

                                Love the background.

                              2. 3

                                Finishing up level oriented code for my side scroller. Then just need enemies and it’s basically a complete game!

                                1. 3

                                  hopefully having some interviews this week :)

                                  also with any luck i’ll release a little poc dashboard thing that queries the bitbucket/confluence apis via haskell and loads them up in the jupyter dashboard project thing!

                                  also, probs be doing a bit more work around the fp/haskell conference some friends and i are organising here in melbs; probs around august-september. maybe some of you other melb lobster peeps will come along!

                                  1. 3

                                    Over the next day or two, I’m finishing up writing the first draft of my dissertation and trying to consolidate some of my course notes. After that, I’m travelling back home for a belated Easter holiday with my family, whoo!

                                    1. 3

                                      Polishing off the tail end of Easter break, aiming to spend some time outdoors with my kid. Back at work tomorrow, where I’ll continue drawing up plans for migration of a Postgres database to RDS with minimum downtime. Otherwise expecting this week will be a little bit of everything, as I am supporting my colleague in his second week on the (remote) job.

                                      1. 3

                                        A really early morning wakeup last week made me play with love2d–just a basic pong to show my kids some history.

                                        This week I should probably start working on stuff for my lambdaconf lightning talk. Not a big talk or anything, but lots of work to be done on the thing I am talking about.

                                        1. 3

                                          Continuing from last week, still working on reading data from my glucometer, I’m about half-way done though.

                                          That’s about it… I haven’t done a lot of reading lately, so I guess I’ll prioritize that. I’ve got Philosophy in the Flesh by Lakoff & Johnson to keep me busy.

                                          1. 2

                                            Last week I buried a drain pipe, wrote half a library of simple data structures, and cleaned up around the house and farm. This week I plan to finish the library, add wooden walls to a short trailer for transporting animals, and add an external fan to my (now constantly overheating) projector.

                                            I also got a side job building a small house for some folks I know. It’ll be consuming my weekends, which is frustrating my girlfriend, so I’m looking into better ways to track and budget my time. I’m tempted to just do it in ledger.

                                            1. 2

                                              We’re hopefully going to get the FUSE bindings working for Peergos which would mean you could mount your secure encrypted P2P filesystem as a host directory and use your native file browser. Super excited!

                                              1. 2
                                                1. 2

                                                  Doing lots of practice problems on CheckIO for an upcoming interview. I can automate processes like a mofo but solving problems with more meat to them is something I could stand some more work with.

                                                  Reading TCP/IP Illustrated and really enjoying it, even though some portion of it is a bit out of date at this point.

                                                  1. 2

                                                    It was a long holiday here in Ireland, so I spent some time working on a number of things, namely:

                                                    • Learning serverspec to create custom resource types/matchers to test our Hadoop infrastructure and to increase the reliability of our cluster
                                                    • Working on and off the re-write of an IRC bot I wrote months ago, mainly as a means to put it online on github without feeling ashamed
                                                    • Started reading the SRE book

                                                    A couple of other bits and pieces around automation/improvement of my own development workflow.

                                                    1. 2

                                                      I’ve started working full time with Elixir after working for some years with Erlang. I really like mix, ecto, module nesting, stacktraces/errors and Exunit. I am not a big fan of the syntax thought even if I used to use Ruby. I prefer Erlang syntax over Ruby syntax since it is simpler.

                                                      On the other hand I am preparing a short talk I am going to give on the Buenos Aires Clojure user group about Clojure and Clojurescript. I am implementing a short IRC client using manifold, aleph, gloss, core.match and instaparse and a web interface using clojurescript and reagent. I am not a frontend developer but I really like developing in Clojurescript. I am not sure if I prefer it over Elm, but it has been a real pleasure in comparison to my experience with Javascript. On the other hand when developing network clients or servers in Clojure I miss pattern matching, message passing, light processes, supervisors, tracing/observability from Erlang. Instaparse is really good, but manifold, aleph, gloss feel a little bit too beta. I could not find any big project using the combination of the three and the documentation is not good enough. I am a Clojure begginer in comparison to my experience with Erlang so it is very likely that my perception is quite subjective.

                                                      1. 2

                                                        Working on my Halo memory modding tool.

                                                        The “meat” of the functionality is implemented in a Python library which can be used standalone. It uses the Windows APIs ReadProcessMemory and WriteProcessMemory to copy data, and ctypes to translate bytearrays into meaningful data.

                                                        The GUI is written in C# and XAML, which means I get top-notch native UI at the cost of making my life difficult. C# is fine by itself, but in order to embed Python I’m also using the bastard hybrid language “C++/CLI”, which has one foot in the native world, and one foot in the managed C# world.

                                                        So I have XAML views bound to C++/CLI objects, which hold native C++ objects, which wrap PyObject*, which point to the canonical Python objects. I’m kinda surprised that it manages to work.

                                                        1. 2

                                                          Pretty much the same as last week. We’re building an open source “machine learning as a service” platform. When it’s all ready, it’ll be a convenient way to automatically provision ML clusters using Spark / Hadoop and incorporating platforms like SystemML, MLLib, Mahout, etc. On top of that we’ll provide REST API’s for submitting jobs, making predictions, etc.

                                                          As it develops we’ll add support for TensorFlow, CaffeOnSpark, Warp-CTC, etc. Beyond that, we have plans for a whole laundry list of packages that people will want to use for machine learning, business intelligence, scientific computing, etc.

                                                          It’s still very early, so there isn’t much to show off yet except a landing page, but if anybody wants to take a look, here ya go. http://neuralobjects.com

                                                          The landing page is hidden behind a login page right now, but you can take a look with username “user123” and password “realitybomb40”. Ignore the video that’s there, it’s just a placeholder to show where our explainer video will eventually go.

                                                          1. 1

                                                            Addendum: Just setup a “Let’s Encrypt” SSL certificate on the domain and reconfigured things to redirect to SSL always. Works like a champ. Now the next step is to ~~move the domain to Amazon Route 53 for DNS and~~ get things setup for automatically generating certificates for subdomains when customers register and spin up an environment. The idea is that everything will be handled programmatically - creating the subdomain in DNS, associating the IP address(es), and creating and deploying the certificate. This will let us use WebHDFS (in conjunction with Knox) to allow secure file uploads and downloads.

                                                            Another “next step” for “real soon now” is to configure Google Analytics on the page. We don’t expect much traffic yet, as we aren’t promoting this to the public at large yet, but I’d like to go ahead and get that in place sooner than later.

                                                            We also have an “explainer” video to record.

                                                            Edit: Move to Route 53 is done, now it’s down to figuring out their API for adding records so I can automate the subdomain creation process.

                                                          2. 2

                                                            Doing client work (a surprisingly sane reporting system in PHP), and cursing the existence of the major VR/AR vendors right now.

                                                            It’s been a few months off from normal work, and I’m still deciding if I want to either:

                                                            • Join a normal company (and maybe trigger a move)
                                                            • Join a local startup (and deal with the sort of bullshit I’ve gotten familiar with over the last several years)
                                                            • Start another startup (and deal with the not-fun parts of bizdev)
                                                            • Change industries (there’s a local coffee shop that seems pretty low stress to work at)

                                                            Also, I have an undying annoyance at all of the current AR/VR vendors. Did I mention that? Also that Unity is an affront to God in some ways?

                                                            1. 1

                                                              Building a pinboard clone in Rails to keep my chops up and learn about front-end stuff, working through my first Go app and hopefully scheduling a couple of interviews! Where in the US do you guys like to work/live? I like beer, freshwater, nature and music beyond cutting edge tech.

                                                              1. 1

                                                                Actually got some very primitive code running on Flobot on a real ESP8266 board, so with another day or two’s work I should have a programmable robot demo to show off.

                                                                Just as well, because it looks like the next job is starting before the current job is quite done … Keeping busy!

                                                                1. 1

                                                                  This is my last week of majority-time spent at the freelance contract I’ve been doing for a few months; it’s been just fine and has helped support other projects (+rent ;-)), but I’m dropping back to 2 days next week, so I can focus on my own stuff again. Ahhh. (‘Til the money runs out.)

                                                                  Outside work, pulling ideas from the weekend’s experiment with name-based process registration back into a hobby erlang project. Probably moving that across to rebar3, too.

                                                                  1. 1

                                                                    The previous week I had done a Unix-like split file command line utility in Python. I was going to add an interesting (IMO) twist to it, but that got put on hold (though it is part done), because I thought of writing a file compare utility to test the split utility. Here it is:


                                                                    and then thought of this one-liner that implements a limited file compare - in memory:


                                                                    A few other things going on, but not enough progress to mention yet.

                                                                    1. 1

                                                                      At work I’m making the final push to get some refactored code out of our team’s branch and into the main product repo. I’ve been fighting with our testing infrastructure a bit, but I’m hoping to be past that and make some progress this week.

                                                                      Outside of work, I’m working on photography quite a bit. I went out to take photos 3 or 4 days last week, and plan on going out again this week. I’ve also been watching Phase One’s webinars on Capture One, and have been finding a lot of features I didn’t know about.

                                                                      I’ve also been playing around with making animations in Common Lisp. My latest mini project creates animated harmonograph curves that move in sync to mp3 files. I’d post a link to GitHub, but I haven’t made a repo for it yet.