Tweeting from your database with short urls
There's something cheekily enjoyable about getting all manner of 'non-human' things to tweet. I've heard of plants tweeting, but until I saw Lewis Cunningham's post announcing ORA_Tweet, I hadn't even thought of getting Oracle Database onto twitter.
Saturdays are good for little projects, so I thought I would add URL shortening service today;-)
Since twitter famously limits you to 140 characters, it is conventional to use a url-shortening service to include hyperlinks in your tweet. So my little play for today was to pair that idea up with ORA_Tweet.
There are a range of URL shortening services available including snipurl and tinyurl (here's a survey of services). I've been using is.gd for a while though, since it sports the simplest GET request 'api' you could imagine, making it great for ad-hoc programmatic use.
So I add an extra package called SHORT_URL which has just two functions:
FUNCTION encode_url(encode_url the main wrapper around the http://is.gd call to get a short url for the one you provide.
p_url IN VARCHAR2 )
p_text IN VARCHAR2 )
encode_text is a more convenient function that takes a block of text, and will replace all the urls it contains with the appropriate shortened versions.
Then there's just one change to the ORA_TWEET package body:
45c45Now you can go wild with URLs in your database tweets:
< url => 'status=' || SUBSTR( short_url.encode_text(p_string) ,1,140));
> url => 'status=' || SUBSTR(p_string,1,140));
BEGINBuilding on Lewis' original justification for building ORA_Tweet, you could for example include links to a report page or admin screen when your long-running process sends you its "I'm done" tweet.
p_user => 'twitter_username',
p_pwd => 'twitter_password',
p_string => 'ora_tweet v1.1 is complete! Now with url shortening ... see http://database-geek.com/2009/03/15/ora_tweet-tweet-from-oracle-a-plsql-twitter-api/' )
That's if you need justification;-)
If you are interested, the source is up on my github account now: ORA_Tweet_With_Shorturls.zip
read more and comment..
Idea #105: what name babby? (Dugg already pwned)
I just saw namemasher.com mentioned on programmable web.
It's a first step towards addressing one of humankind's biggest challenges: forget about running out of IP addresses, we're going to run out of usernames first!
What kind of handle do you think your children be able to get on Friendfeed? Under what name will your grandchildren be able to tweet? And do you think they stand a chance of getting the same nick across all their services?
There's a mad stampede for names going on, and any self-respecting parent (or prospective parent) who wants to bring up their children right ought to be out there buying up their progeny's place in cyberspace. Along with the tuition fund you need: website domain name, email account, twitter handle, skype, tumblr ... who knows which will survive, so get them all.
You never know: what if you kid gets famous, or even goes into politics? It wouldn't be very presidential if they tweeted as @spaceycasey123456.
Parents need something more than namemasher. In addition to the parents' names, it needs to munge in family and cultural background, existing baby name references like babynames.com (that's the one with the helpful definition of Espn), cross-check against existing accounts with something like namechk.com, and then go out and pre-register all the services for your unborn child. What an 18th birthday present that would make!
In short, the world needs wotnamebabby.com:
read more and comment..
Learning not to love Java
Back in 99, I spent about six months procrastinating over a MAJOR decision (or so it seemed at the time).
To stick with the Microsoft camp - where I'd built up substantial experience through ActiveX to DCOM to COM, IIS and Commerce Server 3.0 - or jump onto the Java bandwagon?
Ultimately, Java won out, and along with millions of others, we've made Java the enterprise platform of choice (arguably).
The interesting point upon reflection, is that there was never any doubt in my mind that Java was somehow 'better' and more 'pure', in an academic sense.
Almost ten years later, I shocked myself recently when returning to Java after spending a good part of the past two years infatuated with ruby and rails and other scripting languages.
Where before I saw classical elegance, now my first thoughts were this sux and the language is just getting in my way.
First the verbosity kills me:
WeLikeLongDescriptiveClassNames myReallyDescriptivelyNamedObject = WeLikeLongDescriptiveClassNamesFactory.getInstance(duh);
How many times do I have to tell the compiler what kind of object I am dealing with? Sure, I understand the benefits of the Factory pattern and the subtleties you can construct by virtue of the inheritance hierarchy. But most of the time, I just want the compiler to do what is most obvious, and don't make me write a novel for the most straight-forward tasks!
Then there's the language-promoted cultural phenomenon of class explosion. Need half a dozen value objects to represent the various information to be passed around in your domain? Sure! With unit tests all, I am sure. Most of the time, I'd now prefer to scream YAGNI!
But the true ephiphany was my run-in with primitives (again ... every year or so). Using JSP sessions as a perfect place to test this out. Take an int and stick it in the session:
int startingInt = 3;
session.setAttribute( "startingInt" , startingInt);
What type is in the session? An Integer object of course. Java has cleverly done a type conversion for you, from a primitive to an object. But woe betide the simple developer who assumes this must be a commutative operation:
int newInt = session.getAttribute( "startingInt" );
That's what I call a language actively getting in your way. Kind of like if you deposited $10 cash in your bank, but when you went to withdraw the money, the teller threw the shutters down and said you could only get your money back in government bonds.
So do I have a point or is this just a rant (and certainly one that is not as erudite as many have written)?
I guess I must be pretty slow to catch on to what others knew long ago. The true test comes down to being able to realise one's goals. For personal projects, I find I'm able to knock out complete (and impressive) applications in Rails, while I still have ten java-based ideas on the drawing board.
It comes down to whatever works. And it should.
Does that mean I hate Java? Not at all. I still get a bit of a thrill out of its clean lines and voluminous open source library support. Much like seeing an aging and long-since outclassed 512BB. 'Classic' is timeless.
No. I don't hate Java, but neither do I love it the way it used to demand. I look back on my naïve 1999-self in wonder. Building experience is key, but it is a mistake to tie this to a language. Computer languages are the tools of our trade, and the more you know, the better you will be. When people mention Haskell, Scala, Eiffel ... do you know what they are on about, or do you just nod intelligently and pray not to get caught out?
With more tools at our disposal, we are better able to tackle new challenges in the most appropriate way.
To get the job done (which is generally the point, right?).
read more and comment..
Hand Drawn Maps - Corsair
Maps have always intrigued me. As a career seafarer, my Dad always had nautical charts around the house, and drawing a map of a saxon village is one of my most distinct primary school memories.
I just stumbled upon the Hand Drawn Maps Association, which will be publishing a collection of hand drawn maps and in anticipation is running a contest for everyone to submit their own maps. In terms of esoteric deliciousness, this is certainly up there with the Cloud Appreciation Society
One of my favourite user submissions so far is David Donachie's RPG coastal map of the country of Tanaloth.
|Maps also played a role in a book a recently finished listening to. Tim Severin's Corsair is the story of Hector Lynch who is taken from Ireland by slavers from the Barbary Coast and recounts his adventures to escape captivity. He helps his friend Dan, a slave from the Miskito Coast, turn his tattoo skills to map illustration for their Turkish master and take another step towards freedom.|
Corsair is a ripping yarn in the best swashbuckling tradition, however the details that Severin weaves into the tale provide a fascinatingly different perspective on the 17th century, one that is more centered on the North African and Islamic world in both location and outlook.
The audible.com reading is brilliantly delivered by Rupert Farley. Highly recommended.
read more and comment..