Announcing: SuccessWhale version 2.0!

Ladies and Gentlemen of the Internet, I am pleased to announce that SuccessWhale version 2.0 has just been released and is now live on SuccessWhale.com.

SuccessWhale is a web-based client for Twitter and Facebook, written in PHP, JavaScript and MySQL. It offers a multi-column view that allows users to merge together information from all their connected accounts and view it at a glance from any web browser.

The big changes between version 1.1.2 and 2.0 are:

  • Facebook support
  • Support for multiple Twitter (and Facebook) accounts
  • As many columns as you want
  • Columns that combine multiple feeds
  • Lightboxed images from Twitpic and yFrog
  • New themes
  • Numerous bug fixes!

You can see a screenshot of it in action below:

SuccessWhale Screenshot

I would particularly like to thank Alex Hutter, Hugo Day, Erica Renton and Rg Enzon, whose help in finding bugs and suggesting new features has been instrumental in bringing SuccessWhale up to version 2.0 today.

SuccessWhale is an open source project, and the source code is licenced under the GPL v3.

Good Morning Shinsei

Good Morning Shinsei is an alarm app for Android that, rather than waking you up with a loud repeating sound, pulls together your own personalised greeting. By giving it the locations of some of the BBC’s XML-based news, weather and traffic services, Good Morning Shinsei will wake you up with a summary of that information. Your typical wake-up message might be:

Good morning Ian! It’s 6:15am on Tuesday the 7th of December. The weather today will be foreboding mist, with highs of 2 degrees and a wind speed of 14 miles per hour.
In the news today: Nick Clegg has been revealed to be a ficticious creation of the Guardian newspaper. It’s snowy, did you know? And, The dead are rising, everybody stay indoors.
Latest traffic updates: A338 Bournemouth – One lane closed northbound due to an earlier accident. A35 Bere Regis – Subject to roadblocks due to high zombie threat, find alternative routes.

Development Status

Good Morning Shinsei is not ready for general use. There’s no GUI or opportunity to configure the app once installed — everything is hard-coded.

If you’re comfortable building Android apps yourself, the source code is available as an Eclipse project on Github.

MusicMan

Work on MusicMan has been discontinued, as a friend of mine has a far more capable player in the form of Morrigan, and it is probably easier to port the features I would like to see than continue writing my own client from scratch.

MusicMan is a cross-platform music player and library organiser. It supports multiple music directories, each of which is recursively scanned to build your media library. Your library is synchronised with the actual files on disk each time you start MusicMan. It also supports mass ID3 retagging and dynamic searching (iTunes-style), where entering a search term reduces your current playlist to only the songs that match your search.

MusicMan is alpha software, and is under heavy development. Lots of things (e.g. playlists, Shoutcast) don’t work yet. However, please try it and submit any bugs you find or features you would like to see on my Mantis server. I’ve not yet put the source code anywhere that people can easily commit to, but if you feel like adding/fixing things in the meantime, send the source back to me and I’ll merge it in.

MusicMan requires Java 6, and runs on Windows, Mac and Linux. It is released under the terms of the GNU GPL v3. It uses the free MP3SPI, JLayer and JAudioTagger libraries.

Downloads

Screenshots

Full Width Facebook Lite

This Greasemonkey script was for the Lite version of Facebook that was in Beta in 2009. Sadly, Facebook Lite is no longer available, meaning that this script is now redundant. However, if you’d like a quick and easy example of how to use GreaseMonkey to hide certain divs (e.g. for removing ads), check out the source code.

“Full Width Facebook Lite” is possibly the world's shortest Greasemonkey script: it simply removes the right-hand bar in the new Facebook Lite, thus removing the ad and the big white space, allowing the actual content to span the full width. Useful for people who don't like ads, and people with small displays!

It requires Firefox with Greasemonkey, Safari with GreaseKit, or similar. GreaseKit compatibility (via the in-built implementation of GM_addStyle) was provided thanks to 'greut' in this thread: http://userscripts.org/topics/1912. The auto-updater is provided by this script: http://userscripts.org/scripts/show/20145.

There's no point putting this under the GPL as it's so simple, so it's public domain.

SuccessWhale

SuccessWhale is a web-based Twitter and Facebook client written in PHP, MySQL and JavaScript. It’s a multi-column client that will work just the same in any browser – even IE6. (And as far as I know it’s unique in that respect.) You can also use it while on networks that block twitter.com. :) It’s free to use by anyone, has no advertising, and source code is available.

Visit SuccessWhale.com to try it out!

Features

  • You can add as many Twitter and Facebook accounts as you like, displaying data from each, and you can choose which to post to every time.
  • SuccessWhale has a multi-column view, which can be scrolled through if you want more than will sensibly fit on your screen. Many columns are available for each Twitter and Facebook account you register, including ones that combine notifications from all your accounts.
  • SuccessWhale is integrated with my Twitter pastebin, Twixt. Enter a reply longer than 140 characters into the box in SuccessWhale, and it will be shortened automatically using Twixt. SuccessWhale also displays the contents of Twixt posts inline, and expands short URLs.
  • You can use SuccessWhale from places where twitter.com and facebook.com are blocked. To do so, you’ll have to log in from a computer that can see the sites first, then click “Accounts” in the top-right and create yourself a SuccessWhale account. You’ll then be able to log in using that password from any computer.
  • You can maintain a “banned phrases” list, which will hide tweets containing certain phrases — great if you’ve got too many friends that spam their Foursquare check-ins to Twitter.

Screenshot

Successwhale 2 Screenshot

Successwhale 2 Screenshot (click for full size)

Status

SuccessWhale is complete, released software, and currently stands at version 2.0.1. It’s used by around 50 people — including myself — as their main Twitter and Facebook client, and a number of sites around the internet have used the source code to integrate SuccessWhale into their own sites. As far as I’m aware it has no bugs, but if you find any or would like to request any new features for the next version, you can contact me on Twitter (I’m @tsuki_chama), or via my contact form. If you’d like to submit bug reports and feature requests directly into my GitHub issue tracker, please register an account and do so.

Licence and Source Code

SuccessWhale is licenced under the GNU GPL v3. You can get the source code from GitHub here.

This includes all the third-party code on which SuccessWhale depends, including twitteroauth, the Facebook PHP SDK, jQuery, the jQuery Form Plugin, the jQuery BlockUI Plugin, the jQuery Impromptu Plugin, the jQuery Force Redraw Plugin, the jQuery breakly Plugin, the jQuery “put cursor at end” Plugin, and the PHP Simple HTML DOM Parser. (Certain parts of the SuccessWhale download are thus licenced under the MIT licence, which is more permissive than and compatible with the GPL licence that SuccessWhale itself uses.)

Installation

To run your own copy of SuccessWhale, check out the source from GitHub and load it on to a web server that supports PHP (v4 and above) and, optionally, MySQL (any version). Follow the instructions in INSTALL.TXT, which will include editing config.php to enter your own settings.

Then just navigate to index.php, follow the instructions on screen, and you should be up and running!

Development/Test Version

Version 2.1 of SuccessWhale will bring support for more services such as LinkedIn and Google+, along with addressing a number of more minor feature requests by users. Development is underway. You can try it out on the test server, and get the bleeding edge source if you want to play with it.

The test server will break frequently without warning, var_dump() stuff you don’t want the world to see, and may do weird unexpected things. If you ask for help or report a bug with it, I will probably be sarcastic at you.

Thanks to…

Premier League Fantasy Football Team Picker

For the 2011-2012 season, the Premier League Fantasy Football website has been changed to allow no access to the game stats without being logged in. This team picker will be offline until I find a work-around for this. Apologies for the inconvenience.

This script picks the optimum team for the Premier League’s Fantasy Football game, combining player stats with online injury lists. Useful so that people like me, who know nothing about football, have a chance! Note that it is only as good as the data it has access to, so it’s probably a bad idea to change your team according to its suggestions within the first few weeks of the season – wait until it has more data before trusting it.

It’s hosted here, and should run automatically every 24 hours. You can see the team it’s currently picking here:

Current Optimum Team

 

 

You can also get the source code from GitHub (provided under the terms of the GPL v3 licence)

Looking for my team picker for the Daily Telegraph game instead? It’s here.

Issues with this application are tracked on Github’s issue tracker. Please sign up and report any issues you find!

War of the Roses

War of the Roses is a 2D strategy/roleplaying game set in the world of my (otherwise pen-and-paper) Changeling game. It is written in Java 1.5, and currently uses PlanetCute tiles for its graphics. It is very early on in development – there's only one level, for example, and lots of bugs – but it's improving almost daily.

Issues with this application are tracked on my Mantis server, which is open to anyone to sign up, report bugs and request features. Please report any issues you find!

Instructions

Downloads

You can download the game as an executable JAR file. Please check the Mantis server and suggest additions, or which things I should work on first!

Source code, released under the terms of the GPLv3 licence, is available on GitHub here.

Playing War of the Roses

In lieu of an actual manual or anything, this guide should hopefully answer most questions people might have when play(-testing) War of the Roses.

Boring spreadsheety data is available here.

Units and Characters

Your army consists of a number of Units. These represent large bodies of troops, such as Swordsmen or Archers. Each kind of unit has its own strengths and weaknesses. Up to two characters can be attached to each unit. Characters lead a unit, giving them special bonuses. Whether you spread your characters out, or create a few powerful units with two leaders each, is up to you.

If this is reminding you of Suikoden at this point, have a gold bunny.

Statistics

Each unit has four basic stats: Attack, Defence, Range and Move. I'm guessing I don't really need to explain these. (Incidentally although most non-ranged units have Range 1, some – Pikemen for example – do have a longer range. This allows them to attack without fear of reprisal!)

Characters attached to a unit will generally boost one or more of these statistics.

Morale is health – units start with 100, and are incapacitated if it reaches zero. Some Characters boost maximum morale above 100. Some characters can restore morale, and some can even bring back units that have reached zero morale!

Unit Types

There are three types of unit – Infantry, Cavalry and Ranged.

Infantry are cheap and versatile. They can both move and attack (in that order) each round.

Cavalry are fast and powerful, but expensive. They can move, attack and move again in a round. Both moves use the same pool (so a Light Cavalry with Move 7 could not move 4, attack, then move another 4).

Ranged units can attack from afar, keeping them out of the way of the enemy. Because they need time to aim, they can only either move or attack in a round – not both.

Characters are of one of these types too, showing which Unit types they can be attached to. There are also Command type characters, which do not fight on the battlefield but boost the army's abilities in other ways.

Army and Character Special Bonuses

Certain characters impart a special bonus to their unit. This can take many forms – sometimes they are passive, sometimes they take effect on an attack, etc. Some combinations of two characters make very powerful units when their specials work together!

In addition, each House has a bonus that affects its entire army.

Lastly, each army has a “Command” slot, which can be filled by one character. That character's special ability also affects their entire army, just like the House bonus.

Attacking and Defending

A unit can attack any enemy within its range. The amount of damage dealt is largely based on the attacker's Attack and the defender's Defense, but there are a number of other factors, such as height advantage.

A unit's reported Defence statistic is affected by what it is doing. A unit that only moves and does not attack receives a +25% defence bonus. A unit that neither moves nor attacks receives a +50% bonus. A unit that has already been attacked once has its Defence halved, so be sure to team up and surround enemies to cause the most damage!

Terrain

Certain terrain – walls and water, for example – is impassable.

Movement through trees carries a penalty – one square of movement takes 2 move points.

Surviving (or not)

You win a battle when a certain condition is met, usually incapacitating all enemy units.

Units that survive a battle are promoted (Normal -> Experienced -> Veteran -> Elite). Each level adds 1 to their Attack and Defence. (A unit's rank is denoted by stars underneath them.)

Units that do not survive can be regrouped – this costs money, but not as much as buying an equivalent unit outright. Their Rank is preserved.

Characters cannot die. If a dead unit is not regrouped, any characters that were attached to the unit can be freely moved to other units.

War of the Roses – Tables

This is War of the Roses' Big Page of Tables. Fear it, for it is spreadsheety.

Units

IconNameTypeAttackDefenceRangeMove
SwordsmenInfantry5514
AxemenInfantry6414
PikemenInfantry3724
BerserkersInfantry7216
ScoutsInfantry2217
SkirmishersInfantry5315
Light CavalryCavalry5417
Heavy CavalryCavalry7615
LancersCavalry9325
ChariotsCavalry5526
ArchersRanged5364
CrossbowmenRanged7344
LongbowmenRanged7384
Horse ArchersRanged5347
MagesRanged6454

Characters

IconNameHouseTypeAtk+Def+Rng+Mov+Morale+Special Bonus
AbelPoppyRanged1011050% chance of Move + 2
AbigailHydrangeaCavalry00001002% chance of converting an adjacent enemy unit
AkaneHoneysuckleRanged0020010% chance of Attack + 5
AlbertCommonerCavalry01020
Alice LiddellBlack RoseCommand00000Stationary units create taint
An HeroCommonerInfantry2000010% chance of Attack + 5
ArnellPoppyCavalry020150
AzimovSnapdragonInfantry21000
BubbleCommonerInfantry000050
CainPoppyCavalry20010Attack + 1 for each defeated ally unit
Duke CherryCherryInfantry12000Attack & Defence +1 versus enemy units with leaders
Duke HyacinthHyacinthInfantry10010Move + 2 when adjacent to an enemy unit
Duke PansyPansyInfantry210030Morale + 10% per round
Duke Red RoseRed RoseCavalry2201100morale of adjacent allies + 10% per round, autokill units without leaders
Duke White RoseWhite RoseCavalry1301100morale of adjacent enemies – 5% per round, autokill units without leaders
Duke WillowWillowCavalry11010
“Duke”CommonerInfantry11000
ElaineBlack RoseInfantry100305% chance of converting an adjacent enemy unit
GustafssenPoppyRanged2000020% chance of attack + 3, 20% chance of attack – 3
HannahLilacRanged01110
Hugh F-WPoppyInfantry02010Morale + 5% per round
IlandraHoneysuckleInfantry00010Morale of adjacent allies + 20% per round
Indigo SomethingButtercupInfantry100150Invisible
JasmineRed RoseRanged20010
JebodiahCommonerCommand00000Max morale of all commoners + 20%
“Kiddo”HyacinthInfantry110020
LorelaiLilacCavalry11010
Mister ChickenPoppyCommand00000All units Move + 1
NyanoPoppyInfantry00030Enemy units not adjacent do not specifically target this unit
RegaraPoppyCommand00000
SaledenrePoppyCavalry10020Can fly over other units
SerinHumanRanged1002010% chance of Attack + 5
ShannonLilacInfantry11010
Solid SnapeCommonerInfantry10020Enemy units not adjacent do not specifically target this unit
SqueakCommonerInfantry000050

Houses

NameArmy Bonus
Poppy2% chance of resurrection per round for all defeated units
Honeysuckle10% morale restore per round for all units not adjacent to an enemy
Hyacinth+1 move for all infantry
Red Rose+1 attack for all units
White Rose+1 defence for all units
Pansy+2 attack for all infantry units
Cherry+1 move for all cavalry
Snapdragon+1 attack for all infantry units
Black Rose+1 attack/defence for all units on tainted ground
Willow+1 range for ranged units

Twixt

Ever started replying to someone on Twitter, knowing as you did it that there's no way you could fit it all into 140 characters? Did it drag on into two, three, four tweets, cluttering up everyone's list? Twixt can help.

Having done just that several times, I was after a simple, disposable way of putting more than 140 characters up somewhere on the internet that I can link from a single tweet. Thus, I created this simple PHP script. Give it a block of text, and it'll generate you a unique web page and grab you an bit.ly short URL for it.

Visit twixt.successwhale.com to try it out!

API

Twixt also provides an API for use by applications such as my own SuccessWhale. To use it, simply provide it with a properly URLEncoded “tweet” argument, for example:

http://twixt.successwhale.com/index.php?tweet=Hello%20World!

Twixt will return the text-format output page of bit.ly's “shorten” API, which will be either an HTTP 200 OK containing the shortened URL, or an HTTP 500 Internal Server Error containing the error message.

Status

Twixt is mature, released software, and as far as I know there are no major bugs that affect it. If you find any bugs or would like to request any new features, please contact me via my contact form. If you’d like to submit bug reports and feature requests directly into my Mantis server, please register an account and do so.

Licence and Source Code

SuccessWhale is licenced under the GNU GPL v3. If you'd like to run this from your own website, you can get the source code from GitHub. To run it, you'll need a web server that can run PHP, and the directory the script sits in must be world-writable (chmod 777). To use the API mode, you’ll have to register with bit.ly to get a username and API key, then insert those at the top of Twixt’s index.php.