Busy Little Bee

Oh wow, my last post was about a year ago, Feburary of 2013. Sorry ’bout that.

As it turns out, I’ve been a little busy; University tends to do that to you. The little teenage hacker that use to update this blog has long since (partially) grown up, and I’m now working my way towards a degree in Computer Engineering while still pursuing my personal software related projects. Since I’ve got a year or so to catch up on, I’ll start with those (warning, this post is long and jumps around a bit; don’t be surprised if parts of it seem random or out of place).

Projects!

Well, for starters I wrote a web framework in Python, which seems to be a little bit of an initiation right for the language, but that’s okay with me. I may have posted about it before but it’s called Seshat (named after the Egyptian goddess of writing and knowledge/learning if I recall correctly. Seshat was born out of frustration with web.py; Part of this came from the fact that I didn’t know what I was doing and part of it came from the fact that I do things my own way a lot of the time. That was about 3 years ago. The first project I built on top of Seshat was called flagr. It was my attempt at making a bookmarking service since, again, I wasn’t happy with what was out there. This was a very early and rough version of Seshat, and a lot of things were broken. I went through so many iterations of how to handle session data that I ended up rewriting the whole of flagr several times over. Not to mention I choose to back it with at first only CouchDB and later I added Redis for the session store. Personally, I use to like Couch but now days I actually like have a query language available to me. To me that was the breaking point, constantly changing my data so I’d have to write new views and maps/reduces in Couch. Don’t get me wrong, Couch is neat, but I wouldn’t use it for my main store today.

I started writing flagr the beginning of last school year to help relieve some stress from my first year at uni and had a pretty feature complete site by Christmas break but it still felt wrong. Shortly after that I stopped dev on flagr and I haven’t touched it since. I kept Seshat in mind for the next couple of months but I wasn’t doing any active work on it, instead I was writing a half-assed attempt at making an analysis GUI in Clojure for my unis FSAE team (Sorry Mike). I also wrote some small shell utilities and scripts but my second semester at uni was spent, surprisingly enough, without writing much code.

Fast forward to the middle of the summer (2013 for those of you actually taking the time to read and keep track of this)l I’m working my way through a second round at my internship and I come across a neat little project. RethinkDB wasn’t new, but it wasn’t old by any means and was still visibly maturing in some parts. Well, RethinkDB has  a great Python driver but it was missing an object mapper which slightly annoyed me as I have gotten use to working with ORMs and the sort. Wanting to make a project with RethinkDB but not having an ORM was a pretty big problem for me, so it was only natural that I fixed that.

As it turns out there was one Python ORM for Rethink out there already, but it was designed after the Django ORM system which like everything else didn’t suit me, so I wrote my own. As it turned out, in the twitter verse that got a few people excited and before long and with the encouragement of ROB and others, I decided I should look into how to package a Python package and distribute it on PyPi.

And so I got mildly famous for a few hours with the release of RethinkORM. Packaging this was a lot of fun and taught me a massive amount of things about getting things ready for others to use. It was also neat when I got a pull request from some stranger on Github with a fix for a bug that I had introduced.

By neat I mean I jumped up and down in my room trying not to scream like a fan girl for about five minutes. I was ecstatic that I had not only gotten a package out the door, but that *other people* wanted to use that package and wanted to ensure it worked even when I broke it. THAT’S SO COOL. It still brings shivers down my back thinking other people are actually (well, hopefully) using my code to do other neat things and make more neat amazing projects.

So, that was fun. Now that I had that problem of not having a good ORM for RethinkDB out of the way it was time to start on a serious project. This time? Quite serious because I invested lots of money into it before I even started it by buying two domain names and another VPS (Well, okay, lots of money for a college student). The idea came from one of the guys at work who has a small PHP script to manage his GIF collection. “Neat, ” I thought, “I should do something like that and add searching since I have horrible memory…” And thus transientBug was born. It used a new and updated version of Seshat that I had worked on while writing my RethinkORM wrapper, and had a lot of improvements and shiny new features, including but not limited to: Better session stores in Redis, a custom Redis ORM to go with my RethinkORM (I haven’t published this one yet since its a mess and only supports basic objects and lists so far), better handling of routes and passing request data around, and permissions based on groups which users could be assigned to. While most of these features and the several other improvements I added have since been rewritten more times that I can count they have proven to be a fairly good feature set; Although they did have the downside of making Seshat even more opinionated that it already was.

I worked away during this last semester to get transientBug established, filling out the GIF collection and hand tagging every GIF, along with adding a personal screenshot upload controller and a notes controller, of which I’m currently once again rewriting. I’ve got nice little time based site announcements and configurable feature sets that I can turn on and off at a moments notice and its all backed by the great RethinkDB and Redis (I’m in love with both, by the way).

Well, around the same time I found RethinkDB, another neat project started its roots, this time it wasn’t a database but a container managing API called Docker from DotCloud. At the time I didn’t see a need for it, and figured it was something that I would deal with years to come but towards the middle of the semester I began to see the power of Docker and wanted to both write a project that used its remote API and did something useful for me. So I started internal thoughts for a PaaS.

So starts my next project and nearly my most recent one: Psh PaaS. It runs on top of Seshat and all the improvements made during the transientBug dev time, and adds some of its own that I’ve since merged backwards into transientBug. On top of this, it was the first project that I seriously started working with additional services outside of the main server code. I had to have a way to create an image in Docker without stopping everything, and since Seshat isn’t thread based, that wasn’t going to happen in the main code, so I had to deal with programming a daemon and then making the server code and the daemon code talk to each other. This was rather new territory for me but it taught me a fair deal of things about working with daemons and even got me to rewrite my daemon launch code several times. At this point I should say that this communication channel, I choose to implement in Redis with a list and using Push and Block Pull commands and this is where I really started to love Redis. Its just so great and easy to use and get a work queue like that up and running with very little effort.

Along with using Docker, I found DotClouds Hipache router which is also awesome. Its also great that Hipache is backed by Redis, making the interface to it a breeze to use, and making my life easy when making a controller to add and remove and edit routes!

Well, Psh is great and I managed to make a pretty neat interface for it all I think but there is one problem and that is that my current two VPS’s don’t support upgrading the kernel since they are OpenVZ based and use the hosts kernel. Well, that host is a 2.6 stable long term release kernel, so I can’t actually use Docker with relies on the 3+ Kernel. So that sucks, but I am currently working towards getting yet another server to launch Psh on.

So now that catches me up to my current project, which goes back to transientBug. This time it’s an Android App to compliment the main site, and add a few features. This is mostly for me and I highly doubt I’ll release it on the market but who knows. The Android dev process, and my hates are probably too long for this already long post, so I’ll leave that for another day and hope that I actually write that post…

So whats next, now that I’ve ran out of projects?

Life!

Well, as it turns out, I like to start sentences with “Well, …” but that’s another matter for me to work out.

Actually, I lied, next up:

Books!

I’ve been reading Isaac Asimov’s Foundation trilogy recently. Man, those are good books. The second one is drawn out and less episodic than the first but its still a great story and continuation of the fall of the galactic empire and the struggles of the foundations to help lessen the time needed to return the galaxy to order.

Another book I recently read was For us, the Living By Robert Heinlein. Heinlein is interesting, but his writing style is a lot like my thought process so I guess thats why I like his books. Plus they’re all neat, have fairly good stories and tend to have a good theme to them. For us, the Living is one of those books that on the surface, its just boring and drawn out (like this blog post?) but it’s really quite interesting.

It starts off with a young (I think navy, if I remember correctly) officer named Perry who ends up crashing his car off the side of a cliff next to a beach in the 1940’s (I think). He awakens to find himself in the distant future where the government works completely differently, the economy is practically gone and everyone seems to just do what they want. This is all great, but I found the interpersonal interactions in the book rather interesting. Perry is found by a young, 20 or so something girl who takes him in and cares for him as he recovers. Well, before long he falls in love with her. Then he goes through a phase of jealousy and punches a former lover of hers in the face, ends up going to a mental health institute, apparently learns to love in a different way, and eventually ends up back under the care of the girl again. I don’t know why, but I think that deep inside of him, Perry doesn’t stop loving this girl even though in the end hes suppose to see love as something that isn’t specific to a single person (such as much of todays society sees it, if this all makes sense). Anyways, some part of this book clicked with me and I like it. Moving on.

I find it interesting that many of the books that I end up liking have a large interpersonal story or connections made. Maybe its because I suck at interpersonal skills. I mean, I do find it quite difficult to connect with people and find a common point of interest between us, and I am really bad about making new friends. Since getting to uni, I’ve lost more friends than I’ve made, and I’ve only made a very small handful of them.

A lot of these books are also sci-fi or historical fiction books that have a large degree of interesting technologies and food for thought. Maybe this is why I enjoy them, since I enjoy figuring out how things work, especially futuristic technology.

Enough books, if you want to see what all I’ve read, go find my GoodReads profile or look at my bookshelves.

Life!

I don’t know if you are still reading but if you are, congrats, you’ve now read over 2200, mostly useless, words by me.

Those of you who are reading this and have followed my twitter for sometime have probably seen me go through a few rough patches here and there, most notably during last year. This is probably all the wrong place to talk about a large amount of it, but meh, who’s going to read this far anyways?

I don’t deal with lots of things very well. That’s that very condensed TL;DR of this basically.

College, as it turns out, is quite different from high school. In high school I was always the blow it off and still manage an A or high B sort of person. I often times did reports in the wee hours of the night before it was due and homework was another story. Honestly, I’m lucky I managed to get away with a half descent GPA, AP and ACT scores. People for some reason always like to label me as smart, sometimes I’ve even been called genius. Don’t know why, I mean, would a genius half ass school just because he finds stuff like programming and electronics more interesting and prefers to self learn? Who knows, certainly not me though.

Truth is, I have a hard time accepting those labels. I don’t see myself as smart, or genius. In a lot of ways, I often see myself as a failure. Everyone told me that I’d go off to be a great engineering working at NASA and going to school at MIT or somewhere. Instead, I’m an hour from home, working my way towards an ECE degree at a school known for being the best vet and agricultural school around, not for its engineering college.

That doesn’t seem like the bright, awesome future everyone had planned for me, and as a result, I feel responsible, since it’s my life, and I feel like I’ve failed all those people. My peers, my teachers, my parents.

But, at the same time, that’s okay. I mean, it’s okay to fail, right? That’s how we all learn, I’ve been told.

Welcome to my inner world for the last year. A constant battle with myself, telling myself that I haven’t failed, I’ve just taken my own route in life, while still feeling deep down that I’ve failed. It was pretty non stop for most of last year. Some days it got so bad that I just had to curl up in a ball and cry my guts out because it was the only thing I could process doing besides keeping up the fight with myself. Other days I just wanted to punch an absurdly large hole in something because I needed to relieve internal anger at myself.

Well, combine this with the fact that I still on occasion have a rough time dealing with having divorced parents and apparently get stressed out by school and you get a nice little volatile package of Josh.

Turns out, if you ask me, school isn’t stressful at all. I’ll blow the question off like its just another day in the park, but deep down it actually is a bit stressful. Okay, not a bit, it *is* stressful. Everyone in your major is in a friendly competition against you. Beginning of the year it starts off all smiles and hugs but by the end of it, when your grade is on the line, you’d sometimes stab another student in the back to get ahead and pass because at the end of the day, who gets the job? Well, okay, college isn’t quite like this, but some days it feels like it.

Another part of this whole debacle is that I don’t deal with being super lonely very well. Yes, I’m an introvert, I gain energy from being alone and living in my own little world inside my head, but at the same time there is deep need to feel connected with someone. The very task that I struggle at the most is the one of the very things that pulls me down.

Since I’ve gotten to uni, my circle of friends has gotten progressively smaller and smaller. The people that I use to be quite close with, the two or some people that might even have competed for best friend status are gone. I just don’t talk to them any more. We’ve all gone our separate ways, and apparently that means not talking to each other. Losing all those friends and people who I worked so hard for (for many, well past the 4 years of high school) to find a common  bond, to form that connection with is emotionally taxing to say the least. It’s probably the part of college that I’ve struggled with the most.

But then, to be left alone in your world with no one around after having spent your life having someone that could relate to those deepest problems? That’s even more  emotionally taxing. Not being able to find anyone to share that world with is hard. It’s been hard, the last year can stand as a nice little testament towards that. There isn’t really a word to describe the emotions I feel when there’s something inside, in my world that I’d love to share, but there is only darkness.

So, to sum that all up: I suck at interpersonal skills, mental health, and dealing with stress and being lonely inside my world.

Hopefully one of you brave souls made it this far, and who knows, maybe one of you cares. I don’t know, that’s the beauty about blogs and the internet. Thanks for reading all 3146 words.