This is the weekly thread to discuss what you’ve done recently and are working on this week.
Please be descriptive and don’t hesitate to ask for help, advice or other guidance.
1339. This is the number they’ll write on my tombstone.
Our deployment has somewhere in the vicinity of 100 systems, some hardware, some virtual. Spread across a few clusters (some at customer demand, some due to undirected organic expansion). 100 is not the number on my tombstone.
Our systems are accessed via RDP and SSH (for Windows machines and Linux, resp.) We run various versions of Windows, as well as Ubuntu 12.04 and RHEL6. None of these numbers will be on my tombstone.
There are something like 300 different accounts with varying levels and areas of access in our system.
300 will not be on my tombstone.
No, my tombstone will have, emblazoned like a watchword to Devops-nerds-cum-Sysadmins-by-accident, the numerals:
1 3 3 9
The number of passwords we have. The number of passwords we manage. 1339 passwords, of which only, perhaps 20% are understood to do anything. 1339 is the number that will be on my tombstone.
Thirteen Hundred, and Thirty, and Nine.
 That is, by intentional accident.
Missus is back from QuiltCon with a Con Pox. She’s in the next room hacking her lungs like a Gibson. I didn’t get anything meaningful done last weekend like I’d hoped, I just crashed and listened as this annoying little bird outside my window mumbled, “1339.”
Birds are dicks.
I spent much of the last week traveling which was a nice break. A few days in Jakarta and a day in Bangkok.
For my client, I’m working (among other things) on issues with the size of generated code from emscripten.
I also did a lot more (re-)reading about object capability systems and related topics.
In Dylan land, I spent some time rewriting the LLDB integration scripts that handle pretty-printing Dylan objects. They no longer rely upon C debug data, so I’m hopeful that they’ll be close to working with our LLVM back-end. We’ll see soon as the LLVM back-end is finally getting much closer to being fully landed on the master branch.
I also dug out a copy of the old SK8 sources from Apple, converted line endings from Mac OS \r to Unix \n and posted them on GitHub: https://github.com/waywardmonkeys/apple_sk8
My talk on using types to resist timing attacks got accepted to THOTCON, which I’m really happy and excited about, but it turns out it’s rather tricky to explain the Curry-Howard isomorphism, timing attacks, and how that all fits together inside of 25 minutes and still have time for questions, so I’m working ways to do that well and with as few “magical” steps as possible.
I’ve also gone back to Write Yourself a Scheme in 48 Hours, which is proving very fun to work through and also has some quite interesting implementation details. I worked through it once a while back, but got extraordinarily bogged down with making the whole tower of numbers work properly and ended up with an un-salvagable mess of GHC extensions and GADTs, but a bit of experience is making things fit together much clearer.
Still looking at internships, I have come to the conclusion that people generally prefer one goes to college first. Nonetheless, I am hopeful, and still talking to a couple places. If anyone happens to have general pointers in this area, I would appreciate it greatly.
Also re: college, I’m still waiting on most decisions, but I got into U of I, which is nice.
I looked at the parsing exercises to WYAS and decided to skip some of them so I don’t get hung up. I do plan on going back to finish them later, though.
I recently read “An indexed model of recursive types for foundational proof-carrying code” by Appel and McAllester. I think it has some interesting ideas that may apply to tarts - for instance that functions have certain rules around their evaluation, the number of “steps” they take, and thus what values they can be applied to. It seemed to have parallels (in my mind at least).
In Hython last week, I implemented for statements, along with the iterator protocol.
The process of doing so was slightly revelatory. Supporting for statements requires exception handling, and objects. Essentially, the compiler uses a user-provided iterator object and provides it to a block of statements until the iterator raises StopIteration. I got stuck trying to implement it because it’s not easy to register ad-hoc exception handlers outside of a try statement.
The trick is to realize that a for statement is just sugar for a try, a while statement, and object instantiation/method calling. That is:
l = [1,2,3]
for i in l:
Can be expressed as:
l = [1,2,3]
__l_iterator = iter(l)
i = __l_iterator.next()
(The interpreter creates __l_iterator itself.)
I changed the handler for the for statement in the interpreter to desugar it to those forms, and it worked great. In doing so, I fully grasped the appeal of choosing an abstract machine that has a small set of known operations that you can desugar to.
This week, I’ve been trying to rewrite the lexer to use Parsec, but it’s pretty intimidating so far. I’m trying to handle the indentation, along with line joining rules while doing so, and I keep getting stuck. I think I’m close to breaking through, but so far it’s been frustrating.
Also, I’m trying to come up with a name for a private technologist-centric Google Group. I’d like to create a forum-like setting for people to deeply discuss technology without it being confined to aggregators, or tainted by startups/external trappings of success.
Still learning Dylan.
In order to work on some ideas I have, I started trying to write an ext2
driver in C. Pretty interesting, but so far all I have is reading the
superblock and gdt, and incrementing mount count.
Also working through Write Yourself a Scheme and CIS-194. WYAS is more
fun, but CIS194 is more informative. This is try #4 for Haskell, last
time I made it about halfway through LYAH.
Finally, I picked up some books on mathematics because my maths
background is pitifully weak. Starting with Kleene’s “Mathematical
Logic” and Pinter’s “A Book of Abstract Algebra.”
I’m trying to resist the temptation to write PCI and then virtio & virtio-net code…
I think ext2 will be a good first step. The end goal is to implement W7 in Haskell ;)
At work, continued testing and development on the Ubuntu Openstack Installer. I think this is what they call “systems integration”.
Outside of work, moving back to San Diego (again), and trying to figure out exactly how to sign up for the minimum number of ACM and/or IEEE memberships to get the journal access I want.
Just finishing up a prototype POC for my next feature. I’m using Drools which is RETE rules engine. There is an experimental branch on 5.6 that implements a Fuzzy Logic belief system that matches how I conceptualize the way to do what I want to do. Next I’ll be considering ways to integrate the POC into the service I run and how to deploy it.
Semantically what I am trying to achieve is ways of expressing sentiment about things in code and distancing myself from meaningless numbers. For example, I am “suspicious” of this spam rather than scoring it as .30
The PureScript library documentation is in need of attention, and since we recently added Markdown support to the generated docs, I plan to spend a good chunk of this week documenting the existing code. I also hope to find some time to work on integrating Pursuit with my new HTML documentation generator to create something a bit closer to the Haskell community’s Hackage/Haddocks.
For work, I hope to get my shiny new Haskell service deployed into our testing environment, and to do some performance and load testing. I’d also like to spend some time assessing React as a possible replacement for some client-side code.
React with PureScript or … ?
Probably TypeScript, but maybe both if I can get purescript-thermite up to an acceptable level of quality.
Thinking about ways to visualize generative spaces, esp. for stuff like generative music. Wrote a blog post about an experiment I (w/ collaborators) just finished, which tags a generator’s control space with crowdsourced subjective word clouds, which is one angle. Might try to integrate something based on objective musical features also, like what the CataRT tool does for concatenative corpus-based synthesis.
That looks so interesting! I’ve always had an idea in the back of my mind to create a generative ambient music engine for myself to just have on at work that I could tweak using various high-level parameters and have uninterrupted audio all day.
Oh man, reading that blog post gave me some warm fuzzies about my days in my Computer music class back in College. Makes me want to start wiring things up and making god-awful sounds in Pd again.
Did a bunch of experimenting with GraphicsMagick to extract handwriting from a page, ended up about halfway there, with some interesting results in between ( https://twitter.com/rkoutnik/status/569903293075496961 ). Short of a wizard granting me all the knowledge of images and manipulating them, I think I’ll have to put that one aside for now. Anyone know of any libraries/APIs that pull handwriting from a photo?
Bugfixes aplenty as well this week - finally killed the off-by-one datetimezone error with some creative SQL. Also reduced the number of steps in the onboarding flow, so we’ll see if that impacts any metrics.
Project 1: After over a year of work I’ve released a new, almost complete rewrite of my x86 emulator, JPC. The new version is 10X faster, despite being a pure interpreter, more accurate (win95 + win98 in safe mode).
The new version has an automatically generated, disassembler, which is used to automatically generate a decode table, and the instruction implementations are automatically generated as well from an xml description.
Project 2: Going to try and use the JS library from Google end-to-end to implement our user side crypto in Peergos
In the office people have been learning Haskell. I/O and Data.Aeson.Lenses come up a lot in our scripts, so I decided to write a little about both for people who are coming in wide-eyed:
I decided I hate all the weather websites I’ve found. (Well, not hate exactly, but certainly don’t love.) So I of course then decided to write my own in Rust. As a starting point, I’m writing a library to decode current condition observations, which are in an annoyingly obtuse and ill-specified format called METAR.
Is your METAR library up on GitHub? I’ve been looking for an application of Rust to help me get past learning the basic syntax and grammar. With a background in aviation and meteorology this would be a great place for me to jump in.
We’re working on releasing DNSChain 0.5.0. Hopefully this week!
In the past couple of weeks, I’ve:
This week I plan to:
Last week I release Fire★ version 0.6 which has, what I think, a much friendlier way of connecting with others. Instead of passing files around to add contacts, you simply copy and paste an identity string. I even added a menu item which will generate a ready to send email with your identity string.
I would love for people to test this out and report any issues.
This week I am working on my todo list app called “muda”. I am working on the settings page. You can change passwords. I need to add support for changing other settings. Also adding a help button would be useful too.
Busy busy bee.
The news-analysis tool I’m working on (Steno) has yielded its first public results - an analysis of the coverage of HSBC coverage in The Telegraph, in the wake of their chief political commentator resigning. We got mentions on the BBC and in the FT, which was nice.
Currently working on tools to analyse twitter traffic for the upcoming UK election. Currently hating how twitter auth is so hostile to server-based apps :-( PIN numbers? really?
Worked through the intricacies of OSX package bundling to get a Mac build of my retro-arcade-shooter game available for people to try out. Download links for mac and windows over on the TIGSource forums. I’d love some feedback btw (like, does it even run? ;-)
I plan is to dig into (again) the C Socket API. I’m not sure what I will build yet, maybe something for IRC.
Last week I read “Ethernet: Distributed Packet Switching for Local Computer Networks”. It was interesting to get a historical perspective on what went into deciding the feature set for Ethernet.
This is actually pretty decent / useful: http://beej.us/guide/bgnet/ … I’d learned sockets before this was written, but I find it useful still when I have questions or want to see some of the newer APIs.
Work: Payments processing bugfixes / feature adds continue. Also updating dependency versions and readmes in various internal gems to fill the ‘waiting for’ gaps.
Fun: started making a list of things to do during ‘cafe week’ in late march. Prolog koans are on there, as is implementing Reversi as a rubygem.
Attended (briefly) the treehacks hackathon at Stanford, which looked well-run and had a cool mentor html+sms app (previously at http://mentor.treehacks.com/ but it looks to be down now) which I hope to use someday and/or see a writeup of.
Attended a two-speaker event on recycling (apps, theory, hierarchy) at Rainbow Mansion. Beta at: http://www.detrashed.com/
Attended GopherCon India which was very fun.
Fixed a few bugs in MarkMyWords
Internal hackdays! Not entirely sure what I’m going to build yet, but it’s either going to involve code analysis or emoji. (Probably the latter ?!)
Resurrecting a couple of OS 9-capable powerbooks (late 12" & 15" Ti) so my mate and I can play some old school games at the weekend. (Age of Empires II & Battlefield 1942 for starters.)
Also tempted to resurrect the 15" lamp iMac (G4 with screen “floating” on arm) I got given it with a broken linux install on. Mostly because I’ve never owned a working one before (although used them when they were new - benefits of visiting parent’s work office at weekends.)
I posted this on Show HN a while back and got a lot of good feedback. I’ve now added HTTPS and made it better suited against flooding attacks. I also had to limit the file size of uploaded files unfortunately. Any feedback or feature requests would be greatly appreciated.
At work I’m building lots of ui interfaces to replace sql scripts that we’re running, very useful but not the most fun :) I’m also trying to get rid of duplicate code and just replace it with references - again fairly simple but time consuming!
When at home and have free time I’m building a smallish django site for a customer, its pretty interesting tbh, at my workplace we don’t use an ORM - it’s all recordsets & raw sql, then for our newer stuff we build up proper models and do some mapping from the recordsets! So using an ORM and seeing just how quick you can get something running is pretty impressive, probably a little behind the times here though!
Some friends are starting a gaming podcast, so I’ve chucked up a (really) basic holding page for them at the moment, soon I’m going to build it out a little more for them. Incase anyone is interested - http://thenearlymen.com
For more personal stuff I’m off to visit NY with my brother, excited to see the natural history museum and the USS intrepid with the space shuttle prototype on it!