A Third Experiment In Video Screen Capture

The third experiment involved finding tools that would allow me to process video in arbitrary resolutions. The only unpaid editing tool I was able to locate in a reasonable amount of time (defined as two hours of reading, but not of installing things one after the other to see how they work) was VirtualDub, but that software only processes AVI files. The capture tool I’d been using only captures in WMV and converting that to AVI would cause distortions which would defeat the purpose of this experiment, which is to process video end-to-end in non-standard resolutions. Therefore I had to locate a tool that would capture AVI in arbitrary resolutions. Fortunately there’s a nice tool that does this and it’s one I’ve used before. Hypercam to the rescue!

Link to full resolution video here.

The captured video had a resolution of 1028×632 and came in at 133 MB. That’s right, MB. The editing operation involved trimming a few seconds off the beginning and end of the original video and saving the output, which resulted in a video of 862 MB. No audio track in included so I have to figure out what VirtualDub is doing or not doing with compression to see why that might have happened. As it is, the video takes forever to load. Moreover, YouTube complained that it was having trouble processing the resultant video when I uploaded it, so that part of the process is also potentially suspect. However, the video does play, though YouTube appears to have reduced its resolution and probably color depth and other attributes to keep it under the size limit.

The video itself shows a building evacuation tool that was developed by Regal Decision Systems while I worked there. I didn’t work on the simulation or graphics output but I did design the parameters and user interface for the part of the tool that allows users to define the complex range of behaviors of different types of evacuees.

Aside from the issues of file size (AVI is typically larger and better suited to editing, WMV is typically smaller and better suited to sharing) it seems that it’s easier just to use standard resolutions end-to-end where possible. As I was reading about a number of the editing tools I learned that they all make choices about what formats and resolutions to handle. Some tools might be higher end with respect to features, but limited only to resolutions typically associated with broadcast media. Other tools might provide a range of features but target a variety of target devices and their varying resolutions.

Review of the comparison tables and other articles shows that they don’t tend to delve into the issue of handling non-standard resolutions. It would be nice if they did. However, that isn’t a question most people would ask until they stumble upon a need for it, and even then they may decide to simplify things by using a standard one. Alternatively, some editing tools can export video of reduced resolution that was generated by clipping the original rather than scaling it. That could also be a useful solution in some cases.

Posted in Software | Tagged , , , | Leave a comment

A Response to the Question: Where Are All of The Young Entrepreneurs?

I encountered this article on LinkedIn today:

Where Are All of The Young Entrepreneurs?

It made a number of good points about college loan debt, occupational licensure, and other issues having to do with government interventions but it missed some very important points so I felt the need to respond with the following comments:


Wow, this article really touched a nerve.

It makes a number of salient points regarding excessive government interference in the economy but does not discuss what may be the biggest interventions of all, subsidies and bailouts of large, politically connected companies (especially the banks) and zero-percent interest rates, both of which allow zombie enterprises to keep limping along well after they should have gone out of business. The free market (that thing we don’t actually have much of) is supposed to clear out the dead wood. Bloated, inefficient, expensive producers are supposed to be cleared out so their human and capital resources can be redeployed by people with better ideas, and generally at a lower cost. If you keep the old, inefficient companies in business, surrounded by walls of politically purchased regulations, then the Schumpeterian clearing-out process cannot operate.

ZIRP also destroys the wealth of those who would save (or older people trying to live off their savings) while concentrating it in the hands of people who know how to work in financial markets. The financial sector is way larger a portion of the economy than it should be and it’s sucking the air out of the rest of the economy.

Government intervention has also put way too many people in colleges where they don’t belong, and often at far too high a price. People are starting to figure out that the payoff for slogging through any old degree mill (or failing to after some time and expense) isn’t what it used to be. Online education is improving all the time and will put half or more colleges out of operation over the next decade or two. The same thing, frankly, should happen to public K-12 schools as well, and one can only hope it does. Too bad most people, and particularly the government, will fight this tooth and nail.

Going the other way, in the interests of fairness, young people now have to compete against workers in modernizing economies all over the world. It was nice for Americans when they were the only game in town after WWII but those days are gone, never to return.

Posted in Economy and Society | Tagged , , , , , | Leave a comment

A Second Experiment In Video Screen Capture

Yesterday I learned a few things about capturing video using Roxio Creator NXT Pro 3, and made a list of things to do that would simplify the process. The first item on that list was to set the capture area to a) something that works out to a 16×9 or 4×3 aspect ratio so there is no distortion during import or editing and b) dimensions that already match a standard output format. I chose a 640×480 resolution for a small demo program I wrote in Delphi (Pascal) when I first started working with induction melting furnaces.

Link to full resolution video here.

The video begins with the furnace already partially filled with molten metal, as indicated by the green line. It then shows several additions of unmelted material, which is of lower density than the molten metal and indicated by the light blue line, followed by the melting of that material and the subsequent rise in the level of molten metal. In reality the added material would partially sink (like and ice cube), but I didn’t include that behavior in the model. I also didn’t incorporate a thermodynamic model; the point here was just to give me a platform for visualization and a way to calculate the mass of metal still left in the furnace as it is tilted and pours out its contents. The latter part of the video shows the furnace being titled and pouring out its contents until empty, and then being returned to the vertical position.

Calculating the volume of material left in an open-topped cylinder is easy if the bottom surface is covered. If the bottom surface is not covered, however, unless exactly half of it is not covered, there are no direct formulas for calculating the volume of the resultant shape, which is known as an ungula. The volume instead, at least as far as I could determine from the references I had back when I wrote this, had to be calculated using a numerical integration technique. That’s a story for another day, though. Today I’m talking about video capture.

It turns out that setting a capture area as I described makes the entire process of importing, editing, and exporting work easily and without distortion of the video. Indeed, it was almost too easy. The details of this video were a bit less important than they were in yesterday’s example, so the embedded video looks decent even at half its normal size.

Posted in Software | Tagged , , , | Leave a comment

A First Experiment In Video Screen Capture

Capturing video of older, running software can be a bear. A link to the full-size YouTube video and a smaller in-situ version are included directly below. I kept things simple for this first evening just to see what issues I’d encounter.

Link to full resolution video here.

The video shows a brief slice of a running simulation of a two-line tunnel furnace with shuttles. Two casters are each feeding steel slabs directly into a reheat furnace of about 800 feet in length. The shuttles are used to transfer the slabs to the furnace that is inline with the single rolling mill. The simulation itself was written from scratch (by me) in Borland Pascal version 7, which was the last version to run in DOS. I think that version even had a Windows interface but did not yet produce Windows executables (that would have to wait for Delphi). The program runs at a full-screen resolution of 800×600 pixels. Since I no longer have a machine that will run DOS natively I instead ran the simulation program in DOSBox version 0.74, which adds a few pixels to the height and width for its header and borders. VMWare Fusion, apparently, stopped supporting DOS environments a version or two back, as did Microsoft’s Virtual PC tool, so this still appears to be the best option, though it hasn’t been updated in several years.

The simulation program is controlled by simple keystrokes indicated by the highlighted letters in each of the available commands in the top section of the screen. Commands in blue simply executed an action. The most basic of these were to control the simulation by advancing a single time step, running continuously, freezing, or reinitializing. Since this was a continuous or time-domain simulation the time steps were always the same (three seconds in this case). Commands in purple generally initiated some sort of editing action which took place in an overlay. I had to save the image of the windowed area, perform the desired functions in a pseudo-window, then restore the windowed area. The Edit command itself allowed the user to select and modify any of the values in the variable list, shown in the two columns to the left. The green and red commands are states that can be toggled between on and off. I can’t remember how the yellow and gray items worked. All of the updating elements could be toggled on and off individually (or in groups of similar items like the values in the variable list).

Stopping the updates of more and more of the display elements allowed the rest to run more and more quickly, since the program didn’t pause to run as slow as real time. This feature is especially useful when running the calculations for predicted discharge temperatures and displaying the second 3D furnace display that shows them in addition to the actual temperatures you see in the video.

DOSBox itself intercepts the control-F1 key for its own purposes which makes it annoyingly difficult to set the program to automatically feed the Line 1 furnace. That meant that I had to hit the F1 key myself whenever I wanted to start feeding a new slab into it. That hindrance can be overcome in a later iteration.

Since this was only for internal analysis there was no attempt to make it pretty. Each update is drawn from scratch in its entirely each time step. The flicker occurs because the program didn’t screen flip between alternating buffers. My reading indicated that it was possible to do in that version of that language but I never implemented it.

I did the screen capture with Roxio Creator NXT Pro 3 using the custom area capture tool and I came within a pixel or two of sizing the area just right. The flicker works a bit better when viewing it with the naked eye but the screen capture ended up looking ok. As reporter Dickie Dunn from the movie Slap Shot would have observed, it captures the spirit of the thing.

The result of the original video capture was actually very clean. There is some flicker as described but the resolution is captured perfectly. Too bad that clarity didn’t quite survive the rest of the process. This wouldn’t be an issue for a photograph or as much of one for larger text, but changing the size of video involving these kinds of graphics starts to make things fuzzy real quick.

I’m still getting used to the flow of the screen capture tool itself so I captured several minutes of video and needed to trim it down to the 21-second sample you see here. The problem with most video editing tools is that they generally insist on creating outputs in specific resolutions. This is great when you want to target a specific device but I wanted to work with the video in its native resolution, which turned out to be 804×628. I could get the obvious video editing tools (Roxio and Windows Movie Maker in my case) to create outputs with custom dimensions but they both insisted on importing the video into a 16×9 or 4×3 aspect ratio. The native resolution is close to 4×3 so the import operation added black bars to either side of the video. Had the width been more than about 837 pixels the program might have chosen to add bars to the top and bottom instead.

In the end I could have done a few things to improve the quality of this video:

  • Capture the video quickly so I end up with something small that doesn’t have to be trimmed and hence altered by the editing software.
  • Find an editor (cheap or free as this isn’t my everyday toolset) that will let me work with video in its native format.
  • Spring for an expensive editor for the same reason.
  • Capture an area that matches a standard resolution so the editor won’t need to modify it on import or export. I might then have to accept borders of some size, though if I cut off the DOSBox header and borders I might be able to get 800×600 exactly if I was careful. Sims I have in other resolutions (I think I have some in 1024×768) may or may not be a problem. An editor that would let me output a custom-sized subset of that result would probably also allow me to work in native resolution in the first place, though that idea warrants some further research.
  • Learn more about the Roxio screen capture tool itself, just in case I’m missing something. Since the tool only captures video in .wmv format I’m probably not missing anything there, but changing the frame rate of the capture might help.
  • If I wanted to get real creative I could modify the program to save its own screenshot after every time step update, and the captures could then be stitched back into a movie. Maybe. I once had a video tool that claimed to do the reverse operation but it never actually worked. I would also have to set up a DOS environment to successfully host the development software.

Did I miss anything?

For the time being I’ve also chosen not to add titles, multiple cuts, transition effects, and narration. I also captured the original video with no sound. One thing at a time, right?

Posted in Software | Tagged , , , | Leave a comment

Multidimensional Arrays in Javascript

Defining arrays in Javascript turns out to be a bit tricky. You can’t just predeclare the dimensions, you have to initiate them by defining the actual values for each element, dimension by dimension. For a one-dimensional array with three elements we can do this a couple of different ways.

In both cases the mechanism that defines the actual size of the array is the act of assigning values to the elements. Initialization of two-dimensional arrays works the same way.

This works because all of the elements are initially populated in order. The interpreter continually expands the definition as elements are defined. These methods work for arrays of three or more dimensions as well. That said, declaring and populating arrays of three or more dimensions is best accomplished using the new and loop method. Trying to declare higher-dimensioned arrays directly gets painful rather quickly. This is even true of one- or two-dimensional arrays if one dimension is quite large.

One might be tempted to try the following shortcut on the theory that the interpreter will just have to allocate what it needs, but we find that it doesn’t work.

The process feels a bit cumbersome but it is what it is. Once an array is defined as it needs to be it can used anywhere in a program and can even be passed as a parameter to a function, where statements internal to that function will interpret the array and its dimensioning correctly.

Posted in Software | Tagged , , | 2 Comments

Starting to Learn About the Java Memory Model

While out for a walk today, and while listening to lectures about economics, my thoughts wandered to the structure of the Java language. (They do that. I don’t always know why…) From writing assembly for various processors and also from writing Pascal, C, and C++ on machines with limited resources I was used to thinking about the various areas of memory for the operating system and for code, fixed data, the stack, and the heap. For some reason it occurred to me that since variables in Java are all declared within functions there might not be a need for a standard data segment. Upon Googling “Java Memory Model” it appears that this is the case. It also appears that the memory model includes some additional complexities I wasn’t used to, which could not help but be interesting (and also necessary to know). I’ve also spent some time thinking about the internal architecture of dedicated discrete-event simulation tools (continuous simulation programs are actually easier to implement from a framework standpoint) but that is a discussion for a different day.

Before proceeding it’s important to consider that the Java Memory Model itself has evolved over the years. Single-threaded Java programs didn’t present much of a problem and could be analyzed in much the same way as programs I was used to dealing with. The main complexity arises when handling multi-threaded operations. I had long worked with real-time systems but there was only so deep I ever had to go. I had to ensure that memory areas were locked when individual processes wrote to or read from them but otherwise let the operating system worry about making the many single-threaded processes play nice. As long as the individual programs were not too large there was never a problem. The most complicated multi-threaded program I designed was one that separated the a periodic communication process from the UI for that program (process), so if the user went crazy manipulating a slider or doing something else unusual there would be no interference with the part of the program that was doing the work. Java is a more recent development that encourages the use of multi-threading, so naturally it pays to understand how the model works in some detail.

Upon reading further it appears that the internal architecture of the JVM is intended to handle the fact that Java straddles the idea of being compiled and interpreted. .java files containing human-readable source code are translated into .class files containing byte code, which is the “compiled” part of the process. The byte codes are then “interpreted” by the JVM on each machine/OS, which presumably allows for a high degree of portability. By contrast, languages like C++ are purely compiled while Javascript, Perl, and Python are purely interpreted.

I also learned that the current usage of the term “memory model” has a very specific meaning related to how memory and operations are managed in multi-threaded systems. It turns out that the C++ memory model was worked out and adopted after this was done for Java. What I had traditionally thought of as a memory model is described in a Wikipedia entry titled “Memory Address.”

This highly-rated article provides some insight into diagnosing various types of memory errors thrown by the Java Virtual Machine (JVM), and discusses the behavior of different JVMs. The article, and many other sources, describe six possible areas of memory referenced by Java:

  1. Program Counter Register: This area merely stores the memory location of the instruction currently being executed by each thread, unless that thread is executing a native method, in which case this information is stored elsewhere.
  2. Java Virtual Machine Stack: This area stores the current working stack for each thread.
  3. Heap: This area stores all of the objects instantiated by all threads.
  4. Native Method Stack: Native code is code written in a different language (say, C++) for various reasons and such processes will have their own stack allocated for them. (A dedicated program counter will presumably be maintained as well.
  5. Method Area: Information about methods and their associated data elements are stored in this area. All threads share a single method area for each JVM instance. (Q: Can there be multiple JVM instances on one machine? A: each program or process gets its own JVM instance; threads within a program share the same JVM instance.)
  6. Runtime Constant Pool: As a JVM instance loads each type definition it stores the related descriptive elements in this memory area. The Runtime Constant Pool is itself allocated within the Method Area.

Links for future reference:

Free online chapters from “Inside the Java Virtual Machine” by Bill Venners

Oracle JVM reference

Posted in Software | Tagged , , | 2 Comments

Order Of The Engineer

I grew up reading a bunch of popular technical magazines and always wanted to do something in that vein. Excelling in a seventh grade mechanical drawing class gave me an idea that I might become an architect but over time the arty side of that profession didn’t feel quite right. It therefore made sense to pursue engineering. That was more about solving a particular kind of problem that worked for me.

Fast forward many years to meeting an engineer at Westinghouse who wore a faceted iron ring on his right pinky finger. He said it symbolized the responsibility of engineers to do their best possible work and to safeguard the public. The Iron Ring is presented during a ritual called Ritual of the Calling of an Engineer. The ritual, interestingly, was written by Rudyard Kipling and was initiated in Canada in 1922. The ring is worn on the little finger of the working hand so it will contact the working surface on which the engineer is drawing or writing, to remind the engineer of his or her obligation.

There is a legend that the original rings were made from iron taken from the Quebec Bridge, the first iteration of which famously collapsed during construction in 1907, but in reality there is no connection between that event and the ritual. For practical reasons the rings today are mostly made of stainless steel.

The Canadian tradition inspired the Order of the Engineer in 1970, in which American engineers are presented a similar ring with a similar meaning. Membership in the Order, which is open to graduating or practicing engineers, is strictly ceremonial. I always thought this tradition was really interesting and when I found out there was an American version I became a member on March 30, 2012.

Order of the Engineer ring and memorabilia

Posted in Engineering | Tagged , | Leave a comment

Don’t Use the Tool Until You’ve Already Solved the Problem

The article below opened the Continuum section of the August, 1981 issue of Omni Magazine (page 35, 15 in the linked pdf). It’s interesting to me because I took third-semester physics from Dr. Eisenstein, who is mentioned early in the article. I read it about a week after he commented in class that when students get lost they tend to turn on their calculators and start fiddling with numbers, as if the calculators were going to help them solve their problem. In truth the numbers don’t tell you that much until you already have the correct solution in a logical sense. In beginning physics this usually meant having formulated an equation that correctly described the situation at hand.

I point this out because different technologies, organizational techniques, computer languages, application frameworks, and development stacks don’t help you much if you don’t understand the problem you’re trying to solve. You can write a really slick program in Python or C# that makes up for being ugly by being painful to use and not satisfying the customer, or you can write a program in any language that works smoothly and makes the customer happy. So which is the more important consideration, the tool or technique or how they’re applied to solve the customer’s problem? Which skill is harder to find, x months or years of y tool or z problems correctly analyzed and addressed?

I would never suggest that newer tools aren’t necessary or worthwhile; they can certainly do many things that older tools can’t, and they can often do the same things more efficiently. My favorite older tool, for example, is Borland C++ version 4.0. I’ve used it to create UI mockups/wireframes and multiple tools but it doesn’t provide native support for the center mouse wheel or processing XML files (though I’ve written my own code that does so). Newer tools and environments include many, many features intended to improve programmer speed and accuracy, support larger memory models, automate more features, and so on.

Doubtless I could make a number of additional observations about the musings of some of the thought leaders of 1981. On the one hand computing technology is far more pervasive than it ever was but on the other hand many of the problems, questions, and behaviors haven’t changed.

The text of the referenced article follows.


HACKER MENTALITY

That old image of the computer as the Great Dehumanizer is starting to fade. Little by little, people are beginning to form very personal bonds with these intelligent machines.

A large toy company recently received a pile or fan mail about one of its teaching toys, a microprocessor with an eight-track-tape cartridge setup packed in the body of a plastic robot. One woman who originally didn’t want her son to have the toy wrote, “I apologize for nearly denying my son the opportunity to befriend the robot because of my ‘prejudice.'” She went on: “I’m sure my son would rather have [the robot] help him with his schoolwork than have me help him.”

People with more technological savvy have gone even further off the deep end. Physicist Robert Eisenstein, of Carnegie-Mellon University in Pittsburgh, sees a peculiar kind of attachment to the most basic computer, the pocket calculator, among the bright undergraduates who take his physics courses. It amazes him how panic-stricken they get when they leave their calculators behind or when batteries go dead in the middle of a test. They seem lost, he says, and “feel they cannot function without this lollipop at their fingertips.”

If these small calculators may be seductive, the big ones – the megabrains – are devastating. Joseph Weizenbaum, professor of computer science at Massachusetts Institute of Technology, was the first to talk about the phenomenon of the “computer bum.” or the “compulsive programmer.” The term includes anyone who has a mania about working with computers to the point where he or she withdraws from the world to the fluorescent-lighted cloister of the on-campus computer center. Compulsive programmers may end up communicating with no one but the computer, taking a break now and then only to talk to other compulsives through the computer terminal.

Stanford University psychologist Philip Zimbardo knows the type. He calls them “computer addicts.” He believes their closeness to the computer can start early on, in schools where human teachers use electronic tutors as backups in the classroom. “Fascination with the computer becomes an addiction,” Zimbardo says, “and as with most addictions, the ‘substance’ that gets abused is human relationships.”

Any college or university with a computer center has its share of “computer jocks,” or “hackers.” “They may find it easier to relate to a machine, which is absolutely predictable, than to a person, who isn’t,” suggests Charles Rose, chairman of computer engineering and science at Case Western Reserve University in Cleveland. In one case. Rose had to recommend counseling for a student who tried to escape family problems by spending most of his time with a machine.

Not all of us have trouble at home. Why are we getting so close to these machines? Psychologist Zimbardo sees these electronic friendships as indicators of a greater social trend. More and more people, he says, have a kind of hacker mentality, putting machines— putting anything — before the needs of other people. More basic than the hacker mentality is the special allure of the computer. As one computer-science graduate student put it, “They’re very sexy, almost too fascinating. When you use them, you have to back off now and then.” For the programmer, the lure is power. He is “a creator of universes for which he alone is the lawgiver,” explains MIT’s Weizenbaum. “No playwright, no stage director, no emperor, however powerful, has ever exercised such absolute authority.”

Right now, moving through our elementary and high schools, there are the children who could be called the computer generation. Having grown up with computers, they may be immune to their sex appeal, but they may adjust in their own way. Futurist Peter Schwartz, of the Stanford Research Institute, in California, predicts that years of interacting with computers will actually change how those children think. They will, he believes, regard abstract concepts, more palatable to a computer, above the world of the concrete. A computer mind-set would also value logic skills and prefer man-made to natural or organic things. And since computers function in a realm where logic, order, and predictability are the norm, they may also leave the computer generation unprepared to cope with the world outside computer circuits; life does not follow such a neat, preplanned program.

If this happens, what will result? A generation ultimately disappointed and disillusioned by what the computer has taught them? As Eisenstein points out, “There’s a tendency for people to put blind faith in devices like that, and I think one of the reasons we’re in trouble today is that we blindly trust in technology’s ability to solve all our problems.” —DOUGLAS COLLIGAN

Posted in Soft Skills | Tagged , , , | Leave a comment

Cool Building Toys

My favorite Christmas gift growing up was always some form of construction toy. There are a bunch of them out there and I think they’re good for teaching kids logic, cause-and-effect, and hand-eye coordination. They’re great for giving kids a sense of control over something in a safe way. Trying out permutations and combinations on my own prepared me to be able to generate options in abundance in my professional life, and also help customers choose which ones might work best. Here are some of my favorite kits, both common and obscure.

Have a great holiday!


The toys start out simple and get more complex.


They include more shapes.


Then they include more colors and materials.


Tinkertoys are classics. They don’t make the old wooden ones anymore. My favorite was a tower that almost reached the ceiling in our living room. The kit included super-long white sticks I never saw in any other kit.


Lego needs no introduction and no explanation. It’s one of the most popular and successful toys ever. There are so many specialized pieces now it almost seems like a different toy. Whatever happened to just bricks? Before you start worrying that I’m going to tell you to get off my lawn I remember thinking how cool the more specialized pieces were. I even remember trying to design a new piece and send it to the company.


The railroad sets made by Child Guidance were so much fun. The engine had a flat front with a little sticker with a face on it. Thomas the Tank Engine toys are derived from this.


Child Guidance toys were pretty popular in our house. These Guidancetown U.S.A. buildings were made to sit by the railroad tracks.


I’m not sure we ever had Lincoln Logs but most of my friends sure did.


You were supposed to run your Matchbox cars around on street networks you made with the Lesney Matchbox Build-A-Road set. It included sidewalks and street signs. It was kind of annoying to put together but still fun for a while.


Calling Play Doh a construction toy may be a stretch but it makes at least some sense if you think about it. It certainly never stopped being fun. I loved the extruder, the Fuzzy Pumper Barber Shop, and a charades-like game called Claymania.


I’m not even sure I’d remember Crystal Climbers if one stray piece hadn’t hung around in a box of flotsam across all these years. I’m not sure how engaging they were back in the day and they are definitely obscure at this point.


This Crystal Roller Coaster set is similarly obscure and even harder to find. I remember doing a bunch of odd things with the blocks that didn’t involve rolling marbles through them.


My grandparents in New York got a terrific Construct All set for us. Over time I stopped using the rivet gun and just pushed the rivets in by hand. All of these toys had different feels and this one was particularly memorable for some reason. The coolest thing to make was always a crane.


Erector Set is another iconic toy that would be too expensive to make today using the same materials. The new sets don’t feel the same at all. The motors, transformer, and gearbox made these really interesting. Over time I stopped using the wrenches and just tightened the nuts by hand. I had one of the Powerline sets that included a lot of interesting pieces and I remember buying more pieces from one of my friends to expand my kit.


My aunt thought it was a real coup when she bought a SuperStructures kit from Neiman Marcus. These aren’t well remembered. They were a bit limited but interesting.


Tog’l were quite popular for just a few years but then disappeared. The blocks were the core of the sets but the ancillary bits made things interesting, especially the bellows setup that made some of the models move.


Capsela came along after I outgrew this sort of thing. I thought they were cool when the kids I babysat for played with them.


Magnetic sticks and balls are of much more recent vintage and often show up as fidget toys in offices.

Here are a few things that are modular but aren’t building toys as such.


The kits we used to get from Radio Shack had springs and wires and I remember listening to Baltimore Bullets games on a crystal radio set I made with one of those. The old and new sets are both pretty clever. Don’t tell my nephew, but he’s getting a Snap Circuits kit for Christmas this year.


Hot Wheels are still around and still wildly popular but the track setups don’t seem to be emphasized as much.


Model trains are for kids of all ages.


This may not have been a true building toy but coming up with ridiculous slot car track layouts was definitely part of the fun.


I built and flew model rockets for years. I finally gave the box of stuff I still had to one of my friends’ kids, who had a blast with them.


I only built two or three Revell plastic car models and I can tell you they didn’t come out this well. Still, who could grow up in America without building at least one?

Posted in Life | Tagged , | Leave a comment

If You’re Going To Use That Time on the Road, Here’s How

So you’re on the road and have some time on your hands. You decide to buff your skills or do some research or work on a demo project. Here’s how you might go about it.

Work on a certification: There are a ton of different certifications you can earn and many of them involve online learning. In-person classes may be more suited to the subject matter. When I was studying Agile and Scrum I took a purely online PMI-ACP course but the various Scrum certification classes involved classroom instruction and interaction. The Six Sigma instruction was all online and I did both to prepare for my PMP exam. Whatever form your preparation takes you can certainly fill your time with online study or review of class materials.

Take an online course: I won’t even try to list them all nor try to evaluate their strengths and weaknesses. I’ve done a little bit of that elsewhere and the Internet is full of such discussions. The important thing is that you can get the basics from anywhere but to get really good at something requires a lot of work. I’m assuming that you’re already a working practitioner who knows what it takes to round out solid production code that works, looks good, and makes your customers happy. It’s that experience that tells you how deep you have to go in studying a new language or technique. Courses give you some kind of a framework but to supplement that you need a project, possibly some books (try Safaribooks.com), and to dig around on the web.

Work through a book: Speaking of Safaribooks.com I taught myself the basics of Java by working through every exercise in the book, Learning Java, 4th Edition, by Patrick Niemeyer and Daniel Leuck, in both the Eclipse and IntelliJ IDEA environments. Studying both of those environments was instructive by itself and that book also provided an introduction to the Netbeans environment. I worked through another book on functional programming, Functional Programming in Java, by Venkat Subramaniam. Over the years I’ve purchased and worked through stacks of books about Pascal, C, C++, and specific applications. The process works as well with physical books as electronic ones.

Learn a new program: There are tons of programs that allow you to do almost anything. Most practitioners probably pick up utilities here and there without even thinking about it. Those that allow you to produce instructional content might be of particular interest. I’ve heard terrific things about Camtasia Studio though I’ve found I can do most of that with Roxio Creator NXT Pro for a much lower price. There are many, many classes of capture, editing, and creation tools you can learn.

Expand a skill you’re already using: Poke around the web to see what people have to say about things you’ve already done, especially things you’ve done recently. There are many opinions about how things can and should be done and a lot of advice, arguments, how-tos, and examples. If you don’t see a way to do something better you might offer to share what you’ve learned, and you will almost certainly learn what some of the alternatives are. You may also gain some insight into industry trends that may shape the projects you work on and the tools you use. Reading about those might allow you to get ahead of the curve in some area.

Complete a project of your own: I’ve written a lot of programs and tools over the years. Most of them were for work (or school, though those were invariably smaller) but a couple were for my own edification. You might create a game or a necessary utility to get more practice with a language or framework you’re already using, or you might reproduce a previous capability in a new language. For example I’m currently rewriting an old 3D animation to get comfortable with Javascript and the HTML Canvas element. Translating to Javascript from Pascal/Delphi is a little strange but it’s giving me good insight into how to handle data types, parameters, and browser debugging work and it’s helping to build my overall confidence with that loosely typed language. Given the structure of the language and its syntax it doesn’t feel like three-dimensional arrays will work right but experimentation has shown that they do, and that defining and initializing them is a nontrivial exercise.

Learn a new framework or API: A recent online course walked me through the basics of the Google Maps and Twitter web APIs. I have friends that have leveraged the Google Maps API in interesting ways and I’m sure there are a bunch of them out there. Taking a few hours or a few days to buff up something simple is interesting, informative, and good practice.

As your friends what they think is interesting and what they wish they knew more about: Throw the question out to your friends on Facebook, your connections on LinkedIn, or the users on your favorite forum. If you discover something interesting you might be able to help out someone you like–and generate possible opportunities.

Check out programming forums: Dream In Code, Reddit Daily Programming Challenges, and of course, Stack Overflow are always a good source for interesting things to try.

Once you’ve done even a little of any of these options you can find yourself with more things to try than you’ll ever have time for. You obviously want to choose activities that are most useful to you, your employer, or your customers, but you should never lack for ideas after even the briefest consideration.

What have you tried?

Posted in Software | Tagged , , , | Leave a comment