Space fleet action games

I want to play a space fleet action game. I like what I am hearing about the new Star Wars: Armada, but it seems that there are too few models available today to make for an interesting variety of game play. However, in the end, I would rather have less specific models that can be played with many different game rules. And so I have been thinking about ships and design issues.

The Wikipedia page Interstellar Travel and the blog posting Spaceship Design 101 and its commentary are good places to start. Engines, radiation protection, heat dissipation, and life support seem to be the primary factors driving (real life) designs. Each factor helping to solve problems with the others: An annealed solution. But I still want cool models!

The web has a huge amount of creative work in this area being shared. If you look on Deviant Art or Pinterest for spacecraft you will find far more than you can reasonably review, especially without a plan. My current plan is to pick a rule set's ship design section and then using the point values for ship capabilities & capacities determine a visual volume of their sizes. For example, Warcosm has the following sized ships:

Typical ClassificationModulesNovas
Pinnace1010
Cutter2525
Corvette4050
Frigate50100
Destroyer60150
Cruiser75200
Battleship85300
Carrier100400
Dreadnought120500

I have then used this to calculate volumes with the proportions of length × width × height = 5n × 2n × 1n. I then use 123D Design to look at them and make an esthetic judgement about the relationships between the ships at high and low point size. For example, here are a horizontal and vertical Dreadnought next to a Cruiser and a Pinnace.

The question now is do the size differences look right?

One of the lesser known parts of the Bayeux Tapestry

One of the lesser known parts of the Bayeux Tapestry

Weekend Workbench

The family and I just came back from a week's vacation and so not much modeling has happened this weekend. I did, however, clean, assemble, and prime a Bones Large Earth Elemental for use with my VSF Rugged Constabulary. I also prepared a small pile of rocks so that I can test painting techniques before committing them to the elemental. (Yes, I am painting rocks to look like rocks.)

Update: Am disassembling & stripping the Elemental. Having the arms in place will make painting him difficult. I am also not happy with the primer (Vallejo) -- it remains tacky even after weeks of drying.

Weekend Workbench Workbench

I did not finish it until today, but I did start it on Sunday. We needed (or I wanted) a heavy duty workbench for outside projects. Most of the wood has been sitting in the bulkhead this winter and Sunday was the day to start building.

The problem now is that it is so heavy I will need both sons to move it.

Weekend Workbench

This weekend I assembled one of the row-houses I lasercut some weeks ago. The following is a short tutorial for the Wednesday Gamers to assemble their own.

To assemble a row-house you only need white glue and a careful hand. However, having a collection of Lego available for making jigs for ensuring square corners is very helpful.
There are two tools that you will likely need to create. The first tool is used to apply pressure around the perimeter of the house as it is drying.
The second tool is used to apply the window stone work. This will be shown later.

To help keep track of parts, place each part from the polybag on to the parts diagrams. Extra diagrams are available at parts diagram 1 and parts diagram 2. (Note that there are extra parts that were part of the original design and no longer needed.)

First create the roof. Take the gable end and chimney parts and glue them together as shown. Note that all edges face the sides of the building. It is expected that the buildings will be place in a row and so the building's sides will not been seen as much.
The roof is supported by the two gable ends and by two internal rafters. Glue each rafter so that the rafter's peak aligns with the roof's top edge. (The top edge is the one with the notches for the chimneys.) The rafters are placed 1 1/4" from each side.
Once the gable ends are dry then assemble the roof. (Note that chimney parts do not connect well to the roof. This is a design mistake.)
Finish off the chimneys with their tops. (This can be done when assembling the gable ends too.) Note that a couple of coats of white glue over the tops will help hide the seams.
The row-house has three floors. The first floor has 3 windows and a door per side. The second floor has 4 windows per side. The third floor has 4 windows per side. It is important to note that the third floor is shorter than the other floors. So pick your parts carefully.

Each floor is assembled in the same way. A front and a side are glued together.

 
While these are drying prepare the floor. The floor is raised 1/16" within the walls. Glue to each corner the L-shaped raisers. Note that when the floor is glued to the sides the raises are underneath.
Now glue the two front and side parts together and to the floor. I found it is best to apply a lot of glue to the edge of the floor and the edge of the walls and then push the walls to the floor. The perimeter tool is now used. It surrounds the walls and is angled upwards at a corner so as to apply equal pressure to each wall. 
With the perimeter tool in place your hands are free to adjust the upper parts of the wall so that they align and are square. Again, corner jigs made with Lego are helpful.

Your row-house is will look like this at is point.
Finish assembling the floors. Your row-house is almost complete.
At this point, the building is not stable. The roof and the floors sitting upon the one below and so a small bump to them or the table with topple them.

The reason why the floors were raised is to allow room for the alignment tabs. Add the alignment tabs to the second and third floors.

 Add alignment tabs to the roof.
The last step is to apply the window and door stonework. This task can be very fiddly, but is made less so with a small tool. This tool is assembled from the portion of the window that was cut out, glued to a slightly wider rectangle, and a handle is added to the back. (The window part is in the polybag and has the letter W written on it.)
Now a window's stonework can be place on the tool, glue added to the stonework with a brush, and the stonework is push into the window's opening. A stiff brush is used to push the stonework against the wall.
This is a slightly better design for this tool:
 With the window and door stonework applied the row-house is ready for painting.
END


Welsh & Vikings completed

And so the now completed armies of the Welsh and the Vikings head off into battle (or, more likely, small boxes for safe keeping).

Weekend Workbench

I am almost done with my Welsh and my Vikings. I only need now to put on a coat of matt varnish to finish them. Unfortunately, I need to wait until the weather warms up and the rains subside. Perhaps by then I may come to prefer their sheen.

While I wait for the weather to change, I have to organize the the parts to my row houses that I laser-cut a few weeks ago. The task is to take a pile of parts and organize them into baggies of parts for my friends to then assemble.
Update: Done. Nine houses with only 3 sets of the same missing part, which, luckily, is optional for construction.

Externalizable needs a serialVersionUID too.

Yesterday I learned that even if your Java class serializes via java.io.Externalizable, so giving the class complete control over the marshaling and unmarshaling of the data, you must still defined a serialVersionUID or Java will create one for you. As methods signatures are included in the calculation of serialVersionUID my newly added method caused the creation of a different version id and so, unexpectedly, the marshaled data on the wire was incompatible. To fix the problem I just needed to define serialVersionUID to be the calculated version prior to my addition of the method. Luckily, the log contained the version number I needed!

Laws for my children to learn sooner than later.

Parkinson's Law: Work fills the time allotted.

Gilmartin's Law: Time taken from work for play will be returned with time taken from play for work at the end of the project.

I need something pithier for Gilmartin's law. Suggestions will be well received.

Weekend Workbench

During the week I prepared the bases with sand glued and mounded around the figure's base. I then painted it. I first made the mistake of preparing with black and then painting with a too dark a green. God, they looked awful. So I asked Chris who is very talented with color for help and she picked out, from the colors I had on hand, Vallejo's 70.605 German Red Brown as a base color and Citadel's Elysian Green for the grass.

The brown was dabbed on with the side of the brush so as to leave some of the prior dark color. Then she dabbed on green in a few areas, again, with the side of the brush. Where there was too much green she dabbed on the brown very lightly. I really like the result.

Also on the workbench are some very small, rough cottages for my son's medieval castle diorama. We will see how far a little spackle, paint, and dried grass stalks will take us!

No stories worth retelling

I enjoy listening to The Moth, I highly recommended to all feeling people, except that I often become glum afterwards as I have no exciting stories to tell. Software development contains no stories worth retelling.

Weekend workbench

Weekend workbench. 8 Strathclyde Welsh, 1 Welsh mounted warlord, 1 "chubby" Welsh warlord, and 4 Jomsvikings. (The horses were painting a few weekends ago.) All figures are Gripping Beast metals.

Menus and vertical space

I have a dream that one day a webapp's drop-down & pop-up menu takes up the full vertical space available. [Old developer now hurriedly searching for reference within Inside Macintosh.]

Thunderplot

Thunderplot looks to be a useful tool for quick plots. I copied some log data from a terminal window and pasted it into Thunderplot. There was no need for an intermediate file. Thunderplot found columns of integer numbers. I then plotted two line graphs from two of the columns. Calculations on the columnar data is available.

And today it is priced at $2.

Hypercard: Freedom to Associate

Found this at the bottom of a drawer today.

Glue

In the mail this morning I get http://www.instructables.com/id/Adhesives-101-How-to-glue/ wherein I found out about http://thistothat.com/. Useful information for the glue newbie.

Hanging slashes

This week we updated our production Apache Tomcat installations to 8.0.15 (from 5.5.30). We don't need any of TC8's additional capabilities, but we do need an implementation with ongoing security updates. An unexpected difference between these versions is the handling of trailing slashes on URL paths. TC5 would send any requests that were not mapped to a specific servlet to the the ROOT servlet. For example, when the path "/A/B/" was presented to TC5 it would look for servlet A and, not finding it, send the traffic to ROOT. TC8 does not: It returns an HTTP 404 error.

I tried to solve the problem by coding a TC8 Valve to intercept the request, rewrite the URL without a trailing slash, and then have TC8 restart the request process. And all without losing any request content sent with, for example, a PUT request. I was able to intercept and rewrite the URL, but I never successfully got TC8 to restart the request. I was very close, but time ran out for further exploration. (I was also unsuccessful with a Filter implementation.)

Our services are fronted by haproxy and it does allow for URL rewriting. The following placed in a frontend or a backend definition will remove any trailing slashes in the URL's path:

acl has-trailing-slash path_end /
reqrep ^(HEAD\ )(.*?)(\/+)(\?.*?)?(\ HTTP\/1.[01]) \1\2\4\5 if has-trailing-slash
reqrep ^(GET\ )(.*?)(\/+)(\?.*?)?(\ HTTP\/1.[01]) \1\2\4\5 if has-trailing-slash
reqrep ^(PUT\ )(.*?)(\/+)(\?.*?)?(\ HTTP\/1.[01]) \1\2\4\5 if has-trailing-slash
reqrep ^(POST\ )(.*?)(\/+)(\?.*?)?(\ HTTP\/1.[01]) \1\2\4\5 if has-trailing-slash

One could replace the 4 rewrite rules with just one that handles all the HTTP methods but I chose not to: The leading 2 characters are enough to quickly select the right rule.