Launching Twikilist
I'm launching a new little service today: Twikilist
Yes, of course it is twitter enabled, what did you expect ? :-)
Twikilist was created as a simple, open and public registration list for your events.
Why?
i love the open and public nature of community-editable systems like wiki's or blogcomments, but i noticed some drawbacks, especially when a lot of people are trying to get their name on the list at the same time.
Enter Twikilist: create a list, select the features you want, spread the word and don't worry about the rest.
Registration lists are easy to embed in your wiki, website or blogpost, or you can use the Twikilist website itself.
Did I mention I love Twitter? And so does Twikilist
By simply checking a box you allow people to register - or unregister - for your event by sending a tweet, giving extra visibility to your event.
For example, if your event is called "TwikiLaunch", sending a tweet @twikilist #TwikiLaunch I'll be there will get on the list (and @twikilist #TwikiLaunch cancel will remove you)
Twikilist was made because Topanga was looking for a nice and simple tool to take the hassle out of public registration lists (And she bribed me with the most delicious dinner I have tasted in the last few years, so how could I refuse?)
It was wipped up in a few evenings so if you find any bugs, let me know.
A big thanks to cubus for doing the CSS design
It's first use is for the Blogborrel, 30th of May in Antwerp - Feel free to join !
Jarenlange mishandeling
Zoals bij 95% van Vlaanderen werd er ook hier stevig in de tuin gewerkt.
De lente hing immers in de lucht en dan komt een mens buiten.
Met snoeischaar getogen werden de Catalpa's weer stevig gekortwiekt.
De sporen van deze jaarlijkse mishandeling staan inmiddels diep getekend in hun knoesten, maar het is hun eigen dikke schuld: Ze moeten zo hard ook maar niet groeien.
Sommige takken meer dan 3 meter op een jaar, wat in de lenteperiode soms op 3 tot 4 centimers per dag uitkomt.
Verbazend, ge zou maar eens in slaap durven vallen tegen zo'n boom. Voor dat je het weet bent je ingegroeid.
Ik vraag me trouwens af hoe ik eruit zou zien als ik elk jaar zo toegetakeld zou worden ...
De volledige reeks foto's vind je op http://www.stef.be/foto/knoest
Codebreakers and Enigma’s
Goesting om (onder andere) de R en de S van de wereldberoemde RSA encryptie eens in levende lijve te ontmoeten?
Rep je dan snel naar het Codebreakers and Enigma’s event, misschien dat ze je nog net binnen laten.
Het wordt georganiseerd door LSEC, een Vlaamse vzw die – gesteund door het IWT – de kennis van computerbeveiliging bij bedrijven wil verhogen.
RSA was zowat de doorbraak van de encryptie met een publieke sleutel
Bruce Schneier, Adi Shamir, John Manferdelli en Ron Rivest ... amai - straffe gasten!
How to cheat on online polls like #MCMG
Vorig weekend opende Imke Dielen de "Most cute Male Geek" verkiezing.
Eigenlijk wilde ik dat alles gewon negeren, want - en ik mag dat zeggen he Imke - ik vond het vooral wat aandachttrekkerij, tot ik vrijdagavond zag dat @wolfr 9000+ stemmen achter zijn naam had staan.
Onder het motto "Allaai gast, alsge trisht, doegedan injees goe" oftewel "Wasdana, nen antwaarpenaar kan toch beter trishen dan die Netlash-gasten zekers" heb ik vrijdag dan toch eens een scriptje gemaakt om een mede-antwerpenaar van wat stemmen te voorzien. (Vooral ook omdat imke zelf zeer uitnodigend was)
Hier een kleine handleiding:
Stap 1 bij elke webapplicatie is altijd dezelfde: rechts klikken en "view source" kiezen.
Daar lezen we <noscript> <a href="http://answers.polldaddy.com/poll/1357963/">View Poll</a></noscript>
Wat de url is van de quiz op polldaddy.
Het meeste interessante op die pagina is de "vote" knop, die stuurt immers de actie door naar de webserver.
de actie is javascript:vote(1357963,0,0,1,10);
OK, dan even kijken waar die javascript staat.
in de HTML code staat <script type="text/javascript" language="javascript" src="/js/common.js?x=35">
<script src="js/common.js?x=35" type="text/javascript">
dus de url waar de javascript code staat is http://answers.polldaddy.com/js/common.js?x=35
daarin staat (in versimpelde versie)
function vote(id, poll_other, rand, poll_type,u)
{
for(i=0; i {
if(document.formPoll.elements[i].checked)
{answerString +=document.formPoll.elements[i].value + ',';}
}
location.href = '/vote/?va='+u+'&pt='+poll_type+'&r='+rand+'&p='+ id +'&a='+ answerString +'&o='+ otherText;
}
aha
de code location.href zegt tegen de browser om naar en bepaalde url te gaan.
en welk url dat is wordt mede bepaald door de variablelen die we aan de functie vote meegeven.
De "vote" knop roept javascript:vote(1357963,0,0,1,10)op, waardoor we al de url /vote/?va=10&pt=1&r=0&p=1357963&a='+ answerString +'&o=
om de waarde van answerstring te kennen, kijken we weer naar de HTML broncode van de poll waar we <input type="checkbox" id="PDI_answer6978941" value="6978941"></input> atog terugvinden.
answerString vervangen we door "6978941," wat de waarde is van de checkbox voor atog + een komma (dat is het + ',' stuk in de vote functie)
de volledige string wordt dan http://answers.polldaddy.com/vote/?va=10&pt=1&r=0&p=1357963&a=6978941,&o=
en inderdaad: Als we deze url oproepen in de browser, zien we dat er 1 vote bij atog is bijgekomen.
We zouden dan als een gek op refresh kunnen gaan klikken, maar na een paar 100 keer heeft polldaddy ook wel door dat er iets niet klopt en weigert dan nog nieuwe stemmen te tellen van je PC.
Je krijgt dan het volgende
Als je nu een andere PC zou gebruiken, zou je met die URL wel weer verder kunnen stemmen, maar handig is dat niet.
Gelukkig zijn daar verschillende oplossingen voor, en een oplossing die voor url-oproepen goed werkt is een zogenaamde "cgi proxy"
Dit is een script dat op een webserver draait, en als doorgeefluik dient voor webpagina's, zodat de doelwebserver (polldaddy) niet kan zien waar het verzoek eigenlijk vandaan komt.
Bovendien past zo'n proxy script nog wat slimmigheden toe om zich telkens als een andere "pc" te vermommen, waardoor het veel minder kans heeft ook geblokeerd te worden.
Je kunt zo'n script zelf op je server zetten, maar er zijn ook lijsten met publieke cgi proxies (die zijn vrij te gebruiken, al moet je er wel een kwak reclame bij nemen)
de URL http://anonymouse.org/cgi-bin/anon-www.cgi/http://answers.polldaddy.com/vote/?va=10&pt=1&r=0&p=1357963&a=6978941,&o= bijvoorbeeld roept de polldaddy stem pagina op via zo'n proxyscript zodat je zelf buitenschot blijft.
Je kunt zoveel proxy scripts tegelijk gebruiken als je wil, de webserver zal ze immers als verschillende verzoeken aanschouwen.
Dan is het nog zaak dat om de zoveel tijd automatisch te laten herhalen via een cron of een autorefresh en klaar, de tijd doet de rest.
Ik heb het script ongeveer 40 uur laten lopen en in die tijd heeft het ruim 100.000 stemmen uitgebracht.
en voor alle duidelijkheid: atog had niets te maken met deze valsspelerei - hij is uiteraard de eerlijkheid zelfve (EN een terechte winnaar! :-) )
Dit was natuurlijk maar een leutigheids-poll, maar de bottomline is: als je een online tool of spel gebruikt waarbij er ECHT iets belangrijks te winnen valt ... spendeer dan meer dan de helft van je resources aan de beveiliging ervan, want gegarandeerd dat er hopen nerds rondlopen die niets liever doen dan je actie om zeep te helpen door het systeem te kraken.
Tags: in 't Nederlands, ScriptingGeef je reactie (6)Klara4kids
"Klassieke muziek duikt verrassend vaak op in speelgoed, tekenfilms en computerspelletjes. Terecht want welke muziek weet de verbeelding zo sterk te prikkelen?" staat er in deze advertentie voor Klara4kids.Want een onzinnige marketingspeak. Het komt gewoon zo vaak voor omdat het royalty en copyright vrije muziek is ...
Dat gezegd zijnde ... een leuk initiatief www.klara4kids.be
Geef je reactie (1)
Microsoft Surface
Vorige woensdag woonde ik een Windows Mobile Smackdown bij met mooie sneak-preview over windows mobile 6.5.
Later daarover meer, maar even leuk was dat we ook konden spelen met de Microsoft Surface PC: Een soort koffietafel scherm met een groot multi-touch oppervlak.
Naais .... VERY naais.
Ik zou er supergraag wat applicaties voor willen ontwikkelen, maar met een prijskaartje van 11.000 euro plus een extra 2.000 euro voor de developmentkit zal dat nog niet voor in 't kort zijn
(Sponsors mogen zich uiteraard altijd aanbieden)
Hier een korte video impressie.
't gefilmd met mijn GSM, dus behoorlijk crappy.
Veel betere videokwaliteit vind je bij LVB.
Misschien moet ik mij toch eens zo'n flip HD aanschaffen voor dergelijke instant-shots
Googlewhack sabelplassen
Ik had er nog nooit van gehoord: Googlewack - en zelfs Googlewhackblatt
Het is dus een (zinnig) woord dat slechts 1 zoekresultaat op google oplevert.
En jawel, vandaag werd door @eyeballkid en @wim_morc ontdek dat sabelplassen er 1 is.
Iedereen weet meteen wat sabelplassen is en toch komt het op het hele publieke internet maar 1 keer voor,
meer bepaald in een artikel van de Standaard over wemasturbate (@wemasturbate op twitter)
Een googlewack is natuurlijk heel delicaat, want zodra er iemand schrijft dat sabelplassen een uniek woord is, wordt dat opgepikt door google en is het er geen meer. Het is een beetje zoals het vinden van een klavertje 4 in een dichtbegroeid klaverveld: als je het plukt is het weg, en als je het niet plukt vind je het waarschijnlijk later nooit meer terug.
Het zijn kleine dinkies als deze die me doen glimlachen, en alleen daardoor al veel waard zijn.
Update: Oh nee - ik heb het verprutst - nu zijn er al 4 resulaten op http://www.google.be/search?q=sabelplassen
Damn, Google is snel ... dat heeft net 5 uur geduurd.
Magical Multicolor Lights
My first (very simple) Arduino project combines Tikitag to create some magical lamps that change color depending on the objects you put in front of them. (and then the magic is gone as the trick is explained)
The sourcecode of all scripts and programming can be downloaded here.
Twitter Follower Wonderwall
The übercool @bnox hopped over 1000 twitter-followers yesterday and posted her wonderwall of twitter-followers on her blog.
It was generated by a script by Walter Higgins. Cool! Only one thing: I noticed it had only 700 peeps on it. (Actually, I miscounted so thanks @StefaanLesage for the recount )
It's stupid things like this that bug me (litteraly)
I'm conditioned by my job of course: when I see a software bug I automatically switch to "Can we fix it? YES WE CAN!" mode.
I created a little script that gets your followers and displays them in a grid. It turned out to be piece of cake thanks to Twitter's excellent API.
Here's the script if you want to make your own Wonderwall or adapt it.
<% twitterAccount = "steffest" twitterPass = "******" twitterUser = "Bnox" page=1 colcount=1 response.write("<h1>"&twitterUser&"</h1>") response.write("<table><tr>") twitter_getfollowers() response.write("</tr></table>") function twitter_getfollowers() twitterurl = "http://twitter.com/statuses/followers/"&twitterUser&".xml?page=" & page set objXMLHTTP = Server.CreateObject("MSXML2.SERVERXMLHTTP") objXMLHTTP.Open "GET", twitterurl, false,twitterAccount,twitterPass objXMLHTTP.Send Set objXML = Server.CreateObject("MSXML2.DOMDocument") bAns = objXML.loadXML(objXMLHTTP.responseText) if bAns then set objItemNodes = objXML.DocumentElement.SelectNodes("user") if objItemNodes.length>0 and page<50 then for each oNode in objItemNodes user_name = "" user_image = "" if not oNode.selectSingleNode("screen_name") is nothing then user_name = oNode.selectSingleNode("screen_name").Text if not oNode.selectSingleNode("profile_image_url") is nothing then user_image = oNode.selectSingleNode("profile_image_url").Text response.write("<td><a href=""http://twitter.com/"&user_name&"""><img src="""&user_image&""" border=""0"" width=""48"" height=""48""></a></td>") colcount=colcount+1 if colcount>15 then response.write("</tr><tr>") colcount=1 end if next page=page+1 twitter_getfollowers() end if end if set objXMLHTTP=nothing twitter_getfollowers = true end function %>
USB LED graphic equaliser
Another demo of the LED-matrix screen.
This time I created a program that monitors the audio levels of your PC and renders a graphic equaliser or a simple VU meter on the LED-panel.
Of course the scrolling text is also still present.
Much to my surprise the hardest part was how to capture the audio information of your PC.
After some digging I ended up with the most excellent BASS audio library of Un4seen.
It's very well documented and very easy to integrate in your own projects.
Luckily some examples where included how a graphic equaliser works because that stuff gets pretty theoretical very fast ! (and I had no clue)
The idea is to build a large - but low-res - custom LED wall (or hey ... a T-shirt you know) to replace the current 8x8 LED matrix. I have something wandering my mind of a panel, 60cm width and 240 cm high, with 8x16 or even 16x32 RGB led-boxes.
We'll see what resolution I can achieve and what will run out first: my mind, my time or my budget :-)
Twitter on a tiny LED display
As a small exercise in my progress towards to ultimate tweetshirt, I created an interface for a 8x8 LED matrix display.
It doesn't do much at this moment: a program runs on the PC, fetches your latest tweet and controls the USB attached LEDs to show it as scrolling text.
The hardware is from Byvac and is cheap and easy, but also a bit limited.
The software is by me and uses their IASI-2 protocol
The scrolling is in fact much smoother then appears in the video.
Maybe I'll rework the hardware interface to control a 4x4x4 LED cube.
I ordered an Arduino today, which will allow much more low level processing and control for these kind of things
a 8x8 RGB display seems a nice project to start with, hoping to scale up to a 16x16 grid if things are going well.
Snowboarding
Woohoo, heel de piste voor ons alleen zeg !