Heya lobsters,
It’s Monday again, a new week!
What are you going to work on this week? Feel free to share and seek help/advice if you want.
At my end, I got a fresh site up at toucaan.com for a new — lighweight, gridless & designless — css-framework
Toucaan that I’ve been working on. It’s been a few months in the works and we are currently using this on two of our projects in production already.
I hope to finish extracting it this week and let it out. Will notify!
Do star the repo on Github, though it’s empty right now, to be notified as soon as it’s up there!
… what am I doing? This is a question that never seems to bother me too much. The general rule is to just wake up and decide in the moment what to do. I don’t even know what I’ll be doing 30 minutes from now.
Last week, we were on a week long road trip in / around Chiang Mai.
This week, we’re on a beach for much of the week with 2 Russian expat families. The Russian fathers and I will be working from here, but that’s fine. :)
As for actually getting something done … I’ve been working a lot on Mindy, a byte code compiler and VM for Dylan. We’ve now gotten pull requests from 4 people, some of them who hadn’t contributed to anything for Dylan before. I’ve also started bringing back support in melange, our C header parser and FFI bindings generator, for Mindy’s flavor of FFI.
Mindy is a lot of fun to work with. The entire thing compiles in seconds, there’s no complicated bootstrap and the codebase is pretty clear. There’s a lot of easy things to do and clean up or fix or improve. It takes a very different approach to things than Open Dylan did. Open Dylan is an ahead of time compiler that tries to do a lot of validation and optimization. Mindy is not. It just tries to get you to experimenting as quickly as possible. (It’ll be fun to improve the error handling there over time and improve how it implements the type system.) Everything about Mindy is easier and that lets things move a lot faster.
Also, my Github streak has now passed 1024 days.
btw, you have a typo on your link to Mindy
Woops. Was typing out all links manually … sorry about that.
I want to start automating some of the prep work for hifi. I use trello for storing links for this, so it shouldn’t be too bad, as they have an API. Would also like to design and put up a nicer site for this project (hifi), though that sounds a lot less fun than other things I could be doing, like putting together a Lego Star Destroyer.
At work, I’m trying to do some testing of Kafka for some specific metrics related use cases, so I expect to spend most of my work week on that stuff.
Also doing some work on a simple Go logging library that can be extended in such a way as to deprecate some of the more complicated things we do around metrics and integration with rollbar. The idea is to log l2met style metrics, intercept them and deliver to our stats provider. For rollbar, just capture and post anything logged with priority error or greater. These will exist as independent “Filters” for the library. Might end up sucking, but might not, too.
Not much substance to contribute but I am enjoying hifi, looking forward to more from it.
Thanks for replying and letting me know!
Finally got to finish what I set to solve 2 weeks ago (https://lobste.rs/s/aomrlh/what_are_you_working_on_this_week/comments/ijzhnv#c_ijzhnv): using Z3, how to place a Queen, Rook, Bishop and Knight in a chessboard in such a way that arbitrary squares are attacked an arbitrary number of times. My problem was that pieces can get in each others way, so using plain bitboards with the attacked squares for each type of piece in an empty board (like I was trying to do) won’t work. My approach was, instead of implementing this I relied on an open source chess engine, stockfish, which I’m using as a library (despite not being one), which already implements this in a fast way (and closer to, if not already, the state of the art in these matters).
The code is here: http://pastebin.com/djXWtaz4 My algorithm is to use my naive method to get a “pseudo solution” using Z3; for this pseudo solution I calculate the “real” attacked squares for each piece and then check if it’s an actual solution; if not, add a constraint to negate this pseudo solution and repeat.
Next step: major cleanup and refactoring :)
Got an interactive tour working last week. This week we’re getting ready to email our Peergos alpha testers about our “private” alpha to get feedback. Super excited!
$work: Continuing to rewrite portions of our legacy code with React + GraphQL. Have been impressed with GraphQL so far but the lack of maturity (docs, hitting ‘edge’-cases in implementations) has been frustrating at times.
!$work: Started reading Foundations of Computer Science before I move on to Introduction to Algorithms (CLRS).
Why would you want to replace (presumably functioning) legacy code with immature GraphQL?
$WORK:
I’ve finally gotten the ball rolling on my departure. So, finishing my current project, handling some other little stuff, and then maybe planning with the CTO how I’m going to transition out–worst case, at-will is the escape hatch we all have now. It’s kinda scary, but not as scary as staying here for another $inordinateamountof_time.
Big part is going to be knowledge transfer and making sure I’ve written up how all the fiddly bits work. I’ve already done that for the meta development processes (how to cut a release, how to run our doc generators, etc.), but still need to do that for some of the clever (ugh) code I wrote. If I’m particularly motivated I’ll be leaving a roadmap for what they need to be looking towards re: technical debt and other things, but we’ll see.
!$WORK: I need to work on an Elixir on-line stats library. I’m thinking about (having run into this both in Node and in Elixir now) starting an e-book on online algorithms with practical examples in those (and perhaps a third) language.
I’ve been working through the Matasano Cryptopal challenges in Rust the last week or so, and seem to have come to an inflection point in my Rust learnings where the compiler is now my friend.
Outside of the cryptopal challenges I’m working on a doorbell notification service in Rust for Noisebridge to extend our existing access control system to allow people to “take the doorbell” for an hour at a time, whereby the physical doorbell in the space would not ring and instead this person would receive slack / SMS notifications about the door.
? congrats! How long did it take you, do you think?
hard to measure exactly, but I’d wager about 3 weeks or so of time spent tinkering with it.
Another major factor is Rust having stable releases. When I originally looked at Rust a few months back there was a lot of out of date documentation online from the pre 1.0 days which made learning it a bit more cumbersome. Anecdotally I’ve found the documentation to be really great post 1.0 which has really aided the learning. I use zeal a lot w/ the Rust documentation.
What’s zeal?
Also, glad to hear it. I’ve been hearing stories of a few weeks to a few months. Always collecting more anecdotes!
ah should have linked to zeal. It’s an offline documentation browser for Linux and Windows modeled off Dash for OS X (it also uses the same documentation set downloads).
The documentation / stabilization of Rust is definitely going to cut down on the learning curve. Exciting times ahead.
Ah that’s cool! I’ve heard great stuff about Dash, but since I don’t use a mac…
Thanks for the mention of cryptopals; I should pick that back up…
I’m trying to decide what to do after I graduate (from a CS degree) this year. The more I think about it, the more I would like to do something related to medical/biological research, though ultimately, I want to do something more intellectually philanthropic than building websites like a lots of CS grads. I’m wondering if a bioinformatics masters is a good idea, the other option I can think of; large pharmaceutical companies, don’t particularly appeal. If anybody has any advice for me on this, it’d be amazing!
Consider moving into data science, machine learning, and “big data” analytics, etc. The way biotech is moving, there will soon (within 5 years) be a ton of genomic data to be stored, parsed, and analyzed. Medical companies will have to accept this, and will be in dire need very soon.
Bioinformatics is good, but the concept of “bioinformatics” often refers to an outdated practice of parsing FASTA files with Perl. There seems to be more cutting-edge stuff under the umbrella terms I mentioned above and “computational biology”. You might like my bio list on twitter.
As for open source and philanthropic stuff, here are a few projects you might like to check out:
Good luck!
I was looking at doing a masters in Computational Biology, it sounds really good. Nearly all of those opportunities are in CA though, and I’d much rather be based in the UK.
Tidepool looks really cool, as does HLI. I will consider those, though I wish they had offices closer to home. Thanks!
Half Term for the kids here, so a nice little holiday for me as well. Lots of outdoor things, planning on going for at least one last lake swim (as the nearest swimming lake to me shuts this weekend till the Spring) which should be … invigorating!
Also got a few bits of hardware to upgrade, GF’s laptop to an SSD, 500GB ZFS mirror to 3TB drives (finally!), changing from an iPhone 6+ to an iPhone 6 (no cost upgrade, finally accepted the 6+ is the wrong compromise for me these days. I pick up the laptop instead of using the phone as an iPad nano now, which means hefting a large device round is silly.)
Had my curiosity piqued by HomeKit & HomeBridge coupled with an RPi and some Arduinos, am intending on sitting down & playing with that a bit too.
Also off to Leeds for Leeds Ruby Thing this Thursday, to catch up with folks I’ve not seen for a couple of years in some cases. Should be fun!
For work: I’m gonna diggin deep in legacy code and hoping the new thing I’m implementing in it will be working the exact same way the old thing is supposed to be working. Basically, I’m replacing old calls to an ftp service to move incredible amounts of assets to an http cache service instead.
For not-work, I figured out what I think is a clever nickname for myself. Yup. That is all I think I’m gonna be able to do this week, as we have a had a crazy mid-term week because wife’s university, and we’re hosting a halloween party next weekend and pretty much all my free cycles will be spent lending a hand.
ix, my dopewars clone, compiles and does stuff. Mostly eat up memory. I think I know why and will be looking into it this week.
Research
Classes
I’m going to try and make Emacs be my replacement for dmenu in dwm. I’m not sure if the insanity of my commute is getting to me or not…
Speaking of insanity, I’m also mapping out how one would use RTC overlayed with git, only because I have to use RTC at work.
Learning Haskell for fun.
As for the work, our small team have recently implemented the official CKAN (OpenData hub) for Prague, capital of Czech Republic.
We are currently looking for someone to employ for further full-time maintenance and development of the said code base.
At Pycon Ireland sprints, going to finally finish off https://github.com/prometheus/client_python/issues/30
After that I’ve a big backlog of other stuff, and looking at the alpha of the new Prometheus alertmanager is top of that list.
$work: Further to my understanding of angular, I’ll be implementing some REST consumers and making some google charts out of the resulting data. So basic stuff, really, just a lot of it.
!$work: I’m hoping to convert an Apache server I’ve been running for a decade over to nginx, and I’ll be doing a couple production runs on new versions of two sites with pydozer. Then we’ll write a couple posts to their blogs and see how deployment works in those environments.
I also have to do more on getting up to speed in how web marketing works these days.
Work: Porting my old team’s existing code base to coexist with the code base of the project we got merged with last week, C++ and Boost fun times!
Not work: Spinning up the job search for Chicago area in preparation for a coming move and doing general interview prep!
Continuing the class I am teaching on HTML + CSS basics at the local public library. Pretty basic stuff, but it is my first teaching experience. Enjoying it so far, and excited that the county may be acquiring a community license for Team Treehouse for the next group so the students can work at their own pace after I do a short lecture, then I can go around and answer questions and troubleshoot with them.
Any pointers from people who have taught this in the past or things other front-end devs think are essentials that are easy to miss? Keep in mind these students have no coding experience, age group is above 30 except for my 18 year old brother.
At work, I’m currently working on an internal-use command line tool that uses Docker images to isolate and standardize a set of build and deploy tools (mostly Ruby and JavaScript) for a custom Craft CMS-based website. It sounds a little out there, and it’s been a fair amount of work, but it’s actually helping with some “works on my machine” issues we had been having, and I get to improve the interface quite a bit, too. I’ll probably blog about it at some point, so if you’re interested at all let me know what you’d like to hear about.
Separately, in fleeting moments of “free time,” I’ve started playing around with some of the Ruby exercises on exercism.io. I’ve known about the project for a while, but this is the first I’ve tried it. I really like the idea of getting feedback on some of these more subjective aspects of code like how to make it more readable, more succinct, or more idiomatic. I’ve also found it’s quite satisfying to write small bits of working code and be able to focus on the aesthetic pleasure of it. I hope to try out some OCaml exercises soon, too, to see how it works for a language I’m less familiar with.
Update: I blogged about it (lobste.rs thread).
Oh man… so much stuff. Still lots of stuff carried over the previous weeks, but specifically right now, I have:
Move a couple of Grails apps from Grails 2.2.3 to 2.4.5. Need to do this so we can use the newer (better documented, less buggy) version of a plugin we want to introduce for doing OAuth.
Finish implementing SSO using CAS for those same couple of Grails apps.
Finish implementing OAuth for the REST APIs on those same couple of Grails apps.
Finish reading Superforecasting: The Art and Science of Prediction1
Think I might re-read The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. 2 I just finished this, but I think it is worthy of a second read, as there’s a lot of good stuff there to absorb.
Read more of Artificial Intelligence: A Modern Approach3
More work on some research I’m doing on using the old “Blackboard architecture”4 idea in combination with some newer ideas in AI/ML.
Personal projects: Working on some major new functionality for theft, my library for property-based testing in C. Mainly, I’m switching it to a multi-process architecture, so I can detect crashes, stop infinite loops with timeouts, and use multiple cores to search for bugs / shrink. I’ve made some API changes based on experience with it so far. After these features are complete, I want to give the docs a lot more attention, and generally make it easier to get started with the library.
This is a tangent from my actual main project now, a sort of generalized parsing library for C, based on Earley parsing and the Bar-Hillel’s grammar intersection technique. (I’m using theft and greatest for testing it.)
Work: An iOS app, a companion to a medical device.
Finished building my upstanding desk at the local maker space. Picture
Embercamp on Thursday in London.
$work - This week I plan to work on wrapping up some AWS automation tooling that’s been on my plate for far too long.
!$work - finish shaking out my local indexing tool in Rust and get back to my Big Home Project, a multi-database query system.
$work: a11y all the things - making sure that the Exchange is chock-full of a11y goodness.
!$work: Continue looking at Android head units for my Subaru… maybe I’ll pull the trigger one day.
I released my tarsnap notification utility called argosnap, last week so I’m back working on my part-time rails project, but mainly I will - hopefully - study pharmacology, pharmacognosy and medicinal chemistry more than anything else.
Rails generator for the U.S Web Design Standards based roughly off of the Refills package from Thoughtbot, along with helping out organize a TEDx talk in my city. Both are going alright.
I was working on an OpenCL/CUDA caffe comparison, but got sidetracked. I am trying now to learn enough about NEON to be able to speak intelligently about approaches to accelerate deep learning systems on power-constrained devices. This is …. outside my comfort zone. Ah well, nothing ventured, nothing gained.
Outside of work, I have grand designs on actually living on NixOS for a while, but this is simply a flirtation. I can’t do it. Linux is simply too primitive a user experience for my tastes.
can you point out what you miss in the user experience? I contribute to a linux distribution that focuses on user experience all the feedback i get is useful :)
X11 is terrible. Cut and paste is fundamentally broken. Font rendering is a crapshoot. You end up reaching for xev much sooner than you think you’d ever have to. Everything is ugly. I can’t simply print anything to PDF. Then there’s all the Unix you have to cope with, lurking immediately below you, like a shallow reef infested with zombie sharks.
What work that has gone into making X seem modern has largely gone into aping Windows XP, which is a poor target to shoot for; and worse still, using something like Ubuntu still means dropping down into the nasty X11 jungle, because nobody is in there throwing stuff away.
Just out of curiosity, what OS do you use, to get a better context of where you are coming from?
OS X is my daily driver.
Same here. Same feelings about Linux and BSD. would love to run either as my main OS tho.