Saturday, September 30, 2006

Day 16 - QuickKill

Here's an app thats been requested by more then just a few.

The application will quickly kill all tasks not listed in a configuration file. This can be used for a variety of reasons: saving battery life on laptops, easy performance increase, "gaming mode", etc... Bottom line is, it'll get rid of everything you don't need very quickly.

Some may argue that you should use a program such as HijackThis to stop these things from starting in the first place. While that is the solution for things that you NEVER want running, this application is more specific to killing off the things you won't need right now. Things like sql server, virus scan, bluetooth, and various other background tasks that you won't need for your "gaming mode".

I've preconfigured the file with all of the critical processes that were on my machine, so it includes all of the obvious WinXP necessities.

It's a console application - no gui, just nice and clean. This was to make it batch scriptable with command line args, and nice and simple to use.

The application WILL ask for your confirmation before it kills the tasks. You're presented with a list of what will be killed, and asked to press 'Y'. For batch scripting, a "-q" parameter will supress this warning and just autokill. Run the program with a "-?" for the other option (exemption file override).


Digg!
  Download the app here
  Download the source here

May the source be with you

Day 15 - Task Scheduler

You may ask yourself, doesn't windows have a task scheduler built in? Yep, it sure does. But this one is a bit more robust - and open source. Besides, it was written by a Software Jedi. You don't think MS has a Software Jedi working on their task scheduler, now do you?

It allows you to define tasks and schedules for those tasks. The schedule can be an interval in seconds, or a time of day. Day of week is supported with either. It also captures and logs output and error out, writing them to a timestamped file should you choose.

Installation instructions are included, as is a sample XML configuration file.

Download the app here
Download the source here

Enjoy, and may the source be with you.

Thursday, September 28, 2006

Day 14 - Missile Command

Remember that old Atari game Missile Command? Surely some of you grew up in the 80's. Google it if you haven't heard of it. There are Flash versions of it out there.

The application I created today randomly acts like you are playing missle command. Bombs and missiles don't drop from the sky, but when clicking ANYTHING you have a 1 in 8 chance of launching a missile. The missile goes to where you clicked, and explodes old school style (read: crappy graphics). It's non-intrusize enough to run all the time - no sound and not too many missle launches.

As usualy, the application resides in the systray. It's a big red target.

Download the app here
Download the source here

Day 13 - Connection Monitor

This application allows you to monitor 3 types of connections - ICMP (ping), socket connection, and HTTP. It has a fairly intuitive interface, and I invite you to try it!.

Upon launching, like many of my apps, it'll disappear into the systray. Options are available there for adding connections to monitor, and changing the retry rate.

Each connection also independently has a failure allowance. If it exceeds this failure allowance it will balloon onto your desktop, warning you of it's failure. Hopefully this application can help some web or system admins out the without the budget for expensive monitoring tools.

Download the app here
Download the source here

Cheers!

Tuesday, September 26, 2006

Day 12 - Polar Bear Tracking

On Day 0 I mocked an email asking for an app to track polar bears in Norway using Google Maps. It's now their lucky day. They can watch these polar bears day and night on their Google Map while eating popcorn.

Sure enough, I really tracked down these polar bears. I tied GPS and radio collars around their heads. Then I setup a base camp retransmitter station in southern Norway and lo and behold, the polar bears are tracked. OK, so maybe I just web scraped a World Wildlife Foundation page. But that's sooooo not exciting.

Well, I apologize for my lack of "killer app" tonight. Let's call it an off night. It won't happen again. I also apologize for my PHP skills as this was the first time I've ever looked at, let alone written, PHP. But this goes to show, the Software Jedi is not constrained to certain technologies or platforms.

See the app here
Download the source here

Day 11 - Graffiti Wallpaper

*** memory leak fixed in server code, I wasn't properly disposing of streams ***

Connect to remote machines running the server portion of this app (like my machine - see below) and scribble on the wallpaper. What a cool social experiment! Thanks to HAK.5's Darren for the great idea (again, Jedi Console was his too).

This application is 2 parts once again, like the broadcaster. Server and client.

The server runs on a machine and allows clients to connect to it and graffiti up the desktop wallpaper. Upon launching it will ask for a port to run on. Then you hit start. You can close the form, double clicking the green W in the systray brings it back.

The client prompts for a server and port to connect to, then allows you to draw on the server machines desktop for 2 minutes. It gives a warning after 60 seconds. The drawing is implemented very crudely, but built from scratch. After hitting the "Save as remote wallpaper", your be prompted with a captcha text image. This is so no one can hack the client to programmatically repeatedly send nasty images. :)

Of course, I'm running the server portion wide open for the world to scribble on my desktop. After launching the client use the server "softwarejedi.servepics.com" and port "8910"! Internet Explorer users with .NET 2.0 SHOULD be able to just click here without downloading anything for a direct connection into my desktop. This seems to have mixed results though, so tell me what it does for you (IE USERS ONLY - SORRY).

Download the app here
Download the source here

What great source code for reference! The wallpaper and remoting stuff I did previously with the wallpaper and broadcast apps, but throwing in the captcha? Pure genius

I also demonstrate a ClickOnce deployment (For IE ONLY) with a passed in querystring. I can't get into the details here, but maybe one day I can! Just google it if you're interested!

Sunday, September 24, 2006

Day 10 - Jedi Concentrate

Todays app mimics a feature that is found in OS X called Exposé. The mac users in the chat room showed me a screen shot and I loved it. Very cool.

When "concentrate" mode is activated, all windows except for the current active window are smoothly faded out. The purpose is to dim everything on all of your monitors when you need to get to work.

The application resides in the systry and "concentrate" mode can be toggled by using any of the following hotkeys: Ctrl-/, F12, Win-J. Customizable you ask? Sure are - just download the code and modify it. ;)

Digg!Download the app here
Download the source here

Day 9 - Jedi Visual Studio IRC Add-in

Tonights application allows you to put IRC chat right into Visual Studio. The add-in behaves like any other dockable window. Personally I prefer it docked left and pinned open.

I had never written anything for IRC, nor had I ever written a Visual Studio plugin so it was another late night.

To "install", copy the contents of the ZIP file to your "My Documents/Visual Studio 2005/Addins" folder (create if it doesn't exist). After opening Visual Studio, you should have an options screen (Tools/Options/Jedi VS IRC), and a way to launch the IRC window under your Tools menu.

Download the app here
Download the source here

Private messages ARE supported!

Issues:
- Only one channel is allowed, and can be set under options
- Only "/msg" and "/nick" are supported
- Colors can't be sent or received. They are received as control characters in the chat. Rub3X should appreciate this.

Saturday, September 23, 2006

Day 8 - Jedi Console

It's a console window, Quake style. Ctrl-` (Crtl-~) hides and un hides it. It attempts to behave like DOS. Given more time I'd try to tap right into a console window, but it was tough.

It does command history, and has adjustable opacity using the command "jediopacity #" where # is a value between 35 and 100.

Download the app here
Download the source here

This is the first with a long issues list, because it wasn't easy to do at all... But I'll use it at work for sure. Consider it a prototype, like all the apps I write!

Issues:
Occasional odd behavior overall
Ctrl-C/Ctrl-Break aren't passed through, so no breaking a program
Environment vars should be supported
Ability to flush the buffer to clear memory

Modded version (created by dharh):
clr screen now works
ls may use cygwin ls if it exists on the system
tabs are ignored
jediapocity gives usage message when not invoked correctly
jediapocity wont give command not found even when it works
I changed the front from bold to regular

Friday, September 22, 2006

Day 7 - Google Wallpaper

Whew, the refreshing feeling of writing a killer app when there were really no good ideas floating in the chat room. It was almost 9:30 when someone suggested a wallpaper switcher. This little twist popped into my head and it was all downhill from there.

It took me about 2.5 hours to write, most time chatting once again...

The application allows you to specify any number of keywords (ex. Snow, Disney, Space, etc...), an update interval, and whether or not to use safe search. I made safe search an option to sort out the obvious different intentions of a college dorm user and an office professional.

The application will then randomly pick a keyword, search google images (high quality only), randomly choose an image from the first page of results, and set it as your desktop. It'll then wait for the interval you set and repeat the process.

woot!

Download the app
Download the source

Before someone points out that I didn't use the google API, last I checked there were some limitations on # of searches. I didn't have the time to research and figure out if that changed. However, I left the searching logic in a seperate class so someone could easily just reimplement it if they'd like. I use webscraping, so obviously it could be an issue in the future.

May the source be with you.
Digg!

Thursday, September 21, 2006

Day 6 - RDP Manager

Digg!

This is a configurable menu that sits in the systray and opens remote desktop windows to other machines. It's configurable up to n levels deep using the supplied example XML file example. The XML file must reside in the same directory, and the name must not change. You should be able to figure out the schema, and for details on the options just google "RDP File Format".

The real WOW factor is that it will remember a password that you give it. This means immediate remote desktop connection without entering a password everytime!

This feature is only good on a domain, and the user/password information is stored at the root level, thus you must use the same user/password for each server. WHY? Because it's what's useful to me, and surely many others. If you need more, modify the source. It's very simple source code.

If you dont enter a password or if the password is incorrect, have no fear, it'll prompt you like normal.

Download the app here
Download the source here

It will prompt for your password upon launch. This is the password you'd like it to use when connecting to the servers listed in the file. The username it uses is contained in the file, along with the domain.

I wish I had time to make it save the password hash, and have a configure form, but alas... I'm a little short on time.

** Special thanks to CrewDawg and the source that he found for calling Encrypt

Wednesday, September 20, 2006

Day 5 - RSS Alerter

**** Massive multiple browser tabs bug fixed. My apologies, it won't happen again.

Enjoy seeing RSS feeds notified to your systray via balloons. Use this for daily news feeds when you don't want them in a reader, you just want to see them in realtime. If you miss them, you miss them. Like a stock ticker.

Download the app here
Download the source here

The application resides in your systray. It's a little Jedi icon! Right click and choose feeds to maintain the feeds you subscribe to. Keep in mind, this is practically useless for "cold" feeds. It's really only good for the "hot" feeds. Don't complain to me that you missed you Mother's pictures of Europe because you were away from your PC for 20 seconds when she blogged.

Alive and strong. Join in tomorrow to influence my next app decision. This was decided LAST minute.

Monday, September 18, 2006

Day 4 - Base64 File Encoding

Tonight I created a quick app. It takes a file and Base64 encodes it. What good is this? Ask Andrew, he suggested it via an email to ideas at anappaday dot com. Kudos Andrew!

Base64 encoding puts a binary file into a format that is plaintext. This allows you to embed the file in XML or HTML. Specifically this app was design for putting image data in data:uri format for html. See a description of this technique on Wikipedia. This technique has drawbacks, and it's best used only in certain cases. Don't misuse! I'm like the gun manufacturer, don't blame me.

Download the app here
Download the source here

Note that Internet Explorer is not compatible with data:uri information. Does that really suprise you?

Sunday, September 17, 2006

Day 3 - Moo Prank

This was a request sent in by someone (gotten too many to remember) and I had to do it.

Download the application here
Download the source here

There are 2 executables:

AnAppADay.MooPrank.Moo.exe :
 double click to make a moo sound
 run at the command line with 2 args: min and max. This will pick a random number of SECONDS between min and max, then make a moo. It will repeat FOREVER. Kill using task manager.

AnAppADay.MooPrank.SendMoo.exe :
 Windows form to allow sending a moo to a remote PC. This is only useful for a windows domain where you are an admin on the target PC.
 The first button will copy the files to the remote PC (root of C:).
 The second button will launch the process on the remote machine. Will use c:\ as default unless network location is specified. DLL file must be alongside the MOO program when using network. .NET CAS policy may cause issues with this running (can't fully test here).
 Min and max do the same as above remotely, FOR BEST PRANK RESULTS MAKE THEM 300 AND 3600 RESPECTIVELY. This will do a moo every 5-60 mins. You will not be able to stop the remote process without walking to the PC and killing the task!

**special thanks to The Code Project as I used one of their source projects to make the windows volume crank all the way up.

Had a good time writing this. Learned a little WMI. See ya tomorrow.

Saturday, September 16, 2006

Day 2 - Time Management

Time Management allows you to keep track of what you are doing on your PC. I plan on using it to help me fill out my timesheet at the office. The application resides in the systray, and writes to a CSV file each time you switch applications, or the title bar of the current app changes.

File format:
[date],[time],[process name],[window title],[duration used]

There is no built in reporting capability, but a simple Excel pivot table produces a spectacular table and chart. I'd assume Open Office has a similar feature.

Download the application
Download the source

Day 1 - Screen Broadcaster

Whew. Hope everynight isn't like this. I got off to a false start because I tinkered with getting a web cam working for too long. So it was close to 9 when I got started. I just finalized the application, it's a screen broadcaster.

The other holdup was the discovery that my new internet provider uses NAT within the DSL modem, so I had to port forward twice. Once from the DSL modem to the router, then again from the router to my PC. It originally looked like my provider was using NAT on their side, but thanks Rub3X for challenging me on that - a tracert revealed it it was the dsl modem. I just switched providers and installed Win Vista, so I hadn't gotten around to even testing this yet...

The app is client/server based and transfers JPEG compressed files every 5 seconds using a .NET 2.0 remoting HTTP channel. Hopefully people out there can find a use for this like monitoring servers, other people, etc... Whatever...

Download the application
Download the source

An installer was not provided today as I received some negative feedback on it. Good point, these are simple apps so lets keep them lightweight. To use just unzip into a directory and run either the server or the client.

For the server you just enter a port to listen on, then it'll just wait.

For the client you enter the IP or DNS name of the server, and the port, then it'll start receiving shots of the screen.

ENJOY!

Wednesday, September 13, 2006

Day 0 - Torian Magnifier

This is a little app that I wrote for some friends at work who have vision problems. It was completely inspired by Chris and Tom, and written by me over the course of THREE nights. Again, this is NOT a 1 night application. However, it was in proof of concept after one night. Many features were built the following nights.

The application turns your mouse cursor into a magnifying glass. It's resizable, transparency adjustable, and zoomable. It kicks M$'s magnifier to the curb, spits on it, and takes it's lunch money. It's labeled "Torian" as that's the label I use when developing privately (kids names combined).

I highly suggest you virus scan these, even though I'm the one that wrote them. Why? Because that's just an intelligent thing to do!
Installer located here
Source located here
*Firefox users - right-click, save target as...

Instructions (don't expect this everyday durnit):

Hotkeys
ExitShift + Esc
ZoomCtrl + Mousewheel
ResizeShift + Mousewheel
TransparencyCtrl + Shift + Mousewheel
Toggle VisibleScroll Lock


Options (in systray menu)
Bring to front rateRate the magnifier is brought to front in ms. Higher number for better performance (minimal)
Bring to front thread onToggle the existence of the bring to front thread. With this thread turned off, context menus will probably jump on top of the magnifier
Follow typingIf turned on, the magnifier will follow as you type in SOME apps. Works in console windows, issues in IE
Refresh on mouse moveEverytime the mouse moves, the magnifier is refreshed. Makes smoother, but performance degrades
Refesh on mouse move rateNumber of pixels the mouse must move to trigger a refresh
Refresh over invalidateRefresh the graphics instead of invalidating. Turn off for major performance improvements under cpu load (but makes choppy)
Refresh rateGeneral refresh rate
Refresh thread onGeneral refresh on. If off, animations below the mouse won't be seen (tooltips, video, etc...)
Zoom amountDefault zoom, changed with hotkey easier!


Known Issues (expect a lot of these everyday durnit!):
- Hotkeys interfere with IE/Firefox, don't use when IE/Firefox window is active.
- If active when screensaver or cpu lock is activated, it gets all frigged up.
- The apps own context menu can't be used while magnifier is on (doh!). Scroll-lock to turn off, then use.
- Probably more that I forgot

Yes, I'd love donations! Don't like me asking? Don't donate. You don't yell at the saxophone player in the city for putting a hat out, do you?! Use the button on the right!