This thread is for everyone who from time to time enjoys writing software on their own spare time. I hope this will get two or three answers, because when I was studying, there were a couple of students who enjoyed anime and were pretty good developers.

So, what software are you writing now? What's the idea behind software? What technologies are you using? What have you written lately or so far? Any
"wtf" moments yet? Maybe you joined an open source project?
---
I'll start, obviously.
I have this home server (NAS, torrent server, FTP, VPN and what not running FreeBSD). From time to time I SSH into it and start/stop random daemon, throttle CPU speed, check on my ZFS software raid health. Checking for status manually is just stupid in my opinion, server should report when there's a problem (easy way is to set up simple bash script and send an email from the server, I just don't check my email on regular basis). Typing some words (lenghty passphrase to authenticate) just to stop a random daemon or call sysctl to throttle CPU speed is inconvenient.
So I decided to write a client / server software. Client would be on my computer (server part of the software, ofcourse, running on the server) in systray throwing notification bubbles if ZFS would notice that one hard drive is giving it's last breath out. And CPU speed adjustment would be just a few clicks away or even in context menu from systray icon, so would be daemon start/stop control.
I've chosen Microsoft's .NET framework because, in my opinion, C# is the best language ever and framework has the best functions ever. Fanboy alert.

And it's not only for Windows, server.exe runs just fine with
Mono on FreeBSD (I just compile server.exe with Visual Studio on Windows, put it on server and then it's just "mono server.exe" and it works. With server.exe I kept it simple - each client connection gets it's own thread, thread recieves text commands (simple TcpClient), executes said commands and sends all the output from console back to client for client to parse. I wanted to make this software using
WCF, but WCF (together with WPF) are two things not supported by Mono.
For client - well, simple is boring, so as a little "twist" I decided to write every function (CPU, daemon control, etc) as an Add-In. Read
this tutorial on MSDN about creating extensible applications, implemented all that. And latest thing I've done - modified this structure for it to load GUI, for every Add-In I create a tab with "Load" button, when the button is clicked - actual add-in is loaded and it's GUI is showing in the tab, replacing Load button. Rough draft of the main window which handles add-ins:
using System;
using System.AddIn.Hosting;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using ImpHostViews;
namespace ImpHost
{
public partial class MainWindow : Window
{
private string ip;
private int host;
private Collection<AddInToken> addInTokens;
public MainWindow()
{
InitializeComponent();
//Assembly.LoadFrom("client.dll");
Helper.Settings.SetLogBox(txtLog);
string appPath = Environment.CurrentDirectory;
string[] warnings = AddInStore.Rebuild(appPath);
foreach(var warning in warnings)
Helper.Log(warning);
addInTokens = AddInStore.FindAddIns(typeof(WPFAddInHostView), appPath);
foreach(var addInToken in addInTokens)
{
var tab = new TabItem {Header = addInToken.Name};
Grid grd = new Grid();
var btn = new Button {Content = "Load", Width = 100d, Height = 30d};
btn.Click += EnableAddin;
grd.Children.Add(btn);
tab.Content = grd;
tabMain.Items.Add(tab);
Helper.Log(String.Format("'{0}' Add-In found.", tab.Header));
}
//TODO: dynamic Add-In finding and loading... hook up to Win32 API for folder changes?
}
private void EnableAddin(object sender, RoutedEventArgs routedEventArgs)
{
TabItem tab = tabMain.SelectedItem as TabItem;
string name = tab.Header.ToString();
var addInToken = addInTokens.Where(a => a.Name == name).FirstOrDefault();
if(addInToken == null)
{
Helper.Log(String.Format("Add-In '{0}' not found, TODO: rebuild add in cache, etc..", name));
(sender as Button).IsEnabled = false;
}
else
{
//TODO: load in another thread
tab.Content = addInToken.Activate<WPFAddInHostView>(AddInSecurityLevel.FullTrust);
//TODO: options menu and set ip, host there...
(tab.Content as WPFAddInHostView).Set("192.168.1.75", 1366);
(sender as Button).Click -= EnableAddin;
sender = null;
Helper.Log(String.Format("'{0}' Add-In loaded.", name));
}
}
}
}