personal experiences and code :)

Tuesday, January 11, 2011

The Python African Tour's Next Stop is Ghana

The Python Africa Tour (PAT) will make a 5-Day stop in Ghana, from 18th to 22nd January 2011. The goal of the tour is to promote modern programming techniques and tools based on the Python language.

Python is an interpreted, general-purpose high-level programming language whose design philosophy emphasizes code readability. Python aims to combine "remarkable power with very clear syntax", and its standard library is large and comprehensive. [Link]

The tour's workshop is part of a grassroots effort organized by programmers, educators and open-source software champions. Ghana's Google Technology User Group (GTUG) along with other experts will be instructors during the workshop. The workshop will bring new technology ideas and skills to students and professionals in Ghana.

The agenda is:

  • Day 1: Introduction to Python

  • Day 2: Introduction to Python (cont.)

  • Day 3: Introduction to Web Development with Python (particularly with Django)

  • Day 4: Python Sprint/Hackathon

  • Day 5: Python Sprint/Hackathon (cont.)

The tour will be hosted for the tutorial part of the workshop (18-20 Jan 2011) by African University College of Communications (AUCC - Map) and for the Sprint/Hackathon (21-22 Jan 2011) by Ghana Telecom University College (GTUC - Map)

The tour is coordinated by Kamon Ayeva, and has made previous stops in Nigeria, Senegal and Morocco.

Sponsors currently include Google, BECATEC, Python Software Foundation, and supported by Fedora Linux Project, Ghana GTUG and Hutspace.

Contact the PAT Oraganising Team (for more information, sponsorship etc) at patghana@gmail.com.

You can also regiser to be part of the tour at: http://www.pythonafricantour.com/countries/ghana/participate.

Facebook: http://www.facebook.com/#!/PythonGhana
Twitter: http://www.twitter.com/PATGhana

Saturday, July 11, 2009

obama's message to African youth

As I said earlier, Africa's future is up to Africans.
The people of Africa are ready to claim that future. And in my country, African Americans -- including so many recent immigrants -- have thrived in every sector of society. We've done so despite a difficult past, and we've drawn strength from our African heritage. With strong institutions and a strong will, I know that Africans can live their dreams in Nairobi and Lagos, Kigali, Kinshasa, Harare, and right here in Accra. (Applause.)

You know, 52 years ago, the eyes of the world were on Ghana. And a young preacher named Martin Luther King traveled here, to Accra, to watch the Union Jack come down and the Ghanaian flag go up. This was before the march on Washington or the success of the civil rights movement in my country. Dr. King was asked how he felt while watching the birth of a nation. And he said: "It renews my conviction in the ultimate triumph of justice."

Now that triumph must be won once more, and it must be won by you. (Applause.) And I am particularly speaking to the young people all across Africa and right here in Ghana. In places like Ghana, young people make up over half of the population.

And here is what you must know: The world will be what you make of it. You have the power to hold your leaders accountable, and to build institutions that serve the people. You can serve in your communities, and harness your energy and education to create new wealth and build new connections to the world. You can conquer disease, and end conflicts, and make change from the bottom up. You can do that. Yes you can -- (applause) -- because in this moment, history is on the move.

But these things can only be done if all of you take responsibility for your future. And it won't be easy. It will take time and effort. There will be suffering and setbacks. But I can promise you this: America will be with you every step of the way -- as a partner, as a friend. (Applause.) Opportunity won't come from any other place, though. It must come from the decisions that all of you make, the things that you do, the hope that you hold in your heart.

Ghana, freedom is your inheritance. Now, it is your responsibility to build upon freedom's foundation. And if you do, we will look back years from now to places like Accra and say this was the time when the promise was realized; this was the moment when prosperity was forged, when pain was overcome, and a new era of progress began. This can be the time when we witness the triumph of justice once more. Yes we can. Thank you very much. God bless you. Thank you. (Applause.)


Monday, December 01, 2008

book meme

When a MySpace user visited Samy's page, that user would execute the attack code.

From"Hacking Exposed Web 2.0" by Rich Cannings, Himanshu Dwivedi, ZaneLackey

  1. Grab the nearest book.
  2. Open it to page 56.
  3. Find the fifth sentence.
  4. Post the text of the sentence in your journal along with these instructions.
  5. Don't dig for your favorite book, the cool book, or the intellectual one: pick the CLOSEST.

via Eric Florenzano's Blog.

ps: testing out emacs-gblogger

Sunday, October 19, 2008

powell endorses obama

i was just chatting with my dad the other day, about why it is taking so long for colin powell to endorse obama.

the wait was worth it though:

“He has both style and substance,” Mr. Powell said, speaking on NBC’s “Meet the Press.” He added, “Obama has displayed a steadiness; showed intellectual vigor. He has a definitive way of doing business that will do us well.”

“I think that Senator Obama brings a fresh set of eyes, fresh set of ideas to the table. I think that Senator McCain, as gifted as he is, is essentially going to execute the Republican agenda, the orthodoxy of the Republican agenda with a new face and a maverick approach to it, and he’d be quite good at it, but i think we need more than that.”

Mr. Powell told the reporters outside the studio that he still considers himself a Republican, despite his decision to vote for Mr. Obama.


Tuesday, May 20, 2008


object LoremIpsum {
def main(args:Array[String]) = {


def words(n:Int):String =
words(n, words)

def paragraphs(n:Int):String =
paragraphs(n, paragraphs)

private def words(n:Int, xs:List[String]):String =
if (n <= xs.length)
("" /: xs.take(n)) (_ + " " + _)
words(n, xs ::: xs)

private def paragraphs(n:Int, xs:List[String]):String =
if (n <= xs.length)
("" /: xs.take(n)) (_ + "\n" + _)
paragraphs(n, xs ::: xs)

val text = """Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Integer faucibus leo ut lorem. Morbi interdum tellus ac felis. Etiam
pharetra dignissim enim. Class aptent taciti sociosqu ad litora torquent
per conubia nostra, per inceptos himenaeos. Aliquam odio. Maecenas
eleifend ipsum in risus. Aliquam dolor nibh, rhoncus sit amet, volutpat
eget, vestibulum a, odio. Lorem ipsum dolor sit amet, consectetuer
adipiscing elit. Phasellus ipsum. Nullam ligula leo, placerat id,
iaculis id, tempor non, mi. Sed eget justo sed massa vestibulum
scelerisque. Nullam turpis. Quisque quam. Ut sit amet diam. Nunc vitae
justo eget magna mollis iaculis. Ut tincidunt pretium nulla. Cras vel
massa ac sem tincidunt consectetuer. Sed a lorem. Ut condimentum, ipsum
a auctor ullamcorper, nibh neque adipiscing felis, vel elementum nibh
urna quis tellus. Vestibulum nunc est, congue sed, dapibus eu, sodales
vel, quam. Nullam et sem. Sed id leo at mi aliquet mollis. Curabitur
ante. Sed in nunc et orci imperdiet pulvinar. Ut laoreet. Praesent
pellentesque magna sed felis mattis imperdiet. Proin porttitor, felis ac
tempus fringilla, lorem urna sagittis lectus, vitae venenatis lectus
felis sit amet libero. Quisque ac dui. Sed augue sapien, fringilla ut,
pulvinar ac, pellentesque non, turpis. Maecenas tempus enim ac nulla.
Aenean urna augue, ultrices vel, rhoncus ut, lacinia lacinia, lectus.
Integer eleifend lectus ac nisl. Nulla tincidunt, velit ultrices blandit
blandit, arcu felis euismod justo, eu lobortis lacus ligula sed turpis.
Proin quam. Praesent volutpat. Vivamus molestie purus vitae orci.
Pellentesque dignissim augue id mi. Maecenas adipiscing tortor. Integer
mi tortor, consequat eget, porttitor accumsan, pulvinar ut, augue.
Nullam cursus viverra tortor. Donec tincidunt faucibus eros. Vestibulum
turpis mi, pellentesque ac, gravida a, egestas eget, massa. Nullam massa
purus, accumsan sed, fringilla ac, ornare nec, mauris. Nunc nisi nibh,
malesuada vitae, porta a, placerat in, elit. Fusce feugiat dolor vitae
quam. Sed malesuada elit non ante. Sed a sapien. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
Aenean massa. Nulla erat velit, fringilla sit amet, varius vitae,
egestas ac, eros. Aliquam adipiscing facilisis turpis. Aliquam erat
volutpat. Donec semper ipsum id lorem. Proin ligula risus, dignissim in,
feugiat non, tristique ac, mi. Donec placerat sem quis nibh. Nullam
auctor. Etiam mi velit, gravida et, congue non, imperdiet id, libero. Ut
lorem. Vestibulum aliquam vehicula leo. Etiam et ante. Maecenas nulla.
In hac habitasse platea dictumst. Vivamus lorem sapien, blandit ut,
congue et, ultrices nec, dolor. Suspendisse potenti. Curabitur quis mi.
Pellentesque semper arcu quis nulla. Pellentesque tristique, lacus eget
placerat ullamcorper, erat pede laoreet erat, ac adipiscing purus tortor
in leo. Donec scelerisque. Curabitur orci urna, convallis eu,
ullamcorper in, posuere non, augue. Donec libero augue, ullamcorper
vitae, malesuada vitae, lacinia a, purus. Cum sociis natoque penatibus
et magnis dis parturient montes, nascetur ridiculus mus. Fusce vitae
diam in lorem pulvinar mollis. Morbi pretium risus. Aenean ut erat. In
velit leo, interdum ac, suscipit vitae, malesuada ac, risus. Aliquam et
turpis ac augue ornare pharetra. Vivamus augue lectus, tempus ut,
lacinia nec, gravida et, lacus. Donec sodales placerat magna. Curabitur
vitae sem."""

val words = text.split("\\s").toList
val paragraphs = text.split("\\n").toList

Tuesday, May 06, 2008