For those who are interested in running Linux, especially on an older PC, Xubuntu just might fit the bill. Its installation files fit on one disc and include a versatile window manager to boot. However, the basic install isn’t really capable of being a LAMP and FTP-enabled web server. This tutorial explains how to get there.

  1. Get Xubuntu. Install it.
  2. Open a terminal window and enter
    sudo tasksel install lamp-server
  3. Provide the MySQL root password when prompted.
  4. Open a terminal window and enter
    sudo apt-get install phpmyadmin
  5. Then enter
    sudo apt-get install php5-gd
  6. Enter the following into the terminal:
    sudo /etc/init.d/apache2 restart
  7. Now, if you navigate to http://localhost/phpmyadmin, you should see the phpMyAdmin login screen
  8. Next, let’s install an FTP server. In a terminal, type in
    sudo apt-get install proftpd gproftpd
  9. Launch gproftpd. Add a user. Take out the following from /etc/proftpd/proftpd.conf:
    AllowOverwrite off
  10. Activate the FTP server.
  11. You’re done. Enjoy!

Questions, comments? Let me know.


This tutorial is written for anyone wishing to get started making maps in OpenArena or another ioquake3 game.

  1. Get GtkRadiant.
  2. Get openarena_gtkradiant.zip. Extract it into your GtkRadiant installation folder. If your OpenArena installation folder is not in C:\Program Files, open the GtkRadiant\games\oa.game file and change the enginepath_win32 variable to reflect the location of the installation folder.
  3. Get Q3Map2Build and extract it to C:\q3map2build.
  4. Launch C:\q3map2build\q3map2build.exe. Click Directory Options and set “Game executable” to your openarena.exe file, q3map2.exe location to q3map2.exe in your GtkRadiant folder, and bspc.exe location to bspc.exe in your GtkRadiant folder. Set BSP, VIS, LIGHT, and BSPC to Normal. Uncheck “Pause” under each item. Leave q3map2build open.
  5. Launch GtkRadiant. When it prompts for a game, select OpenArena and uncheck “Show Global Preferences.”
  6. Press P to bring up Preferences, go to Interface->Layout, and select the third layout option. Restart GtkRadiant afterwards. This will give you the old-fashioned Q3Radiant layout that is similar to major 3D applications.
  7. In one of the non-camera viewports, click and drag out to form a rectangle. If the resulting prism is too short, drag up in another viewport to bring it up to the desired size. Press T to bring up the Texture Browser, double click on “base,” and open “base_wall.” Click on “concrete” and press T to close the browser. Then click the Hollow button (it’s the one before the button with the white cube, it looks like a square with a perforated square outline inside).
  8. In the middle of this new hollow room, right click on the map and select “light.” Enter 850 for intensity, press Enter, and press Esc.
  9. Above the floor of the room, right-click and select “info”->”info_player_start.” If the item isn’t in the room and above the floor, click and drag it to where it needs to be. Press Esc when done.
  10. Repeat the above procedure and put another info_player_start entity in the map, away from the first one.
  11. Right-click on the map again and insert a “weapon”->”weapon_shotgun.” Press Esc when done.
  12. Save the map in your openarena\baseoa\maps folder as test.map.
  13. Go back to q3map2build and click Refresh. “baseoa/maps/test.map” should show up in the “Maps” list. Select it and press Build. Check your maps folder afterwards. There should be four files (excluding test.bak): test.bsp, test.map, test.srf, and test.aas. If there aren’t four files, there’s a problem with the map and you should start over.
  14. Launch OpenArena. Pull down the console with the ~ key. Type /sv_pure 0 and press Enter. Then, type /map test and press Enter.
  15. You should spawn in a brightly lit room with a shotgun nearby. Pull down the console and type /addbot grunt 3, and press Enter. This should spawn a bot.
  16. That’s it! For more about GtkRadiant operation, see GTKRadiant Tutorials and Q3Radiant tutorials. Enjoy!

Here’s a video companion to the tutorial:


If you want to start developing GTK+ applications with MinGW, but don’t know where to begin, here’s a simple tutorial.

  1. Get MinGW and MSYS. Install MinGW first, followed by MSYS.
  2. When MSYS asks about continuing post-install, say yes. When it asks for MinGW, say yes, and provide the install directory.
  3. Get the GTK+ bundle. Extract it into your MinGW install directory.
  4. Get the tutorial files and extract them into your development directory. (1) (2)
  5. Launch MSYS, cd over to your development directory.
  6. Type “make” and press Enter.
  7. Presto! Launch the file either in MSYS (by typing “hello”) or in Windows Explorer.

Notes: (1) The -mwindows flag hides the console window. The console window will never show when the app is launched from MSYS, so always launch from Explorer if you’re planning on releasing your work. (2) The makefile is already set up for multiple sources, so all you have to do is add .c files, separated by spaces to the SRC directive, and the rest will take care of itself. Enjoy!


The official Squirrel site provides source, but not an executable. If you don’t have time to compile or just want to get started using Squirrel right away, I’ve compiled the Squirrel interpreter for Windows and added the official samples for a quick test, along with the official docs. Run it with “sq filename.nut” to interpret a file, “sq -c filename.nut” to pre-compile a script, or just “sq” for an interactive prompt. You can get the file here: squirrel2.2.zip. Enjoy!


Here’s a simple tutorial that will show you how to run a Mono GTK-Sharp application under both Mono and the .NET framework. The general documentation leaves some parts out, so here’s a concise guide to getting that first application ready. This tutorial was written using Mono 1.2.6 with Gtk# 1.0/2.10 and .NET framework 1.0/1.1/2.0.

  1. Get Mono, install with Gtk#
  2. Get gtkgac1.0_2.10.zip, unpack in the latest .NET directory with gacutil.exe (on my system, it’s C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322) so that there is a gtkgac folder in the directory
  3. Run gtk_gac1.0.bat and gtk_gac2.0.bat
  4. Run gacutil in the .NET directory (to avoid running the Mono gacutil) like so: gacutil /l gtk-sharp. Two assemblies should appear, 1.0 and 2.10
  5. Download hellogtk.cs into your development directory.
  6. Compile with the following command: mcs -pkg:gtk-sharp-2.0 hellogtk.cs
    • To remove the console window, add the -target:winexe flag
  7. Run with (.NET) hellogtk and with (Mono) mono hellogtk.exe
  8. You’re done!

shine3.jpg

I recently upgraded from my first-generation (2004) Motorola Razr to a brand spankin’ new LG CU720 Shine. The difference is phenomenal. While the Razr, when it first came out, certainly impressed those of us who thought cell phones couldn’t get any thinner, its form factor quickly took a backseat to some perennial flaws of the otherwise solid phone: slow processor, under-developed calculator, the occasional need for power cycling, and the propensity to end incoming calls just by opening the handset in a clumsy manner. With the Shine, these complaints are a thing of the past.

The first pleasant thing about the Shine is its exterior. It is as big as the Razr, if only a little thicker. It feels solid and heavy and its brushed-metal exterior makes it feel like a reliable, rather than replaceable, piece of technology. From the back, it looks like a digital camera, and from the front it looks like a space-age mirror when not in use. It has a definite, distinctive look that lacks any superfluities and works well with its features.

The second pleasant thing about the Shine is the phone itself. The processor is fast, the software is outstanding, and the camera takes great pictures. You no longer have to wait every time you press a button to do something: the Shine responds instantaneously. Among features missing in the Razr, the Shine incorporates a calculator with trigonometric functions, a tip calculator, notes, tasks, and a D-day counter. The OS itself is an achievement in usability: clear, anti-aliased fonts accompany a common-sense layout of dialogs and functions. Item locations may be a mystery at first, but once you start binding functions to the Options menu, you’ll feel right at home. And if, like me, you’re used to opening a menu on a phone and holding down the scroll buttons to get where you want to go, the Shine removes these tedious tasks from the experience: every menu item is accompanied by a number and all you have to do is quickly dial a number sequence. To get to a mathematical function in the calculator, what would be a tedious exercise in button mashing now takes three keystrokes.

The Shine isn’t without its own dubious caveats, however. Ringer profiles seem to be a thing of the past on the phone. To set the Shine on vibrate mode, you have to hold down the star key or use the volume controls. Even worse, the silent mode can only be set using the volume controls. A three-keystroke operation on the Razr is now a tedious exercise in button mashing on the Shine. Those used to setting custom ring tones will find themselves in a bit of a bind: ring tones (as well as any sound file you wish to set to play for anything: alarms, reminders, etc.) can’t exceed 300 KB. The inability to edit the Menu screen is also an unwelcome innovation. Indeed, apart from customizing the Options menu, much customization of the main screens is outright impossible.

Despite its minor setbacks, the Shine is one rewarding experience of a phone. Expansion buffs will be pleased to know that the microSD slot is located on the outside of the phone, enabling hot-swapping. However, you’ll have to get a microSD card (and a Shine-compatible USB cord) in order to transfer files to and from the phone (and only to and from the microSD card). Those concerned with speakerphone capability will be pleased to know that all the sound comes from one speaker on the phone, located at the front. Those of us who love taking pictures of ourselves will be pleased with both the self-mirror on the camera side of the phone and the accompanying LED flash. And those of us who loved the Razr’s keypad will be pleased to know that the keypad on the Shine is practically a replica.

It’s a great phone, with lots of great features. If you’re planning on an upgrade or you’re buying your very first phone, I highly recommend the LG Shine.


It’s a bit of a head-scratcher at first, seeing as the jQuery docs mysteriously disavow a postJSON possibility, let alone a function, but it’s definitely doable. So here’s the glorious code:

function postjson(url,data,bS,s,e){
$.ajax({type:”POST”,url:url,data:data,dataType:”json”,
beforeSend:bS,success:s,error:e});}

Use it like so:

postjson(“name.php”,”name=Bob”,
function(){$(“#name”).text(“…”);},
function(json){$(“#name”).text(json.name);},
function(){$(“#name”).text(“Error”);});

If name.php’s output looks like this…

{“name”:”Bob”}

…the above should, upon execution, change the ID “name” to contain the text “Bob.” Should the name variable come up missing, the ajax object will alert you accordingly.