New Web App: Image Color Palette Generator

After upgrading to PHP5, which was much less painless than I thought it would be, I decided to take a deeper look into how to do image manipulation in PHP. This is usually done with the gd library, which provides an assortment of useful image handling functions. There are certain aspects which were annoying (no Windows bmp support, difficulty in displaying images I didn’t want to keep on the server), but overall it appears to be a pretty handy toolset. If all goes well, I hope to create more image-based online apps. I’ve already got a big list of ideas, but I don’t want to get too far ahead of myself.

Anyway, the new application is Image Color Palette Generator – not the catchiest of names, but it describes what it does, which is create color palettes from images. This is useful when you’re designing a website and you want it to have the same look and feel as a particular image. This program will tell you what the most frequently used colors within an image are. It will also generate a color palette of the complimentary colors to the most frequently used colors. This can be useful if you want a look and feel that’s totally different from your input image.

The current implementation works by placing colors the app encounters into “buckets” which represent similar looking colors. After the image has been fully examined, the color palette is created by taking the average color from the “buckets” that contain the most colors. Pretty simple algorithm, eh? The complimentary colors are generated in RGB-space (Red, Green, Blue). If anyone knows the formula for calculating a complimentary color in the traditional artist color space (Red, Blue, Yellow) please let me know! I googled for at least an hour but couldn’t find any info on how to do it.

In the future I hope to make the program a bit more sophisticated. I’ve studied colors a little bit so I know the human eye is more sensitive to green than it is to red or blue, so colors with lots of green should probably have more weight than colors with less green. People also tend to notice areas where there is change going on in the image, and whether one notices the change can be estimated using the contrast sensitivity function. That may be getting a little too fancy. Though I’ll keep it in mind since it could be a nice tweak to the algorithm.

The app worked great on my machine, but I’m noticing now that it’s on my server that it’s struggling and timing out when larger images are inputted. So for now try and stick with smaller images (less than 40kb). I’m going to look into ways of getting around this. I may be doing something in an suboptimal way which would explain why it’s dying. Or it could just be because I’m on shared hosting and they don’t want me using a lot of resources. I’m not sure.

If you have any problems or suggestions relating to the new app itself, just post a comment in this blog entry or email me (see the About page for an email address).

Update: I’ve made some modifications and the program should now be able to handle images up to 200kb in size without timing out. It looks like the server only gives the php file a certain amount of time to do its thing and then it kills it. I may have to separate the functionality out into several files (even the it’s a small app). Also, right now I’m doing extra processing for gif images, so the program will work best with jpgs or png files.

Spam Blogs

Has anyone encountered these bot generated “automatic blogs” that seem to be all over the internet? I have no idea how long they’ve been around, but as this site has grown, I’ve become more aware of their presence. They seem to work by either grabbing content from other sites or from article databases. They then display this content and hope to grab visitors from search engines. Since these blogs are full of ads, and since 1-2% of users click ads, these phony blogs end up turning a decent profit, even though they don’t really serve a useful function.

To gave an example, on my stat page I noticed an incoming link from the Jessica Alba is Hot Blog (possibly NSFW). This site apparently has some bot that combs the internet looking for posts on Jessica Alba. It found my previous post, and then copped the begining of it saying:

Emily wrote a wonderful post today on “Slider Puzzle Source Code And Other Nonsense.” Here’s a quick excerpt:
I’ve finally gotten around to releasing my Slider Puzzle source code. Hopefully someone out there can find a good use for it. I was tempted to set up a Jessica Alba puzzle on some free web hosting site […]

Normally I welcome incoming links, but there’s something unsettling about an automatic blog spidering through my site just so it can grab content it can use to promote itself. I suppose it’s not really hurting anything, but it does leave a bad taste in my mouth. So far it’s only happened a few times, but I may end up blocking these sites.

No Housewarming Party

My roommate and I have opted not to throw a house party. The majority of you probably don’t know me in real life so you could probably care less, but I figured I’d say something here since I know there was a bunch of talk about it when I first moved in and some of my friends do read this blog and I don’t want them thinking they weren’t invited or anything. The main reason there will be no party is because my roommate and I are kind of lazy and we’re not really the type to throw huge social gatherings. We kind of prefer smaller groups of like 3-6 people. Anyway, if you haven’t seen the place and want to, feel free to shoot me an email. There’s not really a whole lot here, but the apartment complex itself is pretty damn cool.

Slider Puzzle Source Code and Other Nonsense

I’ve finally gotten around to releasing my Slider Puzzle source code. Hopefully someone out there can find a good use for it. I was tempted to set up a Jessica Alba puzzle on some free web hosting site and then link to it from here (as an example of how this code could be used), but I thought better of it.

At work, we do these things called “code reviews”, where everyone on the team reads over your code and gives you comments. It’s actually more helpful than one would think. Sometimes you don’t see small mistakes, like forgetting to update a comment, and sometimes people have suggestions on how to more gracefully do something. You actually learn a decent amount after attending a few of them. Occasionally someone will get ripped a new one, but that doesn’t happen too often.

I tried to give myself a code review before I released this code, but undoubtedly there will still be some imperfections somewhere. Hopefully the code is understandable though. If you decide to use it, let me know and I’ll give you a shout out on this blog.

Google Reader / Welcome to 2005

Despite all the press they’ve recieved, I’ve never used a feed reader. I knew what they were for, but for some reason I didn’t think I really needed one. When I re-started this site last year, someone emailed me asking me to put a link to the RSS feed, so I did, but I didn’t really bother trying out a feed reader myself. I finally got around to checking out Google Reader today, and honestly, I can’t believe I waited so long! This thing is great! You wouldn’t think they it would be that handy, but after setting things up, it’s actually a really nice tool.

Feed readers basically keep track of various sites you’re interested in and alert you when a new blog post / update occurs. In Google Reader, if you think a particular blog post / news story / whatever is interesting, you can share it with your “friends” (this is really your Gmail contacts, so you have to be careful – Google got some flap over this recently).

After playing around with it some, I went around to all the places I normally visit to see if they had links for feeds. Most didn’t, which was slightly annoying, but since I didn’t really bother paying attention to feed readers until recently, I can’t really blame other site owners. Anyway, if you’ve never bothered to check out a feed reader, I highly recommend taking a look at Google Reader (side notes: it’s free and I’m not being paid anything to talk about it or link it here).

Ads

After doing some experimentation, I’ve decided to keep the Google Ads strictly to the blog. They’re not generating a whole lot of clicks, but they’ve gotten a few. I placed them on a few choice pages for a while, but I decided to take them down because I think ads can cheapen the look certain pages (plus I felt kind of dirty having them on things like the VB Array tutorial). I think my rule of thumb will be to keep this site ad free unless I’m dealing with a) the blog or b) a page that’s getting 10,000+ views a day. A friend of mine gave me the second option as a rule of thumb for when to use ads and it seems to make sense (the ads can help deal with the bandwidth plus make you a couple of extra bucks). I don’t mind having them on the blog since I don’t think they come off as annoying, they can be blocked without the page looking strange, and since I don’t update every day, they can serve as somewhere to go if you’re truly bored (for those of you who click ads, whoever you are).

Ambitions / New Company

So yeah, I haven’t been doing all this ad experimentation simply for just this site. For about a year now I’ve been talking to some of my old grad school buddies about possibly starting a web 2.0 style site that could generate revenue. Nothing really came out of it at first since they were still finishing their thesis projects, however, now that one is done and the other is almost done, we’re actually making some progress. We haven’t coded anything yet, but we’ve spent the past month brainstorming ideas and narrowing things down. It actually looks like we’re going to make a run at this, which I think would be pretty cool. If you never hear me mention this again, you’ll know things fell through, but if the wheels keep turning I’ll make sure and keep you all posted on this.

The Miscellaneous Section

The other day I realized that I sort of missed some of the more light hearted content this site used to have. When I relaunched patorjk.com, my original vision was for something a bit more focused, however, I think neglecting the humorous content took away a piece of this site’s personality. So I took a trip over to archive.org and grabbed up some of my old pages for a new section I’m calling “Miscellaneous”. It’ll basically house content that doesn’t fit into the categories of Software or Programming. Specifically, I grabbed up my old collection of funny chain letters: 1, 2, 3, and 4. I also grabbed up a funny IM conversation my friend Mike Smetak sent me when we were in high school, a neat poem about coke, and a profanity filled rant on room busters by Ping (who used to do art work for this site).

While creating this new section, I also did a little house cleaning around the site:

  • The Links section was removed. I noticed this section wasn’t getting much traffic and it was slightly redundant to my Blogroll (which is basically a links section), so I decided to remove it. I think I’ll think of the Blogroll as my new links section.
  • The Contact page was merged with the About page. Having a whole page for just my email address seemed kind of silly, plus it sort of cluttered up the navigation a bit.
  • The VB Array Tutorial [fixed] was updated. Someone emailed me requesting that I add a section on multidimensional arrays, so I added a blurb at the end of the article that discusses them.

Google Penalty for the Color Fader

Woe is me. My Color Fader app seems to be suffering from a Google penalty. The program went from being ranked #3 on Google for the phrase “color fader” to not being ranked at all for that phrase (I checked all 68 pages). A Google penalty occurs when Google decides your page is somehow violating their terms of service. No published data is available about the kinds of penalties, but they’ve been speculated to fall into the categories of the -30 penalty (your search rank goes down by 30), the -950 penalty, and being removed from Google’s index. The program still ranks for one key phrase, so its not gone from the index, but I’ve also noticed that Google Analytics doesn’t appear to be reporting any data for the app, so for one reason or another, Google has decided it doesn’t like my color fader.

I’m kind of at a loss for why this is. I emailed the support team through their Webmasters Tools application, but I haven’t heard anything so I’m not sure what to do. Google had been bringing that page around 30 visitors a day, so it sucks that all of a sudden its facing this bizarre penalty. Luckily Yahoo and the other search engines still seem to like the app.

Edit: Woo! It appears the mysterious penalty has been lifted. I now rank again for various color fader related search terms. My guess is that the penalties are auto-generated and that to undo one someone at Google has to go look at the page and make sure everything’s cool. I probably should have been more patent (I sent my reconsideration request on the 15th), but for some reason I was thinking I was in for a long penalty. I read a couple Google penalty stories I found online of most of them revolved around people having long penalties (up to 10 months). I guess I just got lucky.

DarcFX is Not Dead

In my “Three Things to Say” post I mentioned that DarcFX.com was no longer with us, however, it apparently is not dead and was just offline for a while. In the comments to that post Syber dropped by to say “DarcFX is still around and the victim of me recently being useless with linux and ruining his entire site. All the stuff still exists though.” So it’s good to know it’s not gone, it’ll be interesting to see if anything new is in store for the site.

C#, wasting time, and hunting down AOL fonts

C#

I’ve decided to make C# the next language I learn. On Sloat’s suggestion, I download the free Express Edition, and have been playing around with it a little the past few days. I have a few ideas running through my head on apps I want to make, but before I jump into anything I’m going to try and get a decent background (via online tutorials – right now I’m using what comes up on Google, if anyone has any suggestions for some good resources, let me know).

Later on I may take a look at VB 2007, but since there currently doesn’t seem to be any advantages to using it (at least from what I can tell), I’ll probably delay learning it.

Scrolling Text Time Waster

While looking around on some old CDs I found this, a fun little scrolling text time waster. It’s a PHP version of one of my old Javascript apps. The PHP version was originally located at my UMBC personal page, though at some point I took it down. After looking over the script, I touched it up a bit and figured it was amusing enough, so I decided to post it up.

As a side note, my decision to post it up was partly because of these people. I had honestly never received any feed back on my old Javascript app and had actually wondered if it ever got used at all (or if people thought I was childish for posting it). It’s neat to see how stuff can find its way around the net. As a side note to this side note, I sometimes wonder if my googling skills come off as creepy. My old suite mate Mike (who I talked about in the last post) helped me refine them a little bit when I lived with him. He was actually kind of legendary for his googling skills. I have some funny stories about Mike and googling, but I’m sure he’d kill me if I posted them here.

More AOL Macro Fonts

The number of AOL fonts has doubled in the TAAG app. You can view them by selecting “AOL Macro Fonts” from the Font Type combo box and then running the Test All feature. In addition to these new fonts, the “TRaC” and “Cheese” AOL fonts were fixed (woo!).

This deludge of new fonts comes from various old apps I obtained through lenshellarchive.com. It’s a pretty neat place, it aims at having the largest archive of old progs. What one can do with progs written for software that isn’t used anymore is anyone’s guess, but it’s cool to see they’ve been saved somewhere. However, even though it says everything has been run through a virus checker, I’d be cautious before downloading anything. Some of that stuff is kind of shady.

Interestingly enough, the site actually hosts my old fader program, giving it the low rating of 5/10, which I thought was kind of amusing. It honestly wasn’t that good of an app, though it was the first program I released on this website (when I was at geocities), and it actually generated a lot of positive feed back, so it encouraged me to keep going. How it ended up at lenshellarchive is anyone’s guess. I had no idea anyone else hosted it (btw, I encourage outside hosting of any of my downloadable apps), but according to a txt included in the zip I downloaded:

You Should Have Downloaded This From
Kamz Domain [ http://www.kamzdomain.com ]
If You Did Not Please Email Me At
Kam@kamzdomain.com
and Let me Know Where You Got It So
I can End This Link Stealing Bullshit

|¯|’/¯/    /¯/\ |¯|\/|¯|
|÷|/_/ ‘  /÷/\¯\ ‘ |÷|\/|÷|
|÷|\¯\ ”/÷/ ¯\÷\ |÷|  |÷|
|_|’\_\ |_|    \_| |_| |_|  

According to archive.org, kamzdomain.com existed for a brief period of time in 1999. It’s neat to find stuff like this, I feel like an internet archaeologist. I wonder if the app made any more stops before ending up at lenshellarchive.

Three Things to Say

As I type this sentence my clock says its 5:00am… I’m sure it’ll be much later than that when this entry is finally done. So much for having a normal sleeping schedule :P. Oh well, on with the updates…

Updated Test All

I’ve updated TAAG’s “Test All” feature. It should now be much faster. In fact, based on some tests I ran, it should be 11 times faster than before. The old “Test All” feature worked by having Javascript and PHP continuously talk to each other during the text generation process. Now everything is done server side with PHP code. The downside to this is that all my Javascript text generation code had to be duplicated in PHP. This sucks for a number of reasons, but I couldn’t see away around it :/. With the exception of bug fixes, I think I’m pretty much done with this app. Well, no program is ever really “done”, but I think I’ve come to a decent stopping point.

Also, after doing some testing in Opera, I realized the color dialog script I was using doesn’t work in that browser, so now I’ve put up a little notice when you push that button (it’ll pop up only if you’re using Opera). I’m not sure if there’s a way around this, but I’ll try and find one. It makes me nuts that every browser is so different.

Thoughtful Programming and Forth

While searching the net for an old college friend’s / suite mate’s webpage, I discovered an old article he’d written on Thoughtful Programming and Forth. Though I didn’t agree with all of it, and I’m not about to start programming in Forth, I thought it was a well thought out piece. Since he used to have it on his web page, I emailed him (he’s now off in Canada working on a PhD in Math) and asked him if it’d be cool if I posted it up here. He told me he was fine with me posting it up, as long as I updated the email address and fixed a spelling error. So anyway, if you’re interested in learning a little about Thoughtful Programming and Forth, his article is worth a read:

Introduction to Thoughtful Programming and the Forth Philosophy By Michael Misamore

It’s a shame the rest of his webpage is gone, because he had some interesting content, but nothing lasts forever. Which leads me to my next topic…

RIP DarcFX

DarcFX.com, possibly the last of the great AOL programming websites, has closed down. This is probably for the best, since it hadn’t had any new content in years. In fact, I was actually a little shocked that the site lasted so long. For those of you who don’t know, DarcFX was known for being the site the succeeded KnK4Life.com after it closed down. KnK4Life was once the biggest resource for AOL add-on development. I’m talking thousands of unique visitors a day big. I mention its relevance here mostly because the site housed a couple of my programs and programming examples. It boosted my visibility a decent amount, and for that I’m thankful.

It’s a shame to see sites die, but unless they can evolve there’s really no point in having something that isn’t relevant anymore lying around. DarcFX was still giving me 5 or 6 referrals a month though, so I’d assume the site was still bringing in a decent amount of traffic. It’ll be interesting to see what happens to the domain. KnK4Life.com is apparently available for purchase. I’m surprised some spam site hasn’t grabbed it up, though it’s been so long that the domain is probably worthless. DosFX.com is another site that seems to have died. Dos was probably the most well known AOL add-on developer. Bofen.com was once a major site, until it went down in disgrace. Now the domain is owned by some company that sells “premium domains”. That’s the sort of thing I would expect to see happen to a lot of these late 90’s / early 00’s AOL hacking / programming / software sites that brought in tons of visitors. It’d suck if that were the fate of this site, though at my current status, I don’t see that happening.

Other sites I remember from back in the day:

Magintta.com – This site never brought a lot of people in, but I remember her. It’s good to see it hasn’t disappeared. Though it doesn’t look like it’s been updated in a long time.
Pixelsex.com [currently NSFW] – Plastik’s old site. Originally this site was hosted at dosfx.com. Plastik had a cool site with lots of tutorials. Looks like it’s gone now.
TPA Software – This site seems to be alive and well, it’s been a long time since I last visited.

I know there were a lot more than this, but these are the only ones I can think of off the top of my head. Anyway, I should probably get bed now…