"randomness" Posts

Moving On!

So as you can tell, I have recently found the time to blog, hence being able to post two days in a row.

For the past 18 months I had the opportunity to work with an amazing team at The Engine Company. We have done some amazing stuff with Loom, innovating on workflow, making cross-platform deployment incredibly easy. I’m really proud of the work that we have done. I’m super excited that the Loom SDK is open source, and I believe that Loom Turbo is the BEST offering out there on the market for cross-platform 2D games.

Recently I have decided that I would like to pursue other interests. As such, I have resigned from The Engine Company. The team will continue to make huge strides in building the Loom SDK into amazing platform to develop on. They’re doing an amazing job, and will continue to do so.

If you’d like to contact me, feel free to ping me on LinkedIn.

Cheers!

Rogne Media Photoshop Puzzle Solutions

Today on the Adobe Photoshop Facebook page, they linked to a Photoshop Puzzle by the guys over at Rogne Media.

The Photoshop Puzzle consists of 20 levels. The goal is to find the code to take you to the next level. There are hints below each image written in white on a white background. You can simply highlight the text to make it show up. I highly recommend trying it for yourself first and only use these solutions if you are absolutely stuck.

I used Adobe Photoshop CC 14.1.1 on a Mac for all levels with the exception of Level 19 which I note down below.

You can start the puzzle here: http://www.rognemedia.no/Puzzle/

Level 1 Solution


URL

http://www.rognemedia.no/Puzzle/

Hint

add dk4ha.html in the address bar to find the next level. Small letters.

Solution

This one is pretty simple, add dk4ha.html to the end of the URL to advance to the next level. This level shows you the basics of what you need to do to proceed to the next level, http://www.rognemedia.no/Puzzle/dk4ha.html



Level 2 Solution


URL

http://www.rognemedia.no/Puzzle/dk4ha.html

Hint

it’s getting hard to read… you might need Photoshop soon….

Solution

Again this one is pretty simple, as you can see this image has the code “asoxch” in the bottom left of the image. So you just need to change the url to ‘asoxch.html’ to advance to the next level.



Level 3 Solution


URL

http://www.rognemedia.no/Puzzle/asoxch.html

Hint

tiny

Solution

As the hint suggests, we’re looking for something quite small. The code for the next level is hidden in the bottom left corner of the image. Using Photoshop I zoomed in to read the code, and then changed the url to go to a4xi.html.

Screen Shot 2013-09-24 at 12.15.06 PM



Level 4 Solution


URL

http://www.rognemedia.no/Puzzle/a4xi.html

Hint

so dark…

Solution

So this image appears to be solid black, and the hint suggests that it’s too dark. So we just need to lighten the image up. An easy way to do this is by using the Levels panel in Photoshop.

So open the image up in Photoshop and go to Image > Adjustments > Levels.

Screen Shot 2013-09-24 at 12.20.42 PM

Once you have the Levels panel open, grab the white slider on the bottom of the Input Levels section, and slide it all the way to the left. The value will go from 255 to 2, and will expose the code to proceed to the next level.

Screen Shot 2013-09-24 at 12.20.55 PM



Level 5 Solution


URL

http://www.rognemedia.no/Puzzle/5sichj.html

Hint

noisy colours

Solution

So at first glance this level looks like just a bunch of static. However, the code is in there. The solution is in the Channels Panel in Photoshop. If you open up the Blue channel, you can see a faint code hidden in there.
Screen Shot 2013-09-24 at 12.32.58 PM

With the Blue channel selected, I open up the Levels Panel again, and move the white slider to make the code easier to read.
Screen Shot 2013-09-24 at 12.35.29 PM



Level 6 Solution


URL

http://www.rognemedia.no/Puzzle/6sixja.html

Hint

numbers in the water…

Solution

So this level tripped me up for a bit, because the hint made me think that the gradient could be transformed into the code by using a filter. So I tried Ripple, Watercolor, etc… but none of them worked.

However, after looking through the Filters menu, I found the Digimarc Watermark filter. You can open using Filter > Digimarc > Read Watermark. The code is the Image ID ’765237′. Clever.

Screen Shot 2013-09-24 at 12.43.21 PM



Level 7 Solution


URL

http://www.rognemedia.no/Puzzle/765327.html

Hint

beyond the channels

Solution

So by default in Photoshop, the Layers, Channels and Paths Panels are together. So the hint tells us “beyond the channels”, which means go one more tab over, in this case to the Paths Panel. As you can see there is a Work Path in this image. If you select it, you get the code to the next puzzle.

Screen Shot 2013-09-24 at 12.48.07 PM



Level 8 Solution


URL

http://www.rognemedia.no/Puzzle/8xysha.html

Hint

hmmm, it’s not displaying in the browser…

Solution

This is the first of a couple of levels that use PSD files instead of standard web files (GIF, JPG, PNG). So you need to download the PSD file and open it up in Photoshop. In Chrome you can simply right click the image and select Save Image As.

Screen Shot 2013-09-24 at 12.54.41 PM

Once you open the PSD in Photoshop, there are two layers. One is the Background layer, and the other is named ’9asoiu’, which is the code to the next level.

Screen Shot 2013-09-24 at 12.53.02 PM



Level 9 Solution


URL

http://www.rognemedia.no/Puzzle/9asoiu.html

Hint

I think I’ll stop giving hints now… They are getting so meta…

Solution

Now he’s getting clever with his hints. He’s telling us that the code is in the metadata of the image. To open the metadata for the image go to File > File Info. You’ll see the code ’10welldone’ in the Keywords section.

Screen Shot 2013-09-24 at 1.01.32 PM



Level 10 Solution


URL

http://www.rognemedia.no/Puzzle/10welldone.html

Hint

Sometimes the usefulness of hitns are offset by their usefulness…

Solution

This level can be a bit tricky at first, but notice the four corners of the image, the pattern diverges. Couple that with the hint of ‘offset’, it quickly becomes clear what we need to do.

So first things first, we need to take the image out of Indexed mode to make it editable. To do this go to Image > Mode > RGB Color. Once you’ve done that, it unlocks Filters menu. So now we want to use the Offset Filter, it’s located at Filter > Other > Offset.

This image is 500 x 500 pixels, so let’s offset it by half, and set the edges to wrap around. Now in the center of the image you can read the code ’11palu’ (remember each code is in lower-case).

Screen Shot 2013-09-24 at 1.12.08 PM



Level 11 Solution


URL

http://www.rognemedia.no/Puzzle/11palu.html

Hint

I’m cross-eyed…

Solution

At first look of this puzzle, I wanted to know if there was some subtle difference between the two blocks of text. So let’s put one of top of the other, at half opacity.

We need to take the image out of Indexed mode to make it editable. To do this go to Image > Mode > RGB Color.

Next I use the Marquee tool to draw a box around the left block of text. With the Marquee tool still selected, I right click the selection and choose “Layer via Cut”. This will take this selection and move it into it’s own layer.

Screen Shot 2013-09-24 at 1.22.10 PM

Next I select the Move tool and select “Layer 1″ (which is the new layer we just created) in the layers panel. I then turn the Opacity of the layer down to 50% (it’s in the layers panel). And finally I move Layer 1 over the top of the right paragraph of text, as you can see three words line up correctly: “ver”, “nibh”, “quis”, putting these three words together is the solution.

Screen Shot 2013-09-24 at 1.23.28 PM



Level 12 Solution


URL

http://www.rognemedia.no/Puzzle/vernibhquis.html

Hint

Projecting a high successrate on this one…

Solution

We need to take the image out of Indexed mode to make it editable. To do this go to Image > Mode > RGB Color.

We just need to apply a Polar Coordinates filter to this: Filter > Distort > Polar Coordinates.

Screen Shot 2013-09-24 at 1.31.23 PM

The next code becomes clear ’12xbpdb’.



Level 13 Solution


URL

http://www.rognemedia.no/Puzzle/12xbpdb.html

Hint

Want a hint? God save you…

Solution

I really liked this level, even though I’m not really sure of the meaning of the hint. However, looking at this image, it’s clear that some of the colors in the gradient are missing. Since this is an Indexed Color image, we can look at the Color Table. You can do this by going to Image > Mode > Color Table. Once you open the Color Table, the solution is quite clear.

Screen Shot 2013-09-24 at 1.37.45 PM



Level 14 Solution


URL

http://www.rognemedia.no/Puzzle/14fl.html

Hint

No need for me to guide you…

Solution

I wouldn’t have been able to solve this one without the hint. You just need to turn on the guides in Photoshop, you can do this by doing View > Show > Guides. Also make sure that View > Extras is checked.

There is another hint in the image itself, “What letters in this sentence?”, with the guides on there are a few letters in the crosshairs ‘heesn’, which is the answer.

Screen Shot 2013-09-24 at 1.41.46 PM



Level 15 Solution


URL

http://www.rognemedia.no/Puzzle/heesn.html

Hint

Don’t you just hate when the browser won’t display the image? I hope we can turn this trend around…

Solution

This is another PSD image that needs to be downloaded like in Level 8.

This level requires use of the 3D tools in more recent versions of Photoshop. You can open the 3D panel by using Window > 3D.

Screen Shot 2013-09-24 at 1.47.34 PM

Once you have the 3D Panel open, you can simply select ‘Default Camera’, and you get a nice little animation moving the code into view, ’16acksjg’.

Screen Shot 2013-09-24 at 1.47.50 PM



Level 16 Solution


URL

http://www.rognemedia.no/Puzzle/16acksjg.html

Hint

Time to go all Red Dwarf-CSI on this one…

Solution

This is another PSD image that needs to be downloaded like in Level 8.

So at first I didn’t get the reference to Red Dwarf – CSI, but a quick Google search resulted in this:

Which made me laugh pretty hard, but didn’t help me much. Perhaps someone could explain it to me :)

However, working with the image for a bit, I opened up the Filter Gallery, Filter > Filter Gallery, which made the code show up. Selecting the Film Grain effect under Artistic makes the code visible, along with a note “I’m impressed if you found this with no hint!”. Again, not sure how the hint plays into it. But alas, there is the code ’17alsj’.

Screen Shot 2013-09-24 at 1.56.45 PM



Level 17 Solution


URL

http://www.rognemedia.no/Puzzle/17alsj.html

Hint

Solution

So no hint on this one, so we’re on our own.

At first I tried typing out the whole code, which didn’t work. I saw different numbers starting with 18 in there, so I thought, hey maybe there is some subset of the text we need to use.

I did notice that the image was Indexed Color, so I opened up the Color Table (Image > Mode > Color Table) again to see if I could find anything.

I grabbed the eyedropper tool, and selected the gray from the first “1″ in the string. This turned all of the grays with the same color to be transparent, leaving only the code remaining, ’18zxjvb’.

Screen Shot 2013-09-24 at 2.06.55 PM 1

Very clever.



Level 18 Solution


URL

http://www.rognemedia.no/Puzzle/18zxjvb.html

Hint

Time for a new year’s resolution…

Solution

This hint was a dead giveaway, Image > Image Size. The resolution of this image is ’1991′, which is the code.

Screen Shot 2013-09-24 at 2.11.34 PM



Level 19 Solution

URL

http://www.rognemedia.no/Puzzle/1991.html

Hint

FFT

Solution

Okay so this puzzle is by far the hardest of all of them, and I’m not quite happy with my solution. So if you guys have a better way to solve this, I’m all ears.

This level introduced me to a new concept that I hadn’t seen before Fourier Transforms.

FFT is pretty dang cool stuff, it works really well for removing repeating patterns from images. Look at these animated gifs as an example.


Unfortunately, as far as I’m aware, Adobe Photoshop doesn’t have FFT support built in. So you have to use a third party plugin. The FFT Photoshop Plugin by Alex V. Chirokov (more info).

This plugin doesn’t work on Mac, so I had to hop over to my PC to finish the puzzle. I also considered writing a quick script to do it as well, but the Plugin worked on my PC.

So once you have the FFT plugin installed, open the image and use Filter > Fourier Transform > FFT.

19_step1

You’ll notice some content on the edges, it’s most clear in the Blue Channel, so let’s select that.

19_step2

Now we’ll apply the Offset Filter Filter > Other > Offset, and set it to 250 x 250, wrap around.

19_step3

This makes the code readable, well readable to someone who has spent years answering CAPTCHAs. The code is ’20cjsdzxpy’. However, like I said, I feel as if I haven’t fully finished this puzzle. Input from others is more than welcome.

In Conclusion

I really enjoyed this series of puzzles, kudos to the Rogne Media guys for putting it together!

I’m going to spend a bit more time learning FFT, because it really seems like it would be helpful.

Questions, comments, feedback are more than welcome in the comments!

Punking Doug McCune

[Disclaimer]
Identites have been protected in this blog post by means of Doug’s Safe Sexting application. Any resemblance to persons living or dead should be obvious to them. (You know who you are)
[/Disclaimer]

So a fortnight (I wait two weeks to tell anyone anything… so I can use the word fortnight) ago, I had the opportunity, nay the privilege, to attend Doug McCune’s “Cool Shit” session at 360|Flex. As many of you may heard, read or watched, there was an… incident that occurred during Doug’s session.

Apparently, I have been thrown under the bus as the co-conspirator of said incident.

So let us take a journey… starting two nights prior to Doug’s session.

Monday Night

A couple friends and I were hanging around the hotel after partying at the Rock Bottom. We weren’t ready to call it a night. So we decided to see what else Indianapolis could offer us and we hit the streets. We quickly found ourselves at Monument Circle. That’s when one of my colleagues remembered that there was some sort of crazy bowling in Indy.

We had no idea where to go until we ran into Tanner (a horse) and Sky (a man… I think). He gave us directions to duckpin bowling. However, It was too far to walk, so we went back to the hotel where we ran into some other “accomplices”. After a few minutes of trying to figure out what time the duckpin bowling alley closed, one of the Crowne Plaza employees informed us that Jillians had bowling.

We headed over there with the crew. Unfortunately, the bowling alley was full. Undeterred, we went down to the video arcade. We enjoyed Hyper Bowling, Super Shot Deluxe Basketball and Ski Ball. The party came crashing down when a Jillians employee informed us that they will be closing in 30 minutes. With thousands of credits still left on our cards, we decided to see how many tickets we could win before they kicked us to the curb.

So I went to the game that gave us the greatest chance of winning loads of tickets… I’m not sure what it’s called. It’s the dome game with the circle of lights… Well wouldn’t you know it… the first time I hit the button… I hit the jackpot of 375 tickets! I have ninja-like reflexes.

Here is a picture of one of my accomplices with a handful of tickets.

We were able to accrue around 645 tickets in less than 30 minutes, but what do you do with all of those tickets? Well, we decided to cash them out in bouncy balls… all bouncy balls (with the exception of one paratrooper).

Tuesday Night

After a great day at 360|Flex Indy. A group of us decided to try our luck at the bowling alley.

While bowling, we discussed the countless applications of 42 multi-colored, rubber bouncy balls.

Someone mentioned that Doug McCune had tweeted about shaving his chest for his session, and the ideas started flowing. Now as much as I’d love to claim that the brilliant idea of throwing bouncy balls at Doug during his session was all mine… it was truly a group effort.

Wednesday Morning

Wednesday morning rolled around, and I loaded the cup of bouncy balls into my backpack and made my way to the final keynote. We knew Doug’s session would be crowded, so we were sure to sit near the stairs that led up to the room where his session would be held.

After the keynote was finished, we rushed up the stairs to Doug’s room. It was already packed… people had camped out up there during the keynote.

Luckily, I was able to grab a seat in the front row. As soon as I sat down, I noticed that Doug had left the room, probably to refill his glass with water… or vodka. I quickly grabbed a handful of bouncy balls and went to work. Handing them out to the first few rows and giving them the simple instructions of.. “When Doug takes his shirt off, throw the ball at him”.

I wasn’t able to hand out all of the bouncy balls, as Doug re-entered the room and made his way to the front.

Then as the story goes… Doug took his shirt off…

There was a visual hesitation the moment Doug took off his shirt. Nobody was going to throw their ball… and it wasn’t me… but to whomever threw their ball first… bravo!

And finally… the video speaks for itself…

And there you have it… consider yourself in the know.

I also wanted to thank Doug for being such a great sport about the whole thing. You my friend are a rockstar… Keep up the great work!

Late-night programming

package
{
	import net.natebeck.Nate;
	import net.natebeck.events.NateEvent;
	import com.bugquash.Project;
	import flash.event.Event;
 
	public class BugQuash
	{
		protected var pokeCount:int;
		protected var baller:Nate;
 
		public function BugQuash()
		{
			baller = new Nate();
 
			baller.addEventListener(NateEvent.GETTING_TIRED, onGettingTired);
			baller.addEventListener(Event.COMPLETE, onComplete);
 
			baller.generateCode(Project.QUASHBOARD);
			baller.generateCode(Project.QUASHBOARD_ADMIN);
			baller.generateCode(Project.SERVER_LOGIC);
 
			baller.loadTest(Project.SERVER_LOGIC);
		}
 
		protected function onGettingTired(event:NateEvent):void
		{
			baller.caffinate();
		}
 
		protected function onComplete(event:Event):void
		{
			baller.sleep();
		}
 
		public function poke():void
		{
			if(++pokeCount < 4) 
			{
				baller.say("Ouch!");
			}
			else 
			{
				baller.say("Hey... that's kind of nice");
			}
		}
	}
}