Concentration

I’ve always loved game shows. One of the cool things about a vacation day or snow day in the winter was that I got to see my favorites. The ones that stick out in my memory were the original Match Game late in the afternoon (I remember being disappointed with the changes made for Match Game ’73, though in hindsight, the changes were for the best), Jeopardy, with Art Fleming around noon time, and my all time favorite, Concentration, in the mid morning.

I think a big part of my attraction to Concentration was the marvelous game board. Thirty numbers, all on rotating trilons, with one face for the number, one face for the prize, and one face for the puzzle piece. Each puzzle was a rebus, spelling out a phrase with pictures.

(Yes, it’s cheesy by today’s standards.)

I worked my way through several versions of the home game, but they were always unsatisfactory in one way — no rotating numbers. The puzzle was on a scroll of paper, with clear slots for removable number and prize cards. The game play was the same, but the game board was different.

Introducing Concentration

I’ve long wanted to build my own Concentration game. About twenty years ago, I tried building my own trilon-based game board, but after building all the trilons, I couldn’t figure out how to make it work.

About four years ago, I started building a version in HTML and JavaScript. I got as far as a game board and score board that worked—prizes were distributed randomly, it detected matches correctly, it handled “take” and “forfeit” properly, but the gameplay was clunky, it didn’t handle end of game well, there was no option to replay,  and it looked crummy. I was intent on duplicating the original look of the original game, but it was unfinished.

Last weekend, needing something I could demonstrate, I picked the project up again and polished it up. Now, with the power of CSS transforms and transitions, I finally have my rotating trilons. I’m now using jQuery in the script, which has simplified transitions between stages of the game. With downloadable fonts, specifically Open Sans, I’ve made the game look a lot nicer. And the game play between turns is a lot smoother.

Play Concentration here.

About the Game

My game uses the same game rules as the original game that ran on NBC from 1958 to 1973, not the later Classic Concentration version which some younger folks might be familiar with. There are thirty numbers, not twenty five, with some “Take One Gift” and “Forfeit One Gift” squares factored in. To guard against the “Forfeit” prizes, there are a couple of gag prizes as well.

There are currently five different puzzles; I plan to add more as I have time and can think of them—the structure of the script makes it very easy for me to add more puzzles. A while back I found “Rebus Font” which is a font made up from many of the symbols used on the original program.

Unlike the original, my puzzles are in color. The original producer, Norm Blumenthal, fought the switch to color, feeling that colored puzzles would give the solution away too fast. When NBC insisted on switching the show to color, he compromised by going to pink drawings on a maroon background.

At the moment, the game does not use responsive design; it works best on a desktop browser or iPad. This is the thing I intend to work on next. It also requires a recent browser that supports CSS transforms. I’ve discovered it doesn’t work properly in IE 11, but at the moment, I don’t have access to a machine to test it on. (UPDATE, February 2015: I’ve discovered the reason it doesn’t work in IE is because IE doesn’t currently support the “preserve-3D” transformation property. There are work-arounds, but I haven’t tried them yet.)

It currently doesn’t handle the “double wild” case, where one happens to pick a pair of matching Wild Cards; it should allow the selection of another set of prizes, but doesn’t.

I may add sound to the game; I have a recording of a trilon turning, but it needs cleanup.

One of the things that kind of surprises me (about myself) after the fact is that I’ve grown a little more willing to deviate from the look of the original. I guess that’s a sign of growth, or a willingness to make changes in service of a better result. In my original version, the scoreboard looked more like the original scoreboard, complete with serif based font, and the look of the Wild Cards. One of the things that had irritated me about the home games was that the Wild Card tiles didn’t look like the ones on television; in the original version, I created one that looked like the original. And yet… once I switched the prizes to Open Sans, the old style Wild Card stuck out like a sore thumb, so I changed them. Finally, I added a single player mode, so the user wouldn’t have to enter a pair of player names.

I hope you enjoy playing my version of Concentration.

Update September 24, 2021

I’ve replaced this version of the game with an entirely new one, using the Angular framework. The new version is written in Typescript, using newer ES6 features, and addresses several shortcomings of the version:

  • Responsive design
  • Handles the double-wild case
  • Handles duplicate prizes.
  • Animation when prizes are added to the scoreboard

Read about it here. I’m updating the links on this page to the new version, but if you’d like to compare versions, here they are:

Ted For Hire

I had a feeling it wasn’t good when Mark, the president of the company, and Garry, my immediate boss asked to see me last Thursday. The company needed to cut back, and I was out of a job effective Friday. They stressed that it was nothing that I’d done, and that I was leaving on good terms. I asked if I could use them as references, and they enthusiastically agreed. (Mark, in fact, just posted several endorsements on my LinkedIn profile.)

So, where does that leave me? Looking for a job.

I’ve been a web developer for 14 years, writing HTML, CSS and Javascript by hand. I know how to create highly faithful working web pages from Photoshop mockups. I know how to debug cross browser issues. I dealt with Netscape 4 and IE 6. Current browsers are a piece of cake in comparison.

I also have server side experience, using ColdFusion and Microsoft SQL server. Most of that work was in service of our content management and e-commerce platforms, pureEditor and pureCommerce. I wrote a lot of the administrative code for both systems, and along the way, developed a few really neat user interface widgets, implemented in object orientated JavaScript, HTML and ColdFusion:

  • A combination file selector select box plus file uploader
  • A file search plus file uploader widget, for use when dealing with larger quantities of files
  • A “multi-view” page, enabling the administrator to tab between editing a main item, and listing or editing associated items. For example, a page where an admin could edit a course, list students assigned to the course, and edit the student/course assignments.
  • “Search/select” functionality, where the user needs only enter a few letters to search on, causing applicable choices to be populated into an associated select box.
  • A really nice AJAX driven tabbed editor, for administering complex objects like web site records. The tabbing affords organization of the records, and the supporting script loads each section of the form as needed, adds event handlers on load, makes sure the form submission stays in the overlaid editor (rather than going to a new page) , can load external scripts on the fly, and facilitates all sorts of other interaction. I’m really proud of that one.

All of the e-commerce and content management sites have their own custom appearance, implemented via “themes”. I did all the theme development work, starting from HTML prototypes of the designer’s Photoshop mockups to actual integration with the supporting ColdFusion systems.

More recently, for the Bureau of Internet Accessibility, I’ve built a couple of generations of the Bureau site, (the last two versions in HTML 5) built user interface pieces to enable users to see their site scan results, and gotten my feet wet in Python, building several parts of the testing code that assesses pages for accessibility problems. As we started scanning sites, and started generating huge volumes of results (some sites are not well built) I learned how to create imports capable of handling large volumes of data in a reasonable period of time, without taking down the server.

In addition, before becoming a web developer, I spent years in retail. I know how to deal with customers, and I know how to support the people who deal with customers. I know how to document things, and how to explain things to non-technical users.

I’ve learned a lot in 14 years. If you can use my experience, see my resume, or get in touch via resume at tedohara dot net. Or leave a reply here. I see all responses.

 

Video Test

This post is just a test post playing with embedding video with the HTML 5 video element. First, I’m going to try just dragging in a video, and see what WordPress gives me, then I’ll probably end up hand coding it.

This video was shot during my 2012 hot air balloon ride, with my iPhone. One problem I’ve had using iPhone video is that it often comes out upside down. It looks OK in Aperture, and in the QuickTime player, but when I go to transcode it into other formats, it comes out upside down. I discovered tonight the trick is to open it in QuickTime player, and export it.

Continue reading

Random Thoughts

It’s weird how ideas come in spurts. For weeks, now I’ve had nothing much to say, then last night, riding along the bike path, I had two ideas for posts.

Scheduled Posts

I’ve been having trouble with WordPress scheduled posts. I actually wrote both First Bike Ride of the Season and Subtle CSS Error one after the other last night, but scheduled the second one to publish this morning. It didn’t, so I had to release it manually. I just downloaded a plugin to try to fix the “Missed Schedule” issue; we’ll see if it works with this post. Update: It did.

American Idol

I’m watching American Idol again this year. I skipped it last year because I couldn’t stomach the judges, and also felt that it was eating up too much time. This year I’m liking the judges a lot. Harry Connick is especially good. He’s honest, and specific, without being nasty or disrespectful.

The kids, I’m not liking so much. By Top 8 week, we should have been rid of the weaker singers by now.  It seems absurd to me to have someone (C.J.) in the Top 7 who can’t sing in tune—I don’t care about how passionate someone is if they are painful to listen to. Sam Woolf is good sounding but robotic. I liked Malaya, and felt that overall, she’d been improving, but this week’s performance was a mess. Caleb is an excellent performer, but not my cup of tea, Dexter is very karaoke. I like Jessica —I really liked her original, Blue Eyed Lie— but she can get very nasal sometimes. I don’t think Jena’s vocals are as good as everyone thinks, but I do have a little soft spot in my heart for her, since there’s something about her face that reminds me a little of my niece Ally. I think Alex is probably the best of the bunch technically, but he doesn’t seem to be as much of a performer. I can definitely see a career for him as a studio musician/songwriter or producer though.

Spring

Spring seems to be oozing in on us. I’ll probably burn the downed branches this weekend. I need to look at the lawn and see if it’s dried out to dethatch, assuming I can get a rental.

 

First Bike Ride of the Season

I went for my first bike ride of the season tonight. I hadn’t been planning on it—the forecast was for rain, but I do need the exercise, I did have the bike in the car, and it felt warm when I left work, so off I went, despite the overcast. Since the days still aren’t long, I decided to start from the Riverside Square parking lot.

I should have known better as soon as I got out of the car, and a cold wind cut right through my heaviest fleece. I hate riding when it’s cold and raw. My ideal is a nice warm evening when there’s a pretty sunset. Still, I pushed on, my legs despising me. I am so out of shape right now. But I pushed on, knowing that a crummy ride now will pave the way for a better ride next week.

My initial goal was just to do 3 miles. Then I decided to go for the YMCA that’s along the path in Warren. A little further, as it turns out, than I intended, but that was OK. I got there and turned around, and as I headed back, I had a tail wind, and my legs started to loosen up. Eight miles isn’t so bad for the first ride of the season.

Apple II

I began my relationship with computers with a make-believe computer that I drew as a child on on the inside of boxes, and modeled on the computers I’d seen on Lost in Space and Batman (Star Trek was on too late for me) and read about in stories featuring big consoles hooked up to cabinets out of sight. I had fun with that for a couple of days, graduated to making control panels for make-believe spaceships, and that was that. Continue reading

Walk at Sunset

I decided to visit the East Bay Bike path today after work. I was hoping it was still snow covered; I had both my skis and the snow shoes my friend Rich gave me in the car. The plan was to park at Riverside Square and go far enough to see Pomham Rocks Lighthouse.

By the time I got there, the sun had just slipped under the horizon, but the sky was still bright. The path was mostly snow free, so I just walked. It was intensely cold, but also incredibly peaceful– just the water gently lapping at the shore, and geese honking overhead.

Sunset from the East Bay Bike Path, featuring the Pomham Rocks Lighthouse

Sunset at Pomham Rocks

Slide Scanning Update

I was just re-reading my post on my slide scanning workflow, and thought I’d post an update. I’m just about to finish my second carousel, and I’ve made a change that has sped things up a bit.

First of all, I’d like to mention that VueScan no longer requires the the slides to be set to “Mirror”. There was a update a couple of months ago that took care of this issue.

Second, I’ve found a better way to use the “Dust and Scratches” (DS) layer that I generate using the old Polaroid Dust and Scratches plugin. I would imagine this technique would also work with the default Dust and scratches plugin too. To recap, I found that the Polaroid dust and scratches plugin did a very good job of getting rid of dust spots, and to a lesser extent, fungus, but it also left artifacts, and removed detail.

Kids watching my uncle feed a squirrel

Cousin Susan, Uncle Tom, and neighbor watch my Uncle Dick feed a squirrel. Circa 1955

Previously, I was running the filter on a copy of the file, and then adding the result as a layer, and erasing the layer where it was causing problems. This created a lot of work, because I had to carefully inspect the whole image in order to erase the layer where it was causing problems.

Eventually, I realized it would be better to reverse things. Now, I add the layer, and immediately add a layer mask to it in Photoshop, making the layer completely transparent. Layer masks allow you to make make parts of layer transparent or translucent. When the mask is black, the layer is transparent. Where the mask is white, the layer is opaque. Gray generates a semi-transparent area. Once the mask is created, you can paint on it with the brush or any of the other tools, allowing very good control of what parts of a layer are visible. It’s a great tool for creating collages.

So I start off with a completely transparent DS layer, and then use the graphics tablet and brush tool to unmask the layer over dust spots. Generally speaking, for spots and fungus tendrils, it’s faster than using the Spot Healing Brush, and working this way allows me to avoid applying the layer to areas with a lot of detail. For hairs, scratches, and areas of detail, I find the Spot Healing Brush works better—it’s more complete, and it’s less likely to add artifacts or remove detail.

I’ve found this speeds things up quite a bit, since I can keep the brush away from edges and detail, only applying the layer where it’s needed. This means I don’t have to keep checking the DS layer to make sure it isn’t obscuring detail. It’s also usually faster than the Sport Healing Brush — my aim doesn’t need to be as accurate, and I don’t have to fuss with it as much. Using this technique (plus the fact that the current batch of slides hasn’t been as dirty as the first batch) meant that I was able to get many more slides scanned for my aunt than I anticipated in time for Christmas.

Thousand Year Graveyard

I just finished Science’s online article, “The Thousand Year Graveyard“. It’s a very interesting story about excavations around an Italian monastery that’s been a cemetery since the middle ages. It’s a very slick HTML 5 presentation, with big pictures, video, and elements that slide in and out. It gives the background of the monastery, and explains how the excavations were done and what the scientists were looking for.  I highly recommend it.

The story feels oddly incomplete though. It talks about the excavations, and what the scientists were looking for, but there’s not as much analysis of what they found as I would like. I suspect the article is about a year premature–the text keeps mentioning how the archeologists were planning on looking for pathogen DNA, but doesn’t say whether they found any.  I feel that the article would have benefited from being held a year while the results came in. Only the fourth chapter, which deals with a set of skeletons buried en masse, draws any conclusions. Excavators found five skeletons covered in lime, generally a sign of a hasty mass burial; the lime being put down to prevent smells and contagion from the bodies. The archeologists had hoped that they’d found victims of the Black Death, as that would give them information about what caused the plague.

One of the skeletons was very intact and complete; by the fragility of the bones, they could tell it had been an older woman. The lime had preserved the impressions of her clothing, and they found an earring under her. The style of the earring told the investigators that the grave was not from the Middle Ages, but from the mid 1800’s – around the time of a cholera epidemic. They’re now hoping to culture the earth from the grave in hopes of finding cholera DNA, in order to find out if somehow cholera has become more or less virulent.

It’s all very interesting, and very well done, but I have the same problem with it that I had with the Body Worlds exhibits. The skeletons are too human. They’re not beetle browed monkey-like distant hominids from millions of years ago. I keep remembering these were people. From not too long ago. I get the scientific curiosity; I get the potential for discoveries, but there’s part of me that’s bothered by digging them up in the first place.