Friday, October 24, 2014

Forgotten Windows Feature: Document Scraps

Up to Windows XP, there was an obscure little feature of the shell called "scraps." It is a system which, essentially, allows you to take an OLE object that supports dragging-and-dropping (and serialization) and place it in the file system as a file. These files, scraps, are even given special treatment kind of like shortcuts - extensions never seem to be shown for them (though they do have extension SHS).

They are usually generated from Microsoft Office products, by dragging selected text or objects out of the Office window and onto the desktop. They can then be dragged in later to a different document, or double-clicked like normal files to launch the owning application and paste the contents into the new window.

You can read the Microsoft KB article for the official information.

Monday, October 20, 2014

Robotics - Design Day

Today's robotics meeting did not involve a lot of robotics. Instead, we were in the upper school computer lab to work on the engineering notebook and T-shirt designs. I made a little more progress on the notebook; it is going slowly, though. The other designers dug up last year's shirt design and adapted it to have our names on it. This is good - I liked the old design.

We really need to get back to robot building.

Sunday, October 19, 2014

Windows 95 Network Fonts Folder Bug

While transferring files from a Windows 95 machine to a Windows 95 VM, I discovered a very curious bug. I needed to grab all the fonts from the machine and put them in the VM, so I used Explorer to access the machine's fonts folder via LanMan. The two computers appeared to have the exact same set of fonts when I looked at it on one screen (one window at the local folder and one on remote), but the real machine had far more when I looked at its fonts folder at the real workstation.

I accessed the VM's fonts folder over the network from the real machine, and it showed the same fonts on both computers - but with an entirely different and much larger set of fonts! Apparently, accessing any folder that is configured via desktop.ini to be the Fonts folder will produce the Fonts dialog without regard for which computer it is on.

The workaround was to copy all the font files over via a command prompt, which doesn't do any special shell-folders stuff.

Saturday, October 18, 2014

What's up with the big air blocks in Minecraft oceans?

If you've played Minecraft for a while and gone adventuring on the high seas, you may have noticed an unusual phenomenon in large bodies of water. Large rectangular-prism pockets of air may sometimes generate a few blocks on or under the ocean surface.

These appear when abandoned mineshafts have generated or attempted to generate under the ocean floor. The air pockets would have been filled by an "entrance" to the mineshaft had there been the right type of blocks there.

All structure generation is canceled by the presence of liquid within a component's bounding box, but the critical/initial parts do execute some generation routines. For example, the End portal room of a stronghold will generate wherever it tries to, though it might be alone if other potential components intersect standing liquids. Evidently, the block-clearance code for mineshafts executes before the liquid check, resulting in the strange air bubbles.

Thursday, October 16, 2014

Robotics - Wi-Fi Time

As in all Thursdays, today's robotics meeting was extended from its normal length of 90 minutes, this time to a full three hours! (Fortunately, there was pizza.) I finally started on the engineering notebook, taking advantage of my nice video-and-image camera to photograph the sketches on the whiteboards. 

I also took some time to read over the engineering notebook section of the rulebook, and also went through the official FTC Forum's question-and-answer section. When a question is asked there that requests a rule clarification, the response from the FTC officials is essentially added to the rulebook. Unfortunately, it's spread out all over a bunch of forum threads and not centralized very well, so basically rules are constantly being created and I don't have a convenient way to know about them.

The box-with-flap idea continued its development. The team captain attached a servo to the box and constructed a frame for the assembly, which will be combined with another design by a different builder.

Builders from the school's other team asked me to help them program their robot. They don't have a programmer, and I didn't have anything else to do, so I started hooking up their robot with some functionality. First, we needed wireless connectivity. The Samantha module that I couldn't get to power on previously worked on their robot (I guess the battery I was using is bad), but it refused to accept configuration from the USB drive - it would do the light cycle like it was updating, but would always go to a random unsecured network instead of the one I told it about.

It turns out there were two problems. One: the Samantha module was bad. Two: the flash drive I was using had too much capacity. The Samantha bootloader can only address 4GB of hard drive space and will be very confused if there is more. Fortunately, there was a 2GB drive laying around.

With everything connected, I moved on to writing some code. Since all they had connected to the robot was the driving motors, the code was extremely simple. However, it didn't work well at all - the joystick controls don't seem to have any effect. It works as expected when I hard-code motor power values, but passing in joystick values makes the robot go in circles slowly or do nothing at all, depending on whether I epsilon'ed the value.

I did discover that I have to call getJoystickSettings (or something like that) on the "joystick" object, but even that doesn't seem to help. I'll have to keep looking in the configuration - something has to be wrong with the controller setup.

Tuesday, October 14, 2014

Robotics - Scoop Design

Some people actually came to today's robotics meeting! (Well, two more than yesterday. It's something. At least one of them was a builder/engineer.) I wrote all the ways to score points on the board so we can start planning which goals to go after, but without a basic robot we can't really test anything to see what's possible.

The team captain (who is a builder) showed me a design sketch for the scooping mechanism for the balls. It has two servos: one to flap its lid (which is also a shovel-like thing) and another to flip the entire box-like assembly up for elevation. The assembly will probably be elevated with a linear slide for dumping into the rolling goals. He also had some ideas for a light little channel to attach to the box assembly to extend its reach.

We don't have a drill yet, so removing those misplaced rivets is not currently feasible. The coach said he would bring a drill on Thursday, we should be able to finish up field construction then. I continued my attempts to power on the Samantha module, but I believe the battery with which I am trying to power it is faulty despite it turning on the LED in the motor controller. In the meantime, I will take on the role of engineering notebook compiler.

Monday, October 13, 2014

Robotics - Oops

There were extremely few people from my team at the robotics meeting today (despite almost the entire other team being there), so we did not accomplish much. I did pull out the instruction manual for the center field assembly, then tried to continue the assembly with the help of the only other person on my team present.

We got to the part in the instructions where it says to place the ball holder, but we couldn't understand how to screw it in. When we found the holes for doing so, we noticed that the pipes that were holding the upper part stiff were in the way. Then, to our dismay, we discovered that the instructions mentioned an entirely different set of pipes when it told us to push them through the center slope's holes. We had been using the kickstand pipes, which were obviously far too long! To make it even worse, the other builders had drilled holes in those pipes to line up with the holes on the side - and then riveted the kickstand pipes to the inside wall! The short pipes that were intended for bracing already had holes.

We'll need to figure that out when we get a drill. In the meantime, I installed Git for Windows onto my school laptop and successfully authored a commit to GitHub using it. This source control thing works fairly well.