Announcing: SuccessWhale version 2.0!

Ladies and Gen­tle­men of the Inter­net, I am pleased to announce that Suc­cess­Whale ver­sion 2.0 has just been released and is now live on SuccessWhale.com.

Suc­cess­Whale is a web-based client for Twit­ter and Face­book, writ­ten in PHP, JavaScript and MySQL. It offers a multi-column view that allows users to merge together infor­ma­tion from all their con­nected accounts and view it at a glance from any web browser.

The big changes between ver­sion 1.1.2 and 2.0 are:

  • Face­book support
  • Sup­port for mul­ti­ple Twit­ter (and Face­book) accounts
  • As many columns as you want
  • Columns that com­bine mul­ti­ple feeds
  • Light­boxed images from Twit­pic and yFrog
  • New themes
  • Numer­ous bug fixes!

You can see a screen­shot of it in action below:

SuccessWhale Screenshot

I would par­tic­u­larly like to thank Alex Hut­ter, Hugo Day, Erica Ren­ton and Rg Enzon, whose help in find­ing bugs and sug­gest­ing new fea­tures has been instru­men­tal in bring­ing Suc­cess­Whale up to ver­sion 2.0 today.

Suc­cess­Whale is an open source project, and the source code is licenced under the GPL v3.

Good Morning Shinsei

Good Morn­ing Shin­sei is an alarm app for Android that, rather than wak­ing you up with a loud repeat­ing sound, pulls together your own per­son­alised greet­ing. By giv­ing it the loca­tions of some of the BBC’s XML-based news, weather and traf­fic ser­vices, Good Morn­ing Shin­sei will wake you up with a sum­mary of that infor­ma­tion. Your typ­i­cal wake-up mes­sage might be:

Good morn­ing Ian! It’s 6:15am on Tues­day the 7th of Decem­ber. The weather today will be fore­bod­ing 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 fic­ti­cious cre­ation of the Guardian news­pa­per. It’s snowy, did you know? And, The dead are ris­ing, every­body stay indoors.
Lat­est traf­fic updates: A338 Bournemouth – One lane closed north­bound due to an ear­lier acci­dent. A35 Bere Regis – Sub­ject to road­blocks due to high zom­bie threat, find alter­na­tive routes.

Devel­op­ment Status

Good Morn­ing Shin­sei is not ready for gen­eral use. There’s no GUI or oppor­tu­nity to con­fig­ure the app once installed — every­thing is hard-coded.

If you’re com­fort­able build­ing Android apps your­self, the source code is avail­able as an Eclipse project on Github.

MusicMan

Work on Music­Man has been dis­con­tin­ued, as a friend of mine has a far more capa­ble player in the form of Mor­ri­gan, and it is prob­a­bly eas­ier to port the fea­tures I would like to see than con­tinue writ­ing my own client from scratch.

Music­Man is a cross-platform music player and library organ­iser. It sup­ports mul­ti­ple music direc­to­ries, each of which is recur­sively scanned to build your media library. Your library is syn­chro­nised with the actual files on disk each time you start Music­Man. It also sup­ports mass ID3 retag­ging and dynamic search­ing (iTunes-style), where enter­ing a search term reduces your cur­rent playlist to only the songs that match your search.

Music­Man is alpha soft­ware, and is under heavy devel­op­ment. Lots of things (e.g. playlists, Shout­cast) don’t work yet. How­ever, please try it and sub­mit any bugs you find or fea­tures you would like to see on my Man­tis server. I’ve not yet put the source code any­where that peo­ple can eas­ily com­mit to, but if you feel like adding/fixing things in the mean­time, send the source back to me and I’ll merge it in.

Music­Man requires Java 6, and runs on Win­dows, Mac and Linux. It is released under the terms of the GNU GPL v3. It uses the free MP3SPI, JLayer and JAu­dio­Tag­ger libraries.

Down­loads

Screen­shots

Full Width Facebook Lite

This Grease­mon­key script was for the Lite ver­sion of Face­book that was in Beta in 2009. Sadly, Face­book Lite is no longer avail­able, mean­ing that this script is now redun­dant. How­ever, if you’d like a quick and easy exam­ple of how to use Grease­Mon­key to hide cer­tain divs (e.g. for remov­ing ads), check out the source code.

“Full Width Face­book Lite” is pos­si­bly the world’s short­est Grease­mon­key script: it sim­ply removes the right-hand bar in the new Face­book Lite, thus remov­ing the ad and the big white space, allow­ing the actual con­tent to span the full width. Use­ful for peo­ple who don’t like ads, and peo­ple with small displays!

It requires Fire­fox with Grease­mon­key, Safari with GreaseKit, or sim­i­lar. GreaseKit com­pat­i­bil­ity (via the in-built imple­men­ta­tion of GM_addStyle) was pro­vided thanks to ‘greut’ in this thread: http://userscripts.org/topics/1912. The auto-updater is pro­vided by this script: http://userscripts.org/scripts/show/20145.

There’s no point putting this under the GPL as it’s so sim­ple, so it’s pub­lic domain.

SuccessWhale

Suc­cess­Whale is a web-based Twit­ter and Face­book client writ­ten 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 net­works that block twitter.com. :) It’s free to use by any­one, has no adver­tis­ing, and source code is available.

Visit SuccessWhale.com to try it out!

Fea­tures

  • You can add as many Twit­ter and Face­book accounts as you like, dis­play­ing data from each, and you can choose which to post to every time.
  • Suc­cess­Whale has a multi-column view, which can be scrolled through if you want more than will sen­si­bly fit on your screen. Many columns are avail­able for each Twit­ter and Face­book account you reg­is­ter, includ­ing ones that com­bine noti­fi­ca­tions from all your accounts.
  • Suc­cess­Whale is inte­grated with my Twit­ter paste­bin, Twixt. Enter a reply longer than 140 char­ac­ters into the box in Suc­cess­Whale, and it will be short­ened auto­mat­i­cally using Twixt. Suc­cess­Whale also dis­plays the con­tents of Twixt posts inline, and expands short URLs.
  • You can use Suc­cess­Whale from places where twitter.com and facebook.com are blocked. To do so, you’ll have to log in from a com­puter that can see the sites first, then click “Accounts” in the top-right and cre­ate your­self a Suc­cess­Whale account. You’ll then be able to log in using that pass­word from any computer.
  • You can main­tain a “banned phrases” list, which will hide tweets con­tain­ing cer­tain phrases — great if you’ve got too many friends that spam their Foursquare check-ins to Twitter.

Screen­shot

Successwhale 2 Screenshot

Suc­cess­whale 2 Screen­shot (click for full size)

Sta­tus

Suc­cess­Whale is com­plete, released soft­ware, and cur­rently stands at ver­sion 2.0.1. It’s used by around 50 peo­ple — includ­ing myself — as their main Twit­ter and Face­book client, and a num­ber of sites around the inter­net have used the source code to inte­grate Suc­cess­Whale 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 fea­tures for the next ver­sion, you can con­tact me on Twit­ter (I’m @tsuki_chama), or via my con­tact form. If you’d like to sub­mit bug reports and fea­ture requests directly into my GitHub issue tracker, please reg­is­ter an account and do so.

Licence and Source Code

Suc­cess­Whale 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 Suc­cess­Whale depends, includ­ing twit­teroauth, the Face­book PHP SDK, jQuery, the jQuery Form Plu­gin, the jQuery BlockUI Plu­gin, the jQuery Impromptu Plu­gin, the jQuery Force Redraw Plu­gin, the jQuery breakly Plu­gin, the jQuery “put cur­sor at end” Plu­gin, and the PHP Sim­ple HTML DOM Parser. (Cer­tain parts of the Suc­cess­Whale down­load are thus licenced under the MIT licence, which is more per­mis­sive than and com­pat­i­ble with the GPL licence that Suc­cess­Whale itself uses.)

Instal­la­tion

To run your own copy of Suc­cess­Whale, check out the source from GitHub and load it on to a web server that sup­ports PHP (v4 and above) and, option­ally, MySQL (any ver­sion). Fol­low the instruc­tions in INSTALL.TXT, which will include edit­ing config.php to enter your own settings.

Then just nav­i­gate to index.php, fol­low the instruc­tions on screen, and you should be up and running!

Development/Test Ver­sion

Ver­sion 2.1 of Suc­cess­Whale will bring sup­port for more ser­vices such as LinkedIn and Google Buzz, along with address­ing a num­ber of more minor fea­ture requests by users. Devel­op­ment is under­way. You can try it out on the test server, and get the bleed­ing edge source if you want to play with it.

The test server will break fre­quently with­out warn­ing, var_dump() stuff you don’t want the world to see, and may do weird unex­pected things. If you ask for help or report a bug with it, I will prob­a­bly be sar­cas­tic at you.

Thanks to…

Premier League Fantasy Football Team Picker

For the 2011–2012 sea­son, the Pre­mier League Fan­tasy Foot­ball web­site has been changed to allow no access to the game stats with­out being logged in. This team picker will be offline until I find a work-around for this. Apolo­gies for the inconvenience.

This script picks the opti­mum team for the Pre­mier League’s Fan­tasy Foot­ball game, com­bin­ing player stats with online injury lists. Use­ful so that peo­ple like me, who know noth­ing about foot­ball, have a chance! Note that it is only as good as the data it has access to, so it’s prob­a­bly a bad idea to change your team accord­ing to its sug­ges­tions within the first few weeks of the sea­son — wait until it has more data before trust­ing it.

It’s hosted here, and should run auto­mat­i­cally every 24 hours. You can see the team it’s cur­rently pick­ing here:

Cur­rent Opti­mum Team

 

 

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

Look­ing for my team picker for the Daily Tele­graph game instead? It’s here.

Issues with this appli­ca­tion 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 (oth­er­wise pen-and-paper) Changeling game. It is writ­ten in Java 1.5, and cur­rently uses Plan­et­Cute tiles for its graph­ics. It is very early on in devel­op­ment — there’s only one level, for exam­ple, and lots of bugs — but it’s improv­ing almost daily.

Issues with this appli­ca­tion are tracked on my Man­tis server, which is open to any­one to sign up, report bugs and request fea­tures. Please report any issues you find!

Instruc­tions

Down­loads

You can down­load the game as an exe­cutable JAR file. Please check the Man­tis server and sug­gest addi­tions, or which things I should work on first!

Source code, released under the terms of the GPLv3 licence, is avail­able on GitHub here.

Playing War of the Roses

In lieu of an actual man­ual or any­thing, this guide should hope­fully answer most ques­tions peo­ple might have when play(-testing) War of the Roses.

Bor­ing spread­sheety data is avail­able here.

Units and Characters

Your army con­sists of a num­ber of Units. These rep­re­sent large bod­ies of troops, such as Swords­men or Archers. Each kind of unit has its own strengths and weak­nesses. Up to two char­ac­ters can be attached to each unit. Char­ac­ters lead a unit, giv­ing them spe­cial bonuses. Whether you spread your char­ac­ters out, or cre­ate a few pow­er­ful units with two lead­ers each, is up to you.

If this is remind­ing you of Suiko­den at this point, have a gold bunny.

Sta­tis­tics

Each unit has four basic stats: Attack, Defence, Range and Move. I’m guess­ing I don’t really need to explain these. (Inci­den­tally although most non-ranged units have Range 1, some — Pike­men for exam­ple — do have a longer range. This allows them to attack with­out fear of reprisal!)

Char­ac­ters attached to a unit will gen­er­ally boost one or more of these statistics.

Morale is health — units start with 100, and are inca­pac­i­tated if it reaches zero. Some Char­ac­ters boost max­i­mum morale above 100. Some char­ac­ters can restore morale, and some can even bring back units that have reached zero morale!

Unit Types

There are three types of unit — Infantry, Cav­alry and Ranged.

Infantry are cheap and ver­sa­tile. They can both move and attack (in that order) each round.

Cav­alry are fast and pow­er­ful, but expen­sive. They can move, attack and move again in a round. Both moves use the same pool (so a Light Cav­alry with Move 7 could not move 4, attack, then move another 4).

Ranged units can attack from afar, keep­ing 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.

Char­ac­ters are of one of these types too, show­ing which Unit types they can be attached to. There are also Com­mand type char­ac­ters, which do not fight on the bat­tle­field but boost the army’s abil­i­ties in other ways.

Army and Char­ac­ter Spe­cial Bonuses

Cer­tain char­ac­ters impart a spe­cial bonus to their unit. This can take many forms — some­times they are pas­sive, some­times they take effect on an attack, etc. Some com­bi­na­tions of two char­ac­ters make very pow­er­ful units when their spe­cials work together!

In addi­tion, each House has a bonus that affects its entire army.

Lastly, each army has a “Com­mand” slot, which can be filled by one char­ac­ter. That character’s spe­cial abil­ity also affects their entire army, just like the House bonus.

Attack­ing and Defending

A unit can attack any enemy within its range. The amount of dam­age dealt is largely based on the attacker’s Attack and the defender’s Defense, but there are a num­ber of other fac­tors, such as height advantage.

A unit’s reported Defence sta­tis­tic is affected by what it is doing. A unit that only moves and does not attack receives a +25% defence bonus. A unit that nei­ther 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 sur­round ene­mies to cause the most damage!

Ter­rain

Cer­tain ter­rain — walls and water, for exam­ple — is impassable.

Move­ment through trees car­ries a penalty — one square of move­ment takes 2 move points.

Sur­viv­ing (or not)

You win a bat­tle when a cer­tain con­di­tion is met, usu­ally inca­pac­i­tat­ing all enemy units.

Units that sur­vive a bat­tle are pro­moted (Nor­mal -> Expe­ri­enced -> Vet­eran -> Elite). Each level adds 1 to their Attack and Defence. (A unit’s rank is denoted by stars under­neath them.)

Units that do not sur­vive can be regrouped — this costs money, but not as much as buy­ing an equiv­a­lent unit out­right. Their Rank is preserved.

Char­ac­ters can­not die. If a dead unit is not regrouped, any char­ac­ters 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

Icon Name Type Attack Defence Range Move
Swords­men Infantry 5 5 1 4
Axe­men Infantry 6 4 1 4
Pike­men Infantry 3 7 2 4
Berserk­ers Infantry 7 2 1 6
Scouts Infantry 2 2 1 7
Skir­mish­ers Infantry 5 3 1 5
Light Cav­alry Cav­alry 5 4 1 7
Heavy Cav­alry Cav­alry 7 6 1 5
Lancers Cav­alry 9 3 2 5
Char­i­ots Cav­alry 5 5 2 6
Archers Ranged 5 3 6 4
Cross­bow­men Ranged 7 3 4 4
Long­bow­men Ranged 7 3 8 4
Horse Archers Ranged 5 3 4 7
Mages Ranged 6 4 5 4

Char­ac­ters

Icon Name House Type Atk+ Def+ Rng+ Mov+ Morale+ Spe­cial Bonus
Abel Poppy Ranged 1 0 1 1 0 50% chance of Move + 2
Abi­gail Hydrangea Cav­alry 0 0 0 0 100 2% chance of con­vert­ing an adja­cent enemy unit
Akane Hon­ey­suckle Ranged 0 0 2 0 0 10% chance of Attack + 5
Albert Com­moner Cav­alry 0 1 0 2 0
Alice Lid­dell Black Rose Com­mand 0 0 0 0 0 Sta­tion­ary units cre­ate taint
An Hero Com­moner Infantry 2 0 0 0 0 10% chance of Attack + 5
Arnell Poppy Cav­alry 0 2 0 1 50
Azi­mov Snap­dragon Infantry 2 1 0 0 0
Bub­ble Com­moner Infantry 0 0 0 0 50
Cain Poppy Cav­alry 2 0 0 1 0 Attack + 1 for each defeated ally unit
Duke Cherry Cherry Infantry 1 2 0 0 0 Attack & Defence +1 ver­sus enemy units with leaders
Duke Hyacinth Hyacinth Infantry 1 0 0 1 0 Move + 2 when adja­cent to an enemy unit
Duke Pansy Pansy Infantry 2 1 0 0 30 Morale + 10% per round
Duke Red Rose Red Rose Cav­alry 2 2 0 1 100 morale of adja­cent allies + 10% per round, autokill units with­out leaders
Duke White Rose White Rose Cav­alry 1 3 0 1 100 morale of adja­cent ene­mies — 5% per round, autokill units with­out leaders
Duke Wil­low Wil­low Cav­alry 1 1 0 1 0
“Duke” Com­moner Infantry 1 1 0 0 0
Elaine Black Rose Infantry 1 0 0 3 0 5% chance of con­vert­ing an adja­cent enemy unit
Gustafssen Poppy Ranged 2 0 0 0 0 20% chance of attack + 3, 20% chance of attack — 3
Han­nah Lilac Ranged 0 1 1 1 0
Hugh F-W Poppy Infantry 0 2 0 1 0 Morale + 5% per round
Ilan­dra Hon­ey­suckle Infantry 0 0 0 1 0 Morale of adja­cent allies + 20% per round
Indigo Some­thing But­ter­cup Infantry 1 0 0 1 50 Invis­i­ble
Jas­mine Red Rose Ranged 2 0 0 1 0
Jebo­diah Com­moner Com­mand 0 0 0 0 0 Max morale of all com­mon­ers + 20%
“Kiddo” Hyacinth Infantry 1 1 0 0 20
Lore­lai Lilac Cav­alry 1 1 0 1 0
Mis­ter Chicken Poppy Com­mand 0 0 0 0 0 All units Move + 1
Nyano Poppy Infantry 0 0 0 3 0 Enemy units not adja­cent do not specif­i­cally tar­get this unit
Regara Poppy Com­mand 0 0 0 0 0
Sale­denre Poppy Cav­alry 1 0 0 2 0 Can fly over other units
Serin Human Ranged 1 0 0 2 0 10% chance of Attack + 5
Shan­non Lilac Infantry 1 1 0 1 0
Solid Snape Com­moner Infantry 1 0 0 2 0 Enemy units not adja­cent do not specif­i­cally tar­get this unit
Squeak Com­moner Infantry 0 0 0 0 50

Houses

Name Army Bonus
Poppy 2% chance of res­ur­rec­tion per round for all defeated units
Hon­ey­suckle 10% morale restore per round for all units not adja­cent 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
Snap­dragon +1 attack for all infantry units
Black Rose +1 attack/defence for all units on tainted ground
Wil­low +1 range for ranged units

Twixt

Ever started reply­ing to some­one on Twit­ter, know­ing as you did it that there’s no way you could fit it all into 140 char­ac­ters? Did it drag on into two, three, four tweets, clut­ter­ing up everyone’s list? Twixt can help.

Hav­ing done just that sev­eral times, I was after a sim­ple, dis­pos­able way of putting more than 140 char­ac­ters up some­where on the inter­net that I can link from a sin­gle tweet. Thus, I cre­ated this sim­ple PHP script. Give it a block of text, and it’ll gen­er­ate 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 pro­vides an API for use by appli­ca­tions such as my own Suc­cess­Whale. To use it, sim­ply pro­vide it with a prop­erly URLEn­coded “tweet” argu­ment, for example:

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

Twixt will return the text-format out­put page of bit.ly’s “shorten” API, which will be either an HTTP 200 OK con­tain­ing the short­ened URL, or an HTTP 500 Inter­nal Server Error con­tain­ing the error message.

Sta­tus

Twixt is mature, released soft­ware, 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 fea­tures, please con­tact me via my con­tact form. If you’d like to sub­mit bug reports and fea­ture requests directly into my Man­tis server, please reg­is­ter an account and do so.

Licence and Source Code

Suc­cess­Whale is licenced under the GNU GPL v3. If you’d like to run this from your own web­site, you can get the source code from GitHub. To run it, you’ll need a web server that can run PHP, and the direc­tory the script sits in must be world-writable (chmod 777). To use the API mode, you’ll have to reg­is­ter with bit.ly to get a user­name and API key, then insert those at the top of Twixt’s index.php.