Tuesday, December 23, 2008

BlakeNet Down

BlakeNet will be down for a while. Our new computer just came in, which caused me to have to move equipment around and use the wireless device used to connect my server to make our second computer able to communicate wirelessly. Once I get back from Christmas vacation, I will start looking for a new wireless card so that I can get my equipment back online.

Merry Christmas. :]

Monday, December 22, 2008

Switching To Linux

So, I got fed up with Vista recently. Well, if you know me, you know I have always hated Windows. Unfortunately, it often appears to be a necessity for certain situations. Gaming, MSN, school, hobbies, etc. However, as any seasoned Linux user would tell you, these lines of difference are becoming thinner and thinner all the time.

I have been using Ubuntu for BlakeNet ever since its conception, and I am no stranger to the environment. But, personally, Id just hate to convert my Vista laptop to Ubuntu and then not be able to do everything, and I mean EVERYTHING, that I used to be able to do. My plan of action? Well, I got annoyed at Vistas auto-backup mechanism, so I turned it off a while back and set up backups to my server. The 10 gig backup partition on my laptop has since been lonely without any data to store. I have decided to finally put it to good use. While I wont be uninstalling Vista due to the eminent possibility of headache, I will be installing Ubuntu on the backup partition, putting some apps on it, and using it as often as I can.

My setup will consist of Ubuntu Intrepid Ibex with Compiz (I looooove the shiny 3D cube desktop thingy!) and some apps to take the place of my Vista ones. Im not going to list off Vista programs and their Linux counter-parts. There are enough of those sorts of lists on the Internet, including the official one. My biggest questions were "will my games run?" and "will all of my favorite MSN features be available in the replacement messenger?" The first answer is, of course, yes with the help of the Windows emulation layer called Wine. But, I was worried about performance hits. From what Ive heard, the experience can differ, but most people say the performance is surprisingly similar (if not better!). I will have to update when the transfer is complete. The second question is due to my previous experience with Pidgin, the Linux Swiss-Army messenger that allows you to communicate on multiple protocols including MSN, ICQ, Yahoo, AIM, and more. Once, I had logged into MSN using it and found that it was an incredibly dry messenger with most of the features that made me fall in love with MSN gone. After doing some Googling, though, I found out that there are plugins that add those features back, including Messenger Plus! features! Needless to say, I was sold. I will be setting up for the next couple days, and will post my experience after its all done.

Friday, November 28, 2008

Update: Random Staffer

Hey, peeps! I hope everyone had a good Gobble-Gobble-fest yesterday! Anyways, on to business.

Random Staffer is coming along nicely. However, I ran into something I really didnt like yesterday. In order to handle events on a form element (say, a button or menu item click), you need to use an ActionListener. There are two ways to do this effectively. The first, and seemingly most popular, method is to declare your class as extending the ActionListener class. This means you can point to this class as your listener, then add the ActionPerformed method to your class definition. This presents an issue of redundancy. For example, if you have some buttons and your class set up in the above fashion, you would need to add the action to take when the buttons are clicked separate from the button instantiations and set-up. This creates a readability nightmare, where if you want to know what happens when you click Button1, you would have to track it down in the ActionPerformed method further in the code.

The second method is to take advantage of Java's ability to change non-static method definitions at run-time. This means you can create a new instance of an ActonListener, and set the ActionPerformed method for that specific instance. This is great because you have resolved the redundancy and readability issues by including everything for the respective button in as little as two lines. However, this comes with the price of a new class file being generated for each time you do this, quickly changing a two-file project into a 20-file project. This happens because Java needs to create a completely new definition of the ActionListener class since the original has been changed.

Apparently, the desired effect is to have low-to-no redundancy, while eliminating the need for multiple class files. My proposal was to take advantage of Java's Class and Method classes. These provide your program with the ability to take in references to methods in other classes and call them dynamically. The problem I didnt forsee was that this only works on public and protected methods, which means every method that needs to be called when a button is pressed now has the potential to be called from the dangerous outside world. So, now its back to the drawing board.

Friday, October 17, 2008

BlakeNet Status Update

The BlakeNet status to the right has been updated to fix the loadtime and caching issues. JavaScript is required to see the active status.

Thursday, October 16, 2008

Random Staffer Reopened

The old bane of my existence has been sitting on my todo list for a while now. The other day, I felt the urge to do something productive. Whats more productive than sleeping all day, you ask? Working on Random Staffer. As anyone who is a follower of my work knows, this program was a thorn in my side from day 1. It was originally built in Visual Basic .NET and the printing aspect was handled by Java. I decided this time around, I would rewrite the whole thing from the ground up completely in Java. Expect milestones to be posted as I go, along with maybe some source code and working pre-releases/finals. No ETC as of yet.

Wednesday, October 15, 2008

Battle Poverty One Webpage At A Time

As a part of Blog Action Day 08, Im going to discuss how you can fight poverty. Since this blog more or less targets web designers, I figure Ill list some sites that offer buttons, badges, banners, and the like that when clicked or bought send money to charitable organizations.

MakeHope Button Store - The official button of Blog Action Day 08. Buy one for your site, and youll be aiding the movement.
Make Poverty History - A collection of free banners for your site.
Poverty USA - In case your visitors live under a rock, add these banners to spread the word.
End Child Poverty - In the words of the now defunct BannersAgainstPoverty, "Be the change you wish to see."

These are just four of the most popular sites. There are countless others to choose from.

Web designers, today we are called upon to do our part in the eradication of this world-wide pandemic. With the economies toppling, prices skyrocketing, and unemployment rates at all-time highs, it is up to each and every one of us to do the right thing. We owe it to not only those afflicted by poverty, but also ourselves, as human beings, to do all that we can to improve the quality of life for everyone -- A world for the people, by the people, for everyone's benefit.

Wednesday, September 17, 2008

BlakeNet Overhaul

The classic green look of BlakeNet has started to bore me, and Im sure anyone else who visits the site. I decided that anyone who visits the site, especially potential employers (whom the site was originally intended to be viewed by), would find the bland, stinging default green a bit annoying and nubbish rubbish. So, I sat down and planned out a much more graphic-intensive, "cooler", engaging skin that shows off my talents a lot more effectively while still keeping to the techno theme of the site. And so, "Grunge Gears" was born. Today marks the full load-out of the new skin, along with a new skin selector right below the menu. (Yes, I plan to make more skins, and you can still use the old one if you need a low-bandwidth version)

I hope to hear some feedback about Grunge Gears. I have plans to change the menu from textual to images, create a new logo that follows suit with the skin, create some sort of filler image for the sidebar gap, and tinker with fonts to see which ones offer the best immersion. Besides that, drop me a line in the usual fashion if there is something youd like to see.

On a side note, sorry I havent been posting lately. Ive been really busy with job hunting, college stuff, and a cold/conjunctivitis/major ear infection triple-whammy. Just to reassure those of you who were hoping to see more articles in the Multiplayer series, I DO plan on writing at least one more, titled "Multiplayer Data Consumption". If I can get my life straightened out, Ill push it out ASAP.

Thursday, July 24, 2008

Multiplayer Game Basics

Multiplayer games come in all kinds of formats, genres, and languages. In this article, I will discuss the bare-bone concepts of a multiplayer game and even give step-by-step intructions for making a multiplayer backend (server) with Java. While I will only be discussing Java specifically, all the concepts apply to all programming languages. The general concepts require no real prior programming knowledge, though the Java tutorial accompanying this article requires a basic understanding of how Java works.

Multiplayer games can be put into one of two basic structures: Client-to-Client or Client-to-Server. In Client-to-Client games, the client communicates directly with another client, while in Client-to-Server, clients communicate with a server without ever having to talk directly to the other clients. This article will discuss Client-to-Server communications as this is usually the more preferred type for multiple reasons, which are outlined in the following table.

Advantages of
Client-to-Client vs. Client-to-Server

  • Low to no cost of operation to publisher
  • No reliance on publisher
  • Individual modifications

  • Security of clients
  • Slower clients dont slow down others
  • Centralized statistics
  • More quickly updated
  • Clients experience the game the way it was meant to be

All of these advantages and their inherited disadvantages can be traced to the simple fact that Client-to-Client games are individually owned and maintained by those who play them, where the Client-to-Server games are based around a "centralized" system of computers that are all maintained by the game publisher or others who are given permission to do so by the publisher. Before we begin the in-depth portion of the article, I want to clarify what a server is. A server in multiplayer games refers to a variant of the game or a related program that allows clients to communicate with it, and subsequently relay those communications to other clients who are connected to the same server. This web of client connections is called a network. Ironically, even in Client-to-Client structures a server exists. The server in this structure is more commonly referred to as the host, since their computer is not dedicated to serving the network.

Connections between computers over networks (i.e. the Internet or LAN) is usually accomplished with a system of sockets. A socket is a pipeline linking the server and client through a computer port. Each client shares a unique socket with the server, so no other clients can read data meant for other clients. Data traveling between computers is referred to as a packet. Most programming languages support the use of sockets and packets. The servers job is to listen to a socket, take in packets, do what needs to be done with it, and possibly reply to the client with another packet, or even broadcast packets to other clients currently connected.

Now that we understand the technology involved, its time to get down and dirty with Java. We will be creating a simple Java application that listens for incoming connections, designates the connection to a socket, and replies to each packet sent by the client after that. Programming in Java requires a text editor (I use good ole Notepad), the Java Runtime Environment (JRE), and Java Development Kit (JDK). Both the JRE and JDK can be downloaded from Sun's website. Java source code is saved with the extension .java. After compiling, the resulting programs are saved with the extension .class.

I have already programmed and tested the Java applications. You can download MplayServer.java and MplayClient.java from SNR, along with a simple client named MyTalker.java. To compile and run the server, navigate to the directory you saved the source files to with command prompt, then use the following commands:

javac MplayServer.java
java MplayServer 8087

To compile and run the simple client, use the same commands as above, except replace MplayServer with MyTalker.

Edit: The full step-by-step tutorial is done. You can find it at http://www.subnetroot.com/source/j/Basic/tutorial.txt.

Wednesday, July 16, 2008

The Importance of Pictures

In presentations, pictures and visual aids are vital to keep the audiences attention and more effectively convey your points. In blogging, visual aids can be just as important. While the focus of blogging is on delivering raw information to the viewers, it can sometimes seem overwhelming to have an ocean of text with no means of visually presenting your information. I am admittedly guilty of this. I dont use images very often in any of my online pubications. In the future, I will try to include pictures in my blog posts so that visitors and subscribers dont get detered by all the reading.

On an unrelated subject, my last post on AI Design was the first in a series of entries about game design. The next one will be about multiplayer structures and will include an example written in Java showcasing how to use sockets to communicate between two or more computers. If you would like to suggest a topic for this series, or just something else youd like to read about, use the Contact Us form on BlakeNet or email me. blake.oxx@gmail.com (remove the dot)

Thursday, July 10, 2008

AI Design

I decided that Artificial Intelligence in the gaming world is something that is often glossed over when talking about game design in the sense that there are tons of pages detailing various dynamics of games a designer should consider, and even a couple discussing what exactly AI is. However, I am disappointed that there is a lack of publications describing the aspects of AI a game designer should know about when they decide to add some bots to their programs. While this post focuses on the impications, aspects, points of interest, etcetera specifically in AI for games, the concept can also be applied to Artificial Intelligence as a whole.

Lets start by defining what constitutes as Artificial Intelligence. AI is the ability of an object to make decisions that ultimately complete a set goal. This encompasses many things in a game, from bad guys shooting at you, to rival racers trying to beat you in a race. I like to split this definition into two types: Dumb AI and Smart AI. It might seem a little ironic that we call any amount of intelligence "dumb" or "smart", but it actually makes sense to classify AI as such. Imagine the classic game of Pong, where you play one paddle, and the bot (run by AI) plays the other. Each player tries to bounce the ball away from their side of the screen and past the other player. We classify this bot as having Dumb AI since it has a simple job of checking where the ball has moved to, and moving to match its position on the appropriate axis. There are no extra factors involved -- The bot doesnt check for where the player is, what kind of angle the ball should be bounced off at, or some other possibly critical decision-making datum. On the opposite side of the spectrum, imagine a game like Need For Speed, where the player is chased by police cars controlled by AI. This sort of AI is much more exciting in that the AI has to not only follow the player, but anticipate his next turn, dodge obstacles, and work together with other police cars to stop the player. This is a prime example of Smart AI. Dumb AI, while being effective in some situations, makes for very stale gameplay, or sometimes even frustration due to the bot being unbeatable.

Smart AI is what everyone wants to see more of. However, it comes with its own cons as well. A bot that is hardset on fulfilling a specific goal without factoring anything else in can lead to an unbeatable bot, which makes this type of AI just as terrible as the previous one. Since your average developer doesnt have a supercomputer residing in their moms basement, they arent capable of creating life-like intelligence that factors in human miscalculations and other realistic errors. This brings us to the next talking point; "Flawed" AI. To make sure a bots AI isnt infalible, many developers purposefully flaw their AI by adding a random chance that the AI will do the opposite of its goal, freeze up for a given amount of time, or something else that gives the player a chance to actually beat the bot. This sort of approach is completely in the wrong direction. The developer should not dumb down the AI for playability's sake. Now we get to the real meat behind this article. Lets examine two of the alternatives to purposefully dumbing down Smart AI, and figure out what Flawed AI really is.

First of all, consider what makes actual intelligence so manageable. Nature didnt create random counters that decide when an animal should eat and when it shouldnt. So what is stopping it from eating all of the food it can? The answer is a technique called prioritization. By prioritizing objectives, the animal can do what is most important at the time first, then doing the next most important thing. We can incorporate this into our AI in many different ways. Given that our game is a real-time strategy game like Age of Empires or Empire Earth, we can see how our gatherer-builders no longer gather until their "source of resources" is empty. Instead, they gather only when they need the resources and use the rest of the time to build vital structures.

Our second alternative is a business school classic called risk-benefit analysis. In this technique, the risk of a situation is compared to the possible benefits or perceived value. Risk-benefit analysis can be used in the previous example with similar effects. The further away a gold mine is from a guard tower, the more likely it is that the gatherer will be killed. In short, the further from defense, the higher the risk, and the less likely the gatherer will venture out to get that gold. To give another example, recall the Need For Speed police AI. The more police cars the player has damaged or totaled, the further back the other police cars will follow, and the less likely they will be to try to fish-tail the players car.

Flawed AI is an intelligent, objective-based approach to making AI more realistic and the gaming experience more enjoyable. Weve looked at just two alternatives to throwing our perfectly good Smart AI out the window. There are many more ways of achieving the same effect, but for now, Ill leave it at just these two. I might post about some more in a future article. Until then, enjoy building your worlds. If you have any games youre proud of, dont hesitate to post a link in the comments (Yes, comments are back up ;p ) or send them my way. blake.oxx@gmail.com (remove the dot)

Wednesday, July 02, 2008

HopeLine Promotion

Im subscribed to The PostSecret Project. PostSecret is like a catalog of human emotion. Every day, random people send in anonymous post cards with their most closely guarded secrets on one side of them, and every Sunday, a couple are selected to be posted on the PostSecret site. It is a truely great concept and I believe its one of the best credits to humanity. A couple of my friends and I have sent in some secrets of our own. Its a great feeling to know youre being listened to without judgement.

Recently, PostSecret asked those of us with the ability to promote HopeLine to do so if possible. Im doing my part. All of my websites now feature the above video on the front page. Its my way of saying thanks. Thank you HopeLine, thank you Post Secret, thank you for all that you do.

Monday, June 30, 2008

Old Sites Going Up

To make the Projects page of BlakeNet more useful, I decided to set up some of my old sites from the source code archives available from the Sites page to make fully functional recreations of the good ole sites featured on the page. I didnt think the screenshots and descriptions were cutting it. :)

Just a little tip to anyone bored enough to log in to the admin sections of the old sites and try to screw around with the databases or files, give up now. All of the database and file alteration functionality has been commented out. However, dont let that stop you from checking out the admin pages. They can all be accessed with the username 'admin' and password 'scinfaxi'.

Tuesday, June 24, 2008

On-Demand Graphing

Something Ive been wanting to do ever since I learned how to use the imaging features of PHP is create a script that can take in some data and generate a graph on-the-fly. Useful? Definately. Invisionary? Probably not. In fact, Ive seen tons of PHP and CGI scripts that are used to generate graphs for things such as poll results. However, Ive yet to find a script that is open for public use or indy developer interfacing. Plus, most of them only do lame, boring graphs like bar graphs and pie charts. I wanted to introduce a script that can do them all, from bar graphs, to spider charts. In fact, the spider chart is the main focus of the project, and is the closest to being completed.

This script will appear in LeetBoard a lot, as well as an open-source model available on BlakeNet Source. No ETA yet, since Im still gathering up the types of charts I want to include in it.

Wednesday, June 18, 2008

BlakeNet Goes Live

In another step towards making it a reality, BlakeNet is finally open to visitors.

The first complaint came in the other day about the performance of the Contact Us form, citing that it took a full minute or two to send messages from it. Upon investigation, I found that it was Sendmail's fault. My first instinct was to find an alternative to using Sendmail. I had the idea to do what I traditionally do with contact forms; Make them go to a SQL database, not mail them directly. Then I would set up a crontab that would mail me a digest of the SQL data every day or so. This would eliminate the wait to submit the forms, and would also make it easier for me to check and harder for me to avoid keeping up with (Yes, Im a very lazy person, if you havent noticed. As the quote goes, "all good programmers are lazy").

Today, I decided to take a whack at fixing Sendmail instead of setting up an alternative. My /etc/log/mail.log file had some interesting information. "My unqualified host name unknown" and "Unable to qualify my own domain name", to be exact. So, I guessed this was something to be fixed in my /etc/hosts file. I pulled it up and, after a couple tries, finally got everything running smoothly with no more complaining Sendmail. The line I edited now looks like this: localhost localhost.localdomain blakeserver

The first bit is the loopback IP address, followed by the localhost host name, then the localhost.localdomain alias, and finally my servers hostname (If you dont know it, you can find it with the hostname command). Everything should work on your own machine, except the hostname. Hopefully, this can help someone out there with similar problems.

Wednesday, June 04, 2008

Starting Fresh: Day 4

I reformatted and reinstalled Windows this morning. It surprisingly only took an hour or so. After that, I spent the rest of the day installing missing drivers, customizing settings, and installing and configuring security programs. I have to say it wasnt as bad as I expected it to be. I was expecting to have to spend an entire week getting everything back to my liking, when it actually only took somewhere around half the day. I give credit to nLite for allowing me to set up the installation ahead of time. Tomorrow, I will start reinstalling games and other programs I like to use.

This post concludes the Starting Fresh project. Good luck to those of you thinking of doing the same!

Tuesday, June 03, 2008

Starting Fresh: Day 3

I took the last couple days to take a virtual inventory. I wrote down the programs I wanted to reinstall after the reformat along with any registration keys if they needed them. I also wrote down locations of files I wanted to put back on the clean machine from my backup, like pictures and music. This list makes it a whole lot easier to put everything back how you want it after reformatting. Remember that everything goes bye-bye when you reformat your hard drive.

If I can finally muster the nerve to go ahead and reformat, Ill start it tonight and reinstall Windows in the morning.

Friday, May 30, 2008

Starting Fresh: Day 2

After two days of wrestling with Windows installation errors and unbootable CDs, I finally got the formula down for creating a Windows XP Home Edition bootable setup disk. Like the information I found online suggested, all you need to do it is an I386 directory, which is usually always found on Dell computers. Note that the I386 folder MUST BE THE ONE AT C:\I386. There is another similar folder somewhere in the WINDOWS folder, but that one doesnt have the same stuff the one in C: has. So, here are the steps I took to make the CD.

At this point, you might want to stop here and back up all of your files, including the OS files, if you havent already. If you dont back up now and decide to back up later on, youll probably be including all the extra programs and data were about to add. If you dont plan on backing up or want to just wait it out, read on.

  1. Print out a report from Device Manager found in the Control Panel. This will help you identify missing drivers after you reinstall. This isnt required, but if youve got some extra hardware installed like graphics or sound cards, it can help out.
  2. If you dont know your CD key, download Magical Jelly Bean to find the one used when your current installation was first installed. Write it down or print it out. I also printed out the other registration keys the program found, just to make it easier on me when I reinstall everything.
  3. Create a folder in C: named XPSETUP. Now, put a copy of C:\I386 in XPSETUP. Make sure you copy the entire folder, and not just the files inside the folder, so that you now have an I386 folder inside C:\XPSETUP. I386 holds all the installation files needed by the Windows installer and is usually pretty big, so expect to wait a couple minutes while it copies.
  4. Open Notepad and type "Windows " (including the space afterwards!), then hit Enter to add a new line. Go up to File > Save As, and type "C:\XPSETUP\WIN51" (including the quotes!) in the file name box. Click save and close Notepad. Navigate back to C:\XPSETUP and make a copy of the new WIN51 file called WIN51IC.
  5. Now the tricky part begins! If you know what Service Pack came pre-installed with your computer, youll be fine. Otherwise, youll probably have to shoot-and-miss to get the disk to work correctly. If your computer didnt come with any SPs pre-installed, skip to the next step. If SP1 came with it, make a copy of WIN51IC named WIN51IC.sp1. If SP2 came with it, make two copies of WIN51IC named WIN51IC.sp1 and WIN51IC.sp2.
  6. At this point, other web sites would suggest you slipstream the newer service packs. I decided not to after getting a headache while trying to get the disk to work with the slipstream. You can look elsewhere if you want help slipstreaming, but dont ask me for it. I couldnt figure out any easy and fool-proof way of doing it.
  7. Download nLite and use it to customize the installation. This is optional, but if you dont customize, at least use it to create the ISO.
  8. Use your favorite CD burning program to open the ISO created in the previous step and burn its contents to a fresh CD. Congrats! If all went well, you are now the proud owner of a Windows XP Home Edition bootable setup and installation CD.

The next task is where the real fun begins. Reformatting and reinstalling everything. Im not looking forward to it, because Im so lazy. But, Ive come this far, so might as well continue!

Wednesday, May 28, 2008

Starting Fresh: Day 1

The first official step towards this, in my opinion, huge undertaking is backing up the entire hard drive onto my brand-spanking-new 1 terabyte Western Digital My Book. The backup itself only took around an hour and a half to copy all 83 gigs of data. I simply booted up to my Ubuntu LiveCD, mounted the backup drive, and used the cp bash command to copy everything over. Afterwards, I ran the diff command to compare the backup and original just to make sure everything was copied correctly. There was only one mistake I had to correct manually, which was a file missing from the backup that was originally named with a tilde (~). Apparently, that character messes up copying or something.

The reason I copied everything from Ubuntu and didnt just use the Windows Backup utility is because I wanted EVERYTHING, not just my data, so that if I mess anything up, I can just clear off the hard drive, copy everything back onto it, and pretend the whole thing never happened. This admittedly costs a lot more space, but if youre like me, you dont want to have to reinstall and reconfigure everything if you screw up, with the only consolation of your backup being you didnt lose any of your personal documents.

The next step is to create a Windows XP Home Edition installation CD. I found some scattered guides on the internet that touch on how to do it, but Im thinking its going to be shoot-and-miss for a while. Ill detail the process I took on my next post.

Tuesday, May 27, 2008

Reformatting/Reinstalling My Desktop

Ive been wanting to do it for a while, but today I finally bought a 1 terabyte external hard drive. My first act with it is to back up everything from my desktop computer. Its a fairly old machine, running Windows XP Home Edition. Over its lifetime, Ive seen its speed decline drastically. Now, those of you who keep up with my work or know me personally know I am not a noob with computers. Having said that, Ive tried all the tricks up both my sleeves to get it running faster than the painful speed its currently at. Nothing has worked. So, Ive decided its about time to reformat, reinstall, and start fresh. Its a big step, but hey, Ive got a whole Summer of boredom I need to kill. I might as well do something productive.

The fun begins with my lack of Windows XP installation CDs and keys. Luckily, I know how to retrieve keys of already installed distros with the help of Magical Jelly Bean. The CDs, however, are semi-new territory to me. Ive been informed that theres a way to create setup cds from the otherwise meaningless i386 folder found on a majority of computers.

Ill be posting my progress as I go, and explaining what Ive done each step of the way, as Im sure there is some poor, lost soul out there in the same predicament Im in. All progressive posts for this project will be titled "Starting Fresh" for ease of access.

Tuesday, May 06, 2008

How To Change The Windows Explorer Start Location

NOTE: For some odd reason, this does not work on some systems. Im trying to figure out why that is, but until then, this guide should only be brain food and shoulnt be expected to work. Sorry!

After Googling around and not coming up with any indications as to how to change the location Windows Explorer automatically opens when you right-click the Start button and choose Explore or Open, I decided to do some digging through the registry and found out how to change both of them.

If you are a hands-on person who isnt afraid to mess around with your registry and possibly screw up your computer, open up the registry editor (type regedit into the run box and start it), then navigate to the key HKEY_CLASSES_ROOT\Folder\shell. In this key are two subkeys named explore and open. Select the key you want to change and then select the command subkey. In this key, you will find a (Default) value. Edit it to whatever command-line command you want Windows to run when you click the option in the right-click menu.

While this allows you to use any program instead of just Explorer, its still recommended that you keep using it (at least for one of the options) for support reasons and old times sake. If you need a list of options supported by Explorer, you can find them here or in the incomplete Microsoft list. If you are like me, you just wanted to change the location it starts up in and have no interest in all the other options. In that case, you can just copy the following:

%SystemRoot%\Explorer.exe /separate,/e,C:\Program Files

Replace the bold location with the location youd like Explorer to start in. This registry hack is based on Windows Vista, but Im fairly sure itll work in XP as well. In case you dont like the change, the default value for Explore is %SystemRoot%\Explorer.exe /separate,/e,/idlist,%I,%L and Open is %SystemRoot%\Explorer.exe /separate,/idlist,%I,%L.

Sunday, March 30, 2008

Imaginary Files

Today, I was doing some work with GIMP on my Windows Vista laptop. When I went to save an image, I noticed a folder in the Program Files directory named HTTP-Tunnel. I guess this was a leftover folder from when I uninstalled the program of the same name earlier this month. So, seeing how the GIMP file browser isnt capable of deleting files and folders, I opened up Explorer and navigated in the folders direction.

To my surprise, the folder wasnt there! To confirm it wasnt an issue with GIMP, I started Notepad and tried to navigate to C:\Program Files\HTTP-Tunnel, only to have Notepad complain that the path didnt exist. Next, I opened a command prompt and ran the dir command on Program Files, which also claimed that the folder didnt exist. My next thought was that HTTP-Tunnel had been mistakenly classified as an imfamous super-hidden file, a junction, or something of the same behavior. To make sure, I ran dir again with the A flag ("dir /A" displays all the special file system objects that are usually skipped over in order to keep average users in the dark about special OS-related functions and the likes). This also didnt bring up any trace of the directory.

My final thought was that GIMP was using some sort of cached display to spare the program from having to repopulate the directory view so many times. This was easily proven wrong when I browsed to HTTP-Tunnel in the GIMP explorer and found it contained a text file. I searched my C: drive for the uniquely named log file, and came back with one result. Apparently, there was a folder in C:\Users\Blake\AppData\Local\VirtualStore\Program Files named HTTP-Tunnel, which contained the file in question. I deleted the folder, and lo and behold, the folder vanished from GIMP.

Im not sure yet why, but Vista seems to sometimes save copies of files, folders, or entire directory trees in C:\Users\%USERNAME%\AppData\Local\VirtualStore. Ill have to look further into it, but my guess is this is where files that are accessed a lot are temporarily stored to be found easier by programs, or where data is moved on special occassions when you delete things from the Recycle Bin.

Saturday, February 23, 2008

The Hesitant Scrapper

I have an old machine that is far too outdated to become an efficiet bulldog system, so I decided to rip the hard drive out, disassemble it, and tie some string around the three metal discs inside it to make some pimping bling. This machine is the same one that you might recall reading about having its networking card ripped out for my server project. Having served its purpose, its destined for the curb. But, I read something today that made me wonder if I made the wrong choice in badgering the hard drive. I completely forgot about the possibility of using it as a back-up system for one of my other computers. So, Ive decided to attempt to put it back together. It will surely lead to either frustration or, if I do make it suitable for plugging in again, decapitation. Still its a fun little task to keep boredom at bay. I also have an even older machine that is so old it boasts an LCD numeric counter, reset, turbo, lock, power button, and cigarette lighter on the front of it. Ill be pulling resources out of it next.

By the way, before you suggest it, yes, I already checked the first machine for salvagable memory. Nothing special in that department, though I was intrigued to find the mother board had three memory slots where my newer machine Im using as my server only has two.

Saturday, January 26, 2008


Ive created a second blog dedicated to my rantings. If you want a good laugh, or a dose of reality how I see it, check out ROOTrants. Enjoy!

Monday, January 21, 2008

New BlakeNet Developments

Today I finally got around to setting up a hostname for BlakeNet, so no more having to memorize the IP address or worry about it when it changes! The new address is http://blakenet.no-ip.org.

I also recently reconfigured LeetBoard and set a full distro up on BlakeNet for all intensive purposes. Some things broke during the transfer, but for the most part its a working project again. I would give an address for it, but then Im sure spam would start flying at it from every angle, and lead to a gunked up server. I will release an address once I have it running stable again.

Also, welcome to the team a new Netdev. Nathan (Squirrels) will be goofing around with the box just to try and learn something new, or fend off boredom. He may also be helping me further develop the current and future projects featured on BlakeNet.