Category archive: Text
-
Box
-
Any sufficiently advanced technology is indistinguishable from magic.
— Arthur C. Clarke
-
Noooo!
For future reference: http://www.nooooooooooooooo.com/
-
Let's set the world on fire
Tonight
we are young
so let's set the world on fire
we can burn brighter
than the sun
-
A Separation
Fantastic. Now I understand why it got 99% on Rotten Tomatoes. Brilliant.
-
Respectful discourse
Copied from the blog of the amazing Sam Ruby.
The reason you have arived here is probably due to the fact that the owner of this web site has deemed some portion of a comment as flamebait.
While I am not sure of many things, here are a few things I do believe:
- Overall, the comments feature of my weblog is something that I find the most enjoyable and rewarding aspects of my site.
- I welcome thoughtful and respectful expressions of alternate points of view.
- There are some topics that I am interested in that others seem to find as irresistable temptations to bash one another.
- Nobody has an inalienable right to place information on my website. If you have something to say, I encourage you to get your own weblog. Feel free to use trackback to draw attention to your comments.
Given the above, I would like to find a solution less drastic than disabling comments, blocking of ip address, or wholesale removal of comments. That being said, I do reserve the right to selectively employ one or more of the above in situations I feel warrant it.
At the moment, the best solution I have come up with is to mark up the portions I find objectionable with links to this page. No words are addded, deleted, or rearranged in the process.
Suggestions are welcome.
-
xkcd and abstraction layers

This xkcd reminded me of a 3-year old blog post of mine, Abstraction layers: One, two, many
-
Innovation, Solutions, and Effectiveness
Business Partners, the influential magazine of the American-Hellenic Chamber of Commerce, has published an article discussing Greece, Startups and Transifex. I was invited to write a column.
Business Partners presents the voices of six young entrepreneurs who are rising above the status quo to take control of their professional careers, with all the difficulties this involves, and experience life from a different vantage point. And they offer insights into shifts—of beliefs, of values, of perspectives—that, at this time of upheaval and despair, will move Greece forward.
Here's my take on the topic.
Innovation, Solutions, and Effectiveness
Being an entrepreneur and a pattern recognition geek, I am very often tempted to compare Greece’s challenges with those of a startup.
Startups are businesses at their extremes. One day you’re the king of the world at the top of the mountain, invincible against your competition. The next day you’re in the valley, wondering how on earth you’ll survive the imminent and inevitable end of your world. And while entrepreneurs often have optimism engraved in their DNA to be able to survive (and thrive), a startup’s roller-coaster life, and a negative ecosystem, can drain it out from you.
I’m often asked what were the biggest challenges I faced in founding Transifex. Expected answers, such as bureaucracy and taxation, are always areas a country can improve on. But the biggest challenge for me was a different one: To keep looking at things positively. To keep believing that change is possible and you’re a part of it. If I had a magic wand, I’d switch the negativity being pushed by the media before a good night’s sleep, or by the grocery store owner before a good morning, with constructive criticism with realistic propositions and a thumbs-up with a smile.
Empowerment will prove to be an important element of Greece’s fight for survival. From entrepreneurs to employees, from citizens to ministers and the prime minister himself, everybody needs to feel empowered to fight for a better tomorrow. Citizens need to feel empowered to be part of the change and fight to bring new value the next day. This cultural change requires many years to improve, but that’s no reason not to start working on it today.
Greece is challenged today to innovate itself out of its doom, whirlpool. In any system which brought itself to such a bad state, innovation, or improving its own parameters, is a necessary element for escape. And while lots of people are busy with inventing solutions, some few are busy in innovating new solutions, that is, ones which will be effective in improving the current state in a significant way. These people are smarter than the ones which brought the system to the current state. Let’s identify them, remove all their obstacles and provide them with all the necessary tools to do great things.
Effectiveness is key. Both optimized systems, as well as ones which have been broken for decades, which represents the case of Greece, require hard work to fix. When resources such as budget and time are limited, being effective is key for success. The right solutions should be brought to the table today and ways to get them implemented soon should be found.
Full article at: Http://bponline.amcham.gr/?p=1397.
-
Major Flashback

Out Run.
-
Here's to the crazy ones
Here’s to the crazy ones.
The misfits.
The rebels.
The troublemakers.
The round pegs in the square holes.
The ones who see things differently.
They’re not fond of rules.
And they have no respect for the status quo.
You can quote them, disagree with them, glorify or vilify them.
About the only thing you can’t do is ignore them.
Because they change things.
They invent.
They imagine.
They heal.
They explore.
They create.
They inspire.
They push the human race forward.
Maybe they have to be crazy.
How else can you stare at an empty canvas and see a work of art? Or sit in silence and hear a song that’s never been written? Or gaze at a red planet and see a laboratory on wheels?
We make tools for these kinds of people.
While some see them as the crazy ones, we see genius.
Because the people who are crazy enough to think they can change the world, are the ones who do.RIP Steve Jobs
-
Eargasm
-
Alicia Keys, "New York"
-
Pushing the envelope with GMail
Received the following messages from GMail today, a few seconds from each other:
"Permanently delete 80944 conversations from Trash?"
"Oops… the system encountered a problem (#767) - Retrying now"
Temporary Error (503): We’re sorry, but your Gmail account is temporarily unavailable.
-
The Greek Crisis
A lot of friends abroad ask me the same question: "What has led up to the current financially hard situation in Greece?". I found this excellent article from NY Times called "Can Greeks Become Germans?", which summarizes the problem in a very detailed way. I'll quote some large sections here, for reference.
[...] Germany is the epitome of a country that made itself rich by making stuff. Greece, alas, after it joined the European Union in 1981, actually became just another Middle East petro-state — only instead of an oil well, it had Brussels, which steadily pumped out subsidies, aid and euros with low interest rates to Athens.
Natural resources create corruption, as groups compete for who controls the tap. That is exactly what happened in Greece when it got access to huge Euro-loans and subsidies. The natural entrepreneurship of Greeks was channeled in the wrong direction — in a competition for government funds and contracts. To be sure, it wasn’t all squandered. Greece had a real modernization spurt in the 1990s. But after 2002, it put its feet up, thinking it had arrived, and too much “Euro-oil” from the European Union went back to financing a corrupt, patrimonial system whereby politicians dispensed government jobs and projects to localities in return for votes. This reinforced a huge welfare state, where young people dreamed of a cushy government job and everyone from cabdrivers to truckers to pharmacists to lawyers was allowed to erect barriers to entry that artificially inflated prices.
European Union membership “was a big opportunity for development, and we wasted it,” explained Dimitris Bourantas, a professor of management at Athens University. “We also did not take advantage of the markets of the [formerly] socialist countries around Greece. And we also did not take advantage of the growth of the global economy. We lost them all because the political system was focused on growing public administration — not on [fostering] entrepreneurship, competition or industrial strategy or competitive advantages. We created a state with big inefficiencies, corruption and a very large bureaucracy. We were the last Soviet country in Europe.”
That is why, he added, that Greeks, when they move to the U.S., “unleash their skills and entrepreneurship” in ways that enable them to thrive in commerce. But here in Greece, the system encourages just the opposite. Investors here tell you that the red tape involved in starting a new business is overwhelming. It’s crazy; Greece is the only country in the world where Greeks don’t behave like Greeks. Their welfare state, financed by Euro-oil, has bred it out of them.
With the decline of Beirut and Dubai, Athens should have become the service center of the Eastern Mediterranean. Instead, Cyprus and Istanbul seized that role. Greece must not waste this crisis. While it has instituted some reforms in the last year, Prime Minister George Papandreou said to me, “What is most frustrating is the resistance in the system. How do you produce a change in culture?”
It will take a cultural revolution. And that can happen only if Greece’s two major parties come together, hold hands, and collectively force through a radical change in the governing culture from the top down. Without that, Greece will never be able to pay back its loans.
Update 6 Mar 2012: Following my respectful discource policy, I've annotated some flamebait parts of the comments on this thread. I don't like removing comments or moderating, so I chose to annotate and link to the relevant post where further information and discussion can take place.
-
Text

Brainstorming design mockups at summer seaside café
-
Keynote at the MeeGo Conference
I had the privilege to be invited to the opening keynote talk at the recent MeeGo Conference in San Francisco. Jim Zemlin, the Director of Linux Foundation, called me on stage to talk about MeeGo Localization and the acceleration of MeeGo's availability in dozens of markets around the world we achieved with Transifex.
Here's the full video clip of the talk we had (6 minutes):
-
SSD awesomeness
Psyched with the Intel SSD disk's performance: 238 MB/s on reads, 138 MB/s on writes. #wow

-
Test-wrapped development: Develop from within your tests
Here's something neat. Today I decided not to develop using the Django development server, but instead do that from inside my tests. This way I will work directly on my test database which runs with my test fixtures and when I'm ready, I'll just write the necessary assertions.
Previously I talked about rendering the test client's responses in the browser to view the results of your tests live, before choosing the correct assertions. This time I'm wrapping the code in a while loop to iterate over my development workflow.
This is something different than test-driven development. This way you don't run your tests for every development iteration, but rather you just "stuck" your test case until you like what you see in your code. Here's an example from a unit test:
from transifex.txcommon.tests.utils import response_in_browser def test_homepage(self): while True: resp = self.client['anonymous'].get('/') response_in_browser(resp, halt=False) # Loop control: ch = raw_input("Halted. [r]eload, drop to [s]hell or any other key to continue: ") if ch == 'r': continue; elif ch == 's': from IPython.Shell import IPShellEmbed; IPShellEmbed()() else: breakNow when I run the test, my browser opens up showing how my homepage looks like. I start tweaking the template, hit
rand view the page in the browser again. When I'm satisfied with what I see, I copy-paste from the browser some of the test I want to assert against and hit 's' to drop in a shell.I write my assertions there, in-place, with the test data initialized and ready to be asserted against. When I'm happy with those assertions, I just copy-paste them in the test case and remove the while statement and loop control code.
This type of testing & development works well for template testing. I'm not sure how this should be called. It's test-wrapped development or something.
Also note that the following config variables will be needed:
TEMPLATE_DEBUG = True CACHE_BACKEND = 'dummy://'
-
Rendering Django tests in your web browser
There are a number of levels you can test your Django project. You can test any Python method, your models, your views and even your templates. In the latter case, you're actually testing the rendered response of a view with a specific context. Most of the times, this result is HTML.
When I write my assertion, I often need to query for a particular string in the response's content. I end up opening ipython, print the result and try to find something in that mess.
This takes a lot of time, because the command-line window isn't the best HTML renderer in the world. Here's a simple method to take the response content and render it in a browser:
def response_in_browser(resp, halt=True): """Open a browser and render the response's content.""" import tempfile, webbrowser, time with tempfile.NamedTemporaryFile() as f: f.write(resp.content) f.flush() webbrowser.open(f.name) if halt: raw_input("Press a key to continue with your tests...") else: # Give the browser a chance to open the file time.sleep(1)And just call it from inside any test of yours:
response = self.client.get( reverse('myUrlName', args=['foo']) from txcommon.tests.utils import response_in_browser response_in_browser(response)Your browser will open for you:

One of the first issues you might face is seeing a style-less page. This happens becuase the test server isn't really a web server, and you're probably serving static files from something relative such as
'/site_media'. The solution is simple: Run a separate Django server and tweak your development-only static URL to something like:STATIC_URL = 'http://localhost:8000/site_media/This will trick the temporary window to show the test's HTML with the static files served from the server. Voilà:

You can then use your browser's browser's super tools such as 'View Source' and 'Inspect Element'.

-
Insufficiency
"The whys are many and the becauses few."
-- ltsampros
(photo by mushon)



