Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
User Journal

Journal Journal: I Push the Money Over Here, Then I Push it Over There

In the last 5 years, I've become something of an expert at managing my personal finances. Not that my finances are in great shape - it is what it is - but at least I'm good at working with what I have.

I've done this with a combination of technology and an incessant desire to know everything about my past, present, and future, especially financially.

I use Simple for my banking, and I love it. It gives me a clear picture of what is happening with my money in real time. The analytics are amazing. Of course, analytics alone can't work magic. You still have to analyze the analytics. For instance, I could get an average of what I spend on food monthly from the time I started using Simple and you'd think that'd be a pretty good estimate, but alas, it is not. The picture has changed from 2013, because I gained a live-in girlfriend in 2014. And now this year, that girlfriend has started Anesthesia school, so I am paying for all food for both of us. So the picture has changed. I think this kind of analysis is good for my Data Science future, but also is good for keeping up to date with myself and planning my future.

To do that, I have Google Docs spreadsheet that spans from 2001 to 2020. I am able to capture most of the financial picture of my past using old bank statements, standard military pay charts, and memory. This spreadsheet has become my budget, and a predictive model for the future. Using past bonus and raise percentages, I can extrapolate out to the future to determine (if all goes well) what I should be making in 1 - 5 years. Furthermore, I can determine how to most effectively manage my debt. My loans are all calculated by APR, so it even takes that into account.

Unfortunately, sometimes cold hard analytics fall out of the way in favor of anxiety and stress, which is often the result of some of this analysis. When you move the dials all you can, and there is still a negative sign in the leftover balance of the month, you realize the best option, financially, is not the best option sociologically. So while the Dave Ramesy cult followers of the world will tell me that halting payments into my 401(k) and even worse, borrowing from my 401(k) to get through some rough times is a terrible idea, I would argue that they are fucking idiots because not all situations are that goddamn black and white.

Obviously I don't prefer this plan. But I've spent the last month having absolutely no fun, going crazy in my apartment, ducking friends because I can't afford to hang out, while my girlfriend does the same - and this is causing stress, and stress causes unhappiness. And friends, you cannot put a price on happiness. We're not even talking about happiness here, it's contentment. Just getting by and not hating life. It's a big fucking deal. I cannot do 1-2 years of this.

So I pulled the trigger, just now, on taking out half of my 401(k). I had ruled out this option in the black and white scenario. But a crying girlfriend can change everything. We will not live in poverty, or be ashamed of not being able to see friends because we can't afford it. It's ridiculous. I realize this is First World Problems, but you know what it isn't? 1% problems. This is 99% problems. I'm not a big Occupy Wallstreet guy, and I don't think we should just go take people's money and redistribute it all Commie style, but you have to admit, the game is stacked pretty strongly in favor of the fucking wealthy. It's a goddamn logarithmic curve. Getting over the hump is damn near impossible, but if you can, the rest is easy. Money begets money. And you know what begets poverty? Poverty. It is WAY more expensive in America to be poor than it is to be rich. And that is the fucking travesty of our time.

If things continue on track for me, I will be over the hump of the logarithmic curve by mid-2016. This hurts to think about, because I had every intention of being out of debt by this month a year ago. Plans change. Situations change. Anesthesia school is expensive. Grad school is expensive. Food is expensive. There's nothing I can do about it but continue to plug along. But I can't live like a pauper. I've worked too hard and for too long to go back to college kid life. Plus, I'm in my 30s, I hate college kids.

I can't change the rules of the system we live in, so the only thing I can do to get over the hump is to beat the system at its game. Which is why I'm going back to school, and why I'm supporting my girlfriend in what could be a very lucrative career. As disappointed as I am to see success put off for a few more years, I know it will come. Patience and resolve will get us there. Until then, we'll just keep doing what we're doing.

Everything will be ok.

User Journal

Journal Journal: IT Heroes and Big Data

Many moons ago (circa 2006), when I was a young lass studying Computer Science, I had a teacher that really stood out. He swore freely in class, wasn't afraid to call a kid stupid for asking stupid questions or not being able to read code, and regaled us with probably one too many fantastic stories about how he played football for the Chiefs. And while he could be an asshole at times, I probably learned more from him than just about any other throughout my college years.

He didn't just teach C/C++, but lots of other practical tidbits along the way, such as Bash command completion, exiting a shell with CTRL+D and why that works (signals end of input), using Splint, and a myriad of other little things that where maybe outside the scope of the class, but added a lot to my IT tool belt. This made him one of my first IT heroes.

Of course there are others that I have never met and are well known throughout the community - Bruce Schneier, Theo DeRadt, Ken Thompson, Donald Knuth, etc. Those guys have all earned their place at the top of my IT heroes list.

So how does one become an IT hero? It seems there are two paths. One can teach, or one can code their way to fame. I'm not sure that I'll ever be anyone's IT hero, unless I get a cool intern someday who is eager to sponge up knowledge. So far, most of the interns I've been around don't remind me of me (i.e. they didn't come in with a breadth of knowledge, and they don't seem super interested in tackling big projects to expand their abilities). Maybe someday...

On a completely different note, I am loving this Data Science class I'm taking on Coursera: https://class.coursera.org/datasci-002/lecture

And I'm also a little ashamed that it's taken me this long to learn about MapReduce and NoSQL. Really ashamed, actually. There are so many problems I could have solved with these tools had I known about them years ago. Of course, we at the big corporation have only recently begun to embrace Hadoop, while NoSQL has not yet entered the enterprise at any scale.

And with my current project, I'm wondering if there's a place for it. I'm writing a Hypermedia API and I want to track requests, responses, failures, etc for analytics. In our existing internal RESTful services, we're storing entire JSON objects in Oracle CLOBs. This has of course started to bog down Oracle and chew away at disk space. And it's a bitch to even try munging for analytics. In fact, SAS is doing a PoC on that data, so we had to parse it for them and put it into a table. So that whole thing sucks.

So I'm like, 95% sure I don't want to go that route, especially since that database is already having growing pains. But I want to capture that data. But (yet again, "but) I am just learning about NoSQL and Hadoop, so I don't know if I should try and incorporate one of those systems into my design, since I know my first implementation is not going to be great. There is the option of writing to flat files and saving those off somewhere for later parsing, but I know that once I get this thing set up, I'm probably not going to get a second chance to implement this. A new project will come along and this will be forgotten about until something breaks or someone asks me for stats.

I'm currently on the NoSQL chapter in the Data Science class, which is basically a 50k ft. view, but it's more than I've learned about NoSQL up to this point. Again, I'm a little ashamed that I haven't dedicated some time to it up until now. Better late than never though.

We shall see.

User Journal

Journal Journal: Less Hate for HATEOAS

I'm starting to finally warm up to this whole Hypermedia thing. It's really not so terribly difficult to understand.

I actually figured it out on my way to the Slayer / King Diamond show. It was a bit of a walk for me, so I use that time to think through my projects without being at my desk. Helps get me outside the problem and see the forest for the trees.

It finally occurred to me that we're using controllers to provide methods. Those methods either return a resource (a mapping of an entity), or perform some kind of action on a resource. The action performed is declared by the client in the HTTP Method. GET returns a resource. POST and PUT do some kind of modification to a resource (the difference being POST is not idempotent, a word that I have just this week learned).

So on my walk, I realized that everything in a GET is just a resource. Why not just name them all "resource"? The client should be able to figure out what kind of resource it is based on the URL. I think the key to reaching REST glory is understanding that HTTP IS THE FRAMEWORK. Every REST service I've written up to this point has been like, "/service/something/do" or "/stuff/morestuff/get". Why?! There should be no verb in the URI. That comes for free with HTTP Methods! And all these verbose responses with error codes in XML and shit? C'mon, that is given to us in HTTP Response Codes! And I think once that realization hit me, everything came together (in my brain, still lots of coding to do).

As a previous comment asked how I am serializing XML, well, it's with JAXB. Seems to go hand in hand with Jersey, so I'm not going to rock the boat. I actually briefly tried Spring HATEOAS, and it didn't play well with Jersey. Couldn't find the servlet context, probably because Jersey had it. I dunno, didn't dig too deep on that. It's such a simple concept here, presenting links to allow for a responsive API and client, it wasn't hard to roll my own.

So all I did was create a HypermediaLink object that just holds basic string stuff like rel, and href. Then I created a BaseResource that holds at least a selfRel and a list of links. My resources extend this, but here's the dick kicker - the @XmlRootElement(name="resource") has to go in the inheriting class. No way around that with JAXB, unfortunately. So that's not super clean, but at this point, we're splitting hairs.

So armed with that plan, I drew up my API state diagram. It's still a work in progress, but all the sudden it feels SO CLEAR what needs to be done. So now I just need to do it. Hard part is over though. I'm actually very happy with my work, thusfar. Looking forward to banging this out and chalking up another huge win.

User Journal

Journal Journal: Hating HATEOAS and a New Whiteboard 6 6

I'm designing a REST API kind of from scratch. Actually, I'm taking an existing API in production, and putting kind of a "Version 2.0" on it, leaving the original in place, but making the v2.0, well, better.

So I've decided to read up on REST and instead of just attacking it like I have every other RESTful project I've done, actually approach it with an architectural mindset with some theory to back up the practice. So I read about the Richardson Maturity Model, about how most of my services up to this point have been Level 1 services, which is fine, since I was the only consumer of them. But now that I'm going to be exposing this to the world (at least a subset of the world), I want it to be done right. At least, as "right" as I can get it given all the conflicting information on REST.

The biggest problem so far is, I'm building this with Content-Type=application/xml, not Content-Type=application/json. Why? Because I don't think our consumers are going to be big JSON users. To that end, I don't think they're going to be big HATEOAS consumers either. However, I want to do it this way anyway, so no one can say we weren't forward thinking. So back to the XML problem - there are like, ZERO examples of an XML Hypermedia API. Everything is in JSON. Even the RFC for HAL is for JSON. Why not include XML in that? The two go hand in hand. It's just a different dialect for the same data.

After exploring two frameworks for HATEOAS (spring-hateoas and Jayway Forest), I found that there's nothing that will support XML. So I'm rolling my own. I guess it's pretty simple, we're just representing links, right? But it's a little bit trickier because link displaying is dynamic. So I need a way of conditionally displaying links. I'm leaning toward annotations. I got this idea from Jayway Forest. That seems pretty basic.

And it's looking like the closest thing to a standard is HAL+XML, which isn't even an RFC yet, but a guy on Google Groups who just modified the RFC for HAL+JSON and posted it to Github. Man, this is looking ugly. So, in light of this, I'm thinking there really is no standard, and I'm just a well off writing my own as trying to follow someone else. So that's what I'm doing.

Previously we were returning XML that looked like this:

<{specific-type}-response>
    <response-header>
        <status-code />
        <status-message />
    </response-header>
    <{some-specific-entity}>...</{some-specific-entity}>
</{specific-type}-response>

There are a bunch of problems with this. First of all, the root element changes for each Controller. That makes it very hard to write a client.
In fact, calling it any kind of response is incorrect. That is a Java developer habit. We write everything with services, so everything is a request/response. But here, the response is the entire package - HTTP Headers, Status Code, and Payload.

Secondly, why is there a response header in the response body? We get that for free with HTTP! Get rid of that thing and we're already starting to creep into RMM Level 2!

What we're representing in XML is the Entity, or Resource. A Resource is just a representation of an object's state. Like a lightbulb:

<resource rel="self" href="/room/kitchen/lightbulb">
  <link rel="switch" href="/room/kitchen/lightbulb/flip" method="PUT" />
  <link rel="change" href="room/kitchen/lightbulb/change" method="POST" />
  <light-status>ON</light-status>
</resource>

One thing that isn't in the "spec" if you want to call it that is the method there. That at least tells the client what I'm expecting for the verb.

I'm really torn on all of this, as I'm sure many other developers trying to implement this kind of thing are. Nothing is concrete and there's pitfalls everywhere. I know it's been like this for a long time, but it just seems like the more it gets refined, the less anyone seems to know what to do with it.

Oh, and my whiteboard got replaced today with a smaller one. The super annoying thing? I had my whole REST API written up on it for reference. Motherfuckers.

User Journal

Journal Journal: Weird Ubuntu Wireless Shenannigans 2 2

I got a call from the gf the other day at work. She was at home doing homework on her Ubuntu laptop and said the Internet wasn't working. I believe she said she couldn't connect to the Wireless, actually. So I had her turn off the router and turn it back on. When that didn't work, I said I'd be home in a bit, because trying to walk her through troubleshooting is a nightmare. So first thing's first, I tried pinging Google from my desktop, which also connects wirelessly. I'd get about 39 pings off and then it'd freeze for about a minute. Then I'd get some more pings off and it'd freeze again. I powered off the modem and powered it back on. Same thing.

So I didn't have time to dig into it anymore, so I told her to just come to my work and she could use the office WiFi.

When I got home, I tried again, and everything was hunkey dorey until I turned my laptop on. Then I saw the problem again. I set both the laptop and desktop up to ping Google and I'd get the same thing - on again off again connectivity, but they would alternate. Ah ha! I had a theory. So then I pointed them both at 192.168.1.1 and got the same result, proving it wasn't the Internet.

The theory was gaining traction.

I pointed my desktop to the router's admin console and checked my devices. I saw there were 3 connected (my phone was on too), but only two were identified with an IP address, and the other was just all dashes (-------- ----------). So it saw a device, but couldn't assign it an IP. I checked all the settings to make sure my DHCP wasn't set to only allow 2 devices (something I have done in the past), or that I didn't have any static IPs set. Nothing.

I grew more frustrated.

Then I disabled networking on the laptop. When I turned it back on, problem solved.

So this must be a weird Ubuntu bug, or something related to the driver for that card. I dunno. But I'm glad it's fixed. That would have driven me nuts for a long time to come.

User Journal

Journal Journal: The Waiting Game Is a Stupid Game

I've got this ColdFusion app that sucks in a bunch of data from a Teradata database, and joins it up with a bunch of data in an Oracle database, and then stores it in its own table. The problem with this is, I have to run a nightly batch job to suck it all in. I'm doing this in ColdFusion, so I've got a 5 minute timeout (default web timeout) that I need to stay under. Everything was fine until I got a complaint about a feature of the archive script not working. I think I fixed that, but now it's going way over 5 minutes, and I think this is because before, it was skipping a whole section. Now that I've got it hitting this section of code, it's running waayyyyy longer.

And it wasn't until late yesterday that I finally decided to do some log statements. See, in Java, I'd just step through the code with a debugger. But with ColdFusion (particularly in our environment) we just edit our code and hit a URL and the server runs it. No way to debug. Typically, it's not a big deal. Just through in some output statements and see where your trouble lies. But now I can't even get the damn thing to return to the browser. So logging has become a necessity.

So now I've got my log statements in there and I'm just waiting for the damn thing to timeout. The waiting game.

So while I'm waiting, I'm going to bitch about a coworker. He's one of the managers here, and I do not work for him. But that doesn't stop him from fucking things up for me, and everyone, really.

I used to think he was just a harmless kiss-ass who liked to suck up to his boss and his boss' boss, and his boss' boss' boss, ad infinitum. That would be annoying, but it's whatever. But now, it's become clear that he's out of control. He's amassed an army of pawns who don't necessarily know he's terrible and are willing to do whatever he asks. And it would be another thing if he actually knew what he was doing. But he doesn't. He's technologically stupid, and architecturally shortsighted.

The thing that set me off a couple weeks ago was when one of his people asked me for help getting the customer that is attached to a user ID. I told him that you just need to extend one of our common components and that it's done for you. Then I asked to see his code. It was alien. There was nothing resembling our company's coding standards to be found. And then I found out that this was already being used for demos to boss' boss' boss etc.

This is the kind of thing that I could ignore if I didn't know it would come back to me some day to be maintained or fixed, or whatever. And by that point, it'd be so entrenched that refactoring would be outlandish. And since I didn't get the Architect job here, I'm trying to keep an open mind about the new Architect. But so far, all I've seen is - ugh, let's just call him Brody, cause it starts with a B, and he's also kind of a bro-dude-buddy - Brody using him as his personal architect. And I don't think he's deep-dived into our systems yet. That bugs me. He need to know this stuff inside and out to be the architect, and so far, all he's talked about it how they did it at his last company and gives us this pie-in-the-sky answers about how we COULD do things. I'm not interested in COULD. I'm interested in what are we doing now, and what can we do tomorrow to show results. I dunno, he just seems lazy to me, and not the "I'm so good at my job I look lazy" way. I also found out he was friends with his boss, which is probably part of the reason for the hire. I'm still trying to keep an open mind, but I'm slowly starting to form an opinion and so far, it isn't terribly high.

And now, 20 minutes after I ran my script, it finally timed out. I'm trying to get the logs I wrote, which are huge. And the geniuses behind our logviewer thought it would be good to use infinite scrolling to display logs with no "download log file" option. So, this is gonna take another hour. Ffffuuuuckkkkk. Nobody thinks about utility around here. It's like, "Oooh, let's implement this fun cool looking feature" without thinking about how useful it will be. I just want the raw logs so I can open them in Vim and see what the hell my app is doing. Ugghhhhghghhgghghghgh!!fFFFUUCCCKKK.

I guess that about sums it up.

User Journal

Journal Journal: I Direct at You, the Seething Hatred of One Thousand Suns! 2 2

There's trouble in paradise. My once cushy and enjoyable job is clearly nearing EOL. This is due to someone else here, a real "go getter." You see, not only is this individual Machiavellian in nature, but he's tech-stupid to boot. So we have a power grabber who doesn't know shit about what he's trying to manage. This is going to end up destabilizing the company over the long term, making my job much less enjoyable because A.) I will end up cleaning up the mess, and B.) He will slowly suck up more and more power and I could end up working under this fuck.

He's always been this way, but more recently it has become a problem. I got a ping from one of his people on Friday, asking me for some help. I obliged, and I was confused by his question. So I asked to see his code. Lo and behold, it looked nothing like what our core systems look like. This is because they are off-site employees and FuckHead keeps all his people in silos, away from all the other (read: experienced) developers. And now that our Architect has been replaced with a new guy (not me, of course), DickWad has decided to become buddy-buddy with him so he's got the brains in his back pocket (since they're not in his head).

So now we've got Rogue coders corrupting our code base and an architect who has, whether he knows it or not, joined the dark side. Couple this with Asshole's climb-to-the-top-on-the-backs-of-others mentality, and you've got a recipe for disaster. My only option, it seems is to start making an exit strategy. Which sucks. I like it here. I'm really fucking good at this job. I know the code inside and out, and I understand the business. I've been here for 4 years, man. I like my boss and his boss. But I don't see any other option.

And CockKnob is so good at his back stabbing techniques. He never technically "does anything wrong" so it's not like I can nail him on something fundamentally against company policy or anything. It's all the little things. Like how he accepted a Summit Award for a project he had nothing to do with, while screwing someone who had significantly helped the effort out of his award. But you can't really get "in trouble" for accepting an unjust award. It's how he takes credit for other people's work, while putting all the blame for any mistakes on everyone else. It's how he puts people who don't work for him on an org chart under him when he meets with higher-ups. It's not a fireable offense, should he be called out. Hell, it's probably not even a mentionable offense. If all else failed, he could just claim technical oversight and be like, "sorry 'bout that!" But the damage is done, because now that VP sees him as someone who has a lot of responsibility. The seed has been planted.

This is an asshole with no integrity. But integrity is one of those intangibles that have no metrics attached, and as such, has no real bearing on how far JizzGuzzler will go. I've been assured that his reputation will get around, but I know how it works. By the time it gets around, he'll be long gone, promoted to the next level up, where he can inflict more damage on a larger group of people.

So here's where we get to the solution. It's not easy, and it's really not even directed at him. It's a parachute for me, cause when this plane catches fire, I am not hanging around to see if we can put it out. This is why I'm going back to school to get my masters in mathematics. I registered earlier this year, but with less intention of actually doing it. It was kind of an "eh, we'll see" attitude. But now it's a do-or-die attitude. This program can help me right several worries I've had in my head for quite some time. One is the aforementioned NutRubber. But just so as not to give him too much power (more than he already thinks he has), I'm also doing it for me. I've grown comfortable and quite honestly, bored with my job. It's too easy. Same thing over and over. Understand business requirements, architect a system, the copy-paste a bunch of shit and it's done. Very little innovation. I'm not saying I'm not good at it. I am. That's why it's boring. But I know I'm not good at math. It's not easy to me. That's a challenge, and that's why I must do it.

Data Science is the next frontier, and it's already commanding huge salaries at other companies. With a national average salary of $118k according to Glassdoor (which, if I have any hope of being a data scientist, I obviously must question weather that's the arithmetic average, the median, or the mode - but either way...) it's one of the highest paying jobs out there. Developers are a dime a dozen (not good ones, mind you, but job-filling ones). I want to cement my place in the needs of a company. This is the way to do it.

My first class will be Probability Models, and I'm stoked. Every day I go to class, I'll be a step closer to carving out my own path, and kissing ShitStain goodbye.

User Journal

Journal Journal: Upgrading Eclipse to Luna

Ugghhhh. Here we go again, with the Eclipse bullshit. (This will be sort of stream-of-consciousness as I'm just going to rant as I get this shit working...)

So I'm about ready to start a new project and I bit the bullet and upgraded to the latest "stable" (sarcasm detected) Eclipse release, Luna. I had been using Juno forever, with great disdain, but at least I knew most of its quirks. So now I get to learn all of Luna's quirks.

Starting with a little red X on each of my project POMs with the following error:

Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.5:add-source (execution: add-generated-source, phase: generate-sources)

I found this StackOverflow solution: http://stackoverflow.com/questions/9263992/org-codehaus-mojo-not-visible-in-eclipse

Which basically just says to tell Eclipse to ignore it.

Next is this lovely little warning: "Implementation of project facet could not be found."

For that, I'm told to go delete .settings\org.eclipse.wst.common.project.facet.core.xml from EACH FUCKING PROJECT. And then do Maven updates. Or maybe restart Eclipse. Who knows. I hate you, Eclipse.

I'm also also getting issues connecting to the Marketplace. That's fucking annoying too. Had to switch from Native proxy to manual and enter a username/password.

Apparently Subclipse doesn't come installed. Gotta install that...

Restart one more time...

Annnddd, it's kinda almost maybe sort of working. Still got a bunch of little warnings that I'll need to get cleared up, but whatever. I'm tired and hungry. Time to go home. Stupid Eclipse...

User Journal

Journal Journal: Gleaning Information With Exif 1 1

While digging through my past, there are points in my life that are black holes. These are problematic. I joined Gmail in 2004, Facebook in 2005, and basically everything after that is recorded in some form of digits. But prior to that is proving to be a challenge. I had a MySpace, Live Journal, Yahoo!, and Hotmail account dating back to 1997, but all of them have been obliterated. I bet even the NSA would have trouble coming up with data on me prior to 2004. So this leaves me stumped.

One thing I did have was a digital camera. And I'm not braindead, so I remember things that happened when I took those pictures. So, with the power of Exif and the "Date/Time Original" field, I'm actually able to do a little detective work. But there's a catch. That requires you to have first set the date time on the camera, something I never saw the value in back in 2003 when I first got my Olympus C40 Zoom (A WHOPPING 2.8x ZOOM and 4.0 MEGAPIXELS!!!).

Side note: I'm really stoked to see this bad boy again: http://www.dpreview.com/reviews/olympusc40z Sheeeeeiitttt.

So anyway, having not set the date/time, I was left with a bogus date. The time doesn't matter much for this experiment. All I want is the date so I can put events on a post-dated calendar.

But I have one thing that technology doesn't have: memory! Ok, that's unfair, but you know what I mean. I can use my memories of when the pictures were taken around a specific date (i.e. my birthday) and adjust from there. So, upon finding a specific picture taken on my birthday that contained a date within Exif, I just had to do the addition. Plug for my favorite online date/time tool: http://www.timeanddate.com/date/dateadded.html

Once that was done, I just needed to adjust all the other dates and I've got my events.

Surprisingly effective for such stupid simple shit. Now, I'm facing the problem that I've deleted a shitton of pictures somehow, and I'm not sure I can get them back easily. I was looking into Autopsy, but it wants an image and I'm not sure I can get it that... But for now, I'll take my small victory.

By the way, beware of that Exif data, particularly if you are sending something you think is anonymous. Your best bet is to take a screenshot of the picture and send that, assuring you aren't transferring any Exif data, thereby revealing yourself. That is unrelated to this post, but it's a thought.

User Journal

Journal Journal: Archiving My Life

2014 was a trip down nostalgia lane. I dug through my past and started documenting. But this year I have only gotten more serious about it. As I dig through old emails, paper documents, school work - anything, I am distraught by how much is gone forever. There are events in my life that will only live in my head. But for how long? Now is the time to document everything that has happened in my life. The further away I get from it, the harder it gets to find and remember. But once it's recorded, I'll have it forever.

I'm basically putting everything on my Google Calendar, and keeping documents in my Google Drive. The calendar is the easiest way I can look back at what I've done. What am I documenting? Anything remotely significant. Seeing a certain band, or visiting another city. Making out with this girl or that. Anything that isn't mundane. To be fair, this entire project is extremely mundane, and I'm not really living while I'm doing it. But I see it as a small sacrifice in order to preserve the past.

Slashdot journals have been extremely helpful as well - indeed, they have their own calendar. I even copy the contents of the journal and past them into the calendar description field. So much is coming back to me just from putting everything on a calendar. It's like the picture continues to get clearer, and I am transported back to that time. Anyway, I need to keep going. Back to it!

User Journal

Journal Journal: Operation Pacman

It's been a while since I spawned an Operation. As I'll remind my audience of approximately zero, I determine operations based on the need for a long term focus on a particular goal. This particular goal is eradicating debt. And since I can't do it all at once, I'm doing it a little bit at a time. Like Pacman eating the little dots (monthly payments) and trying not to get caught by the ghosts (surprise expenses).

I've got my spreadsheet model laid out for various situations. Currently, it is set on what I am calling "Insane Mode" where I basically have no life and pay as much as I can on my loans. Realizing this isn't realistic, I'm going to create a Goal in Simple for Student Loans (and eventually Upstart Loan) and set aside as much as I possibly can in to that, leaving me about $400/month for food. If I go over that $400, then I eat away at my debt payment, causing me to be more mindful of my spending.

I'm also going to make an effort to shop cheaper, doing my grocery shopping at Target and such instead of the local mom & pop, which is much more expensive.

This is coming on the heels of learning that I will be supporting my girlfriend through anesthesia school a lot more than I anticipated. I can still eradicate my debt by bonus time next year though if I stick to this. I won't be eating ramen though, as my health will always come first. But bars, restaurants, and expensive cigars are out. Even expensive whiskey is out. I'll be drinking bottom shelf Evan Williams (which isn't bad, really). But I'm going to get this done. One day at a time. One little dot at a time.

User Journal

Journal Journal: Upgrading Ubuntu End Of Life 13.04 Raring Ringtail on a Sony Vaio 1 1

I bought a laptop a couple years ago. I don't know why, because I installed Ubuntu on it and then it sat unused for about three years until my girlfriend's laptop broke and I told her she could use mine. Having a Linux machine is like having an HP graphing calculator that uses RPN â" Awesome for you, but when someone asks to borrow it, they are utterly clueless. All she really needs it for is Internet (all anyone really needs computers for these days is Internet â" hence Chromebooks). So she can get by, but the thing is still on Raring Ringtail, which I came to find out is 3 versions old and End of Lifed. Which means upgrading isn't a snap. So I'm taking some time out of my Saturday to do that and document it here.

I will also take a minute to mention how much I fucking hate Ubuntu and the monstrosity of a desktop environment, Unity. Fuck the whole thing straight to hell. I have probably uttered the phrase "Fucking Ubuntu..." more times than I can enumerate. Now, I would have installed Debian, but a couple years ago when they first started coming out with UEFI, Ubuntu was about the only distro that handled installs with ease. I'm sure Debian has caught up by now, but I'm not willing to spend a whole weekend on this. Half of a day is all it's getting.

So here we go.

I'm following along with Ubuntu's guide, but I'll repeat the steps here as we all know how links tend to disappear years down the line: https://help.ubuntu.com/commun... First of all, I didn't want to do everything with sudo, especially things I know I'm going to need to be doing as root, so I'm just going to

$ su -
Password:
su: Authentication failure

Goddamnit. Yet another thing to hate about Ubuntu. They treat their users like children (because most of their users are) and they don't even give them a root account. It's like the movies where the experienced guy gives the untrustworthy guy a gun but it's not loaded, and the idiot finds out later when he tries to shoot the experienced guy. Anyway, I'm an experienced guy, so I have to manually enable root.

$ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Now we can proceed.

$ su -
Password:
#

Update /etc/apt/sources.list

# vim /etc/apt/sources.list

## EOL upgrade sources.list
# Required
deb http://old-releases.ubuntu.com/ubuntu/ CODENAME main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ CODENAME-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ CODENAME-security main restricted universe multiverse
 
# Optional
deb http://old-releases.ubuntu.com/ubuntu/ CODENAME-backports main restricted universe multiverse

# apt-get update

You should also make sure some meta-packages are installed so the upgrade can continue without problems. Update-manager From version 6.06 and up you will need to install the update-manager and update-manager-core packages.

# apt-get install update-manager-core update-manager

Kernel This part takes a while, as the headers are pretty weighty.

sudo apt-get install linux-image-generic linux-headers-generic

Run the upgrade And then this part really takes a while, as you know.

# apt-get update
# apt-get dist-upgrade
# do-release-upgrade

Then do it it again. And again. Until you're caught up. Ugh, this takes forever.

User Journal

Journal Journal: Eclipse: The Loathe of My Life

Eclipse is bad, man. And I'm not saying that because I used it once and didn't like it. I have used it daily for 5 years. I remember it being pretty decent somewhere around the Helios/Indigo era. But once Juno hit, everything fell apart it seems. I'm currently still sitting on Juno, with two versions gone by now, because while, yes it is fucked up, it is a known level of fucked up. I don't know how much worse they've made it since then.

For a while, I kept a list of everything wrong with (my) Eclipse:

- SVN commit sometimes gets stuck.
        - Solution: Sometimes cancelling it and trying again works. Sometimes you have to restart Eclipse.
- Red Problem error on POM file after updating shared component
        - Solution: Manually update project under Maven
- JiBX binding fails when any change is made to the component
        - This is due to the JiBX autobuild plugin being fucked up and having to disable it
        - Solution: Do a clean install every time
- JRebel reloads forever, but doesn't execute
        - Solution: Stop server, recompile, start again
- Closing when SVN locks up locks the whole app.
        - Solution: Kill w/ task manager. Start again.
- Error shows in IDE, compiles w/ manual MVN command
        - Solution: Delete Maven Persisted Library from build path
- Debugging / Changes/ JRebel reloading causes IDE to lock up.
        - Solution: Kill w/ task manager. Start again.
- Toolbar gone for no good reason
        - Solution: Window -> Hide Toolbar (Why is it not "Show Toolbar"???)
- Shows errors after updating Maven dependencies in text editor.
        - Solution: Restart Eclipse
- "Perspective Switch Job has encountered a problem" when debugging from Java perspective and it hits a breakpoint and tries to flip you over to Debug.
        - Solution: Restart Eclipse
- Save stops working (ctrl+s, or :w in Vrapper)
        - Solution: Close editor (it will ask if you want to save, so say yes) then restart Eclipse
- Deleting project leaves closed project folder in package explorer
        - Solution: Restart Eclipse
- Link with Editor stops working in Package Explorer
        - Solution: Restart Eclipse
- WSDL file giving warning: WS-I: A problem occured while running the WS-I WSDL conformance check: org.eclipse.wst.wsi.internal.analyzer.WSIAnalyzerException: null ------------------------------------------------------------------------------ Nested exception is: java.lang.NullPointerException The WSDLAnalyzer was
  unable to validate the given WSDL File.
        - Solution: No idea. This is apparently a bug in WST or something.
- Parent project of a multi-module project shows as in error with "Import cannot be resolved"
        - Properties -> Project Facets -> Check Dynamic Web Module, Java, Javascript
- XSD shows as an error in project with "src-resolve: Cannot resolve the name 'xxx:whateverType' to a(n) 'type definition' component."
        - Solution: No idea.

Notice how most of the solutions end with "Restart Eclipse." Ugh. It's the new Windows.

Unfortunately, I can't use IntelliJ. As much as I love some of the things you can do with IntelliJ, I gotta have multi-module support. I don't work in a single module. I work in several at the same time. IntelliJ's limit on that is a deal breaker.

Anyway, I've been trying to clean up my workspace all day, which is proving to be a Sisyphian task. Screw this. I need to code. I'll just have to live with the false-alarm red-Xs and warnings. Just like I live with Eclipse. *fart noise*

User Journal

Journal Journal: The Albatross and the Architect

I'm listening to Strikeforce: Diablo's the Albatross and the Architect, which I haven't thought about in years. It's probably been like, 8 or 9 years since I rocked this album. Back then, I was living in shitty out-west apartments, driving a Toyota Celica, playing in a band, in my sophomore year of college, breaking up with my longest-term girlfriend, and just starting what would become the job I am doing now. Little did I know, accepting that internship because I needed a job and cash would get me to the place I am now. And just where is that? Eagerly awaiting to hear if I will be selected as the systems architect for the company. Holy shit.

I'm sure that one of my interview questions for that internship was, "Where do you see yourself in 10 years." I don't remember what I said, but I doubt this was it. I have come far since then. Sometimes I wonder how the hell I did it. Especially when I'm spending my time listening to music and typing out a journal instead of, you know, working. But then I remember all the hard work I have done. All the late nights, long weekends. All the days and nights spent at the library studying for a calculus test, or ssh'd into Phoenix or Archos or whatever it was, hastily trying to get a C program to compile. The long nights spent teaching myself PHP and OpenBSD so I'd be ready when I started my first internship.

That's why I'm here, waiting for the word. It will be one of two responses.

"No. Sorry, we found someone more qualified. Wait a few more years and apply again."

This is a valid response, and I would accept it graciously. The role of Systems Architect is a huge - and I can't overstate that - HUGE responsibility. The company leans on you for technical advice. You don't get to lean on anyone else. You are the last domino. You either stand strong or everyone falls down. Certainly it would make my life easy, if not boring for the next few years. I would likely revert back to studying the market and trying to find success there.

"Yes. After all of our interviews, we have determined you are the best fit for this position. Congratulations!"

In this case, shit gets real. All the things mentioned above about the responsibility officially bears weight, and that weight sits on my shoulders. There are still so many things I don't know! Will I be called out for not being as smart as the other architects? Will I make bad choices? Will I say the wrong things? Will I disappoint my boss? Will I let the company down? I've been in this position before, but the stakes were so much lower. I was an intern, and what could they expect from an intern? I was a brand new employee, and what could they expect from a newbie? But now, I am not new. I've been around the block and a lot can (and should) be expected of me. Fuck up here, and there are serious consequences.

I've weighed all this. It is scary, yet it is a step I must at least attempt. Because without being a little scared (read: motivated), I might as well not even get out of bed.

But as of now, I'm still just waiting on one of those two responses. Will I be the architect, or will I wear the albatross? Time will tell.

User Journal

Journal Journal: Things Are Looking Up!

After re-reading my last journal entry, man. This year has sucked. Shit was bleak. And it all culminated into a terrible, awful week. A got into CRNA school and I was so, so happy for her. But that was where the happy times ended. We went out to celebrate, but I had a feeling I should set up the dog cam, because I was worried that the dog had been barking when we'd leave again. No sooner had we got to the restaurant 3 blocks away than he started backing. I sprinted home to stop him, but that was it for our night. She finally made the decision to give up the dog.

It was one of the hardest things I've ever had to do, taking a dog we both loved to the Humane Society. Putting him behind the kennel and shutting it and looking at his sad, scared little face. I had to hold back the tears. But there was nothing else we could do. She had a hard time with it. She thought she could get something else fluffy, so she decided to get a bunny. That lasted about 2 days, before she realized she was deathly allergic to the hay it requires. So she told me to go set it free, which I for some reason, listened to her and did. A few hours later, we got a call from the Humane Society about our bunny being found. I was so fucking pissed off, both in that we clearly got caught, and in that I listened to her in the first place and let that poor bunny go in the park. Stupid. Thinking about that day just brings back so many angry feelings. We almost broke up over that.

And maybe a day later, we realized her cat was peeing on the carpet. I honestly didn't think I could take any more. Another trip to the Humane Society. Ugh. Shittiest. Week. Ever.

But you know what? Things are improving. She's still getting over the dog, I think, but all in all, everything has been so much better without him. Now we're free to go out, enjoy our night, not worry about if he's barking, or if we need to take him to doggy daycare. Plus, that's less money we have to spend. So yes, things are finally looking up. We've had good nights together again.

And just recently, I've learned that our architect is leaving, opening up his position. I want it. I talked to my boss' boss about it. He sounded interested in entertaining the idea. I don't have 10+ years of experience, but it's close. I know that if I were thrust into the position, feeling uncomfortable again would spur me to get better and learn more. I already feel half-way capable. Being shoehorned into an architect position would be just the inspiration I need to be interested in my job again.

I do fear that I'll be failing at the stock market if I do this, but that'll always be there and it's not even a guaranteed win. A promotion to architect would be a guaranteed win, as long as I didn't fuck up. Anyway, the job should be posting soon. We'll see how this goes...

The more data I punch in this card, the lighter it becomes, and the lower the mailing cost. -- S. Kelly-Bootle, "The Devil's DP Dictionary"

Working...