Weighted Companion Cube-o-lantern

I'm not the most creative person in the world, but every once in awhile I try. We were carving pumpkins for family night on Monday and I was trying to think of something besides the regular old triangle-nose-smiley-face-with-two-teeth pumpkin. Alison suggested I do the cube. She was referring to the weighted companion cube from a game called Portal in which you weave your way through levels of physics puzzles with your portal gun and anything else that comes to hand.

The weighted companion cube is one of the objects you use to get through one of the later levels and has a hilarious back-story to it. Anyway, here's what the cube looks like.

companion_cube.jpg

And here's my initial drawing on paper (Mr. Turner my 7th grade art teacher who often caught me tracing should be proud).

draft-cube.jpg

Here it is on the pumpkin after cutting the outline. Pretty happy with it at this point.

cutout-cube.jpg

And the finished product. Not quite as impressive as I'd hoped, but maybe someone out there can appreciate it.

cube-o-lantern.jpg

Read More

Notes from the Bedside

I love the complexity of what I do at work, but I don’t particularly enjoy it when it keeps me awake at night.  Sometimes I find myself laying in bed for an hour or two at a time, in the middle of the night, simply because my brain just won’t turn off.  I’ll find my thoughts looping through different scenarios and challenges I’m facing.  During this time of absolutely zero distraction, however, I find that I can often achieve a state of mental clarity that allows me to see solutions that I simply wouldn’t come up with during the daylight hours.

When that happens I think, “I have to remember that in the morning,” but the truth is that it rarely happens.  Until now.  Not that I can still remember it in the morning, but I’ve taken to writing them down at night.  On the night stand next to my bed, I have a notepad, a pen, and a small pen-light so that I can write down the thoughts that keep racing from one side to the other.

The two-sided benefit is that I don’t have to remember anymore, but it also helps me get back to sleep.  My theory is that because I want to remember these things, my sub-conscious keeps bringing them up, so I have trouble actually getting it out of my head.  Once it’s written down, my sub-conscious decides it can take a rest, which allows the rest of me to get back to sleep as well.  Psychology isn’t my strong point however, so feel free to call me out.

Often the light of day reveals that my midnight brilliance is more closely associated with madness, but more frequently, it proves to be just the solution that I needed.  If you have a similar problem, I’d recommend a notepad and pen at your bedside.  You might just sleep better at night.

P.S.  For those who prefer electronic notes to paper ones, I’ve got a geek crush on Evernote.

Read More

We The People

“We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defence, promote the general Welfare, and secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America.”

Read More

Howto: Buy A Home – Part 2: Making An Offer

In Part 1, we talked about finding an agent, getting pre-qualified, and finding a home.  Now we’ll talk about what to do once you find a few homes you want to walk-through.

Step 4: Walk-throughs

So give your agent a list of homes that you’re interested in.  Your agent has likely found a few homes to show you as well.  The more you can see, the more informed your decision will be, so don’t shy away from looking at lots.  My advice during this stage is simply to know what you want, and know where you’re willing to compromise.

Men and women have different ideas about what makes a good home.  I wanted a house that was wired for network, Alison was more interested in the neighborhood.  I was impressed by vaulted ceilings and large rooms, while Alison looked into school districts.  We both wanted a good sized yard and a master bathroom with a tub and a walk-in shower.  Alison wanted a jetted tub, and I couldn’t care less.  We both wanted something that was built fairly recently (within 10 years for us), one that was in good condition, and (obviously) one within our price range.  Talk through this together and know what you absolutely must have and what you’re willing to sacrifice.

Your agent will schedule time to walk through the homes.  It was our experience that most people will have an excuse to be gone when you come by, which is nice because you can talk about the things you like and don’t like with your agent as you go through.  Your agent is legally bound not to share financial information about how much you can afford, etc. with anyone else.  There’s a paper they sign for this, so make sure they do, but this allows you to tap their experience and opinions as well.  Trust me, they’ve seen a lot more houses than you have.

If the house is not empty when you go through, “just play it cool boy, real cool.”  Don’t wander around talking about how amazing things are, how much you love it, and how much better it is than all the other houses you’ve seen so far.  This will make it more difficult for you to get the seller to agree on a lower price =)  And no matter how much you want the home, you want to get it for the lowest possible price, so observe this rule.

Hopefully you can find the house with everything you want, but don’t hold your breath.  We gave up the master bathroom for the big-fenced in back yard.

Step 5: Making An Offer

OK, so now it’s time to get serious.  Up to this point it’s been all fun and games, but now you’ve got to get down to business.  When you’ve decided on a home you want to make an offer on, let your agent know.

The actual process is fairly painless.  Your agent will likely have a canned contract of some kind and you’ll spend an hour or so filling in all the required details, but more importantly talking through the actual offer you’ll make.  How much below asking price will you offer?  Are you paying closing costs, or is the seller (keep in mind that the amount in the contract is an estimate only, and the seller is bound to the estimated amount, not the actual cost)?  Do you want a home-owners warranty?  Who will pay for that? How long does the seller have to make an official response to your offer?

What won the deal for us - I think - was how fast we were able to close.  This was our first home and we’d been renting, so we didn’t have another house to sell, which simplified the process for us.  The seller had just had a job transfer and was looking to get out as fast as possible, so we offered them a quick closing date.  Keep in mind that there’s a lot to take care of pre-closing, so don’t move too fast.

Another thing to keep in mind is that as a buyer, you’re only committing to buy the house if you like it.  Final acceptance is hinged on a home inspection, more walk-throughs, and any other number of conditions you want to write in.  You can structure these contracts, so that if you change your mind at any point, you can back out.  You wouldn’t do this for just any reason because you’re honest and honorable, but it gives you some peace of mind.

Once this is done, written, and you sign it, then your agent contacts the seller’s agent to let them know and faxes them a copy of the written contract.  Now the negotiations begin.

Step 6: Negotiations

If you’re anything like me, you’ll love having an agent for this part, because they’re the ones that get to play hardball for you.  Also, we mentioned up front that agents don’t get paid until the deal is made and papers are signed, so your agent at this point in time has a slight conflict of interest and may no longer be as interested in getting you the best deal, but rather getting you to sign.  Once the offer is made, they are starting to taste that 3% of the purchase price, so they may start to push you in a direction you don’t want to go.  Just remember that as addendums roll in and things change from the way you originally laid it out.  Listen to your agent, but take thing with a grain of salt and if you don’t like something, don’t agree to it.

This was not our experience because we observed rule number 1, we had an agent that we knew and trusted.

Anyway, once the seller has your offer, they have the right to accept, reject, or counter.  In today’s’ market if they don’t like it they’ll counter, but everybody knows it’s a buyer’s market, so at the moment, things are in your favor.  The key to this step is finding a middle ground where everybody gets a good deal.  If you can’t do that, then you better hope your agent is better at hardball than the other guy.

Any change to the contract will be added as an addendum and signed by both parties.  Maybe they want a higher price.  Maybe they won’t pay closing costs.  Maybe the close date is too far out or too soon.  In our case, maybe they are using a relocation company to move and there’s a ream of extra paperwork to do.  Also in our case, the close date was actually too soon, so we worked out a deal where we own the home and they rent from us for a few weeks until they an get everything moved out.

In any case, keep copies of everything you sign, and work out the best deal you can.  When you emerge from negotiations, then everybody is under written contract.  Now you can go blog that you’re buying a home and you can start planning the move.  It’s not a done deal yet, but you’ve clearred a major hurdle.

Now you need to get the home inspected.  You’re already pre-qualified, but you need to obtain financing.  You also need to get hazard insurance.  I’ll cover these topics in Part 3.

Read More

Howto: Buy A Home – Part 1: Finding A House

Home For SaleSo my wife and I have been in the process of looking for homes for the last 3-4 months.  We found one that we liked, and are now a few days away from closing, but we learned a few things along the way, and I thought that perhaps some other first time home buyers might benefit from it.

Step 1: Get a real estate agent that you trust.

Sellers pay a percentage of the sale price of the home to your agent (buyer’s agent) and their agent (seller’s agent).  This means that you’re not paying for your real estate agent.  It also means that your agent doesn’t get paid until you buy/close on a home.  This is a potential conflict of interest, so take things with a grain of salt.

Dan Cavan is a neighbor and friend of ours, and also happens to be a licensed realtor.  He’s been an invaluable aid for us during the process.  If you’re in Utah/Salt Lake Valley area, look him up.

Step 2: Get Pre-qualified for a Mortgage Loan

This step is fairly simple.  All potential lenders will run you through a common application which checks your credit against the 3 credit unions.  This process will give you a lower score than when you check it yourself through Annual Credit Report, because those credit unions actually keep two scores.  One’s a consumer score (the one they give to you) and the other is the lender score (the one they give to mortgage lenders and brokers).

There’s nothing you can really do about your credit score in the short term, and I’m not the person to tell you how to boost it in the long term.  You just need to be aware that there are two scores, so don’t freak out when it comes back lower than you thought it was.

Anyway, you tell this potential lender how much home you want to buy, they’ll run you through their automated application process and it’ll spit out a number that tells you if you can actually afford that much home.  This becomes the maximum amount you can pay, so don’t even bother looking at homes that are much more expensive.

Seller’s always list prices higher than what they’ll actually accept, so you can go look at some that fall slightly outside your range, but don’t get your hopes up.

Step 3: Find a few homes you like.

While waiting around for a raise and saving money, Alison and I did this for awhile.  There are lots of resources to find homes, and I suggest you make use of them all (well at least the internet ones).  Your real estate agent can recommend several different methods for finding homes.  At this point in the process, they’re your best friend, so pay attention to what they have to say.

The two most common ways to list a home are “By Owner” and “By Agent”.

If the home is For Sale By Owner, it most likely will not have an MLS number, and is thus harder to find.  For Sale By Owner is one site we found for sellers to list their homes.  If you’re not using the net, then start scouring classified ads and driving different routes to and from work, stopping off at houses you see for sale.  It’s rather inefficient, but doable.  I don’t recommend it.

If the home is for sale by an agent (listing agent/seller’s agent) it will have an MLS number.  MLS stands for Multiple Listing Service, meaning that it can be listed in multiple locations.  Most of the sites I’ve found have been specific to a geographic location, so you’ll have to hunt around, but if you’re in Utah, we loved BlueRoof.  It lets you hone in on a section of a Google map, then put in a bunch of criteria, then map the homes that fit.  Utah Real Estate was another site that proved valuable during our searching.

In today’s market, buyer’s can afford to be picky, so be picky.  Decide how many square feet you’d like, how many bathrooms, how many bedrooms, how many floors?  Do you want a yard?  How big of a yard?  How much can you afford?

Alison and I kept track of likely homes in a Google Doc and before Bryson was born would take occasional drives with Abby to do drive-bys on the homes.  Just look at the neighborhood and house and see if you want to walk through it.  Some you will and some you won’t.  Pictures on MLS listings are obviously designed to portay the home in the most attractive light, so don’t be surprised when the house doesn’t look as nice in real life as it did on the internet.

Eliminate the homes that you’re not interested in, and make note of the ones you are.  We narrowed our list down to about 7-8 homes that we considered the very best, then contacted our agent to setup appointments to walk through.  Your agent will also find what kind of homes you’re interested in and do their best to find homes that match your criteria.  Remember, they don’t get paid until you buy a home, so they’ll do their best to find you ones that you like.  We didn’t utilize this service because we’d been looking for several months before we retained our agent, but it’s there and it’s another resource to help you find a home you love.

Part 2 will talk about the walk-through and making an offer.

Read More

Howto: Secure VNC through SSH Tunneling

So the my web server sits in the baby’s room at my house. It sits in the corner, and the only thing plugged into it is power and network. This is fine for just about everything that I do, but every once in awhile, I have a problem that requires a user interface. VNC to the rescue. Ubuntu comes with Vino, a little VNC Server, pre-installed. You can go to System > Preferences > Remote Desktop to set a password, turn off local user verification, and turn on desktop sharing (as opposed to just viewing).

Then you find your favorite VNC viewer, and type in the network address of your server. This works fine as long as you’re on the local network, but what happens when you’re not on your local network. You could always forward the VNC port through your firewall (port 5900 by default), but VNC is not a secure protocol. Any password typed in would be transmitted in plain-text, and anyone in the world could intercept, and then control your computer, no hack attack needed.

This is where SSH comes to the rescue. SecureSHell (or SSH) creates an encrypted tunnel between two end-points over the network, and gives you a shell (command prompt for you windows folks) to the remote computer. It’s been around for years, it’s secure, and it continues to prove it’s worth as people come up with more and more uses for it. Tunneling is an example of this.

You can set SSH to accept traffic from a certain port on your computer, send it through an encrypted tunnel, and then end up at a certain port once it gets to the other side of the tunnel - SSH Tunneling.

So when I want to get a graphical interface to my server at home in my office, I can simply open my own shell (Windows users can use Putty) and type

ssh -L 5900:localhost:5900 username@remote.server.address

where the first “5900” represents the local port number and the second represents the remote port number.

You are then prompted for a password like any other SSH connection, and then logged in. Then you simply open your favorite VNC Viewer (I use VNCViewer on my Mac, Chicken of the VNC had serious speed issues) and connect to localhost. Your traffic which would normally be destined for port 5900 is forwarded through the tunnel and instead goes to port 5900 at the other end of the tunnel.

You’ve now got secure VNC.

Read More

Howto: Start Subversion at Boot on Ubuntu

I don’t know if I’ve extolled the virtues of Ubuntu on this blog yet, but they are many. They are, however, not the topic of this post. Every once in a while, I like to try different operating systems on my server, and at the moment, I’m just coming back to an Ubuntu server after a brief fling with Windows Server 2003.

On the list of things to do after install was to get Ubuntu to start the svnserve daemon at boot. I’ve taken the time to look this up enough times that I figured I’d just add it here. This procedure holds for anything you’d like to do at boot, I’m simply running my svn daemon.

Step 1 - Create your script. Simply create a new file (I called mine svnserve) and type the command you’d like to run

cd /etc/init.d/ # (thanks Alfonso) sudo touch svnserve sudo vi svnserve svnserve -d -r /usr/local/svn/repository_name

Step 2 - Save the script in the /etc/init.d/ folder

Step 3 - Make the script executable sudo chmod +x svnserve

Step 4 - Add the script to the boot sequence sudo update-rc.d svnserve defaults

That’s it. When you’re done you should see some output similar to

Adding system startup for /etc/init.d/svnserve ... /etc/rc0.d/K20svnserve -> ../init.d/svnserve /etc/rc1.d/K20svnserve -> ../init.d/svnserve /etc/rc6.d/K20svnserve -> ../init.d/svnserve /etc/rc2.d/S20svnserve -> ../init.d/svnserve /etc/rc3.d/S20svnserve -> ../init.d/svnserve /etc/rc4.d/S20svnserve -> ../init.d/svnserve /etc/rc5.d/S20svnserve -> ../init.d/svnserve

Read More

Howto: Remote Root Access to MySql

Update: This post has garnered a lot of attention.  So I’d like to clarify up front: this article is not about hacking into other databases.  This is about configuring a server you own so that you can access it from a remote machine on the same network.  It is completely insecure and should never be used for production deployments.

Very quickly, another thing that I typically like to do on my server boxes is allow root access to my Mysql database from remote computers. I don’t forward the port through my router and I use a very secure password (doesn’t everyone?). I don’t want to create a security risk, I just want to connect to the database from other computers around my network - particularly from my laptop.

Again (like most of my instructions) these instructions are for Ubuntu - currently Edgy Eft.

sudo apt-get install mysql-server

Ubuntu installs Mysql at /etc/mysql/ by default. Now we need to set a root password.

mysql -u root mysql> SET PASSWORD FOR 'ROOT'@'LOCALHOST"

= PASSWORD(‘new_password’);</code>

Now while we’re still here, we’ll create a new HOST for root and allow root to login from anywhere.

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'

IDENTIFIED BY ‘password’ WITH GRANT OPTION; mysql> FLUSH PRIVILEGES; mysql> exit</code>

Thanks to Thom for the Flush Privileges comment.  I think it depends on other settings in your MySQL setup, since I didn’t have to, but just in case, I’ve added it here.  We’re almost done now. We just have to tell Mysql to allow remote logins.

sudo vi /etc/mysql/my.cnf

Out-of-the-box, MySQL only allows connections from the localhost identified by the IP Address of 127.0.0.1.  We need to remove that restriction, so find the line that says

bind-address = 127.0.0.1

and comment it out. That’s all there is to it! Now get your favorite MySql client and start developing.

Read More