1. 21

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?

  1. 9

    I wrote a literate version of my URL shortener. Source here

    Did a code jazz thing with Validation. Think the real conclusion is to uncouple Aeson’s Either semantics from input Validation since Aeson won’t play nice anyway. I’ll make a post to this effect later.

    Getting things hammered out for the book. Making good exercises that properly explain and motivate concepts is hard.

    1. 8

      I’ve been fidgeting with type checkers for a dependently typed languages. I’m considering extending the original one to support some more interesting features like dependent pattern matching, dependent sums, and w-types. I also have been meaning to learn how to use unbound.

      I’ll be blogging about the experience assuming it amounts to more than “Gee that was hard, I don’t think this actually works”. Actually, since the code I’m writing is getting more and more fiddly, I’d appreciate a second set of eyes if anyone’s willing to suffer through my code :)

      Of course, now that I have all these cool ideas to work on I have a bunch of midterms and then finals to study for. We’ll see how much I actually manage to do.

      1. 4

        Always interested in helping to review :)

      2. 8

        Thanksgiving! I’m taking the week off from everything to wrap up some projects.

        I have an npm clone for python that I’ve written as an easy way to quickly setup and run projects with dependencies. Actually working on submitting to PyPI right now.

        I also implemented an hkp client in Clojure during a local hackathon this weekend (in which I won the utilities category, small though it was). I want to turn this into a reusable library. (For those that don’t know: hkp is the http-based protocol used to retrieve information from PGP key servers).

        Once I get both of those things wrapped up, I have to study for the GRE I’m taking right after Turkey Day.

        And throughout all of this, I’m going to try converting my emacs config to a literate one using org-mode.

        1. 7

          I got as far as being able to crudely control my RC car from a raspberry pi via the command line last week. (Literally just setting pins high/low to control left/right, forwards/backwards by echoing into the right paths in bash.) Then ported the controls to golang (which works well on RPi!), but stalled short of having anything resembling user controls in there. I did pick up a Gertboard which should make doing pwm to have incremental forwards/backwards speeds easier, but haven’t gotten around to playing with that yet.

          I’ve also finally wrangled an ansible playbook together and had it click in my head, so I think I might spend some time trying to get my OS X enviroment playbook’d for future installs. (And because I really want to reinstall this machine with Yosemite from scratch, which having a playbook would make far easier.) Will develop that in a VM though of course, love (easily) having OS X in VMs to play with stuff these days.

          1. 6

            We’re entering the final stage of the Memcached hardware accelerator project. With the accelerator and NIC finished, it’s time to hook everything up to the CPU. But in order to do that, we first need a packet filter which can distinguish packets bound for the CPU from those bound for the accelerator.

            1. 5

              I’ve been discovering that software methodologies are pointless and that I should stop worrying about idealisms. Will publish blog post soon.

              Also I’ve been keeping some notes in the back of my mind for a project I’m going to start which incorporates Haskell’s type system with JavaScript through type inference and annotations in comments (it would also include a documentation generation feature that generates haddock style docs).

              1. 3

                I’ve been discovering that software methodologies are pointless and that I should stop worrying about idealisms

                Would love to hear more on this.

                1. 2
              2. 5

                Writing a little Haskell command-line tool that we’ll be using to compute a few weekly statistics of our users and send them email about them. Finally getting to leverage having modularized the codebase so there’s maximum reuse of the same business logic throughout the project. Got my entities, got my data access layer, got my business logic + some pretty convenient hspec2 tests. It’s also fantastic to be able to have a shared test helpers module for factories etc. I had the worst time putting this together in a previous language, this is WAY easier now.

                Every time any of that base module changes, especially when it comes to interfaces, I immediately get yelled at by the compiler of depending projects, no magical blow-ups in production or having to unit test the same flow over and over again in multiple projects.

                1. 5

                  Over the past few weeks, I’ve been desperately searching for a project to occupy my time. Something I can really learn from, something which could actually have value, something I can work on for more weeks, months, or years. A project that’s frustratingly hard and excitingly useful.

                  I’m comfortable with working on tedious but not technically challenging projects at work. Those tasks are great exercises in patience and detail, they can provide actual business value, and they help keep things running smoothly for both the infrastructure and the engineers who rely on them. I almost relish them for the coordination and discipline they require, like a morning run or cleaning your house.

                  Things are different when I get home. Despite having plenty of hobbies away from the computer, lately I’ve been finding myself sitting at my desk staring at the cursor block next to my shell prompt. Just staring into the white abyss of possibility my computer offers, unable to actually chose what to work on next. Sometimes I pace, running through the scores of ideas I have stored in my head and notebooks, trying to find something that’s actually worthwhile, but mostly I just sit and stare. No idea seems worthy of the time and energy. No idea seems worthy enough to exist in the world.

                  So this week I’m going to step away from that blinking cursor, leave my notebooks and ideas at home, and just exist in the world. I’ll give thanks to all in the world who are able to use that little cursor block to create things. I’ll raise a toast to those who find and work on truly difficult problems. I’ll have a shot or two for those who work on the things they think are important, regardless their adoption rates or GitHub stars.

                  Maybe in stillness one can find motion.

                  1. 2

                    Been there for a while too. Hang on! And don’t try to force yourself to pick up a project until you are 100% sure you are looking forward to any challenge that comes with it. In other words, rest well! :-) And know that even those demigods who appear to be productive all the time really aren’t.

                  2. 4

                    Last week I got the first pass at my JavaScript physics simulation working (https://github.com/dogpellet/fiziks). This isn’t really intended to be a full featured physics engine but rather to be used as a foundation for some interesting game algorithms I’m exploring which demand simple, and flexible physics code.

                    This week: * Spatial partitioning to improve collision performance. * Add better collision responses. * Full support for Verlet and Euler integration. * Support for mass (heavy objects should push lighter objects out the way).

                    1. 1

                      ..also enjoying my third thanksgiving! :P

                    2. 4

                      Last week I released transduce-gen that allows defining transducers using ES6 generators. Also transduce-sequence creates lazy iterables from transducers (similar to Clojure sequence, but returning ES6 iterables).

                      This week I’d like to get back to writing a few blog posts. I need to finish up “Transducers Explained” and also one or two articles using transducers in practical application.

                      Continuing to study Haskell as well….

                      1. 4

                        Last Week

                        I started working on the API reference for Fire★ which you can find here.

                        This Week

                        I am about half way through and will try to finish it this week. This is one major part that was missing from the project and my hope is that with the API reference and some tutorials, it would be much easier for app creators to play around with.

                        1. 1

                          Just in time to thanksgiving, check out the API reference here!

                        2. 4

                          For work my team is preparing for launch of our first sale (i.e. expected 10+ times the usual load) after our move to AWS. This was initiated partly because we had run out of physical hardware, so we are prepared and expect we should be able to scale just fine this time, but there’s always a bit of uncertainty with unproven (other than in simulations) deployments.

                          At home I am reading up about language-strategies for multi-lingual parents. I am Norwegian, my wife is a fluent Cantonese speaker, while we communicate together mainly in English. (We live in England.) Ideally we want our son to speak all languages, but it’s hard to keep up speaking the “minority” languages. I am also making first steps on a Clojure web app. I’m intrigued by Datomic, so considering using it for persistence. Should be fun :-)

                          1. 4

                            I’m going to be tightening up some small utilities I’ve been working on, urp and jarg, mostly to scratch my own itches doing some HTTP plumbing in the shell. urp lets you work with URLs in in a structured way, and jarg provides a shorthand for writing JSON and form-encoded values with a syntax lifted from httpie.

                            1. 2

                              Cool! I assume you’ve seen jq?

                              1. 3

                                jq is great. I also use pup when I need to do the same for HTML. Another thing I use is pygmentize, for highlighting and formatting. I have a bunch of little glue functions and aliases around them and cURL. Most of my work is developing HTTP services but I interact with them almost entirely through terminals, I want to put together a quick writeup about what that setup looks like.

                                1. 2

                                  jq and pygmentize are awesome. I hadn’t seen pup before, thanks!

                            2. 4

                              I’ve been working on hex again this week.

                              Primarily, I’ve been working on password resets, package signing and rebar3 support.

                              We’ve just passed 190k downloads, so 200k isn’t too far away now!

                              1. 3

                                Last week I was kinda-sorta on vacation, so I’m using my real vacation this week to catch up on my bug/feature queue at work. I’m also planning a huge dinner and wrangling a slightly ill spouse. I doubt I’ll do anything fun, because I have to touch sbt, and if there’s ever been a bigger technical killjoy, I’ve yet in my 23 years as a professional programmer to meet it. sbt is sort of a fun sink.

                                1. 3

                                  Last week has been very busy at work. I hacked in anger last night on something to neuter OS X’s Spotify app from abusing bounces/badges, using osxinj to inject Objective-C into a running app. I’ve been reading up on Rubinus' metacircular design and may emulate it in Hython. I’ve also been reading a few VPRI papers.

                                  Offline, I’m transitioning to barbell-based strength training from pure dumbbells. This means I need to re-learn the squat and build up slowly. I’m also adding pull-ups into my routine: I’m almost able to complete one. :)

                                  This week, I plan on relaxing and running mostly. Have a good holiday.

                                  1. 3

                                    Last week I did not have the time to work on mpm, so I’ll work on that this week.

                                    As I said last week, I am trying to translate the help text into more languages. If I have time, I’ll work on setting up a registry for mpm packages.

                                    1. 3

                                      Putting together a new gtk/gtk# Win32 installer release to include all my recent keyboard input changes for international users. After that, investigating some issues in the gtk quartz theme engine, and then switching back to Windows to work on some high-dpi issues in monodevelop and gtk.

                                      This weekend I started messing around with React.js some just to learn more about it. I’m playing around with it on top of a toy Rails app, but it’s not yet integrated with the routing and stuff so hopefully this week during the evenings I will find some time to work on this more. I’d like to get a fully ‘isometric’ app working (sorry, I put quotes there because I honestly don’t know what that word means, it’s just something I keep reading everywhere to mean that it works equally well client-side or server-side rendering)

                                      1. 3

                                        A few days into a Kafka ingestor project and I’m realizing I’m somewhat reinventing the wheel and building my own single-stage streaming system, as I’m implementing out-of-order completion tracking & offset management to handle our batching behavior.

                                        NIH aside, having been deep into both the Storm and storm-kafka codebases, as well as touring most of the other streaming systems that are OSS’d currently, it’s probably the right thing to do. Regardless, it’s fun. Most importantly, a custom-built solution will work better for us than off the shelf components in this case, and will end up shared across our organization.

                                        1. 3

                                          Grimoire 0.4.0 still creeping slowly nearer.

                                          In the last week or so:

                                          • A friend of mine at school and I are playing with a new UI theme
                                          • Deprecated the old domain http://grimoire.arrdem.com in favor of http://conj.io
                                          • The dev branch now use only lib-grimoire for symbol & artifact store manipulation rather than raw fs navigation
                                          • The dev branch now uses a multimethod for handling request content types, which gave a reasonable cleanup
                                          • lein-grim now totally works mod some issues in leiningen (src mode currently broken due to lein bug)

                                          Still plenty of UI and code cleanup work to do, but that’s just a matter of time and figuring out what the “right” UI flow is given the expected “average” use case of wanting to find docs quickly and leave. Also in that veign going through a bit of an existential crisis about whether the support for articles and modular documentation in 0.4.0 is required/desired or not due to projected low traffic compared to traffic comprared to the existing core documentation.

                                          Ticked off at the discrepencies I’m seeing between Google Analytics and what little server side logging Grimoire does do. May well sit down and build my own session tracking system both because I’d like to have a better sense of user population size and because I’d like to start accumulating relative documentaiton demand information for sorting/searching. This will probably involve building a “bot or not?” user agent string microservice that may or may not get published.

                                          So for this week

                                          • Eat turkey
                                          • Implement the (currently stubbed) API
                                          • Content-Type: application/json support
                                          • Content-Type: application/edn support
                                          • Clean up the (currently broken) 404 handlers (the irony is not lost on me)
                                          • Add, benchmark a first cut at symbol search
                                          • Mess with the articles UI
                                          • Start working on porting over the examples & docs from Grimoire 0.3.X for release
                                          • Figure out how to implement the “edit” links for 0.4.0
                                          1. 2

                                            Working on porting more 3D printing software to OpenBSD - Cura and Printrun are on the agenda.

                                            1. 2

                                              This is kinda tough to answer on multiple levels. I had a heart-attack 3 weeks ago, and while I’m feeling fine physically and am well on the road to a projected complete recovery, my life is still a little out of sync. My sleep patterns are off, and I still have a lot of trepidation in the face of any task that requires much physical exertion, and mentally I haven’t yet gotten refocused on techie/work stuff. So I’m taking it pretty easy, watching a lot of TV and movies, reading a lot and just trying to ease back into a normal routine.

                                              That said, so far this week I’ve been spending a lot of time learning to use Storm, and will also be diving into Spark, as I’m planning to write an article on those two technologies.

                                              Other than that, I need to follow up on some sales opportunities that had started to come together for the startup, just before I had the heart-attack. Tonight I’ll be assembling some links and citations / papers to send one of our prospects to support their interest in adopting semantic web tech for an application. I also need to follow up with another sales lead and basically just ping the guy and say “Hey, do you want to continue the conversation we were having before?”.

                                              That’s pretty much it… I’ve been told by multiple doctors and medical professionals that I need to lower my stress levels and that I can’t keep working as much as I was before, so I’m trying to pace myself and take it kinda easy, while still getting stuff done.

                                              1. 1

                                                I’m learning org mode once and for all.

                                                I’ve maintained a text file for years now which is a combination to-do list/engineer’s notebook. Over the last year, I’ve had trouble maintaining a good structure while working on multiple projects at a time. Reducing the number of simultaneous projects is not an option, so I looked at other options including a concerted effort with Evernote. None have fit the bill so far, but I have hopes for org-mode.

                                                1. 1

                                                  I’m preparing for a phone interview with Google for an internship, which involves revising data structures, algorithms, operating system stuff, maths etc. If anybody would like to help me by having a Skype/Hangout practice interview with me, I’d be forever grateful!