Work: Climate Corp has been fun and educational and I'm really happy there. It's paced well, with reliable leadership and support, and I'm learning a lot of new things. I've been picking up ops skills, or at least polishing the ones I had quite a bit. It's been nice to get with the leading technologies again; aws, stash, jenkins, python, clojure, and a variety of others. I'm thrilled to be getting exposure to scientific computing, and although that's not core to what I do, it is core to what my users do, and it's helping me figure out what I need to learn and how to educate myself on it.
Professional Development: I went to the StrangeLoop conference in St. Louis for the first time this year, and it was awesome. It's a tech conference focused on practical core-tech skills (and not on entrepreneurship like so many are). So, it was pretty hardcore, with a focus on functional computing and distributed systems, which is exactly what I needed. I learned a lot and discovered a bunch more things I want to experiment with in my free time.
Mentoring: I'm still mentoring for CoderGirls every Wednesday (though we're taking a break over the holidays). I've seen some of my earlier learners get placed into jobs and come back just long enough to say thank you. Now I'm working on my second batch of intermediate folks. Holidays have made it tough to meet enough; I'm hoping to solve that after the first of the year. Meanwhile, LaunchCode has its own building location now, so we can stop getting displaced by other organizations. I continue being a leader on the CoderGirl mentor team, helping to plan and structure programs and figure out what will help the learners be more job-ready. I'm also finding that I'm sufficiently secure in my role there that, while I appreciate the thank-yous, mostly they roll off of me and I keep on going steadily along. That's actually a good thing, I think, because I'm not getting distracted from my focus on the work.
The Java class I'm authoring recently had its outline split out for a second class, so I can try to finish the material for the first class and get it published on Udemy. I've got more material to write and a ton of audio recording to do yet, plus general course polish. But with the adjusted outline, it's at least looking fairly feasible. This project has somewhat reduced my time for other projects, although not completely; I do need a brain-break once in a while.
Other stuff: I have the Oculus Rift and the Leap Motion. Either works alone, to some degree. Unfortunately, a 2015 Macbook Pro is insufficient GPU power to run the Oculus for anything other than Minecraft. (It's rather nice in Minecraft though.) I've done a trivial amount of coding for the Leap using Unity 3D, but I haven't coded for the Rift at all... although with the release of Unity 5, it should now be possible to do in the free edition. But see above, poor GPU performance. Still, it's fun to be able to show friends and other developers what the future of virtual reality might be like.
And, it has been fun getting my hands into a variety of other languages, sdks, and apis. Unity in C# was a stretch for me, particularly as Unity's own APIs are enormous. Then I messed with the leap. Then I switched jobs and had Java drop away and clojure, R, and python come up, along with a heavy dose of bash, plus the Amazon Web Services api and a bunch of virtual machine and docker stuff. It got me out of being pigeonholed into Java, and more comfortable exploring other things. It helps that there was no need to write perfect code, only decent code, and so there was room for learning. More recently (after an Internet of Things hackathon at work made me curious about devices), I picked up the Philips Hue lights and started messing around with their sdk, which is Java and thus easy and fast to get into. The variety and exploration has made coding fun again, and far less stressful.
Which leads me to my code analyzer project. I've gotten more serious about planning and building it, especially as my job has exposed me to functional programming, parallel programming, distributed systems, big data, and new ways to think about compute power. I've started a google doc for myself with the beginning of scope and plans for it. The experiences I had at StrangeLoop contributed several potential solutions for big data gotchas that I was wrestling with, including giving me a better idea for the application architecture. I now see where I need to use functional programming techniques to make it easier to scale up the analysis via parallel processing, and that dramatically impacts how I architect the software. I'm also spending more time exploring related theoretical concepts to the modeling and visualization I want to do; being a bit more academic about it, and taking inspiration from pre-existing work where it's helpful. This also makes it far more valuable that I'm building a design doc along the way, to explain my thinking and let me come back to it over a period of time.
I'm seeing this more as a 5-10 year project, where I first build the groundwork tools I need to ingest the data, and then I start doing experimental visualizations and statistics to tag it with metadata. That will let me figure out if my long-term visualization strategy is viable, and adjust as needed. During that time, I'll also be using variants on the tools to explore other related code visualization questions, like how it's different in a different programming language or different coding paradigm, and what I can learn from the shapes. And finally in the last stage, I'll work on pulling it together into a project that's distributable and production-ready in a meaningful way. (I do expect it to be shared and deployed earlier than that, but that step is about the difference between an experimental exploration with base raw data, versus a "boxed software" feel.)
The wild-success criteria for the project would be 1) if I was able to gain real insights into large code bases as a result of this tool (at-a-glance knowledge; spotting needed refactoring; educating others on reading the structures; appying statistics to the data to learn from it); 2) if the results made a real contribution, however small, to the field of computer science and software engineering.
I am pretty sure I can hit #1. I'm not sure about #2, but that's the nature of real discoveries; you don't know what's behind a rock until you turn it over. But every bit of my experience and my knowledge of software and structure - as well as encouraging results from simpler proof-of-concept work I've done before - tells me there is value there just waiting to be properly mapped.
Others seem puzzled on how to do it, but to me it's really clear - but also a lot of work to get there, because no one else has laid the path for the 3-5 steps ahead of that one. So, I've got a lot of path-cutting to do, before I can even get close to the real work. Imagine if you were trying to make a wall mural glass-chunk mosaic, but first you had to forge your own glass and glass cutter... and the people around you had never seen a mosaic before so they had no idea how to help you build one. That's a bit of what this feels like. I've been living with and refining this idea for years, although it wasn't until this year that I gained the coding skill to tackle certain critical parts of the process. I still have a ton to learn but now I know which fields to study.
There's one fellow I've met through professional networking who is working in this same area, and we have great conversations about it when we get the chance to talk. That happens entirely too rarely. And his explorations have served as a gut check on how difficult the task is that I'm proposing to take on. But, I'm also aware of some simplifications that he had never thought of and thought were greatly useful when I ran them past him. So, difficult does not mean impossible.
Getting my Udemy Java course finished is pressing against the time I might be spending on this code analyzer. I wish they weren't in competition for my time. But I want the Udemy course to become a second income, so, I need to get that finished and published.
Interpersonal relationships are being intentionally left out as this is a public post. Suffice it to say I'm pretty happy there.
I've also recently discovered f.lux software for red-shiting and dimming my laptop monitor at night, and combining that with the philips hue led lights set to dim red just before bed has helped a lot with reducing insomnia. The 45 minute drive to work each morning is forcing me to get enough sunlight to partially hold the seasonal depression at bay. So, I'm feeling it a little, but getting by decently most of the time.