Home

AsciiMo – Where have I seen this before?

Posted by patorjk | General News, Web Apps | Monday 21 June 2010 2:22 am

/*
asciimo.js – written by Marak Squires
saved from the internet @ http://patorjk.com/software/taag/

i had to do unholy things to make the original code work, seriously.
check the commit logs on github and you’ll see how much “code” i had to delete and refactor.
what’s left isnt really acceptable, but it does work.

let’s clean this up and get a more comprehensive font database!

— Marak
*/

How I picture code thieves

So that’s the header comment to a new open source project called asciimo. Though I’ve never heard of the project, it’s actually composed of the inner workings of my Text Ascii Art Generator (TAAG) web app. I’ve never heard of Marak Squires either, and I don’t particularly like his snarky comments about his difficultly in stealing of my work.

I’ve had stuff taken from this site. Sometimes it’s makes me smile, other times it makes me shake my head. This makes me shake my head. TAAG was the project I used to return to JavaScript. It was written with JavaScript knowledge I remembered from the late nineties. It was a project I did for fun. Hell, I didn’t even know what AJAX was when I first released it. Underneath it ain’t so pretty, but it’s mine and not some jerk’s ticket to getting a lot of attention for themselves.

I should probably be angrier, but I’m actually mostly just disappointed that someone did this. This is lazy and selfish. I develop all sorts of random stuff, and I do it for fun. If I see a concept I like, I’ll try and make my own version, I don’t take someone else’s. When I see something like this, it’s upsetting. Is it for some quick attention? So they can state that they’ve started X number of open source projects on their resume?

I was initially told of this project through email (thank you Jan), though I later found Marak’s self promotion on reddit (edit: screen capture from saved html file – he deleted some of his comments). His response to my comments was that because I didn’t explicitly put a copyright notice in my code that he could use it however he wanted (which I’m pretty sure isn’t true). He tried to say he did it for altruistic reasons, but FIGlet itself is open source, and there are already PHP modules available for people looking to use it in the browser (here and here).

Maybe in another universe we could have had some kind of cool collaboration, but at least in this one, Marak doesn’t seem like the type of person I’d want to collaborate with. He comes off as abrasive, self-centered and thoughtless. It’s a shame he has to use the ideas and work of others to promote himself.

Follow Up: Aftermath

patorjk.com Goes On One Month Hiatus (Updated June 2nd)

Posted by patorjk | General News | Friday 1 May 2009 1:54 am
The Moon, Right Before Its About To Go On Break

Tired Moon

I try to make sure this site is updated at least once a week. Often times I let it slip to every other week. When it goes past that, I usually get kind of upset with myself.

With that said, I’m a little embarrassed that I’ve been slacking on the update front, however, a lot is going on in my life right now and I just haven’t had the time I’ve wanted to work on stuff. I currently have some new updates to the Typing Speed Test in the works and I’m about to start work on a new app for this site. However, since I’ve been pressed for time, I haven’t really gotten much done during the last few weeks. So rather than string people along who regularly check in, or make subscribers wonder why there haven’t been any updates, I figured I’d just take an official break. I’ll still be working on stuff over the next month (when I get the time), I just wont update until the start June.

If anyone has any update requests for the Typing Speed Test let me know. I’m leaning towards reworking it to be more oriented towards typing correct characters instead of typing correct words, but I don’t know yet. It seems like there are a lot of different ways to give a typing speed test and no one way really jumps out at me as the best way.

June 2nd Update: I’m still in the process of moving into my new place and I’m currently in “crunch mode” at work, so it’ll be a little while longer.

My First Try At Revamping My Typing Speed Test

Posted by patorjk | General News, JavaScript, Web Apps | Monday 2 March 2009 8:53 pm

I’ve just updated my Typing Speed Test. I basically just implemented the changes that people suggested to me. These included:

  • Allowing the user to type real sentences, for example, stuff from books.
  • Adding more text input options.
  • Cutting the default time down from 60 seconds to 30 seconds.
  • Not having the text scroll as the user types and letting the user see all of the text they will have to type.
  • Highlighting of the correct, incorrect, and the current word in the box displaying the text that needs to be typed.
  • Providing obvious instructions on what to do.

I was unsure about how to display the instructions, so I just put a yellow information box at the top of the page. The only other thing I could think of was to start the app with a Ext JS-style message box, but I figured that would get really old after a while. Also, the spacing at the bottom of the page is kind of weird because I wanted the tab sizes to be static. I’m not sure if that’s the best design idea, so that may change.

A possible visualization indicating which keys were typed fastest

A possible visualization indicating which keys were typed fastest

For the next release, I’m thinking about adding in more stats on how fast the user types. Maybe giving them info on what keys they typed fastest via a visualization or some bar charts. A line graph showing their progress over time might also be cool. However, JavaScript may not be fast enough to let me do this. While beta testing today I noticed that sometimes I almost got ahead of the app, and keeping lots of extra stats may slow things down too much, I’ll have to see though.

Thank you to those of you who gave me suggestions. I think the test is much, much better now.

If anyone has any more suggestions or finds any problems please let me know!

Oh, and one last news worthy item, I also updated the About page on this blog with some more info and pictures.

URL Structure Changes And Future Plans

Posted by patorjk | General News | Saturday 28 February 2009 4:58 am

One of the things I thought I had gotten right when I relaunched this site was URL structure. I thought I’d put all of my web apps in one sub-folder, all my programming stuff in another sub-folder, common libraries in another sub-folder, etc. However, since then I’ve realized my URL structure wasn’t that optimal. A lot of the sub-folders just made the URLs longer and the mashing together of words made a lot of the URLs hard to read. Examples:

http://patorjk.com/blogstylometrytool/

http://patorjk.com/colorfader/

http://patorjk.com/keyboardlayoutgenerator/

http://patorjk.com/software/gradientimage/

http://patorjk.com/software/colorpalettegenerator/

http://patorjk.com/typingspeedtest/

So, to pretty things up a bit, I’ve decided to change how I’m structuring URLs. My new rule of thumb will be to separate words with hyphens and to only use sub-folders when absolutely necessary. Since domain names are supposed to be compact, I think it makes sense not to include them in my hyphen rule. The new locations of the tools talked about above are:

http://patorjk.com/blog-stylometry-tool/

http://patorjk.com/text-color-fader/

http://patorjk.com/keyboard-layout-generator/

http://patorjk.com/gradient-image-generator/

http://patorjk.com/color-palette-generator/

http://patorjk.com/typing-speed-test/

This seems like a rather superfluous change, but it was just one of those little things that was bothering me. I don’t plan to move anything else unless I make a major update to it, and all of the old links are 301 re-directed.

The one program I didn’t move was the Text Ascii Art Generator. This is because it has a bunch of links pointing to it and I didn’t want to mess up its standing in the search engines.

As for my current future plans, I hope to improve some of my existing web-apps. Unfortunately I was kind of tight on time this past week (I had to work past 9PM three times, I’ve got a lot to do at work), but I did do some mock-up Ext JS layouts for the Typing Speed Test program. However, after a little bit of thought, I think I’ve decided I’m just going to extend and change the one I currently have written. I hope to have a new version of it out within the next two weeks. After that, I’m going to try and refurbish another one of my apps.

Lastly, if anyone has any problems with accessing programs using the new URL structure (via old links or whatever), please let me know.

2008 Is Coming To A Close…

Posted by patorjk | General News | Saturday 27 December 2008 5:22 am

The end of 2008 is approaching. It’s been a good year for this site. I’ve learned a bunch of new things, and the site grew significantly in its content and daily traffic.

Right now I’m enjoying the holiday, so I don’t have any new content to add, however, I figured I’d post up my patorjk.com-Related Goals for 2009:

  • Get good at JavaScript. It’s been a while since I’ve felt like I was really good at a particular language. At work, I was referred to as a “language person” by my boss several times since I seemed to be able to dive into any language they threw at me. Versatility is good, but sometimes I feel like I spread myself too thin. I could possibly get really good at Tcl, since I do a decent amount of Tcl programming at work, however, Tcl isn’t that fun of a language and it doesn’t easily do the things I would want to do (I could rant on and on about the pros and cons of Tcl, but I’ll spare you all).
  • Learn jQuery. Right now I’m learning Dojo, but I’d also like to learn jQuery, since I know my company uses and it appears to be the most popular JavaScript framework. Being familar with a couple of these frameworks is probably a good thing too.
  • Develop More Web Apps. I only released 4 total this year (not including ones that were re-done). This is well under the number I wanted to release. In the future I hope to release one a month, however, I don’t want to set myself up with an impossible goal, so I’ll just say I want to make more.
  • Read At Least 4 Programming Books. I’m going to leave 2008 having read 2 completely and 4 part way through. Books can be a great motivator and a good source of learning.
  • Join A Programming Community. I wasn’t able to relaunch the patorjk.com forums this year, however, I do still miss the community of the old forums.
  • Write A WordPress Plug-In. WordPress is the name of the blogging software I use. I’ve played around with it a bit, but I haven’t really tried writing my own plug-in.
  • Release Some Programming Examples. It’s been too long since I released one.

It’s 3:30AM right now, so there may be a few I’m missing, but I think those sum up my mind set right now. Professionally I think I’d like to get back into .NET programming (I miss VB, but for a hobby, I want to stay focused on something, and right now I’m more into web programming than I am into Desktop apps). However, I have no idea what I’ll be doing this next year or even how much I’ll be able to say about it.

2009 year should also be a big year for me personally. Right now I’m looking for a house with my girl friend, so I’m really excited about that. Also, my awful case of tinnitus (constant ringing in the ears) has gone down by about 75%-90% thanks to my switching toothpastes from one that contained Potassium Nitrate to one that didn’t (sensitive toothpastes typically have Potassium Nitrate), and I think it may go completely away. If you know anyone with tinnitus, be sure to pass on this bit of info.

Anyway, I hope you all are having a happy and safe holiday and I hope you keep checking back in!

patrickgillespie.com – What Should I Do With It?

Posted by patorjk | General News | Thursday 10 July 2008 1:41 am

Not many people search for the phrase “Patrick Gillespie”, but those who do find that the first listing is a short little article about Patrick Gillespie failing to register as a sex offender. Once you read it you can see that it’s not about me, however, it kind of sucks to know that that’s what people see when they Google my name. A few girls I’ve dated have even brought it up, usually just to make a joke, but it does solidify my concern that people find information about us by Googling us, and if someone is searching for me, I don’t want their first thought to be “Is this guy a sex offender?”

Today things took an interesting turn and I might be able to unseat that crappy website. I was notified by a fellow commenter at seomoz.org that patrickgillespie.com was available for purchase. This is the first time I’ve ever seen this domain available, in fact it just went back on the market around 30 days ago. I think for the past 10 years or so some realtor has had it, or maybe someone just had it parked, either way, it wasn’t very popular or memorable in its previous form. Part of me wonders if the owner let it expire by accident, but I guess that sucks for them. Though I did leave patrickgillespie.net and patrickgillespie.org available for other Patrick Gillespies to pick up.

My main concern now is, what do I do with patrickgillespie.com? I could have it point here, but I kind of want to do something a little more creative, I’m just not sure what. Here are some ideas I was tossing around in my head:

  • Personal Blog: This would be the easiest thing to do. However, I already have a livejournal I don’t update much, and I can’t say much about the work I do at work, so I’d feel like this angle might not be very fruitful.
  • Topical Video Blog: Something where I could post videos to get across certain topics. I do a lot of online research, and sometimes I find some interesting videos on sites like youtube. A blog that assembled video information on various topics could be interesting.
  • Resume Site: A boring option, and probably something that wouldn’t rank well, but a decent filler idea if I can’t decide on anything.
  • A Weird Art Project: Something like this, something that just makes people scratch their heads, however, they explore it further because it’s intriguing.
  • Patrick Gillespie Information Center: Some kind of web app that aggregates information on people named Patrick Gillespie.
  • Puzzle: Maybe have the page just be a puzzle of some sort. Like a riddle that the user has to solve and if they do they can get some kind of reward.

That list basically makes up the ideas I was able to come up with today. Does anything jump out as a good idea? If anyone has any suggestions, please let me know.

Souping Up WordPress and TAAG Updates

Posted by patorjk | General News, Software | Monday 16 June 2008 2:44 am

I can’t believe it’s been almost 2 weeks since I last updated. It seems like every day I think about something new I could do for this site, yet I only get to do a small portion of what I think about. I have more stuff coming down the tube, though I’m not sure when I’ll have it out. Sometimes I think I’ve got programmer ADD. Anyways…

New TAAG Feature

I added a new feature to the Text Ascii Art Generator (TAAG) program that allows you to easily generate an image of your ascii art output. In the outputted text, you’ll now see a new link, next to the “Open In A New Window” link, that says “Generate Image”. When you click it, it’ll generate a PNG file of your output.

Currently this feature is only available for FIGlet fonts. I had some issues with getting some of the more eclectic Arial font characters to print. I’ve even noticed that the AOL fonts (which are done in Arial) don’t show up correctly unless I’m using IE, which I find a bit annoying. Anyway, let me know if you have any problems with this feature or if you see any obvious flaws.

WordPress

After reading up a little bit on WordPress optimization tips, I decided to re-do this site’s sidebar. Mostly because I felt like the site related content should come before the outgoing links (sorry guys). I’ve also read that it’s good to have a large feed icon so I made one that blended in with this site’s color scheme. I almost went with this icon:

Which was generated using this nifty little program. However, I wasn’t sure how many people would actually understand what that thing was for, and it is kind of ridiculously big, so I went with something more traditional that had some explanation text (“Get Updates in a Reader”). I read somewhere about an experiment someone did that showed that people were more likely to click a link that said “get updates” than they were to click one that said “subscribe”. I think that makes a lot of sense too, since subscriptions usually cost money and involve you giving out some kind of personal information, which most people don’t want to do.

The other feed icons, the brand-name ones, I got here. I’m not sure how long I’ll keep them. They’re not ads, they’re just links to online feed readers. However, the big Google Ad below them is an ad.

Right now I’m not really sure if this is the layout I want for the sidebar. I may try some different configurations in the coming days, but I haven’t made up my mind. I want something that flows and looks nice and I think I’ve sort of got it, but not really. So you may see things change around a bit. If you have any suggestions/complaints/ideas, let know know.

I also added a feedburner counter. I’m not sure if that’s a good idea or a bad idea. However, I do appreciate the adds from those of you who have for some reason or another decided to subscribe to this site.

Subscribe to Comments

Lastly, I also added a new WordPress plugin that allows you to subscribe to certain comment threads on this blog. When you subscribe, you’ll get an email notification each time someone posts a new comment to that thread. I figured this would be pretty useful. At least I know it would have been if I’d had it when everyone was giving their updates in the Three Things to Say entry.

StumbleUpon-ed

Posted by patorjk | General News, Programming Examples | Wednesday 4 June 2008 1:56 am

I received 10,765 visitors yesterday, which is pretty good for a small site like this one. Late in the day yesterday I checked my stats and kind of had to do a double take. As soon as I saw the number I knew something had to be up. I checked my referrers and noticed StumbleUpon had sent me a boat load of people.

After a little investigation I found the Text Ascii Art Generator (TAAG) app had for some reason obtained a lot of “thumbs up”’s from the StumbleUpon community. Someone added TAAG to StumbleUpon months ago, and I received a flurry of visits for a few days after that, but it topped off at around 600, nothing close to the traffic I got yesterday. I’m not sure what caused this avalanche of attention (it seems to have started in the mid afternoon), but it was pretty cool. I haven’t had that many visitors in a single day since I was mentioned in the Lockergnome News Letter back in 2000 (which at the time was a very popular online news letter – now it appears to be some kind of blogging community).

Right now it’s almost 1:30AM and as I write this, and I currently have 1.5k visitors for today already. It’ll be neat to see how long this StumbleUpon bubble lasts. So far my site appears to have held up without any problems too, so site5 earns itself a plus mark in my eyes. 10k isn’t a whole lot, but it’s good to see that sudden bursts of traffic are handled without a problem.

What I’ve Been Doing

It’s been a while since my last update. I’ve been jumping between projects, probably a little too much. Last weekend I was doing some C# stuff, and this past weekend I did a little Javascript (which I’ll talk about below). After reading all the hype on Python, part of me contemplated rewriting the Image Color Palette Generator (ICPG) in Python just as a learning exercise, but I decided to drop the idea after a little more thought. I’ve got too much going on already, and it’s probably better for me to focus on a hand full of projects than it is to try and get a taste of everything.

Ajax Image Uploading

I got image uploading to work separately from the image processing in the ICPG program. Using this nifty jQuery plug-in I was able to set the program up so the user could upload an image and then hit the processing button. It actually worked right out of the box, which is something of a rare occurrence.

ICPG used to handle image uploads, but I kept getting time out errors because my host only allows 15 seconds of processing time for each php file before it kills it. By having image uploading occur separately, I think I can get around this.

However, even though I have something that works now, I’ve decided to wait on uploading it (sorry for being a tease). The new version seems kind of hacked together and since uploads have security issues, I figured I’d take some time to double check everything and try to speed things up as much as possible. I also want to tidy up the interface and get rid of the page reloading.

Well, that’s all for today, I should probably be getting to sleep now since I have to get up for work tomorrow.

Javascript Snake

Posted by patorjk | General News, Software | Monday 21 April 2008 2:08 am

During my senior year of high school I took an independent study course in C++. Originally it had been a full fledged C++ course with a teacher and everything, but since only 4 students signed up, they had us all do independent study projects instead. Independent study courses at my school worked by allowing you to work by yourself to create some project that you would then present to some committee to show that you had learned some stuff.

The only problem with this was that we had no text books, no access to any compilers of any kind, and no authority figure who really knew anything about computers. The lady who was in charge of the school’s computer labs (referred to behind her back as “The Troll Lady”) was mean and irrational.

She forbid us to use the c++ compilers that were available in the upstairs computer lab because they were “too old” (we weren’t even allowed access to that lab). We also weren’t allowed to install stuff on the computers in the downstairs lab. So we were basically left with no way to do anything c++ related at school, unless we wanted to sit and read the books we had purchased ourselves. To make things worse, we didn’t really get along. Since our school was more arts/drama oriented, the kids who were good at computers tended to be kind of snobby. The kind that would call you an idiot for not knowing some obscure unix fact.

I digress though. The only reason I mention all of this is because this is when I discovered the game of Snake. Since I couldn’t do anything programming-related, I’d just sit and play Flash or Java games for the first hour and a half of the school day (we had block scheduling).

Basically I’d come in, watch Flash videos from NewGrounds, and then horse around on the different internet games I was able to find. Snake ended up being my favorite. I honestly sucked at it then and still suck at it now, but it was pretty mindless and actually pretty fun. Years later I’d implement my own version in Flash (which used to be featured at this site).

Anyway, a couple of days ago I was working on some other Javascript project for this site when I randomly started thinking about the olden days. After remembering how much I loved Snake I thought to myself “Hrm, I bet I could write a version of Snake entirely in Javascript”. Since Snake is such a simple game, I decided to run with the idea and try and crank out a Javascript version as quick as possible. You can see what I’ve got so far by following the below link:

http://patorjk.com/games/snake

That is fresh from my hard drive, and it’s a really bare bones version. I hope to add a couple more features and to optimize it some over the next week. Since Javascript is interpreted, the game may be a little jumpy on some of your computers (let me know if you have any major problems). When it’s totally done I’ll probably also post the source as a Javascript example. You could peak at it right now if you wanted, but it’s in a not-ready-for-prime-time state right now.

As an aside, under the hood the snake is a linked list. I googled “Javascript linked list” for some quick linked list code and came across this link, which is actually pretty nifty. It’s worth a look if it’s been a while since you’ve done anything with linked lists.

TAAG

TAAG was updated with a couple of fonts (they all start with “JS”) and I fixed up the feature that allows you to share messages you create with others.

Today I am 26

Posted by patorjk | General News, Software | Thursday 3 April 2008 2:07 am

Knowing that I’m 26 makes me feel old. When I don’t think about the number, I feel like a young guy. At work, I’m the only person on my team who’s in their 20’s. Less than 2 years ago I was in college working on my masters. So on one hand, I am sort of still young, but knowing that college is completely behind me and that I’m more than a quarter century old makes me feel like I’m beginning to exit the “young” era.

Time seems to just fly by, doesn’t it? It was actually almost 10 years ago that I started this site up. I don’t remember the exact date the site went online, but I believe it was sometime during the Spring of 1998. Here’s an early screen shot from its first incarnation (the very first version of the site was just the main frame without the left hand navigation panel):

I still remember getting email from people who said they loved the content of my site, but hated the design. Each page had its own crazy background image and moving gifs. I had no clue what I was doing though, it was just a fun project. It’s cool to think that its survived so long.

As an interesting side note, I was originally inspired to start this site after getting an email that said “Your site sucks”. See, back in ~1996 I found a free personal webpage service called Geocities. Since no one had their own web page back then, I thought it was the coolest thing in the world. So I created a Geocities webpage. However, since I wasn’t very computer literate, I fumbled around with their online editor, got frustrated, and then left. The site ended up being a black background with black text, the text being a list of jokes I had swiped from some other site. And for no apparent reason, the page had a picture of Spock in the upper left hand corner (they only had like 5 sample images that their editor would let you use). This guy must have found my forgotten creation while browsing the Geocities’ website directory. Apparently it upset him so much that he felt like he needed to send me an email. I was so annoyed with the message that I decided to go fix the page up, and while doing that I decided to make it about my current interest – which at the time was programming.

Had I not gotten that email I probably would have still eventually started this web site, however, it would have had a different history and it might have even gone in a different direction. It’s odd that a piece of hate mail motivated me to create something that evolved into what you now see before you. The butterfly effect at work.

Anyway, going back to age, I suppose you’re only as old as you feel, and at the moment, I feel pretty young.

TAAG

I’ve been trying out some new Javascript tools for possible inclusions in upcoming apps, but nothing I really want to get too much into now. TAAG has seen some significant updates in the past few days though. I completely changed the interface in the control panel and added two new features:

  • A feature that lets you open your text up in a new window. So you can more easily share what you type with your friends. Check it out. Right now the feature is still in beta and doesn’t have all of the capabilities of the normal text that’s generated (colors, alignment, etc). I hope to add that by the end of the week (it’s a quick addition, I’ve just been really really short on time).
  • This one was a request, it’s a feature that allows you to replace the white spaces with whatever character you want. This feature can be found in the “More Options” section.

Originally I had been aiming to update the “Image Color Palette Generator”, but I ended up getting stuck on something so I decided to take a break and work on some TAAG updates. Hopefully there will be a new version of ICPG out sometime this month.

Forums

Despite not catching immediate fire, I’m keeping the patorjk.com forums alive and active. I plan to check them out at least 3 times a day. So feel free to look around or make a post or two. I’ve recently changed the “SEO” forum into a “Web Related” forum. It’s sort of a catch all forum for anything interesting that’s web related.

Forums!

Posted by patorjk | General News | Thursday 20 March 2008 1:27 am

It’s late and if I don’t get to bed soon I’m going to be sincerely sorry in the morning (I’ve got a 9:30 meeting – only early if you consider the fact I’ll be going to bed at 2). So it’s finally here. Tell your friends, tell your neighbors, tell anyone who will listen, patorjk.com has forums again:

http://patorjk.com/forums/

Please sign up and make a post – feel free to write about anything as long as it makes sense for the category in which its posted. If you have any suggestions please let me know.

Some side notes: I deleted my old forum installation and reinstalled a new one. I saw that two of you had created user names. I didn’t purposely delete your user names. I’m assuming those of you who signed up for the forum found it via Google. For some reason it showed up as the 4th link for when you do a search for “patorjk” (it’s moved down a little now). At the time I figured I’d let it be since it’d probably make for an interesting find for anyone who was randomly searching for stuff.

A Story, An Update, and Some Blogs

Posted by patorjk | General News, Software | Sunday 17 February 2008 7:45 pm

A Real Programmer?

“I’m not one of these younger guys who don’t really know anything. I’m an older guy, a real programmer with real experience.” So those weren’t his exact words, I’m paraphrasing from memory, but it contains the basic idea he was expressing. I over heard this from the cube next to me while I was eating lunch. Honestly, I was pretty shocked to hear someone say this. While experience does make one a better programmer, I actually haven’t noticed that much of a quality difference between the younger programmers and the older programmers. In fact, the most talented programmer I’ve met at work is 27. It almost seems like programming skill grows logarithmically. You learn and a lot in the beginning, but then as you get more experienced, the skills you pick up only make you slightly better over all. And people who aren’t that great after a year or two, never really become that great.

So hearing some old guy go on and on about himself while bashing on the younger guys sort of ruffled my feathers. Since I had been pretty busy running around all over the place, I wasn’t at my cube but at a “general use” cube (so to speak), so I didn’t know who sat in this area. I was just kind of by myself, eating a sandwich and surfing the web. The voice sounded familiar though. The man continued to trumpet his own skill and put down the “less experienced” when I suddenly realized who he was.

I had actually spent the whole previous day fixing his mangled software. He hadn’t been able to get it to work, even after a 2 week extension, and he had now moved onto another project, so his work had been tasked to me. And I, a younger and “less experienced” programmer, had done what he could not do, and in a day, and now here he was bashing on the younger guys. I was actually pretty annoyed. Even if he had been a good programmer I would have been annoyed. I’m by far the youngest person on my team (by at least 8 years) so part of me had to wonder if he was thinking about me while he gave this little speech. He may have just been trying to talk himself up to his new boss, but what he was saying was still BS.

Anyway, I had enough sense not to interrupt his diatribe or let him know I was around, but I did file it into the back of my mind. Hopefully when I’m 40+ I don’t have an arrogant streak where I go around thinking I’m better just because I’m older, especially if it leaves me blind to my own incompetence.

Image Color Palette Generator Update

I’ve thrown in the towel and done away with the image uploading. The new Color Palette App simply wasn’t being consistent in what it could handle. The ability to upload an image is extremely useful to the user, but since I’m currently under shared hosting (ie, lots of other sites are hosted on the same server), I apparently don’t really have the horse power to handle some of the more heavy duty stuff.

The app is now set up to take in a URL to an image. This shields me from having to worry about people uploading unsavory content (though for safety reasons the app was deleting all images after they had been processed) and it keeps the user from having to worry about me spying on what they upload (something some webmasters do – always be careful about what you upload to websites).

In the future I definitely want to have apps that take in images from a user’s computer, so eventually this issue will be worked out. Anyway, for the time being you can check out the new version of the app here. If it dies on you let me know. This has sort of thrown a wrench in my plans for more image oriented apps, however, I’m still going to charge on and see if I can make the best of this. If worse comes to worse, I’ll just make C# versions.

Oh! And before I forget, I changed the formula for calculating the complimentary colors. I now convert the color space from RGB (red, green, blue) to HSL (hue, saturation, lightness) and then shift the hue by 180 degrees, then I convert back to RGB space. This appears to give much more accurate complimentary colors, though I’m not sure if this is the correct way of doing it. I still cannot find a proper formula for calculating them.

New Blogs

chicanerous – Chicanerous is the author of the popular VB Array Tutorial on this site. And I do mean popular, it now averages over 200 visitors a day. Chic also used to be a regular contributor to a message board I once had. On his blog he says he’ll “probably post poorly written proofs, unastounding thoughts on literature and criticism, overgeneralized musings on strength training and conditioning, and half-hearted ruminations on various other subjects.” Chic’s a cool guy so you should check his site out. Hopefully he doesn’t mind me spamming it here :P .

New Web App: Image Color Palette Generator

Posted by patorjk | General News, Software | Sunday 10 February 2008 5:06 pm

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

Posted by patorjk | General News, Programming Examples | Monday 28 January 2008 2:53 am

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

Posted by patorjk | General News | Tuesday 22 January 2008 12:02 am

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.

Next Page »