Wednesday, December 28, 2011

how to save money: never buy a box


I've never been too concerned about minor moving expenses. Last time I moved, I probably spent about $50 on cardboard boxes to move my stuff in.

This time, I decided to keep my $50. You can get boxes free from most liquor stores. I'd never done this before, but I have a friend who has done it. Still, it was really hard to resist the urge to just go out and buy boxes. I was especially resistant to just walking in and asking (fear of rejection). If you don't have this problem, good on you. If you're like me, you can solve the problem by doing what I did: I just drove around to the back of the store and did a little dumpster diving. Yes, it felt a little disgusting. The cardboard boxes had all been flattened and were in a dumpster specifically labeled for recycling, but I still wondered about cleanliness... Nevertheless, the boxes are only intended to move my stuff from point A to B, and they can be discarded without misgivings once I'm through with them.

Cost saving measures like this give me a bit of pleasure. I know some people sneer at this; but then I guess they don't feel like corporate slaves in their jobs. I'm not as extreme as the retire early extreme guy. Some of the things he does make me cringe. But I'm very willing to make some sacrifices in pursuit of my own freedom.

how to save money: move

As I mentioned in a previous post, I don't have enough savings to cover my expenses indefinitely, so I look pretty carefully at every dollar I spend. Clearly I have two options: make more income, or trim expenses. The latter is the easiest thing to do in the short term. I already know the breakdown of my yearly expenses. Like any good developer, I decided to optimize by working on the most expensive operation. Excluding taxes, my number one expense is rent. The solution is obvious: I need to move!

Where to? Personally, I'd be happy to move to various locations around the world, but practically speaking it's a bit difficult for a couple of reasons.

First, I have an elderly relative who is within driving distance, currently. This person is not really dependent on me, but I feel some qualms about moving so far away that it would require a plane flight for a visit. I am definitely reconsidering these qualms, because I don't want to let this constraint affect my life too harshly. In effect, I already have let it chain me to a certain region. If I were free from this constraint, I would have moved around much more in the past.

Second, there's the whole health insurance trap. I know my health insurance costs where I live now. Moving blindly to some other area, I have no idea what my health insurance costs will be. (And going without health insurance is a risk I just won't take.)

In the past, whenever I moved from state to state, I didn't pay much attention to health insurance. I was always moving from one job to another, and I knew I would automatically be covered by my new job's group plan.

Health insurance for individuals in the US is a game designed in hell. But that's a rant for another day. Meantime, I'm somewhat afraid to move out of state without knowing definitely what my health insurance options are.

So I decided on a move in-state, at least for this first year.

I used hotpads and similar sites to help me search for low rent apartments. One thing I quickly learned is that certain things scale with rent: privacy, space, and safety.

1) Privacy. Initially I considered all options, including house shares. It did not appeal, since I value my privacy and autonomy. Some people doing the house sharing thing make demands that I just won't tolerate (no visitors, group meals etc). I was hoping to find a "hacker house" to share with like-minded people, but I never did, and pretty quickly abandoned this tactic.

2) Space. I was shown rentals for rooms that were approximately 12 ft x 12 ft with rents of $600/mo or so - about 1/2 the price of my current 800 sq ft apartment. I considered these prices outrageous. These were rooms way out in the suburbs of my tech hub, mind you, not smack in the middle of the city. My advice to you if you encounter these places: unless there's some special appeal to the situation, keep looking. You can almost certainly find something better. Leave these apartments for more desperate people.

3) Safety. When researching a rental, take a look at the crime situation using a site like Family Watchdog. If you're looking at a place with a steep rental discount, it's very likely in an "undesirable" area.

In my case, I finally compromised by taking a small place, with a lot less safety than I'd like. I drove through town and it didn't creep me out, but the statistics are not great. Clearly I will need to take precautions. On the plus side, I'm still close enough to a tech hub so I can get to that once in a blue moon meetup or tech event without a day of driving.

Once I signed the lease, I had a huge case of buyer's remorse - I felt like I'd grabbed the first acceptable place and should have continued looking. My new space is about half the size of my current place, and I'm afraid it will seem incredibly cramped, since I'll be working from home. I'm worried that I won't feel safe. I'm worried that the place will be depressing because it just has a few small windows. And while I've managed to cut my rental expense in half, this new rental is clearly not a permanent solution to my problem.

So I'm looking at this first year as an experiment. I didn't have much time to put into finding a place, and I needed to cut expenses fast. Over the next year, I will research other ways to solve the rent problem. Meantime, I've reduced my rental expense by over 50%, which is a big help.

Monday, December 12, 2011

women want to be founders

Thank you, Laura Klein! People, go read her well-spoken rant about the fact that some women want to be in start-ups and run their own businesses. I mean, if you didn't already know that.

When I was much younger than I am now, I would have been a great start-up founder or employee. I had a very driven personality, and was quite the workaholic. I put all my efforts into academic studies, but the same kind of drive can be successfully pointed in the start-up direction.

Way back when, I didn't even know what a start-up was. I thought you had a choice between working in academia or working at a boring faceless corporation.

When I left academia, I was drawn to start-ups, and even talked about doing one with some friends. It never got very far. I should point out that my erstwhile co-founders were always white males, so it wasn't me alone failing to start. I didn't have any kids or obligations and was willing to throw myself into the business. In contrast, my co-founders would talk about family obligations. Hm, white males putting their families above founding a start-up? Sound familiar?

Wednesday, November 30, 2011

bye-bye, rat race... or should I say, au revoir?

Rat Cage by deborah|silverbees
Rat Cage, a photo by deborah|silverbees on Flickr.

Well, I did it. I quit my job, which was making me crazy. Quit the rat race altogether, at least for a while.

I never planned to work until retirement age. The idea was to work for a while, accumulate a big nest egg, and live off the income stream from that. Some people appear to happily turn their lives over to corporate America. Not me. I have a ton of stuff I want to do, and I found the extent to which my time was wasted in a corporate job to be incredibly frustrating.

Well, I'm not getting any younger. And I don't have enough savings to live off of for the rest of my life. It was starting to look like I'd be working for another 10 years before I could be relatively safe, and who knows, maybe not even then. I finally lost my patience for deferring living. Fifteen days of vacation a year was not cutting it. I had to try plan B.

Now you hear about people who quit their jobs, and say it was a terrible mistake. And that kind of scenario ran through my mind over and over again as I made my decision. You unplug yourself from the Matrix, and you wonder if you'll ever be able to plug yourself back in again. Even if you don't want to, what if you need to? Yet somehow you can't... and then you're homeless. Big scary thoughts.

Well, I'm smart enough to quit with substantial savings. It will take me a couple years until I have to start eating into retirement savings. I have to trust I can find some other way to make a living before that happens.

So here I go.

Saturday, March 26, 2011

women and their shoes

I just heard a male coworker refer to "women and their shoes!". Then he back-pedaled, probably because he knew I might have heard him and said "not all women of course, though many of them!".

I do not own many pairs of shoes.

Why do some people feel a need to randomly spout statements based on stereotypes?

Wednesday, March 2, 2011

the benefit of being a female software engineer


Jean Hsu recently blogged about the The Benefits of Being a Female Software Engineer.

Being a female software engineer, myself, I didn't find her comments very applicable:
  1. Casual attire: in fact, many other jobs allow casual attire, and many companies require that engineers wear business casual. It's true that I'm getting away with ratty jeans at my current company, but that has nothing to do with me being a female software engineer.
  2. Good odds for catching a mate: I have yet to find a suitable mate in any of the offices where I've worked as a developer. In fact most of the guys I've met are already part of a couple. I admit, though, I'm not looking for a mate, so maybe that's part of it.
  3. Less drama: she claims women are more likely to be "drama queens." Really? In my experience, men are as likely to throw tantrums as women. All highly unprofessional, but it happens.
  4. Being memorable: and how is this an advantage? If people simply remember you as "that female engineer who works at X" not as "the most talented engineer who works at X", how does that help? In fact, women are often put in their own separate category, as in sports events, so they're not even compared with the top men at all.
  5. Being liked: She says women shower, and bring brownies, and are therefore liked. I've never brought food in to share with coworkers, although some of my male colleagues have. I shower daily, and so far as I can tell, all my male colleagues do also. So far as I can tell, "being liked" has more to do with your personality than anything else(avoiding being an ass helps).
Jean neglected to mention the most important (probably the only) advantage to being a female software engineer. If you work in an area dominated by the engineering department, you will find that the ladies' restroom is almost always quiet, clean, and empty.

Thursday, October 14, 2010

The Social Network

I went to see The Social Network this week. Wiki says that no Facebook staff were involved, which is believable. Eduardo Saverin, Zuckerberg's "friend" who initially got into FB on the business side, was a consultant for the book , which explains why he is portrayed in the kindest way. The rest of the crew (aside from innocent bystanders) are skewered. BTW I put "friend" in quotes because the movie makes it doubtful that Zuckerberg ever had any real friends.

I'll repeat what others have said: the movie is thin, apparently largely based on transcripts from lawsuits. Zuckerberg is a one-dimensional character, portrayed as having zero self-esteem, craving approval, and emotionally stunted. His lack of an inner censor makes him seem a bit like an overanxious nine year old.

Aaron Sorkin wrote the screenplay. I have really loved his past work. I felt he didn't have the opportunity to really shine here, because of the nature of the plot (Ken Levine disagrees).

The movie depicts an environment that is steeped in sexism. Aaron Sorkin says the screenplay depicts the reality of the story. Here's a snippet from Sorkin:
I was writing about a very angry and deeply misogynistic group of people. These aren't the cuddly nerds we made movies about in the 80's. They're very angry that the cheerleader still wants to go out with the quarterback instead of the men (boys) who are running the universe right now.
This is recent history. Another reminder that sexism is alive and well.

It's unusual when a movie comes out where computer programming is a main feature. I wonder if the nasty culture depicted will turn off more young people considering programming as a career - men and women both. After watching the movie, you have to wonder about anyone who would consider that field an endeavor worth pursuing.

Tuesday, September 21, 2010

women in graduate degree programs

Given that the title of this blog is "Female Software Engineer," I feel that I am slacking in my commentary regarding women in the software development profession.

So here's a poke at that. (Via ComputerWorld) according to the Council of Graduate Schools,
Of the first-time graduate or doctoral students in computer and information sciences, 9,021 were men and 3,249 were women (in 2008-2009).
We should all pause here to consider whether this should be disturbing to us.

Here's another factoid to give us pause:
Of the 12,288 students counted as first-time graduate or doctoral students, or new enrollees, in computer information sciences, 5,266 were U.S. citizens and permanent residents, and 5,996 were temporary residents or students on visas.
That's a whole other can of worms.

Truth is, I can't really address these questions. I seemed to have a natural affinity towards computers as a kid. I learned about them from my dad. When he bought a kit to build a computer, I had fun helping him with it. I wrote little toy programs in Basic. I can't begin to tell you why, except that I think I had a vague ambition to write an adventure game.

But I never thought about going into computer science as a career. My first love was science, and I got a degree and had a short career in that area. During my studies I had to write thousands of lines of code; it was just a tool to get my job done. It was only when I decided to leave science that I considered software development as an alternative.

So here I am, a female software developer. I can't tell you why there aren't a ton of female software developers out there. I find it hard to believe that it's nothing more than culture. I happen to be someone who is not easily repelled by a culture that wants to send me packing (and CS does not present a happy smiley face to the world). I'm also someone who doesn't seem to be as sensitive to peer pressure as your average person (I'm guessing here, but I think it's true). That means I don't care how my job is perceived by others; what matters is how I feel about it, and since I feel good about being a software developer, that means I'm comfy in my role. Also important: I place a high value on intellectual activities (where did that come from, nurture or nature?). So I look for career options that exercise my mind.

I think most people (men and women both) are more easily daunted. Whenever the question "why are there so few women in computer science?" comes up, I think that another, very relevant question hovers in the background. Why are there so few people in computer science altogether? Talk to all the people who did not choose CS as a career, and you'll find the answer to why so many women do not choose it.

And why are 50% of our computer science graduate students from foreign countries? What's discouraging Americans from entering an ostensibly lucrative career? Do you suppose it has something to do with the way that American culture devalues intellectualism?

Thursday, September 2, 2010

old code: comparing string length with 0

Today, for the 100th time (I've been counting!), I encountered this snippet of code:

 String blah...;
 if (blah.length() <= 0) {
 ...


I've been wondering why blah.length() is being checked instead isEmpty(). (Why the string length is being checked for less than zero is a deeper mystery to me).

I dug into it a little, and it turns out that isEmpty was only introduced in Java 6, way back in 2006. Our code is really that old mature!

Wednesday, August 18, 2010

get rich quick!


graffiti moneybags / CC BY-NC 2.0
Originally uploaded by boozysmurf

I just discovered Hacker Monthly, "the print magazine version of Hacker News". Today I spent some time reading and enjoying some of the lead articles. Although, they tend towards the sensational. Here's a summary:
  • Lessons Learned From 13 Failed Software Products: Sweet! This is the kind of solid, real-world information that's so hard to come by. You can find tons of information about the guys who made millions, but what about those who did not? The latter are far more interesting, if you'd prefer to learn from the mistakes of others. At first I thought the article was about 13 failures of one particular person (woah!) but they're 13 separate ventures.
  • How to Become a Millionaire in Three Years: This article is about what you'd expect. I wonder if there actually are any rich people out there who got that way via get-rich-quick schemes? The article is not a scheme, mind you, rather a jumble of stuff that may be worth doing, but probably won't get you rich. (Probably nothing you do will get you rich, let's face it.)
  • Why I Quit a Six Figure Job: Is it sweeps week at Hacker Monthly? First you can "get rich quick," and next you're reading about the guy who "quit his unfulfilling job" - and you can do it too. I can seriously see why this stuff sells the magazine, but what good does it really do? It gives you the same little thrill you get from scratching a lottery ticket. A moment of hope and wish-fulfillment, followed by a minor feeling of disappointment. I agree with everything the guy says, except there's this:
    I currently have enough assets to sustain me for about two years, and there’s nothing that I want to buy, so I don’t need any more money.
    Well, I guess if you think you'll live longer than the next two years, you might want to put a little more thought into that. Ah, youth! Seriously, who doesn't want to do this? But is there anyone out there doing it who isn't at least partly nuts?

Beyond the lead articles, there were a couple more good items about startups. There was a kind of strange article about legal issues that seemed designed to scare entrepreneurs into hiring a lawyer first thing. And then I ran out of time.

It's a mixed bag. Maybe a little too fluffy, a little too much stardust in there. But I think it's worth the time spent reading it. I'll be back, at least for a while.

Saturday, June 26, 2010

momentum, sluggish, but there

In the good news, I managed to work on my own little side project for two evenings this week. I spent a pathetic two hours in total, but it's better than nothing.

I also decided to try out JIRA to track my progress. Not that you really need a bug tracker on a one-man project. But at work we use bugzilla, and I've heard some interesting things about JIRA and wanted to try it. And maybe keeping track of things this way will help to keep me motivated.

is there a ball and chain around my ankle? i didn't think so.

I've got a coworker who feels it's his responsibility to notify me when I haven't been at my desk; as if he wants me to know that he "caught" me being absent.

Note to coworker: I don't report to you, and it's not your business if I'm not there when you come over. And by the way: I also notice it when I come over to your desk and you're not there. But I don't inform you of it. I also notice it when I come over to your desk and you're playing video games, surfing the web, or chatting with your online friends. You may get a vibe of disapproval from me, but you don't report to me either, so I keep my mouth shut about it.

In fact, it's not a rare occurrence for employees to be absent at odd hours during the day. The company does not keep tabs on the comings and goings of the worker bees, at least not so far as I can tell. Perhaps they make the reasonable assumption that if you need to be out for a few hours during the day, you'll make up for the time. This is something that I like about the company.

Sunday, June 20, 2010

test development as mindless game


Today I sat in the office, working on a suite of TestNG tests, trying to get them to pass. The procedure was iterative. Run the suite and see a load of red bars. Explore each red bar to see why the test failed. Fix the problem. Run the suite again, being rewarded with more green bars and less red bars. Wash, rinse, repeat, until only green bars appear.

As I was doing this, I noticed that I get the same enjoyment from fixing tests as I do when scoring points in a simple, mindless video game. A really boring video game, but it's got that somewhat addictive quality. It's actually mildly entertaining if you read blogs between test runs.

Tuesday, June 15, 2010

to open source or not to open source

I took another look around sourceforge, and I did see some pretty cool looking projects.

But I've been thinking about a couple of projects that I put to one side months ago. I think I'd feel more motivated to work on those again. The difficulty will be in maintaining a strict schedule. I'll have to think about how to deal with that. My problem is that I pick something up and work on it for a week, and then real life distracts me, and that's the end of it. I need a progress-tracker/reminder/calendar thingy.

Monday, June 14, 2010

why not contribute to open source?

In my last post, I mentioned that I'm missing a sense of camaraderie at work, and wondered how hard that is to come by.

Maybe I could get that feeling by contributing to an open source project.

I tried exactly once before to begin working on an open source project. I went to SourceForge and took a look around to see if anything just grabbed me. I had a couple of criteria: it had to be reasonably active, with recent contributions. And it had to be interesting to me personally, the kind of thing where I though "cool!" when I first saw it. I didn't find anything like that; but I only gave it a cursory look.

I think I'll go back to SourceForge for another look. There's got to be some project out there that can use a little help.

I wonder who contributes to the bulk of open source projects? I've always assumed they're mostly written by college students, people with the most time. Or maybe the temporarily unemployed. I guess some people actually come home from coding all day and then code half the night away, too. It would be interesting to find out the number of students vs moonlighting developers.

Sunday, June 13, 2010

i want to care, but i don't

I'm back to "why bother" mode at work. I'm finding it difficult to get into work by 9, and to convince myself to stay beyond 5. And it's not like I have anything compelling to distract me. Before heading to work, I'll be surfing the internet, maybe reading blogs or discussion boards. When I get home, I'll do some exercise, surf the internet, catch some Netflix.

A few months ago, there were a few precious days when I was working on an issue which had strongly grabbed my attention. I was so obsessed that I came back to work after leaving for the day, and stayed till after midnight to work on it. I hadn't felt so good since I was in grad school. At that time, every minute of every day felt like effort I was expending on myself, on something that was important to me, personally.

This meshes up with an RSA Animate video that I viewed recently. The animation was made to accompany a talk by Dan Pink about how (according to some study) money is an insufficient motivator, except for workers doing very mechanical, non-creative tasks (I'm glossing over the details, but that's the gist of it).

Yeah, I get that. I still need to work for a living, and in a job hunt, I'm going to pick the highest paid job I can find, so money motivates to a certain extent. But will I do the best I possibly can at that job, giving it my heart and soul, like I did when I was a grad student? Most of the time, the answer is no. Because I fundamentally don't care about what I'm doing. I know that companies buy the software that I'm working on, so it's obviously valuable to them. But I see no value in the product (in fact I kind of hate it).

In addition to that, I've lost the feeling of "tribe" that I felt I had in grad school. At that time, I felt like I was part of a cohort with similar lofty goals: contributing to science, discovering new things. I'm a cohort of one where I work now. There isn't a sense of trust. People look at you sideways if you say the wrong thing, and you never know exactly what will sound wrong, so you don't say much at all. Ask for help? If you do that, you're "bothering" people, acting like some junior newbie.

And despite all that, my current job is really not so bad. My coworkers are fine people. There's just something missing. I should probably leave, to look for that sense of team elsewhere. But I kind of wonder if it exists. If it does, it's probably so rare that it would be very difficult to find. Maybe my best bet is to just keep saving till I can be done with working for a living.

Friday, May 7, 2010

java is verbose

a mountain of code is the worst thing that can befall a person, a team, a company - Steve Yegge
So, is Java verbose? I hadn't considered it before reading Steve Yegge's post. And I didn't really get it, initially. But I've been looking at my code differently since then. Recently I ran across another example.

I wanted to write a switch-case statement for about 10 different String possibilities. Last time I checked, you couldn't do this, but I hunted around to be sure. It turns out that you will be able to do this in Java 7. But I couldn't do it now.

One alternative is to use numerous if-then-else lines to sort through the possibilities. I much prefer switch-case; I find it cleaner and easier to read.

If I wanted to stick with switch-case for this example, I could go with one of several workarounds, all of which produce excessive code which ideally should be hidden from view. Probably the most "proper" way of doing this would be to create an enum listing all the constants. Talk about extra code just to make a decision based on a String value!

In the end I went with if-then-else. Ho-hum.

Thursday, April 29, 2010

do women get paid less because they're nicer?

That's what Nancy Folbre wonders in a recent NY Times blog post about supersized executive compensation. She says:
Some personality traits — like conscientiousness — are likely to increase productivity. But other traits, including Machiavellianism and aggressiveness, can increase earnings via a more direct route. They can increase both efforts to demand higher pay and propensity to lie, cheat and steal.

Men score significantly higher than women on Machiavellianism and aggressiveness, which may help explain why 15 times as many men as women were in prison in 2008.
I've wondered if women tend to get paid less because, on average, they're less self-centered, egotistical, and more realistic, than men. If you look at your salary and always think you're underpaid, you'll constantly engage in behaviors that seek to raise your pay, and some of those will be successful, whether or not you "deserve" it. I think men tend to do that more than women. I emphasize that I'm talking about averages. If only a small fraction of men behave this way more than women do, it could skew salaries in favor of men quite a lot. To be fair, I've known men who, to my knowledge, took no active steps to increase their salary, since they felt like they were paid plenty as is.

I suspect a lot of this has to do with the way that men in our society are still expected to be the main breadwinners in a family. A man with a family to support is probably more driven to get higher pay than a women who brings in secondary income. Also, I suspect that bosses are more likely to give male heads of households higher salaries because, in the back of their minds, they think that he "needs" it more. I wish I had some statistics to compare the salaries of single men with married men.

Friday, March 26, 2010

anonymous blogging is difficult

I started this blog because I had a bunch of things to talk about, and also things that I wanted to read about, which I couldn't find out there.

However, I'm finding it hard to blog. I keep getting the feeling that if I mention some specific incident, somehow, someone at work will read the post and recognize me. I know it's unlikely, but it's still an uneasy feeling.

Tuesday, December 22, 2009

Java inner class peculiarity

I recently ran across an obscure Java factoid that will probably never come in handy. I found it when researching PMD rules.

Suppose I have an inner class as follows:

1 package com.examples;
2 
3 public class Outer {
4 
5   public void test() {
6     Inner ic = new Inner();
7   }
8 
9   public class Inner {
10     private Inner() {
11     }
12   }
13 }


Even though the constructor for the inner class Inner is private, a package-access constructor is created by the compiler as a side-effect when you call the private constructor at line 6 in the test method.

There are a couple of ways to verify this. First, you can just look at the generated class file Outer$Inner.class. You'll find two lines, one for the private constructor that you have written, and another which is a "synthetic"* constructor:

..
private Outer$Inner(com.examples.Outer arg0);
..
synthetic Outer$Inner(com.examples.Outer arg0, com.examples.Outer.Inner arg1);


If you are not convinced, you can run through the constructors using reflection, as shown in this example class:

1 package com.examples;
2 import java.lang.reflect.*;
3 
4 public class InnerTester {
5   public static void main(String[] args) throws ClassNotFoundException {
6     InnerTester.printConstructors("com.examples.Outer$Inner");
7   }
8   public static void printConstructors(String str) throws ClassNotFoundException {
9      Class c = Class.forName(str);
10     Constructor[] cs = c.getDeclaredConstructors();
11     for (int i = 0; i < cs.length; i++) {
12       System.out.println(cs[i].toString());
13     }
14   }
15}

Running this program produces two lines of output:

com.examples.Outer$Inner(com.examples.Outer,com.examples.Outer$Inner)
private com.examples.Outer$Inner(com.examples.Outer)


If you comment out line 6 in Outer.java and recompile it, the output of this program is just one line:

private com.examples.Outer$Inner(com.examples.Outer)


You can look at the class file, Outer$Inner.class, and check that the package access constructor is gone, there, too.

There's a rule warning against calling a private constructor of an inner class like this, because the constructor is effectively given package access. PMD suggests using a factory method instead of creating the instance directly in the outer class, or just making the constructor public, to solve the problem.

I can't imagine any situation in which this would be a problem unless you're using reflection to call constructors.


* The Sun tutorial on Java reflection has a brief discussion of synthetic (compiler-generated) constructors.