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?
Well, I finally finished my howistart.org article, which is on the frontpage as we speak.
In other semi-eventful news I’ve made the book a bit more official. If I don’t hear back from a publisher I’ve pinged I will self-publish. I’ve possibly also picked up a coauthor. Between finishing the article, being more judicious about my side projects from now until the book is done, and the coauthor I am expecting the book to progress much more quickly.
I’ve made an offer to help people to port projects from Golang to Haskell, one taker so far. I’m eyeballing groupcache because I find concurrent and distributed problems fun, particularly in Haskell where I can go about it in just about any manner I like.
I’m learning Rust! I decided that I couldn’t properly learn a language without screwing up a bit so I decided to just go ahead and start a project in Rust. I went with building an virtual machine for a lazy functional languages: stingy.
For “work” I’m working reading some literature on focusing. A rather tricky proof search technique that gives rise to a lot of interesting interpretations of connectives, like binding!
Do you know anything that connects focusing and CBPV? I’ve seen a few papers in this space, but I’d like to get something authoritative since they seem to be a little murky about the whole thing.
I think it’s that computation types in CBPV are isomorphic to the negative judgement type we have in focused calculus and values are positive types.
The way we define computation types with continuations is identical to how we have inversion judgements in focused system. The definitions for how you glue together positive values, negative values and continuations in CBPV is the same as the neutral (invertible) sequents.
This nicely falls out of the proof terms for Simmon’s structural focalization stuff. Staring at Fig. 7 for a while really made focusing click for me.
That’s the rough Rosetta Stone I had in mind, but it always seemed like there was something sneaky I was missing out on. I’m going to go stare at Fig 7 now, thanks!
I made it through “Learn You a Haskell” book and started on “Real World”. Also started on the CIS 194 course recommended by @bitemyapp . Almost surprisingly (to me), I’m discovering I am quite fond of Haskell. It’s a gold mine of great ideas (no surprise to many of you). I have tried to pick some of it up in the past, but it’s resonating much more with me this time around. Quite excited about it actually.
As far as other work, I spent some time cleaning up underscore-transducer, extracting transduce-unique, improving transduce-array and releasing redispatch. I also replaced the underscore dependency in underscore-transducer and used lodash-node to bundle (or not bundle) just the functions I use in the browser builds. underscore-transducer is mostly a “wrapper” around the transduce libraries now which allows anyone just to grab what they need instead of pulling everything in at once.
A while back Google floated “gnubby”, a standard for two-factor authentication. They’ve since started the an industry group named the FIDO (Fast ID Online) Alliance to finalize and promote the standard. Hardware stated shipping from Yubico and Google Apps started supporting it a few weeks ago. I’m finishing up a Ruby gem to support it on any web app. It really is a quite nice standard - the sites don’t need to pay for any centralized authentication service, users can use one device with any number of sites, and because each site gets its own keypair they can’t eg. track you across sites or get hacked by someone else being insecure (like password dumps).
I hope to ship that this afternoon or (more likely) tomorrow morning. I’m probably going to call it “FidoLogin”, but clever names would be welcome if anyone has suggestions.
And then also catching up on Erik Meijer’s FP101x Haskell course, because I’ve been neglecting it for two weeks to hack this thing out. :)
I hope to get back to working on PureScript bugs this week. I would like to start thinking about building more PureScript tools for editors or a possible IDE.
I started looking at implementing the XML DOM spec and HTML 4.01 spec in pure Go. I want to make something like capybara for Go but the biggest issue is the limited XML/HTML support in Go. There’s a decent number of specs to go through:
I’m rewriting my Erlang version management tool (erln8). Originally, it was written in C w/ glib, but the code was somewhat unmaintainable. Moving to C++/Boost has been great, and significantly cut down the amount of code I need to support.
I’m continuing with some platform (Win32, OS X) work on gtk+ and MonoDevelop. I fixed a few theme issues so it’s looking nicer on Yosemite now. I have a patch for gtk’s keyboard input on Win32 to fix issues for international keyboards but so far I’ve been hesitant to release it. This week I did get it into the hands of a user in Czech and he found an issue with it, and I believe I fixed that last night.. so one more round of user testing and then I’ll hopefully do a new release of our gtk package for Win32. I began investigating how to implement vibrancy effects in gtk on Yosemite, but last week I didn’t find time to make any progress on this front so I’m hoping to do that this week.
I’m evaluating javascript frameworks for the client to my CMS. Right now I have a plain javascript (with some jQuery) client, that is like 10% finished. I have built it along side the CMS to be able to call the API in a way that at least represents the finished version. I’m feeling the need to structure the application in a more common way, so I’m looking at Angular and Flux/React. I’ve built a small Go backend for playing Ultimate Tic Tac Toe that I’m building the clients against. I feel that after reading up on the different frameworks available I had to actually make a small application with them to get the feel of how they are structured. I have a plain javascript client finished and will start on the Angular client next. If anyone has any other frameworks they would like to recommend feel free to do so.
I never know how to answer these things, but I guess I can say what I worked on last week.
And in that case, it’s that I finally got around to polishing up buftabline (a Vim plugin) for release, and then released it. In a sense it feels anticlimactic, since this is essentially unbreak-me stuff, not something that creates new value in the world – but it does rectify something I can now only call a baffling omission. (I had finished it the during week before. Prior to that it had languished for over a year, with me intermittently thinking about how to implement the missing part.) Releasing it also led to a couple new features requested and implemented, which was nice; it feels more well-rounded and complete now.
I also hacked a bit more on sortmail, which I’ll call the implement of my procmail genocide. (I would have uninstalled procmail outright last week once sortmail started to take shape, except that it’s the procmail package which contains formail, and I may still want that. But I did delete my .procmailrc with extreme prejudice after years of seething at it, replaced with a nice clean pretty .sortmail/rules.ini.) I wrote an article the week before the last about the insight that then led me toward writing sortmail. The hacking went on through last week, but the essay remains a draft, and I’m not sure what it is that holds me back from posting it. Maybe I should just pull the trigger. Whereas I now realise I cannot dare to release sortmail without a solid test suite, and of course there is still significant functionality missing. I’m sure I’ll be hacking on it intermittently this week and maybe I’ll get around to posting the rationale essay too.
It’s been a productive couple of weeks in solo projects.
I have a weird work week because of vacation and the upcoming holiday, so I’m going to work on my Coursera homework (Programming Languages), investigate unikernels, and try to make some headway with the help of @bitemyapp’s guide in building a URL shortening service in Haskell.
I hadn’t, but I will liberally steal from it. Thanks! Mostly, I’m looking to solve a specific problem I have (a broken instance of some godawful PHP bulletin board system that I’ve been posting to for a decade can’t handle lots and lots of legal URLs) with my desire to write Haskell.
This will be my third time to try and teach myself, and I feel on a little bit firmer ground, having recently picked up Scala (ugh) and OCaml (not nearly as ugh). My dream is to write a video processing pipeline comparable to QuickTime in Haskell, just because, but for now, URL shortening.
I’ve finished a blog post on my first set of experiments optimizing Conway’s Life in cljs. Mostly I’ve focused on approaches to the problem that reduce work, not so much on ways to speed up the work itself. I’d certainly appreciate any feedback re: the copy or the content. It can be found here: http://blog.goose.haus/2014/11/16/life-and-clojurescript.html
I actually got a Hello World tutorial going for Fire★. But I was mostly gone all week at the AWS re:invent conference.
This Week
I am going to try to get the API reference for Fire★ done. Otherwise, how the hell do you know how to write software for it? I have examples but they are never enough.
Researching replacement LCDs for my wife’s laptop to make it usable again. I’ve been doing software for years, but find hardware a bit intimidating. Hopefully the replacement goes well.
Personal non-tech
Resume the experiment with “family scrum.” It worked fairly well until extended family came to visit for a week. Now that they’re gone it’s time to get back on track. :-)
Finished redesigning the kernel of my event counting service so that it can also pass through “raw” time series, now to finish implementing it! Currently trying to decide whether I want to do temporal aggregation (i.e. merging into larger time buckets, without loss of dimensional resolution) or spatial aggregation (truncating dimension values) first, or make that configurable maybe.
How do I create Mac app icons? Do I make something in illustrator, and then export 1x/2x/3x versions of it? It seems really tedious!
Did more Hython work last week. Added parsing support for all flavors of import statements, set literals, dictionary literals, and additional comparison operators. Will probably continue down this path and finish out the parser completely soon. One question arose: how do I put multi-lexeme operators (is not) into Happy’s precedence table?
There’s a tool called makeicns that you can install via homebrew to make icns with. IIRC, you can just give it a high-res file, and it’ll resize it for all the icons, or if you want custom icons for custom sizes, you can provide lots of files. I think i’ve had success with it in the past.
This week is working on getting my team’s Q4 project out the door despite some setbacks; this week, that means getting the provisioning (salt, docker) side set up. I’m still in the process of learning these tools, which I have mixed opinions on.
After I get through my algebra (group theory, not college algebra) exam on Wednesday, I’m going to be hunkering down for a demo/jumpstart session on working with REST APIs in Python. The local ACM chapter has a hackathon on Saturday whose topic is ‘[Web] API Mashups’
I’m in the midst of recovering from suspected glandular fever, so my productivity hasn’t been too high as of late.
I have however, enjoyed implementing a memory management unit (using Java) for my university course, implementing all the paging logic and address translation for a MMU. I’ve also been reading this fantastic introduction to naive bayes classifiers, which explains things really quite nicely, and hope to implement one over the weekend.
I am continuing work on a RethinkDB driver for Rust. Problems I hope to resolve this week are how to handle optional arguments in ReQL with Rust’s limited overloading, and deciding on the correct abstraction (if any) to use for terms which share common methods (i.e. r::table("foo").get("bar") and r::table("foo") both have methods delete which use the same DELETE term type).
A day late, but… working on my beginners guide to the command line interface, and doing some programming problems to keep the brain working. This week, an implementation of tic tac toe. Also playing with hhvm and hack.
I really wish there was an easy way to integration test a bunch of different distros / shell scripts for autojump. Maybe Docker’s the answer.
Besides that, I’m trying to roll out a company internal image hosting service at work that came out of a Hackathon project. I should probably open source it as well while I’m at it.
I’ve decided that the dismantled RC car sat on my desk has sat there untouched for long enough, so I’ve started getting the spare RPi talking to the motors on it. Need to figure out pulse-code modulation for the driving motor, although I don’t think I’ll need it for the steering motor. (My first challenge is getting the RPi installed with a usable OS first though. My initial attempt of doing a headless install ended when it wouldn’t join my wifi network. I should just plug it into the telly and configure it, but I’m lazy.)
Haven’t figured out how I’m going to control it, probably stick a webpage on the pi to control it from my phone on wifi.
I just released odo, a tool for atomically creating / updating counter files from the command line.
Otherwise, I’ve been finishing up a presentation on “compiler stuff” for developers who may not realizing they’re writing compilers, starting another on using MQTT (and testing distributed systems based around it), and hoping to get back to some personal projects that have been on the back burner for too long.
I’m also learning Ansible, and moving most of my configuration for several computers into it. I’m really liking it so far, aside from getting tripped up some by YAML whitespace / nesting issues.
I am going to spend this week trying to figure out how to get myself one of those fancy hats that have been implemented on lobste.rs!
Also getting married! \o/
Congrats. Getting married was one of the best decisions I’ve ever made.
Congrats! That’s huge news. :)
Thanks :D - excited!
Congratulations! Unfortunately “husband” would probably not make a good hat, though.
Fair enough, maybe I can get one for being abieber@? :D
Congratulations!
Congrats, I hope you get a fiesta party hat or something like that…
Well, I finally finished my howistart.org article, which is on the frontpage as we speak.
In other semi-eventful news I’ve made the book a bit more official. If I don’t hear back from a publisher I’ve pinged I will self-publish. I’ve possibly also picked up a coauthor. Between finishing the article, being more judicious about my side projects from now until the book is done, and the coauthor I am expecting the book to progress much more quickly.
I’ve made an offer to help people to port projects from Golang to Haskell, one taker so far. I’m eyeballing groupcache because I find concurrent and distributed problems fun, particularly in Haskell where I can go about it in just about any manner I like.
The dog and I both need to go hiking.
I’m learning Rust! I decided that I couldn’t properly learn a language without screwing up a bit so I decided to just go ahead and start a project in Rust. I went with building an virtual machine for a lazy functional languages: stingy.
For “work” I’m working reading some literature on focusing. A rather tricky proof search technique that gives rise to a lot of interesting interpretations of connectives, like binding!
Do you know anything that connects focusing and CBPV? I’ve seen a few papers in this space, but I’d like to get something authoritative since they seem to be a little murky about the whole thing.
I think it’s that computation types in CBPV are isomorphic to the negative judgement type we have in focused calculus and values are positive types.
The way we define computation types with continuations is identical to how we have inversion judgements in focused system. The definitions for how you glue together positive values, negative values and continuations in CBPV is the same as the neutral (invertible) sequents.
This nicely falls out of the proof terms for Simmon’s structural focalization stuff. Staring at Fig. 7 for a while really made focusing click for me.
That’s the rough Rosetta Stone I had in mind, but it always seemed like there was something sneaky I was missing out on. I’m going to go stare at Fig 7 now, thanks!
This is a rough paper, hah.
I made it through “Learn You a Haskell” book and started on “Real World”. Also started on the CIS 194 course recommended by @bitemyapp . Almost surprisingly (to me), I’m discovering I am quite fond of Haskell. It’s a gold mine of great ideas (no surprise to many of you). I have tried to pick some of it up in the past, but it’s resonating much more with me this time around. Quite excited about it actually.
As far as other work, I spent some time cleaning up underscore-transducer, extracting transduce-unique, improving transduce-array and releasing redispatch. I also replaced the underscore dependency in underscore-transducer and used lodash-node to bundle (or not bundle) just the functions I use in the browser builds. underscore-transducer is mostly a “wrapper” around the transduce libraries now which allows anyone just to grab what they need instead of pulling everything in at once.
A while back Google floated “gnubby”, a standard for two-factor authentication. They’ve since started the an industry group named the FIDO (Fast ID Online) Alliance to finalize and promote the standard. Hardware stated shipping from Yubico and Google Apps started supporting it a few weeks ago. I’m finishing up a Ruby gem to support it on any web app. It really is a quite nice standard - the sites don’t need to pay for any centralized authentication service, users can use one device with any number of sites, and because each site gets its own keypair they can’t eg. track you across sites or get hacked by someone else being insecure (like password dumps).
I hope to ship that this afternoon or (more likely) tomorrow morning. I’m probably going to call it “FidoLogin”, but clever names would be welcome if anyone has suggestions.
And then also catching up on Erik Meijer’s FP101x Haskell course, because I’ve been neglecting it for two weeks to hack this thing out. :)
I hope to get back to working on PureScript bugs this week. I would like to start thinking about building more PureScript tools for editors or a possible IDE.
I started looking at implementing the XML DOM spec and HTML 4.01 spec in pure Go. I want to make something like capybara for Go but the biggest issue is the limited XML/HTML support in Go. There’s a decent number of specs to go through:
I debated porting over libxml2 but there’s a lot of extra XML specs implemented in there that I’m not interested in.
I’m rewriting my Erlang version management tool (erln8). Originally, it was written in C w/ glib, but the code was somewhat unmaintainable. Moving to C++/Boost has been great, and significantly cut down the amount of code I need to support.
[Comment removed by author]
I’m continuing with some platform (Win32, OS X) work on gtk+ and MonoDevelop. I fixed a few theme issues so it’s looking nicer on Yosemite now. I have a patch for gtk’s keyboard input on Win32 to fix issues for international keyboards but so far I’ve been hesitant to release it. This week I did get it into the hands of a user in Czech and he found an issue with it, and I believe I fixed that last night.. so one more round of user testing and then I’ll hopefully do a new release of our gtk package for Win32. I began investigating how to implement vibrancy effects in gtk on Yosemite, but last week I didn’t find time to make any progress on this front so I’m hoping to do that this week.
I’m evaluating javascript frameworks for the client to my CMS. Right now I have a plain javascript (with some jQuery) client, that is like 10% finished. I have built it along side the CMS to be able to call the API in a way that at least represents the finished version. I’m feeling the need to structure the application in a more common way, so I’m looking at Angular and Flux/React. I’ve built a small Go backend for playing Ultimate Tic Tac Toe that I’m building the clients against. I feel that after reading up on the different frameworks available I had to actually make a small application with them to get the feel of how they are structured. I have a plain javascript client finished and will start on the Angular client next. If anyone has any other frameworks they would like to recommend feel free to do so.
I never know how to answer these things, but I guess I can say what I worked on last week.
And in that case, it’s that I finally got around to polishing up buftabline (a Vim plugin) for release, and then released it. In a sense it feels anticlimactic, since this is essentially unbreak-me stuff, not something that creates new value in the world – but it does rectify something I can now only call a baffling omission. (I had finished it the during week before. Prior to that it had languished for over a year, with me intermittently thinking about how to implement the missing part.) Releasing it also led to a couple new features requested and implemented, which was nice; it feels more well-rounded and complete now.
I also hacked a bit more on sortmail, which I’ll call the implement of my procmail genocide. (I would have uninstalled procmail outright last week once sortmail started to take shape, except that it’s the procmail package which contains formail, and I may still want that. But I did delete my
.procmailrc
with extreme prejudice after years of seething at it, replaced with a nice clean pretty.sortmail/rules.ini
.) I wrote an article the week before the last about the insight that then led me toward writing sortmail. The hacking went on through last week, but the essay remains a draft, and I’m not sure what it is that holds me back from posting it. Maybe I should just pull the trigger. Whereas I now realise I cannot dare to release sortmail without a solid test suite, and of course there is still significant functionality missing. I’m sure I’ll be hacking on it intermittently this week and maybe I’ll get around to posting the rationale essay too.It’s been a productive couple of weeks in solo projects.
I have a weird work week because of vacation and the upcoming holiday, so I’m going to work on my Coursera homework (Programming Languages), investigate unikernels, and try to make some headway with the help of @bitemyapp’s guide in building a URL shortening service in Haskell.
You may have seen it already, but I wrote a URL shortener in 43 lines of Haskell code
I hadn’t, but I will liberally steal from it. Thanks! Mostly, I’m looking to solve a specific problem I have (a broken instance of some godawful PHP bulletin board system that I’ve been posting to for a decade can’t handle lots and lots of legal URLs) with my desire to write Haskell.
This will be my third time to try and teach myself, and I feel on a little bit firmer ground, having recently picked up Scala (ugh) and OCaml (not nearly as ugh). My dream is to write a video processing pipeline comparable to QuickTime in Haskell, just because, but for now, URL shortening.
I’ve finished a blog post on my first set of experiments optimizing Conway’s Life in cljs. Mostly I’ve focused on approaches to the problem that reduce work, not so much on ways to speed up the work itself. I’d certainly appreciate any feedback re: the copy or the content. It can be found here: http://blog.goose.haus/2014/11/16/life-and-clojurescript.html
Last Week
I actually got a Hello World tutorial going for Fire★. But I was mostly gone all week at the AWS re:invent conference.
This Week
I am going to try to get the API reference for Fire★ done. Otherwise, how the hell do you know how to write software for it? I have examples but they are never enough.
Personal tech
let
for A Drip of JavaScript.Personal non-tech
Finished redesigning the kernel of my event counting service so that it can also pass through “raw” time series, now to finish implementing it! Currently trying to decide whether I want to do temporal aggregation (i.e. merging into larger time buckets, without loss of dimensional resolution) or spatial aggregation (truncating dimension values) first, or make that configurable maybe.
How do I create Mac app icons? Do I make something in illustrator, and then export 1x/2x/3x versions of it? It seems really tedious!
Did more Hython work last week. Added parsing support for all flavors of import statements, set literals, dictionary literals, and additional comparison operators. Will probably continue down this path and finish out the parser completely soon. One question arose: how do I put multi-lexeme operators (
is not
) into Happy’s precedence table?There’s a tool called makeicns that you can install via homebrew to make icns with. IIRC, you can just give it a high-res file, and it’ll resize it for all the icons, or if you want custom icons for custom sizes, you can provide lots of files. I think i’ve had success with it in the past.
This week is working on getting my team’s Q4 project out the door despite some setbacks; this week, that means getting the provisioning (salt, docker) side set up. I’m still in the process of learning these tools, which I have mixed opinions on.
This week, I will attempt to add support for recursive dependencies to mpm, my
node.js
package manager.If I have the time, I will add more languages.
I would appreciate any feedback.
[Comment removed by author]
I’m trying to write a simple Rigid Body simulation in JavaScript in an effort to better understand JavaScript prototypal inheritence!
This week I’m hoping to get spheres dropping and bouncing off immovable planes.
After I get through my algebra (group theory, not college algebra) exam on Wednesday, I’m going to be hunkering down for a demo/jumpstart session on working with REST APIs in Python. The local ACM chapter has a hackathon on Saturday whose topic is ‘[Web] API Mashups’
I’m in the midst of recovering from suspected glandular fever, so my productivity hasn’t been too high as of late.
I have however, enjoyed implementing a memory management unit (using Java) for my university course, implementing all the paging logic and address translation for a MMU. I’ve also been reading this fantastic introduction to naive bayes classifiers, which explains things really quite nicely, and hope to implement one over the weekend.
I am continuing work on a RethinkDB driver for Rust. Problems I hope to resolve this week are how to handle optional arguments in ReQL with Rust’s limited overloading, and deciding on the correct abstraction (if any) to use for terms which share common methods (i.e.
r::table("foo").get("bar")
andr::table("foo")
both have methodsdelete
which use the sameDELETE
term type).A day late, but… working on my beginners guide to the command line interface, and doing some programming problems to keep the brain working. This week, an implementation of tic tac toe. Also playing with hhvm and hack.
Myself I am trying to get some documentation done for some of the table plugins for OpenSMTPD and some Exchange Web Services stuff down.
I really wish there was an easy way to integration test a bunch of different distros / shell scripts for autojump. Maybe Docker’s the answer.
Besides that, I’m trying to roll out a company internal image hosting service at work that came out of a Hackathon project. I should probably open source it as well while I’m at it.
I’m working on a density clustering implementation using scalding
http://www.sciencemag.org/content/344/6191/1492.short https://github.com/twitter/scalding
I’ve decided that the dismantled RC car sat on my desk has sat there untouched for long enough, so I’ve started getting the spare RPi talking to the motors on it. Need to figure out pulse-code modulation for the driving motor, although I don’t think I’ll need it for the steering motor. (My first challenge is getting the RPi installed with a usable OS first though. My initial attempt of doing a headless install ended when it wouldn’t join my wifi network. I should just plug it into the telly and configure it, but I’m lazy.)
Haven’t figured out how I’m going to control it, probably stick a webpage on the pi to control it from my phone on wifi.
I just released odo, a tool for atomically creating / updating counter files from the command line.
Otherwise, I’ve been finishing up a presentation on “compiler stuff” for developers who may not realizing they’re writing compilers, starting another on using MQTT (and testing distributed systems based around it), and hoping to get back to some personal projects that have been on the back burner for too long.
I’m also learning Ansible, and moving most of my configuration for several computers into it. I’m really liking it so far, aside from getting tripped up some by YAML whitespace / nesting issues.
I’ve been working on protocol.club and putting together slides for some upcoming talks (on “DevOps” tools and GPG).
making a little system in Racket that generates different types of identicons
Implementing Scala annotations – the missing parts. :-)
@Target
meta-annotation in Scala and Scala’s declaration-site meta-annotations.RuntimeAnnotation
andConstantAnnotation
classes in Scala.