August 12 2020 16:40:58
· Home
· CV
· Articles
· Links
· News Categories
· Media Gallery
· Search


Forgotten your password?
Request a new one here.
Out of the Country
PersonalI'm typing this from the airport. For the next 3 or so days, I'll be in Washington D.C.
The hunt is over...
PersonalI've accepted a job today at Sagentia as a software engineer. Unfortunately this meant turning down a dream job at Last.FM simply because it would have required a 1.5 hour commute each way. I'm confident that I'll be just as happy at Sagentia, though!
.NET and Mono
SoftwareIt's been a while since I messed around with .NET (probably over a year now). I figured I'd been messing around with Java quite a lot and should broaden my skills so I decided to make a quick application in C# to get my AudioScrobbler information and display it (nothing too complex). The result can be seen here. However, I'm a Mac user so I figured I'd try the application running under Mono on OSX. I hadn't really used Mono before but I assumed it wouldn't have a System.Windows.Forms implementation, I was wrong! As you can see here, it's not perfect by a long short, but it's definitely working!

This is fairly exciting because, in some ways, C# is a more powerful language than Java (it has delegates, properties and "out" variables). However, I think these could easily be abused to make bad OO software. With Java you are forced to design your software in a more OO style. E.g. if you need to return multiple results from a method, you'd make an encapsulating method. With C#, you could be lazy and use multiple "out" variables. I'm also not sure I like the ability to alias namespaces in C#, you could alias "System.Console" as "pinecone", then your code could be filled with "pinecone.WriteLine(...)", which could be pretty confusing. C# also does not force filenames and filesystem structures based on class names and namespaces, which could lead to messy organisation of code. Anyway, I'm still learning the ins and outs of .NET and for now it's quite exciting.
SlXHTTPd GZipping
SoftwareThe last thing remaining on my ToDo list (which had been there for a considerable amount of time as a low-priority task) was to implement GZipping in SlXHTTPd. Well, it only took about 9 minutes in total (a fairly easy task!)... This is quite an important task for me as during my time at Jagex, the company CTO refused to let me implement GZip even though it would have reduced their bandwidth usage by an incredibly large amount (his excuse was that it would be slow despite me putting together tests proving otherwise). Anyway, during my testing for SlXHTTPd it's pretty amusing to see that it managed to GZip a 1.48MiB directory listing down to 30KiB! I've added limits so that it won't try GZipping anything other than text and it won't GZip files over 5MiB in size (as this would take a long time to do).
SoftwareI've been busy adding more monitors to things (I can now tell how many SlX Scripts have been compiled, their compile times, what they compiled to etc). I randomly did a code line count and believe it or not.. it ended up as this:

slx@mini ~ $ find | grep .java | xargs wc -l
50000 total
slx@mini ~ $ find | grep .java | wc -l

Thats 50,000 lines EXACTLY in 183 files for all of my Java work over the past 3 months.
SlXHTTPd stats
SoftwareContinuing on the theme of monitoring... I decided to add monitoring/ stats to SlXHTTPd. After about 8 hours of solid coding here is what I have to show for it:

Hit stats, User-Agent stats, Referer stats and my favourite: Transfer stats. All are persistable (transfer stats only works with persistence enabled).
SoftwareAnother addition to SlXStorageMonitor is the FileMonitor which allows you to monitor the size of files. It can be seen Here. The front-end to SlXStorageMonitor currently looks like this.
More graph usage...
SoftwareUsing my new graphing tool, I decided to write a StorageMonitor that monitors file systems on whichever systems I run my programs on. It can be seen Here. I have added functions to the graph datasets that allow me to calculate the line of best fit (via linear regression) along with predicted X and Y intercepts. This allows me to calculate when the file system is going to run out of space. See the image for an example.


I figured out how to do anti-aliasing with Java2D (no, it's not rocket science, merely enabling an option). Anyway here is an image of a graph with anti-aliasing enabled. Smooth!
Java Graphing Tool
SoftwareSo I got a little bored and decided to write a graphing tool for Java. I put it to a relatively practical use in the form of a Memory Monitor for my Java programs.
Useless applications for search engines...
SoftwareSo, having no (good) use for a search engine I thought I'd slap it in my IRC bot so recent activity can be searched. Here's the result.
SearchEngine logging
SoftwareSo today I added the SearchEngine Logging. It's pretty useful and is implemented against an interface so the logger could potentially log to a file, printer... anything really! As you can see, the search times are pretty impressive! They get shorter and shorter the more the SearchEngine is used due to the way the JVM works. Anyway, I consider this to be as good as my implementation for Jagex and just as feature-complete (aside from some stupid score weighting I did at Jagex based on whether search terms appeared in close proximity to each other when they were not included in a phrase).
816,380 unique visits