Category Archives: Software

This category is for new software / freeware releases.

Color Fader Updated + Other Stuff

Color Fader Update

I’ve been annoyed at the job I did on my updated color fader since it was released. The interface was squished, awkward and clumsy, the color scheme was bland, and it over all just looked bad. I decided a few days ago to break from what I was doing and work on a re-design of it. I think I’ve come up with something that’s cleaner and easier to work with:

http://patorjk.com/software/colorfader/

The ASCII Art heading is kind of cheesy, but nothing else seemed to fit that heading area and it seemed to fit the ambiance so I left it in. Along with the new design, I added a few new features:

  • Vertical text fading: Now you fade lines of text along with fading character by character.
  • Multi-color image fade: I always felt it was a HUGE design flaw to have a separate 2-color area for image fading. I’m not sure what I was originally thinking, perhaps I was just lazy.
  • Background color selection for text fades: You can now see what the faded text looks like on different colored backgrounds.

Ultra Edit

I’ve been looking around for a good text editor that I can use for development purposes. At the moment, most of what I’m doing is Javascript and PHP. Recently I’ve come across Ultra Edit, which appears to be a pretty snazzy editor. It has syntax highlighting, grep-like searching abilities, a customizable tool bar, line number information, the ability to hide nested code, and lots of other nifty features. It’s only negative is that it’s not free. It’s $50 if I want to use it past the trial period. I’m actually thinking about shelling the doe though, since it would be a big step up from WordPad. Anyone know of any other good Windows text editors I should try before I purchase a license for this one?

Garfield / Realfield

Some clever folks on the internet have discovered that the Garfield cartoon strip is actually pretty funny if you remove all of Garfield’s thought bubbles. It actually works on a whole new level, it’s pretty cool:

Google Ads

I’ve been mulling over the idea of possibly placing a few Google Ads on this website. Nothing crazy or annoying, but something that’d be reasonably discrete and only on a few choice pages. I was doing some calculating and with what I read I could probably make enough a month to cover hosting costs if I placed ads on the Color Fader and the VB Code Bank. I think that would be pretty cool – this site paying for itself.

My fears in doing this though would be that I could scare away visitors or annoy those who regularly visit. Or I could turn off people who think I’m just trying to cash in. So I’d probably only do it in a few select areas, and not in areas that would cause clutter. I dunno, I’ll have to think about it some more, but I just thought I’d give everyone a head’s up.

TAAG: Test All

A “Test All” feature has been added to TAAG. It will let you test all 281 fonts. You can access it by selecting the font called “__TEST ALL__”. It’s not as fast as I’d like, but it’s not terribly slow either. I debated uploading it but I finally decided to give in. I’m still trying to get a feel for the kind of load I can put my server under. Most of the work for this feature is done with Javascript, but the font files are still parsed and loaded on the server. That doesn’t seem like a whole lot of work, but I’m on shared hosting so it’s unclear how much is too much. Also, this new feature is still in BETA, so it may be a little buggy. Let me know if you have any problems.

After this, there’s only one more feature I’m interested in adding to TAAG. And it’s one of those things that most people wont notice and it’ll be a pain in the ass to program. So it’s way down on my list of things to do. In the meantime I’ll probably just keep working on other things and, when the mood strikes me, look into ways of optimizing TAAG.

That reminds me, I was reading a rather interesting article earlier this week on the death of Gmail:

The Death of Gmail

The cliff notes (possibly a little over simplified): History shows that utilizing new but bloated technology pays off in the long run because hardware keeps getting faster and faster and/or people find ways of speeding it up. It’s better to be ontop on the new technology than to be stuck working within the constraits of the old technology.

It’s an interesting read, but I don’t think the people at Google are so smug that they’d let a new technology slip by them like that. Plus, I don’t think most people would be so quick to give up their Gmail addresses.

Slider Puzzles

A long time ago I used to have a Sarah Michelle Gellar Javascript puzzle up. I made it one day while I was bored and trying to learn Javascript. I figured it’d fall into the abyss that a lot of my Javascript projects fell into (anyone remember that ghost clicking game I had?). Oddly enough though, it ended up generating quite a few emails. Mostly Sarah Michelle Gellar fans. Later I built a more advanced slider puzzle, but it was total crap and featured Britney Spears (not the best choice) and I’ve always wanted to write a better one. So on Sunday I sat down and churned one out. One that would allow me to do lazy updates by automatically looking for new puzzle images (keeping the data and the script separate).

Originally I was going to make a Sarah Michelle Gellar slider puzzle gallery – but then copyright issues came to mind and I decided to not to risk it. Plus I thought it might look kind of creepy for me to have a large, shrine-like Sarah Michelle Gellar puzzle gallery on my site.

My next choice was to do Salvador Dali paintings, but it turns out his stuff is under copyright too – and for the next 50 years at that. The ARS, who now manage Dali’s copyrights, seem to be pretty active in going after potential violators. Not the kind of people I want to tangle with.

So instead, for my first slider puzzle gallery, I decided to use the works of Paul Cézanne. He’s a famous impressionist painter whose paintings often pop up in computer graphics journal papers, since the images are public domain. You can see the resulting slider puzzles here:

http://www.patorjk.com/games/sliderpuzzles/

I think I’m going to try and have a variety of galleries since it simply involves finding free images to use.

As stated before this script is relatively new, so it may be a bit buggy. Let me know if you have any problems – or if you have any suggestions!

Alternative Photomosaic Algorithms

One thing that has always bothered me is software patents. They just seem wrong. How can someone own a way of doing something? Or own a technique that others would come up with when trying to solve the same problem? They seem like unnatural restraints, like patenting the solution to a math problem. I can understand wanting to protect your ideas, but I honestly don’t think most software ideas are novel enough to warrant a patent, especially at the rate that the US government seems to be giving them out. I’m mean hell, who can be expected to know about all the stupid things people have patented? There is no fucking way that there were 40,000 patent-worthy software ideas that came out last year. That’s completely absurd.

One example that always comes to mind when of thinking about why software patents are bad is the story of what happened to id Software while they were developing Doom 3. Essentially John Carmack, the technical director at id Software, came up with a neat way of doing real time shadowing, which he called Carmack’s Reverse. After discussing the technique on his blog, it was discovered that two researchers had already patented the idea. In order to be able to use the technique, Carmack had to come to an agreement with them. Someone else, independently of these two parties, had also discovered the technique and presented it at a conference before the patent was filed. This person offered to let id Software use it for free, but id Software decided to play it safe and strike a deal with the patent owners [1].

Its things like that that bother me. Someone is toiling away writing a piece of code, they come up with a great way for solving a problem, implement it, and then later learn some researcher in a lab somewhere has patented the idea – probably just so they can say they have X number of patents – and now they have to pay to use a technique that they came up with on their own.

But I digress. I could go on for 10 pages about why I don’t like software patents. My focus here is that I’ve learned that a patent has been granted for the creation of photomosaics, those neat images that are made up of smaller images. The abstract reads as follows [2]:

A mosaic image is formed from a database of source images. More particularly, the source images are analyzed, selected and organized to produce the mosaic image. A target image is divided into tile regions, each of which is compared with individual source image portions to determine the best available matching source image by computing red, green and blue channel root-mean square error. The mosaic image is formed by positioning the respective best-matching source images at the respective tile regions.

I honestly don’t blame the person who filed this patent, since they were one of the first people to create mosaics with photos [3], and they wanted to make sure people didn’t profit at their expense. However, I still really dislike the idea of patenting a way of doing something, especially when the method seems rather obvious. I was able to write a photomosaic generation program when I was in 11th grade, and I didn’t have to look up an algorithm, I just made one up (yes, Mosaicer was written when I was in high school).

The only part of that abstract that seems outside the normal algorithm for creating your basic mosaic is the part that mentions the “root-mean square error” in relation to the color difference. That part is significant because it does a much better matching job than taking a simple color difference (what Mosaicer does). However, spend any time in a reading up on color differences, and you’ll learn that that’s the way to do color differences in RGB color space. So I’m not sure why this abstract as a whole was considered so novel.

Furthermore, the RGB color space is flawed in that it’s a non-uniform color space. Instead of using the RGB color space, one could use the L*a*b* color space, which is a uniform color space that has some of the most precise color difference formulas ever developed.

There’s also another way of creating photomosaics, outside of simply changing the color space and color difference methods. 90% of the people who read what follows will have no clue what I’m talking about, but try to follow along because this is a completely different way of patch matching than what is described in the patent abstract. Instead of dividing the target image into blocks and seeing which input images best fit the blocks, one can use Fast Fourier Transform patch matching [4, 5]. This technique wasn’t discovered until 2002, and I haven’t seen anyone discuss it with relation to creating photomosaics.

When using this method you transform you data into frequency space, perform some calculations, and then you transform your data back into the normal space. Because frequency space is a weird place, multiplication becomes addition. Therefore your computation time is greatly reduced when calculating squared color differences in frequency space. Kwatra et at [6] wrote about the speed up this matching technique provided in their paper on graph cut texture synthesis. With the simple RGB method, generation time for a particular video was 10 minutes, with the FFT method, generation time on the same video was 5 seconds. This is actually how I came across the FFT patch matching. I had to implement Kwatra’s paper for a graphics project I was assigned.

After reading the FFT paper, I immediately saw the possible application to photomosaics – however, after implementing the FFT patch matching method and seeing its nuts and bolts I wasn’t sure how much of a speed up it would actually provide, since it performs more calculations than needed for photomosaic patch matching (it tells you how well the image matched at every offset instead of just the subset of offsets needed for tile placement). In fact, I wondered if it could end up slowing things down. But there are ways of optimizing it for photomosaics, so it was (and is) unclear to me how much of a speed up or slow down effect it would have.

As you can probably tell, I never got around to trying out the above method in relation to photomosaics, mostly because I’m not that interested in photomosaics anymore. But I did put it on my list of possible things to do in the future. I will never patent any of these ideas discussed here so they’re free for anyone to use. However, I have no clue if someone has already thought of them and patented them. So I can’t make that guarantee. Though I figured I’d make a post noting all of this in case no patent for this exist, just so there are patent free methods for photomosaic creation out there.

References:
[1] http://techreport.com/onearticle.x/7113
[2] http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=US6137498
[3] http://en.wikipedia.org/wiki/Photomosaic#History
[4] http://www.cs.sfu.ca/~torsten/Publications/Papers/icip02.pdf
[5] http://www.cs.sfu.ca/~mark/ftp/Icip02/images/icip_2002.jpg
[6] http://www.cc.gatech.edu/~turk/my_papers/graph_cuts.pdf

TAAG Update

One thing that annoyed me about my TAAG program was that every time you changed fonts, the top frame had to be reloaded. This was because the program needed to talk to the server to get the information about the new font. However, technically, nothing on the page needed to be redrawn, so refreshing the whole frame seemed like a little much, and when you change fonts a lot, it gets annoying. Anyway, this week I was reading up on AJAX, which is a way of talking to the server without reloading the webpage. Since this was just was I was looking for, I decided to incorporate the technique into TAAG:

http://www.patorjk.com/software/taag/

The top frame will still reload is you change the “Font Type” or if you select a font from the preview page. However, it should not reload if you change fonts via the drop down font list. Also, there is a bug in Firefox where the “onchange” event isn’t triggered for keypresses on listboxes, I’ve set things up so you should now be able to change fonts with your keyboard on Firefox. A few other things were updated as well, but it was all small stuff.

If you’re thinking about developing web applications or interactive webpages, AJAX is worth reading up on. I wish I’d known about it sooner. Later this week I think I’ll start on my next program, it’ll be another web program and I’m unsure of how long it’ll take to make.

New Online App

It’s here folks, check it out:

http://www.patorjk.com/software/colorfader/

About a month ago someone emailed me requesting I put my old online color fader back up. You can find it at the web archives here:

http://web.archive.org/web/20050310095844/www.patorjk.com/ColorFader.htm

It’s a neat little app, but I figured I could do a lot better, so I told that guy I’d write a new one and post it up in a week :P. It took a little longer than I suspected, mostly because I was distracted with other things (I didn’t start on it until last week). This new color fader is MUCH better. It can fade up to 100 colors, and has a nifty little feature that allows you to create background fades. Example:

With this app you can generate faded images 1 pixel wide which you can use as the background for certain page elements

I like the idea of generating images with PHP. I’ll probably play around with it a little more and see if I can make anything interesting. Though right now I’m still feeling pretty sick so I think I’m going to go lay down. Let me know what you think of the new app though!

Three Crazy Software Ideas I’ve Tossed Out the Window

A while back I announced I was going to create 2 new online apps. I’m about 80% done with the first one. I started on it last week and have been working on it every once in a while. It’s a rather small app, but it’ll have some features which I think people will like – well, at least one person should, since it’s based off their request. It should be ready next weekend.

The other app, which I’ll reveal in the list below as #3, I’ve decided not to write. After thinking a bit, I decided it was the kind of application that would be cool to write, but that no one would have any practical use for. These kind of ideas come to me every once in a while, most of the time I come to my senses, though sometimes I actually end up implementing them and releasing them to the public (my Mini-Hex Editor comes to mind). Below is a list of four ideas I’ve had that I seriously considered and than later realized were ridiculous. If you happen to think any of them are not-so-ridiculous, feel free to take the idea and implement it.

1) Online Texture Synthesizer

Texture Synthesis is the process of taking in a texture and then outputting a much larger version of that texture. Usually, you want to minimize repeatability, so the texture seems more real, so you try to “learn” the texture and grow it out into a larger area. Below is an example. Texture A is inputted, and texture B is outputted.


Pretty cool, right? Texture Synthesis is the kind of thing you learn in grad school. It’s one of those weird topics that advisors try and push on their students since it’s apparently a ripening area with lots of creative solutions that people can publish papers on. My advisor had me learn all about texture synthesis. So naturally, as I was pondering possible apps to make, I thought to myself “Hey, why not make an online texture synthesizer!” It seemed like an intriguing idea at first. There are lots of algorithms to chose from, and I had already implemented a few of them for graphics projects I had to do. But then it occurred to me: What would anyone want with a texture synthesizer? Seriously. It’s a neat problem, but outside of a few far out purposes, there’s really no reason anyone would need such a program, at least your average person. And I’m sure people who would like a texture synthesizer would probably be more likely to build their own engine for it than to use some program some guy posted up on his website. So the idea was scrapped. It’s a neat problem though.

2) Moving Window Art Generator

A few years ago, while in daze of bordem at work, I suddenly had this weird idea of creating layered moving graphics. Only the graphics didn’t move, just the holes between them. I thought the idea was so cool that when I got home I whipped up a program to create the image stills and then I used a gif creator to make the gifs. Below are two such gifs I created:


I should say there is NO POLITICAL meaning behind the Pat/Bush picture. I just thought it was trippy looking. I made a few other various designs. Mostly people thought they were weird. Though I did have one Visual Arts major think they were really cool, which made my day. I thought about writing a polished version of the program that would fully create the gifs, but then I realized that no one had asked for such a program, and outside of a few friends, most people thought the images were really bizarre. Actually, if I get really really bored, I may one day re-write an app for this. But at the moment I have much more useful things on my plate.

3) Online Magic Eye TAAG Program

You’ve heard of Magic Eye pictures, haven’t you? Those neat little images where when you unfocus your eyes a 3D image appears? Well it turns out those things are actually called autostereograms and the wikipedia article on them explains the algorithm for how they are created:

http://en.wikipedia.org/wiki/Autostereogram

I thought that article was really fascinating. So much so that I thought about creating a Magic Eye generator, but then decided that the Magic Eye people might not look too favorably on that. But then I found this:

http://en.wikipedia.org/wiki/Single_Image_Random_Text_Stereogram

ASCII Art autostereograms, and I thought “hey, I’ve just written a program for creating large ASCII Art text, why not make a program that lets you see them in 3D!” I figured it’d be something that people would get a real kick out of. However, only the “Banner” font would work, since the generated ASCII images would not have the characters from the fonts pop up, but the areas of space that those characters took up pop out.

However, after giving this some good thought I came back to what had stopped me from creating apps #1 and #2: Would anyone ever have any practical use for this?

It might be fun to use once or twice, but I couldn’t see anyone using it more than that. And I couldn’t think up any situations where someone would actually use the app for something – other than maybe making generating some 3D text to show someone for the sake of showing them something they hadn’t seen before. That’s not really the kind of app I want to make. Plus it’d be a lot of hard work for something that would get such little use. And what if the Magic Eye people made one that generated pictures and not text? That would be so much cooler.

Anyway, that’s a sampling of apps I seriously considered and then later ditched. Hopefully you’ve found them somewhat interesting. Talking about them makes me feel less bad about spending so much time thinking about them.

IMapper Studios Re-Introduction

During my senior year of high school I had the bright idea that I could make a living developing shareware – or at least pocket a few extra bucks that would make life a little easier. So I set forth on an idea that I had been throwing around in my head – a program that would allow you to easily create image maps for your web pages.

This decision was not made after examining the market and realizing there was a demand for this product. No, I decided to make an image mapper because:

A) I thought it would be fun to develop the moveable shape interface (shapes you can draw and then move around). It seemed like an interesting challenge for a visual basic app.
B) I saw some shareware image mapper that was selling for $15 and it royally sucked. I knew I could do better than that – and I figured I could make my product half the cost.

The development itself went pretty smoothly. I remember being at school, making notes on how I’d design everything. The pre-hype for the program also seemed to be pretty good. After my API Spy, Form shaper, and Mosaic app, a lot of people were interested in what I’d put out next – especially as a shareware app. I was even able to coax the then well known graphic designer Plastik into doing my intro graphic. So I had high hopes for the program.

However, when the release date came, I was getting kind of sick of the application and didn’t do much promotion besides posting up a notice on my main page. This wasn’t just because I was bored of the program, college was coming up and I had agreed to work for some start up (long story). So to make a long story short, I spent a lot of time making the program, but didn’t spend enough time promoting it. And because my audience at the time (VB developers, mostly prog developers) had no need or interest in the app, it didn’t make much of a wave.

I think I made a total of $100 after the first year, which kind of bummed me out. I realized I had picked the wrong application to make and I had not promoted it correctly. It left a bad taste in my month and whenever I think of the program, it sort of reminds me of failing. However, every time I actually open it up and look at it, I think it’s a pretty cool. It reminds me that I was a pretty good developer while in high school, and for some reason, I always forget that I was able to get Plastik to do the intro art, which blew my mind at the time. Anyway, I opened up the app earlier today and thought to myself “why did I decide not to post this??” So without further ado, I’m re-introducing this program for download. Below you’ll find some screen shots and links to two different zip files.

[Download] – The setup file.
[Download] – Just the exe and help file.

136 Fonts Added to TAAG

Clear your caches people, TAAG has had the following updates made to it:

– 136 FIGlet fonts were added. Many of these I haven’t tested out yet, however, they should all work fine.
– “Smushing” should now work 100% correctly. Each FIGlet font has a series of rules that determines how its letters “smush” into each other when they are side by side. You can turn this option off/on by unchecking/checking the “Horizontal Text Smushing” checkbox.
– Some behind the scenes stuff that you wont notice but makes the code nicer.

View TAAG here: http://www.patorjk.com/software/taag 

I’m not sure I’ll finish the preview page today, which is why I’m updating this so early. If I do get it done within the next few days, I’ll just edit this entry to announce it.

Also, within the next few days around 10 new AOL fonts will be added. Awesome Andrew was kind enough to send me a copy of my old prog “Fallen Legion” which had a whole bunch of them. For more info see the comments in the post below this one.

More TAAG Updates

Last night I made two major updates made to the Text Ascii Art Generator:

– A whole crap load of fonts were uploaded, probably between 80 and 100.
– I added some Javascript that converted URLs into hyperlinks in the sections about the FIGlet font authors (the “Click for Info” link). I figured this would be a nice gesture toward the font authors since most people, including myself, are usually too lazy to copy and paste a URL. You can see this script in action in the information section for fonts like “AMC razor 2” and “Sub-Zero”, as well as many others. Alas, after implementing this I discovered most author’s homepages were long gone. Oh well, I still think it’s a nice addition.

To those of you curious as to how this was implemented I used regular expressions. This changed what could have been a lot of code, into one simple line of code! Check it out:

String.prototype.urlsToHyperlinks = function()
{
  return this.replace(/\bhttp:[^ \)\n\<]+/g, “<a href=’$&’ target=’_new’>$&</a>”);
}

And then to use it, do this:

var urlText = “blah blah blah http://www.patorjk.com/ blah blah blah http://www.google.com/”;
var hyperlinkedText = urlText.urlsToHyperlinks();
alert(hyperlinkedText);

Feel free to use this however you want.

If the above code just looked like a bunch of gibberish, don’t worry, regular expressions are easy to pick up. You just need to get the syntax down. Here are some links that should help you get on your feet pretty quickly:

http://www.webreference.com/js/column5/
http://www.javascriptkit.com/javatutors/re.shtml
http://www.w3schools.com/jsref/jsref_replace.asp – Make sure you read example 4. Too many people don’t realize that about the Javascript replace function.