Minor Updates and Future Plans

I’ve spent the past couple of hours researching VPS (virtual private server) hosting. It’s apparently the next step up after shared hosting. This site isn’t at that level yet, however, I suspect I’ll probably need to upgrade if I keep creating web apps. Anyway, I’m not sure I really made any progress. There are a lot of VPS hosts that look nice, but they’re either too pricey ($100+ a month) or I get horror stories when I Google things like “[hosting company] sucks”. It’d be nice if my current host offered VPS hosting, though according to their forums, they don’t plan to do that anytime soon.

Anyway, over the past week I’ve made a couple of minor updates. I’ll enumerate them below.

  • The Snake game was updated to use a snazzy YUI loading dialog (see image below). The loading time is strictly taken up by div creation. I create 2000 divs so the snake can grow without any pauses when you “eat” the red dots. There’s probably a better way to do this, but I haven’t thought of it. Also, a lot of little updates were made to the Snake game, however, you probably wont notice the difference since it’s little stuff that only I’d care about. I know I said this before, but I’m now officially leaving this game alone (with the exception of bug fixes and possible significant performance improvements).
  • The dual-thumbed slider bars on the Text Color Fader and Gradient Image Generator were updated so that the thumbs will move when you click on a color.

What’s Next?

I’m thining of making a couple more simple web apps for the site. Right now that’s just what I’m into. I spent a few hours this past week reading some tutorials on jQuery, and it looks really cool. After that I may do some C# or VB stuff. The programming section of this site recently became more popular than the software section, so I’m thinking I should probably try to expand that more – though I’m not sure what angle to take (the old VB stuff is what’s pulling in the visitors). I may make some quizzes, those were fun back in the day and they’re easy to whip up, but I don’t want to get ahead of myself.

I think the forums are officially dead. They had some good exposure. I just don’t think they were targeted right for this site’s audience. Plus there seems to be database issues. Oh well though, there were a couple of interesting topics. I’ll leave them up for the next week or two, but after that I’ll probably take them down.

Rethinking The Color Fader User Interface(s)

I’ve split my color fading app into two new online apps with interfaces that utilize Yahoo’s YUI. You can see them here:

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

The new designs are meant to be more concise, cleaner, and easier to use. I tried to think up a nice way to let the user manipulate lots of colors without it looking cluttered. The old design had the problem where the input colors were stacked vertically. The more colors one decided to use, the longer the page got. To fix this, I decided upon using a two thumbed slider bar and a horizontal row of colors that would shift depending on what your selection was (see image below). One thumb indicated the number of colors the user wanted to use and the other one indicated which color the user was currently editing.

I thought it was a really clever way of handling the problem, however, after watching a couple of people try to use the app, I realized it wasn’t that intuitive. People kept clicking on the colors they wanted to edit. And when that wouldn’t work, they assumed there was something wrong with the thing (no one bothered to read the instructions). Oh well. I made a modification to it to allow “color clicking” selection to work.

Hopefully this is the last time I do a complete redesign this program(s). I’ve been perpetually annoyed with myself over the past 3 design jobs I’ve done with it. I was actually working on something else for a while, but for some reason I got side tracked, oh well. I think I have programmer ADD sometimes.

Anyway, both redesigns were finished tonight, so there may be a few bugs. Let me know if you have any problems (or suggestions). The widgets I used from the YUI were the two slider bars and the color picker dialog.

Drop Graveyard and Snake Updates

Does archive.org ever delete files that its archived? I’ve noticed that some of the archived files from the older versions of patorjk.com have started disappearing. I went there the other day to grab up my old Snake game and I was unable to retrieve it. My other Flash games were also gone too. This is no big loss, but it’d suck if they actually routinely cleaned house on files that weren’t accessed much. It’d sort of defeat the purpose of archiving.

However, with some Googling I was able to find another one of my old Flash games. The port I did of Sloat’s Drop Graveyard:

Drop Graveyard

I have no idea what it’s doing there. I never uploaded the swf file to any site other than this one. However, I do find it pretty cool that it made its way around the internet and found a new home, even if it is one with tons of ads.

The game seemed to work pretty well for the most part, however it does have a two annoying problems: First off, the high score table doesn’t work since the php file that handled that was on my server. Second off, once you finish a game you’re redirected to their sign up page, which in my opinion is kind of shady. It looks like they modified the game so it’d do that. Though since I’m kind of amused just to see the game again I don’t really care that much.

With my googling I also found the old Drop Graveyard arcadepod page. If you read the reviews on that link you’ll see I got ripped a new one. I honestly thought the game was kind of fun. Not terribly challenging, but its a fun way to spend a few minutes. When I played Sloat’s original game I liked it, but it was the premise and story that really shaped it for me. If you don’t read the story before playing, you wont really know what’s going on.

patorjk.com Banners

While at archive.org, I also noticed that some of the old patorjk.com banners were gone. Some were missing before, but more are missing now. Luckily I grabbed up the ones I saw last time, since the image I based the old patorjk.com logo on is now gone. You can see it here:

That was probably made mostly with filters, but at the time it really blew me away. Ping was actually a really cool guy, I’m not sure what happened to him.

Snake

I’ve made some improvements to the Snake game that I posted up last week. Though I have a couple more ideas for it, I think I’m going to cool it on this project for a while (with the exception of bug fixes). This is mostly because I want to focus more on tool creation rather than on game creation. Anyway, the updates are enumerated below.

  • A control panel was added to the bottom of the screen that gives some useful links and tells you the current length of the snake.
  • When the snake dies, the part that made a collision turns grey.
  • Various bug/anomalies fixed.
  • The game was altered so that it could handle faster key presses. Basically I created a direction queue. This helps when you press a couple of arrow keys really quickly. Instead of using the last pressed arrow key as the direction to move in when you arrive in a new square, the game queues up all of the arrow keys you press and executes each movement as you go along. I noticed that this helped out in those really tense situations where you have to make a lot of careful turns.

JavaScript Snake

During my senior year of high school, I took an independent study course in C++. Originally it had been a full fledged C++ course, but since only 4 students signed up, the school put us all in its independent study program instead. The program worked by allowing students to work by themselves to create a project, and at the end of the semester each student would present their project to a committee to show that they had actually learned something.

On the surface it seemed like a great program, but the school did its hardest to keep us from learning anything. The lady in charge of the program forbid us from using the computers that had C++ compilers, claiming they were “too old”, and we weren’t allowed to install anything on the computers we did have access to.

At first we were resilient and installed compilers we found online anyway. But getting caught got us in a lot of trouble, and this lady was mean – at one point yelling at me for a solid 20 minutes for breaking one of her rules. This environment wore us down, and eventually we resided ourselves to knowing that we weren’t going to efficiently learn anything about C++ while we were at school, so we used a lot of our time to goof off.

It was during this time that I discovered the game of Snake. When I was tired of reading up on programming or dealing with crap from the lady in charge of the computer lab, I’d blow off steam by playing online games. Sometimes I’d spend the whole hour and a half period playing games. Of these games, 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.

A few days ago, while working on some other JavaScript project for this site, I randomly started thinking about these 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

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!

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.

Visual Basic 6.0 Example Archive

A discussion within the comments of one of my previous posts got me thinking about the past and how this site used to host a lot of neat programming examples. When I restarted the site last year one of my aims was to reinvent the site and to stay away from being an example depot. However, some of the examples I used to host weren’t available elsewhere and people did put a lot of effort into what they sent me. Not only that, the examples did seem to help people out.

When I made a post complaining about how all of my files were deleted, someone sent me a zip of all the programming examples they had downloaded from my site. The person had apparently made the zip one summer when they had decided to teach themselves how to program. The person told me they weren’t going to have net access during that summer so they had gone through my site and grabbed up all of the examples they thought would be useful.

Apparently they learned a decent amount and had archived some of them on their computer for future reference. I thought this was a pretty cool story, though since I was still in my “no old stuff” mind set, I didn’t post up the examples. However, thinking back about the VB Contest and Craig Jr, I decided it was worth putting up an archive of the old examples. I’ve re-created the old example page with everything listed, though some of the files are still missing. What’s available for download either comes from the zip I was sent or from archive.org. You can view the new example archive here:

Visual Basic 6.0 Example Archive

If anyone has any of the examples that are currently labeled “Missing” please let me know.

Forums

I’ve made my decision. There will be forums on this site, and soon. For now, give me around a week or two to get things set up – I want to iron out the details and play around with the forum software I have.

I know only a hand full of you said you’d be up for it, but there’s definitely a decent amount of passer byers / lurkers coming to this site, if interesting discussion cropped up I’m sure people would join in.

Also, thanks to everyone who replied in that thread.

Small Updates

  • The About page was updated.
  • The Ad format was changed for the blog. I figured the footer of each blog post would be a good place to stick them. I read up a little on inserting them inside of the actual blog post content, but that almost always annoys me when I see it so I went with the footer option.

Things Coming Soon

I’m working on a number of things but due to time issues everything seems to be taking forever. However, I hope to have TAAG and Image Color Palette Generator updates out soon.

Can This Site Sustain a Forum?

If I opened one back up, would anybody be interested in posting? I’d want to keep the number of sections low, like I had when I used ezboard. Right now I’m thinking of having the following sections: Programming Discussion, Web Programming Discussion, Thoughts and Opinions, and Errors and Suggestions.

It’s been almost a year since the relaunch of this site, and though I’m now getting between 500 and 600 visitors a day, the blog only sees a small fraction of that (maybe around 15%), so I’m unsure if I have a large enough base to actually launch a forum like the old one I had. I may try and partner up with other sites and do a shared forum type thing, though I’d have to think about it. Let me know if you’d be interested in one. If I get no / little feed back I’ll just wait on it.

Also, I am working on some updates. I aim to have some new content up by the end of the week.

Yahoo UI and Image Color Palette Generator Updates

After talking to a friend who had been going on and on about it, I decided to take a look at the Yahoo User Interface Library, or YUI. From Yahoo’s own website YUI “is a set of utilities and controls, written in JavaScript, for building richly interactive web applications using techniques such as DOM scripting, DHTML and AJAX.”

They’re actually really cool, and surprisingly easily to use. After doing some searching I found a few other free Javascript toolkits: jQuery, Prototype, Mootools, and Google Web Toolkit. This of course isn’t an exhaustive list of all that’s out there, but these seem to be the most popular. I had actually heard of jQuery, but because of it’s name I had always thought it had something to do with SQL or Java.

After a not too extensive check of the available features, I decided to try YUI first. Mostly because I thought their tools looked the nicest and they have an Image Uploader (something I haven’t tried yet, but plan to). I decided to soop-up my Image Color Palette Generator, which has so far been pretty plain. I’m still in the process of adding stuff to it (which I’ll describe below), so it’s currently a mess, but it’s now set up so that once you generate a color palette you can play around with a nifty little slider bar that will allow you to navigate through the HSL color space.

I’m sure a lot people will look at it and think “Ok, so you added a slider bar…”, but it’s pretty freakin’ cool. Once the app is fully complete it’ll come together a lot better. These new tools are great though. I can’t wait to check out some of the others.

On a related note, these toolkits remind me of an interesting article I read a couple months back on the possible emergence of a new SDK that could spell the end for Google’s Gmail. It’s a neat read if you have some time.

Image Color Palette Generator Updates

First, let me say I did some house cleaning on this app and sped it up by 700% on my machine. So if you were having trouble with it before, you should be able to use it fine now (if not, please let me know). I even have some more ideas for speed ups, but they’ll be in the next release. I was a bit sloppy in my initial implementation, I guess I thought I could get away with doing some simple math and string concatenation inside of the loop that looked at the image’s pixels, but those fractions of a second add up fast. I used table lookups to replace the unnecessary calculations. As soon as I’m done with everything on it, I’ll release the source so people can better understand what’s going on.

Aside from that, the program is now set up to generate 4 color palettes for you. The two it generates that get displayed on the left side of the screen represent the color palette for the image and the complimentary color palette for the image. The two it generates that get displayed on the right represent the “Muller Formula” versions of these color palettes. The Muller Formula is something that professor Aemelius Müller from Switzerland came up with that basically predicts what colors users will find pleasing. No actual formula is given on that website, so I had to infer one based on the basic idea. Right now I’m still tweaking it, so it’s still kind of experimental for the moment.

A Story, An Update, and Some Blogs

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.