Paul Geromini

To content | To menu | To search

Wednesday 29 July 2015

My First AMV

It is true here it is spoilers and everything: view here, download here.

For a while now I have been thinking of doing one of these and I mentioned it as a goal for this year. I recently finished the main anime adaptation of Legend of the Galactic Heroes and it was very disappointing to me the series has such little visibility amongst English anime viewers. Granted its age and its MIA English localization probably play the largest role in its lack of popularity. That said I wanted to do a little something for a show more people should watch, to that end my first AMV.

For those not familiar with the format, an AMV is a series of anime clips set to music. Sometimes they tell a story, or showcase some action, or are just funny. I wanted to make an AMV that covered roughly the events of the first half of the series (episodes 1 - 53 to be exact). I did not want a flat retelling of events though so I themed it or focused it around the relationship between Reinhard (blonde hair) and Kircheis (red hair). To those not familiar to the series, they are childhood friends who set out to conquer the galaxy.

For the music I wanted something that fit the feel of the series. The show makes extensive use of famous classical music, mostly Beethoven. While not classical I went with Time To Say Goodbye, sung by Sarah Brightman and Andrea Bocelli. I like the mournful nature of the song and the interspaced use of English. I did not want to go with a poppy contemporary piece as it would be jarring with the visuals of the series.

Scene Breakdown

Now that I have given a brief summary I am going to provide some commentary on parts of the AMV.

00:00-00:22, I wanted to start big to give a good scale the series works with. A shot of the galaxy to begin with and with each strum I narrow the shot until we focus on the ship of our two main characters and then the characters themselves. The preceding shots show a vast battle taking place until we fade out to the end result of the battle, lots of ship wreckage. Not a huge fan of the fade, but it does its job. These scenes are mostly from early episodes so we see a very young Admiral Reinhard.

00:25, Shot of the Odin, the capital of the Empire. Its not important that you know that, but series fans probably recognize it.

00:25-00:31, I wanted to establish that Reinhard is important within the Empire, but still not the leader. The scene shows him being honored for the battle we saw in the beginning.

00:32, Start of the flashback. Need to establish the long relationship between Reinhard and Kircheis that started when they were young.

00:38-00:46, This scene with the bully helps establish both Reinhard's aggressive nature and how Kircheis is always there to help Reinhard out. The rock beating scene also nicely matches up with the music. At times I think it is a bit humorous, but I resisted changing it.

00:47-00:58, These are some scenes set after the bully time frame, but still when Reinhard and Kircheis were young. I wanted to convey Reinhard ambitious nature and I like the imagery of the gun shooting into space that fades into his ship in full action. As you can tell I like fades. There is an important subplot to the series involving Reinhard's sister that these scenes are important to, but it is not important for the story I am telling.

00:58-01:12. Easy call here to tie Kircheis's death to the first "Time to Say Goodbye" lyric. It is perhaps a bit quick setup after the flashback, but it is really important that death and lyric are timed up well. This is a pretty big spoiler for people who have not seen the series and arguably the most important event in the entire series.

01:22, I went back and forth on including this somewhat gratuitous death clip. It is a bit jarring, but I think it works. Kind of quick flashback that Reinhard is contemplating.

01:25-01:43, Second flashback showing a bit more of Kircheis interacting with Reinhard and doing his own thing. As a side not we can really see the jump in quality across some of the early episodes in these flashbacks. After the series came out some episodes were remastered so the quality can be all over the place.

01:45, Its debatable if we need this shot of just the gravestone as the earlier scene basically covers what we need to do, but I like lingering here a bit.

01:49, The locket is a very important item to the series so I had to get a shot of it here. You can see it also includes his sister who is important to the story, but I ignore here.

01:50. Kircheis in the stars may be too cliche, but its from the series and bookends this section of the AMV nicely.

01:53-01:56, The music changes and I need to jump a bit chronologically and show how Reinhard has increased in power in the Empire. The scenes with the crowd accomplishes this.

01:57-2:01, This scene is a bit clunky. I want to convey again how in charge Reinhard is and setup the rest of the AMV, but we linger, perhaps too long, on planning screens.

02:05, I love this shot of Reinhard and all the ships engines. As a side note that is Mariendorf next to him. She becomes pretty important around the half way mark of the series.

02:06-02:13, This is the planet Fezzan, a planet not in the Empire nor the Free Planets Alliance (FPA). The two major antagonists in the show. It is one of the first planets Reinhard takes on his campaign. It is a relatively quick battle which I used to convey the size of Reinhard's fleet in action.

02:14-02:19, Some of the most well drawn scenes in the series. Bookends Reinhard's conquest of Fezzan.

02:20-02:25, Maybe the cheesiest part of the AMV. That is an actual scene from the anime so I went with it. Also you can see the locket again which is super important.

02:26-02:45, Lot of ships again. Start to show some large battles with the FPA, but nothing decisive.

02:52-03:19, Again we return to Reinhard's ship and then show his decisive involvement in a battle. Lots of FPA ships blowing up climaxing in a nice large explosion. I cheat a bit and take a lot of battle clips from across the series, but we need a lot of different shots here and frankly a lot of these battle shots look the same.

03:20-03:23, Good scene to show after Reinhard's great success. You can see how lonely he is on the empty bridge and it contrasts well with the first shot of him and Kircheis from the beginning.

03:24, This is Heinessen, home planet of the FPA, after being captured by Reinhard.

03:26-03:27, This is a shot of Yang Wen-li, Reinhard's counterpart in the FPA. He is super important, but not covered at all in this AMV. I wanted to at least give him a quick showing and I think these two rapid beats help introduce him as the adversary nicely.

03:28, Real cool shot of both of their massive fleets converging.

03:28-03:41, Start of the battle, lots of fireworks to show the scale, but nothing to show who will win.

03:41, Maps again! Its hard to convey how the battle is going so I went with maps (which the series likes using too) to show things going against Reinhard. This shot also has Yang in the middle.

03:44-03:51, Might be asking too much of a person not familiar with the series, but I need to convey the battle turning in Yang's favor. Showing the map of a fleet disintegrating, FPA ships firing, and a lot of Empire ships exploding hopefully conveys this. It might be difficult to get if you cannot distinguish the different sides ships at this point.

03:54, Great scene of the Empire ships moving to defend Reinhard's ships. Hopefully conveys how desperate the battle is going.

03:55, Another really excellent scene of Reinhard having the ships guarding his front explode.

04:01, And here we are end of the AMV. This shot is the best in the series and what motivated me to do this AMV. I love the giant imposing FPA ship bearing down on Reinhard. Its awesome and in my opinion, a a great ending with the sudden cut to black.

The thing about that ending scene is, its a massive cheat. The very next second that ship gets blown out by the timely arrival (in true anime fashion) of Admiral Muller's fleet. I admit its deceitful, but I really just wanted a nice cliffhanger to end on to motivate people to watch the series.

Tools Lets wrap up with a quick tool discussion. All of my editing was done with Sony Vegas 13. I like it a lot since its relatively simple to use. I am sure other editors like Final Cut are just as good, but I have been fiddling with Vegas for a bit now and I know how to do what I want. The only real issue I had was the video sources. I was using files in MKV format and Vegas cannot handle those files. I had to convert each episode I wanted to use from MKV to MP4. I did this using Handbrake which is dirt simple. It was a tedious work around, but it got the job done. I will leave you with a shot of all the clips in the editor. You can see I like to have a lot of clips lying around so I can mix and match and see what works.

LOGH AMV Editor

Monday 1 June 2015

The Grand Unified Plan

I recently mentioned the grand plan I will be pursing these next few years in my yearly Oracle post. I want to provide a overview of that plan in a bit of detail. The main goal of this plan is to retire AS SOON AS POSSIBLE. This is not because I hate work, but because I want to have the time to pursue other projects. To provide some context to that idea, I like to think of my life as split into three portions:

1. Ages 0-23: Education, the time of my life when I was mostly focused on learning. Learning how to be of value to people who know me, future employers, and to the world.

2. Ages 23-40: Work, the time of my life when I get my living and finances in order so I can retire early. The learning has not stopped, but my focus is more on producing things of value. Either for a company or for people who know me.

3. Ages 40-Death: Retirement, the time of my life when I can take my accumulated knowledge and produce something. I hesitate to call this the "Legacy Building" period, but I do want to use the time for some long spanning works and projects.

Now how can we achieve that? The short answer is, predictably, lots of money. Right now I have started a small investment with Betterment, an online investing service. I give them money and the make more out of it. Investing (either through Betterment or something more hands on) is the key here. Now, I am going to start the math talk explaining how this is going to work. If that sort of stuff bores you skip the summary section.

If you look at some of Betterment's returns you can see they averaged 11% a year. Lets round that down to 10% to make calculations easier. That means if you had $100 invested in 2013, when 2014 starts you have $110. Now if we scale that out to say half a million dollars, 10% of that yearly would be $50,000. Plenty of income to live comfortably. So the goal is have half a million dollars invested as quickly as possible.

Now that we have a number, how long will it take to reach it? First we have to consider expenses. I have got two big ones in the future: a house and a new car. The house will probably be around $260,000. This number represents the remaining mortgage including interest and not the total cost. I arrived at this be assuming a $100,000 down payment and a loan with a 3.75% interest rate which I predict paying off in under 15 years. I predict the car will cost around $15,000. Since some sources estimate your car will last on average 10 years, it seems prudent to budget for at least one. So now we pushed the goal back a bit as it is $775,000 (rounded to $800,000). This represents the predicted expenses ($275,000) and the necessary investment ($500,000).

Based on my records from last year I spent $9230.94. I do not expect that to change greatly, but let us round that up to $10,000 a year in personal expenses. I will also be on the hook for around $4,000 in housing taxes and $1,500 in heating costs. So that puts us at around $16,500 in yearly expenses. Let us round that up to $20,000 to make life easy and account for unforeseen expenses somewhat.

Now what about income? If I take my current salary, add in a 6% raise each year (the average so far), and then calculate my total income after 10 years that puts me at $995,990 or almost a million. However, this is before taxes and expenses. If I subtract my average tax burden (26% of income) and $200,000 (my expenses over 10 years) I get $540,000 to put towards my $800,000 goal. Close, but not there yet. If we do the same calculation out to 15 years we get $1,761,362. Now if we subtract taxes and expenses for that period we get almost exactly a million (total income: $1,761,362 minus taxes at 26%: $457,954.12 - minus expenses for 15 years: $300,000 = $1,003,407.88). That puts me well in the range of my goal with plenty of buffer. Now if you look at the above age range and know I am 25 this year you can see how in 15 years I will be 40 and just hitting the retirement age and retirement investment I want.

The best part of this is I suspect the numbers will get even better. If you look at the goal, some of that is just lost/non-interest generating cash (the house and car or $275,000), but the rest goes into my investment account (some $500,000). And that amount will grow year to year, so if every other value were to remain consistent I would get to my goal earlier than predicted since every one of those dollars contributed to the $500,000 goal will be working for me earning cash.

Now it is a bit dangerous to assume all these numbers will turn out as expected. It does seem unlikely to see a 10% growth on investments each year or that my income will rise each year, despite some anecdotal evidence. It could very well fall. You will notice I took some cheats here, like assuming my expenses, taxes, etc stay constant. You should not see this plan or a prediction, but as a guideline with milestones. I have an objective and I have a path to get there. I know the numbers I need to hit on that path, and as I walk it, I can adjust as the path unfolds.

Summary

Through low spending and high savings I hope to have enough invested in 15 years to live of the interest and pursue fanciful goals. I cannot predict the future, but hopefully being thrifty will get me to a retirement earlier than the US average of 62.

Sunday 24 May 2015

Two Years at Oracle

Today is the second year of my full time employment by Oracle. Studious readers will remember a similar article exactly one year ago on this day. There is nothing particularly important or auspicious about this day, but it is a good milestone to reflect upon the previous year.

What Did I Learn This Year?

1. Buying a house is hard when you are picky. At this point I have looked at around 20 houses or so. I have come close to making offers on two of those, but ultimately decided against it. The benefit to this is a growing down-payment which will make the purchasing easier. The downside is a a kind of purgatory where I wait for something to happen. I am going to give it a few more months and then consider more seriously a place less optimal than I would have liked. The thought of another winter, house less is decidedly unpleasant.

2. I do not have to do everything. For a few month I have been helping to oversee a project at work. It has been tough, but I am growing more accustomed to delegating things to be fixed instead of just doing myself. It is tempting to try and be the guru who knows and does everything, but this leaves no room for the team to grow and become empowered themselves. It also serves to centralize knowledge which can make maintainability troublesome in the future.

3. I have a better idea of my long term life plans. Expect an article on this to come, but I have a much better sense of how I want my career to go and how (hopefully through good planning) I can retire early and pursue a second less profitable career.

4. Investing is a big large monolithic subject, but easy to do once you clear that first hurdle. I started a small account with Betterment and I am up $10 last I checked. With continual investments every month this service (or some other endeavor I run myself) will greatly contribute to my long term goals.

5. As you remember from last year I wanted to find old friends who I had been out of contact with for some time. The good news is, in this digital age, finding old friends is easy. The hardest part is starting to talk to them. It is a lot like pulling out the knife from deep in the peanut butter jar, slow but once you finish you get a sweet reward. I have had some great success rediscovering what made us friends before.

What Am I Looking To Explore This Year?

1. Interested in doing some more metal working projects. With the great success of my foundry I want to try actually making something useful with it. Maybe a butter knife. The real problem now is making a good mold so my research will focus on that next.

2. More puzzle hunts. We have done two so far with a vast increase in success with the second one compared to the first. Hopefully we can do some more and maybe even finish one.

3. Film projects of the small variety. I really like AMVs so I want to try making a few to see how difficult they are.

4. Improve my technical skills. I said I would do it last year, and I am recommitting to that again. I learned a lot of web2.0 frameworks this year such as knockout, angular, some of the new java 1.8 enhancements (like lambdas), and a fair amount about our build tools like ant and rpm.

Things I Failed at This Year

1. Buying a house.

2. Doubling down on costuming. I did do a little work making a helmet, but I was nowhere close to making the two costumes I thought I would. I am just less interested in this than I used to be.

3. Historical reenactment. I did nothing in regards to this during the year. It is on hold until the house thing is settled.

4. Contacting my old friends. I had some success, but there are still some who elude me.

Overall, an enriching year. 6 more years to retirement? 16 seems more realistic.

Saturday 18 April 2015

Melting Metal:Attempt 2

When last I attempted this I was met with a decided lack of success. Whether it was a faulty microwave or a generally bad plan I will not pass judgement. Luckily, I was groomed to be stubborn and one failure was not going to dissuade me from my dream of controlling intense heat.

Thus we arrive at attempt two (try one):

What are we looking at here? My very own homemade foundry with a hairdryer for a bellows. Instructions courtesy of this youtube video. The general idea here is, put a bunch of coals in the foundry, turn on the blower, and hope it gets hot enough. The results were again disappointing. After about half an hour the foundry was at about "hamburger grilling" temperature and the zinc block still resolutely solid. I needed to get to, "melt your hand" temperature and that did not happen. Another failure, but an instructive one. This leads us to attempt two (try two):

For the first try with the foundry I had not filled it with coals, using only a conservative six coals or so. This time I could really amp the number up so I packed in as many as I could which was 21. I accomplished this by reducing the size of the crucible from a stainless steel pet food bowl to a tall shot glass. I also significantly increased the air flowing into the foundry by replacing the hair dryer with a leaf blower. The results were impressive:

And this was on the low setting. It is hard to see clearly, but there is a very hot glow from the foundry this time. The difference in heat and noise was immediate when I turned the blower on. With the hair dryer, the heat was tepid at best. With the leaf blower there was very much a fiery roar. Looking in from the top, the coals were glowing with heat within a few minutes. A marked difference from last time. The heat pouring out the top was, in the words of a person who never looked at a thesaurus, very hot. Worryingly, I found a part of glass blown out from the foundry. Regardless, I let the whole thing run for about ten minutes. After I turned off the blower, the sound died down and I took a look. Upon removing the lid I came to a few conclusions:

1. The coals looked like moon rocks.

2. I could not find the glass.

Digging around a bit I eventually found what was left of the glass:

Yes it seems I put too much faith in the $2.09 Walmart glass purchase I had made. Looking online it says glass does not melt until 1000-1500 degrees, but it could become malleable around 700-900 degrees. Since 787.2 degrees is the melting point of zinc, the metal I was trying to melt, this was not good. Lesson learned the hard way, do not use a glass crucible next time. What of the zinc though? I too was perplexed until I dug to the bottom of the foundry and saw it had pooled at the bottom as a liquid. Yes, sweet success never felt so hot. Moving quickly we were able to pour it into a coffee can and then to the mold. The liquid was so hot it burnt the label off the can, but thankfully the can was stout enough to not melt itself.

You can see the bottom of the mold was not good enough as the metal pooled out, but the general shape is there. I would call this a success.

What did we learn?

1. Glass is not a good crucible.

2. 21 coals and a leaf blower is enough to get 800 or so degrees of heat. I honestly did not expect it to get so hot. I really must get a IR Temperature Gun to see how hot I can get it. Also would be interesting to see if I can get the same results with less coals.

3. I need a bigger foundry cover. A number of embers slipped out via the edges and we had to constantly put out small fires and keep the ground around it wet. This should not be too hard to do, I can just add on to the cover I already have.

4. I need a better mold, with a better seal on the bottom. Perhaps investigate these sand molds on the same youtube channel.

Overall, it took three tries, but after some tweaks I got it. I look to make some improvements and give it another shot. You can find a few more photos in the album.

Sunday 12 April 2015

Elsie Roth

Elsie Roth, my grandmother died April 2. You can read the summary of her life here.

It is hard to know someone when they live far away. What with my Grandmother living all her life in Pennsylvania and me in Massachusetts (Mass-a-choo-choo to some), visits were infrequent. They were always an event with her though. A consummate host, meals were lavish affairs. Difficult logistically given the cramped townhouse she lived in, but still quite a production. It is a shame our visits became more frequent only after she moved to a nursing home. It is hard to pinpoint when she actually died. We know when her body died, but this occurred long after her mind. I miss the bright cheer she showed when she saw me. Always present when I was young, but less and less each visit. It is this image I remember, not of a person robed of humanity by loss of memory.

She is gone now and we will not meet again. That is ok though, I need not a physical presence to remember her.

Monday 16 March 2015

Unnamed Space Strategy Game

Ideas are cheap, so here is mine.

Lately I have been enjoying Homeworld Remastered which got me thinking about what would make a great new space strategy game.

There is a shamefully limited offering in this genre, see Homeworld, Sins of a Solar Empire, Conquest Frontier Wars, Nexus the Jupiter Incident for some examples. Limited they may be, but on a whole most of these games treat space battles like naval battles with extra dimensions. This is serviceable, but can be visually confusing. In the example of Homeworld, it is hard to see what is happening once a battle begins. Generally the capital ships will be separate, forming a rough battle line, but they can be split on various levels from the z-axis. The fighter craft will be intermixed between the lines. Given enough ships this can make for a very confusing battle. With ships all over the place it can be hard to see if your forces are winning or not. A strategy game should not do that. Good strategy games offer clear feedback if you are winning, losing, or drawing. If you cannot tell what state the battle is in, you cannot make interesting choices to try and alter the state. At that point you are not playing a game, you are just watching. The spectacle of watching a battle unfold however should not be neglected. Space battles have their own majestic quality. so there must be a vibrant color palette in both ship and space.

What are the conclusions I have drawn: 1. Current space strategy games draw heavy influence from naval simulations. 2. Strategy games need to always convey the state of the battle. 3. Battles in space must be visually engaging.

With this in mind I want to suggest a different influence for games set in space. Instead of a naval influence we should instead look to the battles of Napoleon. With a naval influence the number of ships involved in a battle tend to skew toward the low end. Maybe reaching a 100 capital ships in a lively game in Homeworld. These numbers are far too insufficient. I want battles to number in the tens of thousands. There was near to 200,000 soldiers involved in the Battle of Waterloo. We should aim for similar numbers of space craft. This of course brings up issues of controlling so many units at once. If we take inspiration from games modeling this period such as Empire Total War or Ultimate General: Gettysburg you can see we do not handle individual soldiers, but collections of them, maybe 100-300 at a time. In this same way we should organize our ships in squadrons of a similar number. The games I mentioned tend to only deal with about 30-60 thousand units in a battle, so we may want to increase our unit size to around a 1000 ships per collection. Now that we have split our army into neat collections of ships we can have both a large number of ships in an engagement and we can far more easily move them. In Homeworld you may have to move and organize around 50 capital ships at any one time. In my model of collections of a 1000 or more, we can easily have players controlling 25,000 ships and still moving around less pieces than in the Homeworld example. More ships, easier control.

To the second point, we need to make sure the game always conveys the state of the battle. To solve this problem look towards Scourge of War: Gettysburg or Sid Meier's Gettysburg. Both games track how effective a particular unit is doing, both in dealing damage and sustaining damage. If a unit is taking more damage than it is dealing it is losing, the inverse, it is winning. So to should our game always have available this information. Either as a number prominently displayed, or as some visual element. Secondly, the nature of a Napoleonic style battle is many units in neat lines maneuvering against the enemy. With such rigid formations we can avoid the issue of ships intermingling like they do in Homeworld. This also has the added benefit of always showing a clear view of the battle which is important for both determining who is winning (the state) and what moves to make next (the heart of a strategy game).

Finally, we need to ensure our battles are interesting to watch. This is a bit hit or miss in the examples I have given. Homeworld has a lot of ship customization, but SIns of Solar Empire and Nexus have little. If we look to the armies of Napoleon's time we can see a great variety in uniforms. Lots of bold vibrant colors. So to should our ships sport such dashing design. We should have a great deal of customization of fleet colors and fleets should lean towards bright colors, instead of dull navy gray.

To summarize: 1. Draw inspiration from Napoleonic wars, not naval ones. 2. Enforce collections of many ships and rigid formations. 3. Emphasize bright colors.

Now that we have solved some of the problems of the genre, at least on paper, let us look to differentiate the title a bit. As mentioned, Napoleonic battles should be our inspiration. To that end we should emphasis a rock, paper, scissors balance. In a battle of that time there were generally three types of units: line infantry, cavalry, and artillery. In this relationship, infantry is good against all other types as long as they can be kept at optimal range, artillery beats all other types at long range, and cavalry beats all types at close range. We should model our fleet on those types. Average speed ships with average ranged weapons that fight in massed formation (infantry), fast agile ships with melee or close range weapons (cavalry), and weak long ranged ships (artillery). This simple balance make it easy to understand how to place you units to optimize their potential. Most space strategy games do not have a concept of cavalry or artillery. They tend to focus on ships that all engage at or near to the same range, but with different weapons. The idea of melee in space is pretty unexplored. Homeworld: Cataclysm has a ship that pushes other ships away from a battle, but I know of no other game that models very close range fighting. It would be a cool idea to explore some in-universe explanation for this. Artillery in space is also little explored. Sins of a Solar Empire features long range missile platforms, so we would probably have ships equipped for long range missile launch in our game.

Secondly we should consider adding a layer of logistics to our game. Homeworld tracked fuel for fighter craft, but had no other supply mechanics. Conquest Frontier Wars did have supply on a ship to ship basis and it was very important to the game. Lack of supply ships could doom assaults. We should consider adding similar mechanics to our game. Units should have two needs, fuel and ammunition. As the battle progresses it would be necessary to ensure ships do not run out of either or they would be unable to move or fire. This adds some complexity, but opens up interesting strategic options, like cutting off enemy resupply in battle.

The toughest point to consider is how to handle z-dimensional movement. Some space games, like Sins only support moving on the x,y plane. Homeworld and Nexus have full 3d movement. I think we should do the same. Players expect that freedom of movement in space and it allows us some interesting strategy, such as attacking an enemy from above or below. Our new emphasis on Napoleonic battle helps us here as attacks from the flanks (or above/below) should inflict additional damage. We should be careful of constraints here though. If we allow too much z-axis freedom ships will start going everywhere for little gain. Perhaps we could limit the area of battle somewhat so the units do not get too separated. This will be tough to justify in-universe. We could set the area engagement to be so large that we could enforce a communication delay between ships. May be interesting to increase unit response times the further they get from the flagship, the unit sending the orders. This would keep units close to the flagship and make that unit very important. Do you move your flagship with an assault so that you can relay orders quickly or do you create a complicated battle plan and hope it is carried out as expected.

Overall It is not so much that we are making a new design, but repurposing an existing design for a different setting. I want to shift our focus away from individual ship management to that of a large scale battle of maneuver. To those of you familiar with anime this setting is not so new, it is basically how battles are fought in the classic anime series Legends of the Galactic Heroes. Now if only the games they made were localized.

Sunday 8 February 2015

Trip to India

IndiaHotel

At least it is not Oakland.

Almost a year ago I learned Oracle would be adding some people to its office in Bangalore, India. Some of these people would be working on a product I am very familiar with. Thus I hatched some bugs, put them into some ears, and on February 1st found myself and a coworker headed to India to impart our knowledge. This turned out to be me my first mistake. As you know I am a lover of the greatest American sport and February 1st happens to be the date of its ultimate game. I had thought this was the date for the least ultimate game of the year, but I really should have checked. Regardless, plans were made, hotels booked, promises made, I could not deviate. Luckily, my team met with victory on the field which I found out mid flight. This was the highlight from all my air travel. Flying has got to be the worst indignity given unto woman and man. Every time I had to board an airplane I was cast (begrudgingly) into some yet new and wonderful rendition of security theater. A play with many actors, and yet more directors. I danced off various items of clothing, twirled for the benefit of machines and humans alike, and finally (with great flourish) had various forms and paper stamped. Truly a modern marvel. And what, you may rightfully ask, was my reward for my many labors? 17 hours of flying over two flights. Every time I fly I think, "It will be fine, I will just sleep the whole way." How optimistic past Paul is. I can never sleep on a plane. It is too noisy, there is too much vibration, I cannot get comfortable. Whatever the reason, it is a losing prospect. Earplugs, pillows, small flight blankets, all useless. The saving grace though: airplane food. I have such a low standard for food that I actually enjoy airline food. I dunno, maybe its all the colorful wrapping it comes in, but it always seems pretty good to me. Tis a bit weird though, silently eating food next to strangers. The takeaway is, In the future, I must acquire a greater title within Oracle. Not for the salary benefits, strictly so I can book business class, otherwise known as: not baby class. Every miserable time I have been flown there has been a baby not five rows from me. There must be some airline supercomputer that ensures optimal flight baby distribution. This is the only reason people book classes other than economy. More leg room, whatever. Some different food, do not care. No screaming babies, give me that ticket. It is like a little organic siren, howling every hour to remind you that, yes you are still strapped into this metal tube with me. Fear me giant, for I have a mighty roar. Unfortunately, I am still that lowly Oracle peon. Bring on the babies.

India though is awesome. Perfect February weather. Clear skies, a dry 70 degrees, nothing but sun. I am told this is the weather all year round. As much as I like the seasons, snow is only cool for one storm. Anything after is just messy commutes and delayed arrival. Lets talk logistics. first thing the hotel:

IndianHotelInside

I was not ready for the swankiness. This was some no name Hilton. Yup, the same company I stayed with for Java One and OpenWorld. I thought the one in Oakland was alright for sure, but nothing special. Its totally different in India. As we were driving to the hotel, the driver kept zipping us down these small narrow roads. There are cars and people everywhere (city of 4.3 million) and we are just bumping down these not great neighborhoods. I am thinking, "I have been watching too much Boardwalk Empire, every gangster dies this way." Then (no joke) we take one turn and it is glorious, gentrified, guarded office park and hotel. The security is a little strange at first, I was not aware crime was that bad. They even checked the car for a bomb, which as an aside must be the worst job in India. You know you are only ever going to find one bomb. Regardless, I thought the facade was going to fall away once in the room, that was not true. There were so many lights and switches it took 5 minutes to turn them all off when getting ready for bed. I had so much space I had a guest bathroom, A GUEST BATHROOM. Who am I going to have over. "Oh, thanks for coming guest, nice to have you. You need to use the bathroom? Use the guest bathroom you filthy plebeian, the master bathroom with its separate shower and bathtub with tv is for my use only!" They even gave me two jars of nuts for some reason. I hate nuts (except peanuts), but I took them anyways. There were three tvs in the whole suite. One in the bathtub, one in the living room, and one in the bedroom (not 10 feet from the other one), just in case you wanted to watch tv, but also wanted to lie in bed and could not be bothered to go into the other room. I have an actual kitchen, with pots and pans. There was even a switch to tell housecleaning you did not want to be disturbed. A switch, for a light outside your room. No door knob placards here in India. This hotel also gets the award for best free breakfast. A lot of places just put out some stale baked goods and dry cereal and call it "continental". Not the Hilton in India. Imagine a college dining place, with all the stations and options, now imagine it was good (minus the floppy bacon, crispy or get out), this is the Hilton in India. The only negative about my stay was blowing up my radio. I brought the correct plug converter, but you need an adapter as well or else the device will be given too much power. This manifests itself as a loud pop and thin wisps of smoke. My clock radio is now dead, casualty of traveling

On the subject of casualties, while in country Oracle blessed us with a personal driver. This was incredible and made me feel like a boss, spelled b-a-u-s. The thing is driving in India is terrible. No one stays in their lane. Sure there are lanes, but crank up the volume and people will start forming extra lanes. Two lanes become three, ones become two. This is because everyone is driving (4.3+ remember). Dads with three kids on their bike, tiny trucks loaded with food, buses packed with workers. Its crazy and everyone is trying to shoot for the gap and get in spaces there is none. I sat shotgun a few times, cars are not meant to be this close. Every turn looks like the start of an accident. Lights are optional in some cases and so is right of way. Luckily the office is not too far from the hotel. The placement is odd though. Oracle could have built it on the nice office park the hotel was on. Instead it seems like they picked a slum and installed an office park in the middle of it. Not to worry though, a giant wall surrounds the place to keep out the riff raff and ragamuffins. It is a strange feeling to be inside the wall looking out.

The actual training though, who cares. I talked for about two full days. They taped all of it in glorious HD, so there exists 16 or so hours of me perfecting the dry technical delivery.

All the talking though produced quite the appetite. First day come lunch I was stoked for that authentic Indian. In comes the boss with Pizza Hut. The offer was nice, and I was hungry, but what is the deal, this is Pizza Hut, not Indian. All was resolved come dinner though. We went to a place called Barbeque Nation. The deal is each table has a grill at it and they keep bringing food on spits for the grill. I am eating all this food with strange names, and it is good, but spicy. I am talking spice sweat spicy. Like you just woke up from a bad dream sweat, but caused by spice. So I gorge myself like everyone else and then they say, "that was the appetizer, it's buffet." You mean there is more food? So I eat even more food. This is where I hit spice critical. Before it was under control, drinking water between every bite, but now my mouth is just an oven. So I bail and eat desert. Paul G top tip: mouth too spicy, get some Indian ice cream.

That was my three days, survive traffic to the office, talk, eat lots of spicy food, survive drive back. Make sure to leave early or be caught in horrible Bangalore gridlock. On my last day I thought it would be a good idea to fly out at 2;50 in the morning.This was not a good idea. I had not anticipated being so tired. Generally I am an owl of the night. So when I was nodding off at 11PM, I knew it was going to be trouble. The problem with being sleep impaired in India is all the bureaucratic nonsense you are subjected to on leaving. I thought entering was bad enough: multiple forms and an extra security check (huh). Just try leaving the country. You get your passport and flight details checked at the door (good thing some flight offices are outside the airport). Then you check in, go through immigration (passport checked twice), go through security, passport checked twice. All the while people are stamping your boarding pass with all kinds of stamps and symbols. Finally, you get to the gate and then on boarding (which there is no announcement so be close to the gate) they check everything again. Even the little tag for my carry on. Glad I did not discard that, would probably not have made it out of the country. I get being thorough, but the law of diminishing returns comes into play here. My reward for my hoop jumping ability: 17 hours, two flights, snowy cold Boston. At least the Paris airport looks like one of those curved space stations.

ParisAirport

That was India in a nutshell, really far away with a lot of spicy food, and great weather. I give it six spicy chicken things out of 15 glasses of water.

Saturday 20 December 2014

You Just Need One

Take a trip back with me to those halcyon days of 2002. Back when I was in 5th grade a game would come out that would set the template for an great number of copy cat titles. That game is Medal of Honor Allied Assault. Fear not though, this post is not about this game. It is a great game no doubt, with a number of high quality sequels (although the further out you get from the original the worse they get). No this post is really about the game's intro. Take a gander at it here. Did you catch the last line?

Can one man truly make a difference?

Normally we can all just roll our eyes at the omission of both genders, but that oversight is kind of a big deal here because I want to apply that question to this article. Our protagonist is Alayne Fleischmann, who was employed by JPMorgan Chase during the recent financial crisis. Her story is a good one so I suggest you read the whole article before continuing.

Having read that, let us take stock of the results:

  • Mrs. Fleischmann told people at JPMorgan what they were doing was fraud
  • JPMorgan laid her off.
  • JPMorgan paid the government 9 billion partially due to her testimony.
  • No executives were charged.

By some accounting, yes she did make a difference. JPMorgan was so afraid of her testimony that they worked very hard to pay off penalties so she could not testify. But I am going to postulate that no, she did not make a difference. Show me the executives who lost their jobs, show me that JPMorgan does business fundamentally differently, show me the laws that enforce greater oversight (counterpoint). Granted, It is a bit unfair to look at these complex organizations and judge their interactions to find a clear difference in operation. I get that, but I doubt it provides any solace to Mrs. Fleischmann, who lost her job, who dealt with the legal fallout for years, and who is unemployed according to Wikipedia. Show me she made a difference.

It is a shame right? She ought to have something to show for it, something should have changed? And here we arrive at the point: acting to your ideals is the only reward you deserve. It is great when things work out. Wrongs are righted, justice is delivered, lifetime movies are made, the works. Plenty of times though you act expecting the cherry and get the pit. You can be exiled from your country, you can be on the losing side, you can even die. The only reward these people deserve is the satisfaction of acting to their ideals. After that nothing else is guaranteed.

In a way it is depressing to think this, that you can do good and nothing can change. I would instead postulate a different analysis, that understanding this is the way of things is liberating. I do not need good things to happen, the universe does not owe me a reward for being on my best behavior. I just need to be true to myself and I can be content with the outcome.

This is why I am so happy people like Mrs. Fleischmann exist. She acted against her own financial interest knowing the outcome was in doubt because her morals were so strong, such a core part of her being that to not act would have changed her. It would have made her something she did not want to be.

She did make a difference, for herself. She was tested, her morality was tested, and she made a choice to be true to herself. You only need one person to do that.

Monday 24 November 2014

I Kill Animals For Sport and I Enjoy It

I love Inflammatory titles. I do not do this just to stir up some passion in you dear reader, instead I strive to get to the point as quick as I can. With this hobby of mine there can be no denying its aims. I go into the woods, I try and find small cat sized birds (pheasants), and I try and kill them with a gun. If you still do not believe me, and frankly it may be hard to blame you given the rest of the articles on this blog, here is some recent photographic evidence.

So why do I do this? You may be tempted into thinking I am a sadist. I am sure that would be the opinion of PETA. To be fair, It would be untruthful of me to say that I do not derive some base thrill in the act. Humans have been hunting animals to survive before we could yet form words. The need is now passed, but the instinct and feeling remains. This is not the reason though. A popular explanation is hunting is just another aspect of a nature lover. I too will confess to enjoying the forest scenery in spurts. It is generally too early or not light enough for me to fully enjoy it however. You would think an ex-boy scout would take more joy just being in the woods, but I have always been more at home in my home. How about enjoying the sport aspect? That thought is pretty close. There is a fair bit of competition between human and prey. Pheasants are pretty cunning animals. They hunker down until you are right on top of them and can move deceptively fast on the ground. Their speed through the air is nothing special, but given the chance, they can put much distance between themselves and you with wings alone. Even with all my technology and skill, my success rate this season is 0%, which is worse than seasons past, but not by much. This is not my main reason though. Consider a popular question poised when I tell people I hunt: "Do you eat what you get?"

Yes, emphatically yes, that is why I am getting up before dawn and walking around in the cold. Why I am covered in bright orange. Why I am wading through muddy field with tall grass. I am not looking for Pokemon, I am looking for meat. To put it simply, I eat the flesh of a once living creature. I have to be willing to do some of the dirty work myself. We live in an industrialized country with an efficient meat industry. All the blood work happens behind the scenes. All we get is a Styrofoam plate, some plastic, and a red hunk of organic material. We are so removed that it becomes easy to rationalize and forget that this was once a living creature. A creature with thoughts, however simple. One of those thoughts was survival, but we ignored that for our own gain. We are queens and kings of the food chain so we have that right, but as royalty we have a noblesse oblige and that is to not forget that we killed something to live. I must not forget that, but I have to be pragmatic. I cannot raise cows and chickens. The expense, the time, the skill, the first I care not for and the last two I lack. This is my own small recognition of what others do on my behalf.

Do not fool yourself into thinking you are some how lessened for not taking part in this little ritual of mine. For me, I must act to appreciate their sacrifice. Just appreciate that something died so you can live. Something to chew on.

Thursday 6 November 2014

Your System is Finite

Let us talk limits for a bit. No, put away your graphs, this is about memory limits. Before I get into the discussion, a few notes. I am going to be talking mostly about particular errors and operations in Java. A healthy knowledge of the Java Virtual Machine with particular attention to garbage collection and heap allocation would be useful.

Recently I encountered some issues where our application was running out of memory. In this case the Java virtual machine is going to throw this exception: OutOfMemoryException.

Why is this happening?

When your program runs in the JVM the JVM has a specific amount of memory (a subset of the system's ram) it can use to allocate objects. This area is the heap and it is where all the objects you create using the 'new' keyword will live. Stuff like this:

CustomObject customObject = new CustomObject();

The amount of heap space the JVM has access to is based on the system it is run on. The JVM will set the amount of heap space available to it when it starts. As your program executes, the JVM will allocate space on the heap for objects the program needs. Objects you no longer need will be removed via the JVM's garbage collector. The garbage collector however, cannot remove objects still in use. Therefore if you create too many objects you will use up all the heap space and get an OutOfMemory exception. This is the key point: your system is finite.

For example, if your heap size is 256MBs and each object you create takes 1MB then code like this:

CustomObject customObjArray = getNumberOfCustomObjects(257)

Will require at least 257MBs which you do not have. Thus the JVM cannot continue and it throws an exception.

How Can We Fix This?

Now there is an easy fix to this. When you start your java program you run it on the console like this:

java myProgram

You can specify arguments on java to increase the heap size. Specifically something like this:

java -Xmx:1g myProgram

This would set the JVM's heap size to 1 gigabyte. Do not do this! It is tempting, it is easy, but it covers up an underlying problem in your program. Now, of course, there is a time and place for this, but for the most part all you are doing is delaying the problem, forcing future you to deal with it. Future you will hate you for it. Let us look at a close to real life example.

Record recordArray = getAllRecordsFromMySql();

This is perfectly valid code. All we are doing here is getting a bunch of objects back from the database. Simple code can get you into a lot of trouble if you do not have a good understanding of how many records you can get back. We have three possible cases here:

1. We get 0 items back.

2. We get n items which consumes less than the total heap size.

3. We get n items which needs more heap than we have.

In the first case, we are fine, no issues there. In the second case we are also fine. You may not even have to worry about that if the number of objects you expect back is always (key word) going to be be less than your heap size. For example if our app can only ever store 10 records at a time (like a rotating log) we will be fine. If, as I saw recently, the number of records you could get back is near to unlimited then I can promise you at some point that is going to happen. You can then see that it does not matter what we set our heap size to. If the amount of records are bound to the size of system's hard disk then, at some point, the amount of stored records we have will exceed the total amount of available ram and then it does not matter what you set the JVM's heap size to, you could not possibly set it high enough and your program explodes.

What you can do however is limit the amount of records you process at one time. Consider a couple different strategies for this case (reading n entries from a database).

1. Conditionally Limiting your Mysql query to a certain id range.

If your tables are setup correctly it is possible you could get your rows based on increasing the id. For example you could execute a query like this:

select * from records where id >= 0 and <= 500;

This would get all your records with ids from 0 to 500, or 500 records. Assuming ids are unique (meaning two rows cannot have the same id). Then you could iterate your id range and get the next 500. Keep doing that until you have less than 501 results and you have processed all your results.

2. Using a cursor

A cursor is basically an iterator. It points to one row in your database. From there you can move to another row. You are only allowed to operate on one row at a time so you will never run out of memory. This can be especially useful if you want to process a large number of objects, and then update them in the database. Code that would look like this:

while(mysqlCursor.hasNext()) {

       Record record = mysqlCursor.next();
       processRecord(record); 
       writeRecordToTable(record); 

}

Both strategies will limit the amount of data you have to manage at any one time.

Key Takeaways

The key rule to remember here is, when working with computers, you are always working with finite resources. Memory has limits. You can program around them easy enough, but they are there and they must be respected.

Thursday 16 October 2014

An Example of Things Working Out

Have you ever had plans to meet someone and got there really early. Not like 10 or 30 minutes early, but an hour or two. Does not matter why, maybe you got the time wrong, or vastly over estimated how long it would take to get there. What would you do while you waited? Would you get a snack, try and find something to read, sit around aimlessly? Me, I like to walk around wherever I am. Maybe it is a big building with a lot of corridors. Perhaps it is a school ground with some forest paths. Regardless, it is time for an unplanned constitutional. Maybe I go left, maybe I go right. Perhaps I take this path, perhaps I take the other. I will not quote Frost at you, but you get the idea. Sometimes I see people, sometimes I do not, depends where I am. Not the point of the exercise. I am just burning time waiting. And yet, something else is at play here. The walk is time limited. You have an end time at which your wanderings must stop. What if that were not true, what if you just kept walking and saw everything you could? What would change? Maybe you would see something unexpected or maybe, low odds that it might be, you would change? This is a little story of how little things changed me.

Back in University (sometimes it is fun to be pretentious) a few days before my first undergraduate class there was a club fair. A kind of menagerie where people convince you to join their clique. The school had a pretty clever play of only serving lunch that day next to the club fair. So I found myself eating some Aramark 'food' and poking around the tables. Nothing much of interest to me. I got hit up to join the Society of Black Engineers. Which got the academic intent right, but maybe missed some other clues. We live in a color blind society though so I cannot fault them. Things were pretty much a dud so I started to work my way back to my dorm. Oddly though, while I was making my exit, I spotted a friend from high school poking around a club table. This was surprising for two reasons:

1. This friend was a year older than I, yet remembered me.

2. I had no idea he went to this school.

It was a pleasant surprise, serendipitous for those of you studying for University Challenge. There was some minor talking had. It was a hot day. He was actually there to promote a club, The Society of Physics Students (presumably all college clubs are societies). Not that he was a major player in the organization. I suspect, like me, he was there for lunch and wanted to eat near some people he knew. Regardless, it was fun, speaking of things past and present. The club was running some simple experiments, playing with a spinning wheel to show angular momentum, physic things. They gave me the first meeting date, whatever, I did not really care.

A week goes by, turns out I do care. New school, new Paul. One of those points turned out to be true. So I am looking for the room, a little before the meeting time, and the thing about Umass Lowell is they named these two building next to each other Olsen and Olney. Incredibly easy to get missed up. So, expectedly, I go to the wrong room first. The tip off was it was an office, and the second clue was it was empty. I go to the other building and try the same room number over there. I give the door a tentative push, it is locked, key card reader outside. How could it be this room? Why would it be locked? At least the other one was open. So that was an anticlimax, but I know know the building names a little better. I am walking away with my back to the door when it opens which I was not expecting to happen.

"You looking for SPS?"

"Yes"

"Cool"

That is not the exact conversation, but it is the intent. I became an SPS member a handful of minutes later even though I was not studying physics nor taking a physics class. Then I made some new friends who would be one of the few constants for my next four years. The name of the club was SPS, but it was more of a social than academic organization. Very useful to know people who were more experienced than I in many fields. They kept me in the loop for things to do and kept me sane. I remember the dinners we would have. Hour long affairs, people coming and going. Leaving far after closing time. I never ate and talked so much in a cafeteria before. Six years on the contact has lessened with distance, but we still drop notes on occasion.

Now consider one point in this story. The locked door. What if I had not pushed it? No one would have know I was there, I would not have been in SPS, and my life would be lesser for it. Now how often does that 'what if' happen? I got lucky this time, but I am sure I missed the connection more often than not.

Just got to keep walking I guess.

Sunday 5 October 2014

Oracle OpenWorld and JavaOne 2014

OpenWorld is Oracle's giant yearly business expo in San Francisco. It is a week of Oracle trashing the competition and talking up its own product line. Oracle DB will save you money, double performance, cure cancer, fix your marriage, etc. The conference was flashy and large and not interesting to me. What was interesting was JavaOne. A hold over developer centric conference from when Oracle acquired Sun Microsystems (the creator of Java). Being an Oracle employee I got permission to go which is why I was awake at 5AM last Sunday.

The deal here is, Oracle will try very hard to keep its own developers from actually going because they make bank on the registration fees from other companies. A single JavaOne pass costs $2,050, which is pretty absurd. But, if you actually do get permission to go, Oracle will bankroll the whole trip. Which is why they paid for a car to come pick me up at that borderline absurd a hour. I am used to always taking the train into Boston (then presumably a bus), but the trains do not run that early, so sweet Oracle car it was. I was in full business garb: army jacket, t-shirt, and jeans. It was pretty exciting to have someone open a car do for me, made me feel like a real hot shot. The ride was very pleasant too, classical musical and everything. Pulling up to the airport, seeing everyone else in their taxis and minivans, I really was a business man. The illusion suffered when I checked in and was told Chicago was having trouble. I might have made it a bit further, but then I had to do the security dance so whatever respect for myself I had left I lost to the TSA agents. Still Oracle paid flight, Oracle paid hotel, cannot be too bad. Wait why am I flying to Oakland? Must be for the fancy accommodations and sweet view since I will be right near the bay.

Ok, maybe not. Turns out hotels in the city are for the real big shots and/or people who register early. Which means, I became very familiar with Bay Area Rapid Transit. The subway system here is pretty unique. Not only do you get charged when you get off (hope you have enough money), but the trains are the loudest I have ever been on. Frighteningly banshee-esque screams every time it takes a turn. So loud, I am sure the driver has to wear ear protection for fear of an OSHA sound violation. The best part of commuting out by train was watching all these suited business types waiting for the hotel shuttle in this incredibly awful Oakland neighborhood which the hotel driver described to us as "not great".

None of that is actually important though because the actual conference was awesome.

Being the dirty, unwashed, Oracle employee, I could not actually register for sessions to attend, so I had to hope they did not fill up before I could get in (five minutes before it started). Generally this was not a problem and I got into some real cool sessions. Some of the stuff in JDK 8 is going to be very helpful. Lambdas and Streams in particular are going to help out a lot. Some of the stuff scheduled for JDK 9 like value types and primitives in collections are going to be real useful too. There was also a number of sessions that deepened my knowledge of the JVM such as how the volatile keyword is implemented on the byte code level and the different types of garbage collection strategies available to Java. A couple dud sessions in there too, but what can you do. Of course no convention is complete without an expo hall (both at Java One and OpenWorld), but it was mostly a waste of time. I am in no position to actually buy any of the products they were selling, but it was fun to watch how quickly the sale rep tried to disengage once they found that out. Apparently the product I work on was demoed somewhere on the floor so hopefully something good came out that.

All this work did lead to long days. I got up, went to the convention, sat in as many sessions as I could, then rode the subway home to sleep. Some of the sessions ran pretty late for a 9-5 guy with the latest being 9PM on some days. In between I got the chance to enjoy some San Francisco food. Weirdly regular convention goers get served lunch, but not Oracle employees. Presumably Oracle would prefer I expense a meal that cost more than what they are serving? The best was, oddly enough, the Korean barbeque I had near the mall at the Moscone Center. I got way too much rice though.

We also got a chance to visit mother Oracle at nearby Redwood Shores and see the sweet Oracle boat.

Turns out there are some perks to having a slightly eccentric CEO. At the convention I got to see him speak for the first time at the key note and I was greatly impressed. He was funny and engaging. Calling out the competition, poking fun at himself, he really has a flair for speech and clearly loves being the big shot. The gift shop at HQ was pretty disappointing though so he is not perfect. After that it was two quick flights back, and a midnight car ride to Franklin. Business managed.

The big takeaway from all this is two fold. One, this convention is not for Oracle employees. Two, find all the Oracle employees you can so they can tell you who to talk to in the company to actually get stuff done.

Thursday 2 October 2014

Am I Making Any Sense?

I am nearing 50 posts on this little blog so an important question naturally arises after having written so much. Does anything I write or say make sense? Do people just nod along with it and then when I finally stop and leave think, "man that guy is crazy, what is he talking about?" I like to think I am Brain, but do others just hear Pinky?

An example for context. I am talking about acting to some friends, and how I am rubbish at it. So bad people would be asking "why did the filmmakers use actors from Home Depot?". That is not the exact line I said, but it is close enough. I thought it was clear enough, but all I could see were confused faces. The thing is, this is my humor. Anyone can make a joke about a person acting wooden. You have to go to that next level, where you understand everyone knows that. You build on that knowledge and layer a joke on top. A person is acting wooden, wood comes from Home Depot. Simple right? Blank stares, no laughing, failure to communicate.

It is not just jokes though. Jokes can be excused. The issue at play here is I might think I am being clear, but actually not being so. Imagine a carpenter made chairs in a sealed room. Wood comes in one side, the carpenter sends the finished chair out the other. She does this for many years and things, "I make so many chairs, I am a skilled carpenter." Meanwhile, outside the sealed room, the chair inspector keeps rejecting them and burning them for firewood. Without feedback how can any of us know if we are making a worthwhile product? I just happen to be making collections of words here though so we are even further removed from my example. Not everyone is a carpenter, but, as the internet teaches us, everyone can write.

So what is to be done? How can I know if I am clear or not? It helps if I write without error in spelling or grammar. I think I am doing that well, I have no proofreader, but myself to confirm. I study logical fallacies so that should help with my arguments, but it is so easy to fall prey to them. Discussing issues with others seems to help. Easy to establish a feedback loop. See what is working, adjust, see if it works better. If anything I am going to blame others for being too polite and not calling me out when I say something dumb or make no sense.

I hope, dear reader, you are not expecting a sudden insight with a solution to this problem because I have none. Which is why this is tagged 'Musings' and not 'Philosophy'. Just thoughts on a continuing process.

Sunday 21 September 2014

Wayne Roth

September 16th is my paternal grandfather's birthday and now it will be my maternal grandfather's deathday. As there are no speakers near I will fulfill the role.

Wayne Lehman Roth, who lived for 89 years from February 14, 1925 to September 16, 2014, was a quiet man. His actions and words were chosen carefully. He was precise. His life running his small print shop taught him this. Long hours and hard work is wasted because of typos and small mistakes. A love of letters and words was not just his job, but his character. Not long do I remember him being separated from either a pun on his lips or a crossword on his lap. That was his style. He wore suspenders long since out of fashion. Correspondences were conducted on a typewriter. Smoking was done with a pipe. He learned how to do something once and that was good enough. He tinkered with model trains in that small row house of his. A house with no AC for those muggy Bryn Mawr PA summers. He built Impressive vistas and intricate rail systems which fought for room amongst the tools and paints of the basement. A busy life to be sure yet time enough was found to be married for 60+ years. Time enough for two children and their grandchildren and even a great grandchild. I never saw him separated from my grandmother for long. Marriage to them was less a contract and more a bonding of two people. His wife was an extension of his own body and he cared for that just as much as his own.

To put it simply, he was a builder. Ink at work, tracks in the basement, flowers in his garden, family any other time.

Perhaps he was not always this way, but I can only speak of the man I knew for my whole life, which was only a fourth of his. I will never see my grandfather again. No one will remember his name once I and am my kin are gone. That is ok though. I will remember him and that will be enough. He never cared for flashy things.

Grandparents Told you they were inseparable.

Obituary

Tuesday 16 September 2014

Thoughts on BFIG

Boston Festival of Indie Games was last weekend. This was my third time going to the festival which has been operating for the same period of time.

There is a very curious dynamic at play at this festival. Generally I am a very reserved individual. If you were in a charitable mood you could use the word taciturn. The point is I rarely talk to people at these things. I am more inclined to see and listen and take in what I can. Except at this convention. I talked to way more people than usual, far in excess of what is normal for me to do. I talked to just about every indie developer there. This is no joke, I went to every table and saw every game in the digital section. I even played most of them. Best of all I got to play this cooperative survival board game (After the Crash):

with this nice fellow:

the game creator. Go check out his site and buy the game when it is available it is awesome. I also played an in development real time restaurant management game. Each player played a role (I was busboy aka plate and glass washer) and helped work customers through an assembly like system. There were many sand timers and much yelling. I can see it being a great party game as it is real quick to learn, but pretty stressful to actually play well. Those two board games stood out the most. In regards to the digital section there were a lot of familiar games, either from past festivals or ones new to the festival that I had heard about prior. Some ones that stood out:

  • Anchorage Adrift: a cooperative space ship game, similar to Artemis, players are tasked with running a particular role on a space ship. A little rough technically and usability wise, but showed great promise.
  • Soda Drinker Pro and Vivian Clark: the first game is a first person soda drinking game which is hilarious. The second game is hidden within Soda Drinker and is weird and strange and has to be played. It is akin to dreaming or hallucinating. You play a rain drop that changes to whatever it touches. Also the developer is a real funny upbeat guy so that is cool too.
  • Adrift: a real polished looking arcade space shooter and tower defense hybrid. It is slick, fun, and a good coop experience. Why it still is not greenlight yet is curious.
  • Talon: a fast quake style spaceship multiplayer shooter. It reminded me of playing Unreal Tournament or other arena shooters.

Best part of all though was I got to throw my business card in one of those raffle bowls. The phone number is wrong on it though so hopefully they just send an email.

Sunday 7 September 2014

Stop Confusing Intelligence and Experience

Has someone ever called you smart? I will brag a bit and say I have been called that a few times. The thing is, its just not true. It is not true because people are confusing intelligence with experience. Intelligence, as was once described to me, is the ability for a person to turn the abstract into the concrete. The more intelligent your are, the less information you need to solve a problem. An intelligent person can look at an issue and, with no prior experience in that domain, solve it. The smarter you are the less information you need and the quicker you are in solving an issue. To give a concrete example a smart person might not be able to start their car one day. Not knowing anything about cars, they start to investigate, beginning with the ignition all the way through until they find a problem. A experienced person recognizes a problem and solves it based on past experience. To use the same example their car will not start, but they recognize the symptoms. In the past they had a car that had a similar, but not exactly the same problem. They can rely on that past information and associate it with the problem at hand. In other words they know x, how does x relate to y?

In both cases the solution is the same which may lead some to think that these attributes (intelligence and experience) are interchangeable, but that is not the case. Intelligent people solve problems by there ability to quickly understand how systems works. Experienced people solve problems by using their past knowledge and experimenting off of what they know.

It is a nice compliment for sure, and it does wonders for my ego, but it will not be true for some time. It takes a while for me to study systems and understand how they work. My skill comes from my ability to remember how I solved past problems and relate them to the problem at hand. I have worked with truly frighteningly intelligent individuals. It is a disservice to their skill to place me amongst them. Many more years of service are required before I reach their level.

Wednesday 3 September 2014

Impatience is the Mind Killer

I am not a patient man. It is one of the main reasons I went into software engineering. It is very quick to think of an idea and convert it to machine language. This desire to do things as quickly as possible has served me well in that past, but lately it has caused great harm. An example and then an explanation. I have been working on some systems at work that require a lot of tinkering with some of the special database sauce we use. An unfortunate side effect of this development is the need to constantly replace rpms (a kind of specialized automated zip file). I was having great difficulty getting the system updated with my changes so in my haste I just uninstalled all the rpms of a particular package so I could reinstall all my newly built ones. Of course what I should have noticed was I was uninstalling rpms that I had not built new versions of. There is a sudden clarity when your console stops accepting commands. In that brief window before you get told for certain that you lost your connection you curse the gods, which for me happen to be the trinity of Richard Stallman, Dennis Ritchie, and Ken Thompson. As you can surmise the system died a quick death. And since the issue I was working on was hardware dependent I had to develop on an actual blade instead of a virtual machine so I had no snapshots or backups to revert to. Thus the afternoon was lost to resuscitating the system via the HP ILO system and its fantastically poor console. It was a huge pain, a waste of time, and ultimately did no good to helping debug the problem. The solution it turns out was far more targeted, I just needed to update a few system files instead of blowing out all these rpms. So what is to be learned from this? Be patient and be sure of what you are doing before acting.

The thing is, I used to get by wielding a giant hammer but I need to be more comfortable with the scalpel. If I had just taken the time, talked to people who knew the issue, and acted with a bit more foresight I could have saved myself much gnashing of teeth. I chose an engineering example as I tend to like thinking with that discrete mindset, but the lesson should be applied elsewhere. The problem with impatience is its side effect, anxiety. I have been kind of obsessed with grand schemes that can be rapidly achieved. Then, inevitably, when things begin to drag I grow agitated that my plans are not proceeding with the rapidity I prefer. Take my house hunt for example. Many dreams, little progress in resolving them. I could buy a house tomorrow, but, given the options available now, it would be a poor call. Rationality in conflict with impatience creating anxiety.

Not sure how to resolve the quandary. Engineering-wise the solution is simple: be more deliberate in action. I should work harder to understand the systems I work with and only make the smallest possible changes at a time. Personally though it gets harder to fix. If I do all I can to achieve something and yet it remains unachieved the only result can be frustration. The beauty of software is understandable systems where input produces expected output. When I expect the same from the world disappointment will abound. Impatience is just a byproduct of this unfortunate truth. It is as if I am desynced from reality, like we are running on separate clock cycles. I expect one speed of progress and get another. In time I hope to sync up, but until then I remain impatient.

Aside: I goggled this title before using it and seems I was not as clever as I thought. A regrettably common occurrence. I still like it though so I am going with it.

Sunday 31 August 2014

Things I Am Not Supposed to Like:Katawa Shoujo

Starting a new series if you will about things I am not supposed to like because people tell me otherwise. The series starts with a photo.

LillyCosplay

This a picture of Lilly from Katawa Shoujo a free visual novel novel. She is appropriately enough waiting in line for a tea sampling. Neither she nor I got into the room, but that is not the point. What motivates someone to cosplay as such an obscure character? I have seen two Lilly cosplays in my life and barely anyone recognizes them. This is from a game that has no retail release, had no marketing. A game whose popularity is purely through the words of others. And yet here she is. If that is not all the indication you need that is game is special, I doubt my poor skills at wordsmithing will convince you otherwise.

This game is unique in its ability to capture moments. You have a game like Call of Duty that can very skillfully capture a feeling. COD makes you feel tense, or excited, or angry, but has it ever captured a quiet moment? Some of Bioware's offering get close, but all these big budget triple A games fail again and again to capture the moment. What do I mean when I say this? A moment, as defined here, is a single interaction between people. A moment is not bombastic, its not life changing, its just people talking, just conversation. Here is a perfect example. It is not special, nor unique, but its eight minutes and 54 seconds of a dozen or so people's lives. Its raw, its unscripted, its life. This is a moment and Katawa Shoujo is a game that captures these interactions between its characters better than any other game. There is a clarity to dialogue that makes the interactions seem so natural, so unforced. That is why I love this game so much. Who cares that it is anime inspired, or a dating game, or a made by a bunch of people from 4chan. This game offers the greatest thing any form of media can give: a brief look into the lives of others. Is that not what anyone wants? Some games are empowering, they make you feel things. To be fair this game makes you feel a lot of things, but that is not the point here. The point here is to see a person's life over a few months. That is unique amongst video games, it is awesome, and it is why I love this game despite what others thing.

Saturday 23 August 2014

Melting Metal:Attempt 1

A little while ago I read a how to on melting metal in a microwave. So having more money and time than sense I figured it was worth a shot.

First I needed some safety equipment for this job:

Here we have some metal tongs for grabbing the dish the metal is going to melt in, some gloves that can hold hot things, and a face guard to prevent molten meal from showering my pretty boy looks.

Now here is the general setup:

Microwave plenty of distance from anything that can catch fire, safety equipment ready to go, and a fire extinguisher in case things get out of hand. As per the instructions I fashioned a brick kiln in the microwave. The brick under the steel bowl is silicon carbide and should provide a nice hot surface to warm the bowl.

In addition I sealed off the entry and exit vents of the microwave to try and get the inside as hot as possible. We do not want our hot air flowing out the back.

Bricks with holes in them was not ideal, but it was what I had to work with. The metal to melt is zinc:

Yup, I hand cut that with a hacksaw and it took a ton of time to do. The melting temperature of zinc is 786.2°F. Supposedly the max temperature you can achieve using this microwave strategy is 900°F-1000°F so it should be possible to get the metal up to melting temperature. Fumes from molten zine are relatively harmless, but if you breathe too much it is possible you can get metal fume fever. The long term effects are negligible, at most it seems to produce flu like symptoms for a few days. Here is a material safety data sheet if you want to know more. Of course we are going to need a mold for our molten metal:

A bit rough, but should work. This mold is made out plaster of paris with wood blocks to give the plaster a form to mold around. Of course I broke it getting the wood out so its been put back together and secured with a rubber band. Nothing else to do but fire it up and wait. I turned on the microwave for about an hour and here is the result:

buttons...

I was unable to achieve a high enough temperature. The metal and bricks were certainly too hot to handle, but I had no temperature gauge so I have no idea how off from the melting point I was. A couple things contributed to this failure:

1. After 30 or so minutes the microwave front became loose reducing its ability to build up heat inside.

2. I did not make a full kiln with the bricks, and the bricks I did have had holes in them making it harder to build up heat in there.

3. The microwave I was using was $5 and was made in 1993, it is possible it just does not have enough power to build up the heat I need. Over time the magnetron inside the microwave will weaken based on how much use the microwave gets. Since I have no idea how intensively this 21 year old microwave was used this may or may not have started to happen.

4. It was quite a hefty chunk of zinc. Perhaps things would work better if I had a smaller block.

So things were a bit of bust, but I have not given up yet. I may try again once I get some more bricks to build a better kiln. A better microwave might be found at a yard sale or I might try doing this the old school way with charcoal. It might also be good to try and get a baseline for this by melting something with a really low melting point like solder (370°F).

The Lazy Workaholic

I have a curious perversion of mine to speak about today. I call it lazy workaholism. What it basically boils down to is I do not like taking days off. Most people who say this are called workaholics. The definition of a workaholic (via Wikipedia) is: 'a person who is addicted to work.' That is not true in my case, I certainly like not working and on the whole, given the choice, would prefer to not work as opposed to work. Yet my actions are in conflict with this statement. I have almost three weeks of paid time off sitting waiting to be used and yet the longest vacation I have taken since starting was two days last July.

It is not like my job is even that important. There are plenty of people (who are more capable than me) of filling in for me while I take some time off, but I cannot break away. There are emails to answer, bugs to close, projects to finish for approaching deadlines. Oracle has no expectation that I never take time off, but I do. It is as if I fear the consequences of leaving for too long. That something will break that I am responsible for or that I will grow slovenly in the time off and dread going back. I like being in the groove, working everyday, following a pattern. It is breaking the pattern that I dread most. So I just keep working. Maybe I will want to stop someday.

- page 2 of 4 -