<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel>
	<title>Wolerized.com</title>
	
	<link>http://www.wolerized.com</link>
	<description>X-pect the Un-X-pected - Remi's spot on the web</description>
	<lastBuildDate>Fri, 09 Dec 2011 21:26:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/wolerized" /><feedburner:info uri="wolerized" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>The 10 steps to get support through IRC (plus 1 to stay on)</title>
		<link>http://feedproxy.google.com/~r/wolerized/~3/OwH0fU2g-YI/10-steps-get-support-through-irc-plus-1-stay</link>
		<comments>http://www.wolerized.com/tutorial/10-steps-get-support-through-irc-plus-1-stay#comments</comments>
		<pubDate>Sat, 27 Aug 2011 04:59:21 +0000</pubDate>
		<dc:creator>Remi_Woler</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[factoid]]></category>
		<category><![CDATA[featured]]></category>
		<category><![CDATA[help]]></category>
		<category><![CDATA[irc]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[support]]></category>
		<guid isPermaLink="false">http://www.wolerized.com/opinion/10-rules-get-support-through-irc-plus-1-stay</guid>
		<description><![CDATA[<p><p>The following content was originally published as <a href="http://www.wolerized.com/tutorial/10-steps-get-support-through-irc-plus-1-stay">The 10 steps to get support through IRC (plus 1 to stay on)</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>Even though the IRC protocol is several decades old, it’s still actively used and an invaluable resource to get support through. While OSS projects are better represented, there are lots of channels about closed source technologies and companies as well. This post isn’t intended to give you a primer on IRC, instead I’ll show you a couple of steps on how to get IRC to work for you.</p></p><p>The content above was originally published as <a href="http://www.wolerized.com/tutorial/10-steps-get-support-through-irc-plus-1-stay">The 10 steps to get support through IRC (plus 1 to stay on)</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>The following content was originally published as <a href="http://www.wolerized.com/tutorial/10-steps-get-support-through-irc-plus-1-stay">The 10 steps to get support through IRC (plus 1 to stay on)</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>Even though the IRC protocol is several decades old, it’s still actively used and an invaluable resource to get support through. While OSS projects are better represented (and I don’t mean just PHP based projects, I mean all kinds of OSS projects), there are lots of channels about closed source technologies and companies as well. This post isn’t intended to give you <a href="http://www.irchelp.org/irchelp/new2irc.html">a primer on IRC</a>, instead I’ll show you a couple of guidelines on how to get IRC to work for you.<!--break--></p>
<h3>1. Find the right channel</h3>
<p>First of all, you need to know where to find the people. If it’s an OSS project, most likely you will find it on FreeNode. There are other networks, but the open nature of FreeNode attracts a lot of OSS projects. Once you’re connected to the network, find a listing service. Traditionally, the /list command was created for this, but the huge amount of channels (think thousands) make it’s output useless. If a network is this big, it will have a dedicated lister service. On FreeNode, this is ‘alis’. Interact with Alis through ‘/msg alis help’. The most useful command: ‘/msg alis list * -topic *keyword*’. Replace ‘keyword’ with the name of the project you’re needing support with, and it will return a list of all channels that have that word in the topic. Read the topics, and decide which channel meets your needs the best.</p>
<h3>2. Read the sign on the door</h3>
<p>Once you found the channel, there’s 3 things you need to do, and all are equally important: 1) Join the channel, 2) Read the topic, 3) Read the onjoin notices. The information written in the topic and onjoin notice is put in such a prominent place for a reason: it’s important and everyone assumes you have read it. It will often have some basic channel rules, a link to FAQ’s, stuff like that. Rookie mistake #1: ask something that is spelled out in the topic. As you guessed: doing that will remove all benefit of the doubt that you actually want to put in any effort to get help, and will get you ignored pretty quickly.</p>
<h3>3. Don&#8217;t ask to ask in support channels, but do in community channels</h3>
<p>Okay, you found the channel, you joined, and you read the basic info. Now it’s time to ask a question. By the channel name and the topic, you should know if this is a so called ‘social’/‘community’ channel, or a support channel. If it’s a community: be pollite, and ask if you can ask a support question. A good line would be “Hey all, I’m trying to get mail working in WordPress, someone around willing to give me a hand? Or a suggestion where I can get support?”. It’s not a support question (no error or behavior), it’s generic, and you acknowledge you have read the rules and know IRC politeness. If it’s a support channel: do not ask to ask, the channel is there to ask questions (see also #4).</p>
<h3>4. Ask a meaningful question</h3>
<p>When you can ask a support question, ask a meaningful question that will actually get you what you want. Do you really want to know if someone else used feature X, or do you want an answer to the issue you’re running into and may happen in all kinds of components you didn’t mention? Do you really want to know if people are online, or rather have people give you the info you need? Most of the non-meaningful questions ask to set an expectation. If someone says they have experience with feature X, you will start talking to them, and try your best to get that specific person to help you out. But even if that person has used that feature, they may not know anything about your issue. The expectation has been set however, and it will put everyone back. Instead, ask a complete question, directed to anyone willing to answer (that is: don&#8217;t direct it to any person or group in particular). If someone knows and has time, they will respond. Why rule out people in advance, without even telling what your question is?</p>
<h3>5. Ask a complete question</h3>
<p>So, you’re going to ask an actual question. Do it right, and make it a complete question. Provide any information that is relevant. Not sure what’s relevant? Try the PEACE method:</p>
<blockquote><p>P -&gt; Pastebin: (use a pastebin for the following items)<br />
E -&gt; Expected (what did you expect to get?)<br />
A -&gt; Actual (what are you getting instead?)<br />
C -&gt; Code (all relevant code. Strip out passwords, but don’t leave out code. Include function and class definitions, give the complete picture)<br />
E -&gt; Errors/Exceptions (the exact error or exception you get, in full. Basically: how you can tell something is wrong).</p></blockquote>
<p>Too many people forget to mention a lot of things. This makes your question less answerable, as people cannot read your mind, nor read your screen. Don’t give someone who knows the answer the chance to ignore your question, because it isn’t clear what you have an issue with, or what is happening. If people need to pull all bits of info out of you, they will quickly give up. Make it as easy as possible for them to answer your question. Especially with developers, it will be way easier (and more fun) to help someone out, than to ignore a question, assuming it doesn&#8217;t take all kinds of effort to get all the bits and pieces together.</p>
<h3>6. Don&#8217;t be offended by an automated response</h3>
<p>Now that your question has been asked, it’s time for responses. Don’t be surprised (or even offended) if you get an automated response. Pretty much every support channel has a bot that responds to commands and spits out so-called ‘factoids’: automated answers. You’re not the only person in the world, and chances are high someone else ran into the same issue before you. When an issue gets asked a lot, factoids are added to the bots. These answers not only save the responders from a lot of repetitive typing, it will also make sure you get complete information, without typos. Factoids are often tuned over time, to become “the best answer” for your question. They may have more information, you can ignore that. So when you get a factoid, don’t think: “they think I’m not even worthy of a real response”, think: “hey, someone else had this too, and this info helped them, so it should help me too. I get a quick response, tuned over time, without typos”. A simple example: if you ask for the ZF2 release date in #zftalk, you will get a factoid that says:</p>
<blockquote><p>“Any current build is *not* suitable for anything near production, using it is unsupported and will drive you mad. The current release schedule expects an Architecture Preview at ZendCon 2011, and no beta release before 2012. Progress is documented at [link], and please ask in #zftalk.dev if you want to know more about helping development”.</p></blockquote>
<p>It’s the most complete answer that can be given right now, and you get the benefit of all the info (even more than you asked for), without typos or someone forgetting the link. Cool, eh?</p>
<h3>7. Be patient, and smart</h3>
<p>Chances are, you may have to wait a bit before you get an answer. When that happens: first of all, be patient. Is the channel (very) silent? You probably hit an off-time, and your best bet is to wait 15-30 minutes, and then ask when the on-time of the channel is (when most people are active). From my experience, EU &amp; US business hours are the most active hours in most channels. If other people are talking, but not about your question, start poking at your issue and question. The more info you can give, the more chance someone knows an answer. You probably have a generic idea of where you need to look, so start poking there. It shows you aren’t lazy, and may give the piece of information that someone needed to realize they know the answer. If you can’t tell more, just wait. Only repost your question when it’s at least a 100 lines up (then people coming in later, or not paying attention at the time you posted, won’t see it anymore). The busier the channel is at the moment, the more lines you wait. You don’t want to annoy the regulars by reposting the same thing over and over again. If the channel hits 100 lines in less than 15 minutes, wait at least 15 minutes. Sure, you want your question answered as soon as possible, but giving the regulars the impression you’re demanding and/or impatient will only scare them off.</p>
<h3>8. Give the channel some slack</h3>
<p>When people start responding, stay polite and cut them some slack. Chances are great they have been answering the same few questions all day, for the past few weeks. This may get some a bit cranky, especially if your question isn’t complete, correct, or you “”break”” other channel guidelines. This is called support burnout, and will affect even the best of people (or myself). There is no excuse for it, but it happens. It’s generally caused by people “losing” control of time, by thinking they can help someone with just one or two lines, but somehow end up in endless conversations. Even though there is no excuse, you won’t help your case by “fighting” it. Stay polite, cut them some slack (general rule: they more than deserve that), and get what you need. If you want to do the right thing: look for channel staff (/msg chanserv access #channel list) and pm an active one mentioning you suspect support burnout. Generally spoken, they will communicate with the person in private, and make them aware of the issue. This way, you don’t appear as someone telling the regulars what to do all smirky and conceited, you get your answer, and the channel is helped by having the channel staff handle the support burnout.</p>
<h3>9. Stick around</h3>
<p>Once your question is answered, feel free to stick around. In most of the channels, at least half of the participants are doing the exact same thing. It’s called ‘lurking’, and can teach you a lot. And who knows, maybe you see a question you can answer, returning the favor. Hanging around in an IRC channel can take as much time as you allow it, so keep track of your other responsibilities. Often, the most brilliant minds (including the actual developers of the app) hang out in the channel, so imagine the fountain of knowledge you can tap into. And all you have to do is… well, read. Just watch your IRC client, and see the messages roll in.</p>
<h3>10. Find the community channel</h3>
<p>It’s very easy to make new friends on IRC. It may seem unlikely at first, when you’re just watching multiplayer notepad, but it’s very easy to get the hang of it. If you’re in a support channel: ask what the community channel is, and keep the support channel for support questions only. In the community channel, (most of) the same people hang out, and there anything goes (as long as it’s legal and within the rules of the network). You wouldn’t be the first who got a new job through IRC, make new friends for life, or find your soulmate (I am not making this up, I know a couple who met on IRC, and are now happily married).</p>
<h3>When things don&#8217;t go as planned&#8230;</h3>
<p>While unlikely, it is possible you run into a bad situation on IRC. If you notice the channels temperature is rising, and people are getting mean or vicious: choose the gentlemen route. Does it not involve you? Stay out of it. Only thing you can do is wait for it to calm down, and/or contact channel staff in pm. If it does involve you: stay the gentlemen, and try to “agree to disagree”. Since there is only text involved, it’s very easy to attribute certain emotions or opinions to people that they may not have at all. Don’t let your ego get the best of you, and let things calm down.</p>
<p>Was it really bothering you? Discuss it with that person or channel staff a couple hours later, when the emotions have cooled down. Is a channel staff member involved? Know that staff will usually back each other during “hot” situations (to form a single “voice”), and discuss it in a private channel, accessible to staff only. Wait the same couple hours, or day, and discuss it when everything is cooled down. Choose another staff member if necessary. In general: staff members are chosen because they’re smart and reasonable people, but they are humans too. During a “hot” situation their first priority will be to defuse the situation, and a proper discussion is not helping at that time. Wait for everything to cool down, and you’ll find that they are very reasonable and fair people.</p>
<p>When bringing it back up: be careful in the words you pick. Don’t be mistaken for someone who wants to get his right at all cost, or who needs to have the last word, but state your intentions and expectations properly, and be prepared to drop it if it hasn’t cooled down enough yet. See bringing it back up as carrying a container of liquid nitroglycerin. If you take a political-correct and empathic route, you can make things better. But too much careless movements, and things will blow up in your face, creating a situation worse than what you were trying to correct.</p>
<p>If things really escalate, you may happen to find yourself kicked or banned from the channel. Should this happen: think hard if you want back. If you do, wait a couple days, even a week, and see if your access is restored, or ask channel staff for it to be restored. Unless you have a history, most channels will let you back in. Take the events as a lesson, and just stay away from that topic. Chances are high that this particular channel is not (entirely) what you were looking for, but with the millions of channels, there must be a channel that suits your mindset better (for this particular topic). Simple example: strongly (and repeatedly) debating the same-sex-marriage-bans will get you banned in most social channels, even if the staff members share your views. Stay away from that topic in that particular social channel, and find a channel dedicated to politics (or even same-sex-marriage related channels) to discuss your views regarding this particular topic. You can be in over 50 channels at once, and if you use a bit of simple reasoning, you won’t get banned anywhere.</p>
<h3>It works&#8230;</h3>
<p>I’ve been on IRC for well over a decade, and can tell you from experience that if you keep the “netiquette” in mind a bit, you have the chance to tap into huge pools of knowledge. I’ve gotten a job through IRC, I’ve met plenty of people who are now friends through IRC, and have solved countless issues I ran into because some smart people happened to be around and were kind enough to share their wisdom. Basically: if you’re not on IRC, you’re making your life as a developer a lot harder than it needs to be. So, what are you waiting for?</p>
<p>~RW</p>
<p>TL;DR: Be patient and polite, provide as much relevant info as you can, make answering your question so easy ignoring it will take more effort to ignore it</p>
<p>The content above was originally published as <a href="http://www.wolerized.com/tutorial/10-steps-get-support-through-irc-plus-1-stay">The 10 steps to get support through IRC (plus 1 to stay on)</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><img src="http://feeds.feedburner.com/~r/wolerized/~4/OwH0fU2g-YI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wolerized.com/tutorial/10-steps-get-support-through-irc-plus-1-stay/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.wolerized.com/tutorial/10-steps-get-support-through-irc-plus-1-stay</feedburner:origLink></item>
		<item>
		<title>And the next employer is…</title>
		<link>http://feedproxy.google.com/~r/wolerized/~3/xnmOf-39Cxc/and-next-employer</link>
		<comments>http://www.wolerized.com/blog/and-next-employer#comments</comments>
		<pubDate>Mon, 30 May 2011 20:23:58 +0000</pubDate>
		<dc:creator>Remi_Woler</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[Barracuda]]></category>
		<category><![CDATA[opening]]></category>
		<category><![CDATA[resume]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[Zend]]></category>
		<guid isPermaLink="false" />
		<description><![CDATA[<p><p>The following content was originally published as <a href="http://www.wolerized.com/blog/and-next-employer">And the next employer is&#8230;</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>After the last post, weird things started happening. But, the funemployment is over, I signed a new contract. And I found some positions that are still open.</p></p><p>The content above was originally published as <a href="http://www.wolerized.com/blog/and-next-employer">And the next employer is&#8230;</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>The following content was originally published as <a href="http://www.wolerized.com/blog/and-next-employer">And the next employer is&#8230;</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>After the last blog post weird stuff started happening. For the first time in my life, I had companies asking me to work for them, instead of me looking for positions and applying to those. While I did also approach a couple companies myself, those that approached me were favored a bit more. Roughly a month after the first post, I had a shortlist of 7 positions which were all awesome enough to work for. So then the elimination process began, as I have not yet figured out how to clone myself. After a lot of difficult choices, and the realization that I’m not signing for life, I finally came up with a number 1. Quickly thereafter, I received an offer that worked for me, which is now signed by both parties.<!--break--></p>
<p>With a little pride, I’m happy to announce that as of Tuesday May 31st, I will be working for <a href="http://www.barracudanetworks.com/ns/company/">Barracuda Networks</a>, specifically for their Labs department. As a lead web developer, I will be working on projects like <a href="http://www.barracudalabs.com/">www.barracudalabs.com</a>, <a href="http://www.profileprotector.com/">www.profileprotector.com</a>, <a href="http://www.tweetgrade.com/">www.tweetgrade.com</a>, <a href="http://www.tweetbrawl.com/">www.tweetbrawl.com</a>, <a href="http://www.purewiretrust.com/">www.purewiretrust.com</a> and others. With a mix of some nerves and a lot more excitement, I’m looking forward to next Tuesday.</p>
<p>With the decision came also the consequence that I had to disappoint the other 6, which was quite hard, as they were very appealing too. However, with permission and in coordination with these companies, I can share a couple of these positions, so they can hopefully find someone as well.</p>
<p>First of all: Enrise, <a href="http://www.enrise.com/over-enrise/jobs/vacature-ervaren-php-webnerd/">an onsite position in Amersfoort for an experienced PHP webnerd</a>. This is a very awesome company (ask @skoop if you don’t take my word for it) and came in as a very close second. If you fit the description, and can do the commute, you should definitely pay them a visit.</p>
<p>Next: Oracle, specifically the MySQL team, is looking for <a href="http://www.oracle.com/us/corporate/careers/index.html">several support engineers</a>. If you love to talk and help out people as their last resort, this could be an awesome position for you. They are looking for multiple people across the whole world, and are very eager to talk to you if you know your way around MySQL.</p>
<p>Finally, one that came in after I had already signed with Barracuda, so I did not give them a thorough review, but the guy that approached me seemed a very pleasant person to work for. Nimbuzz is <a href="http://www.nimbuzz.com/en/jobs/00041">looking for a DBA</a> and PHP coders, all onsite in Rotterdam. Contact them through the site for more info.</p>
<p>For all of these go: If I know you properly, feel free to find me, and I&#8217;ll give you an introduction.</p>
<p>Now that the search is over, and I’m about to start the new position, I’d like to thank everyone that kept an eye out for me, or somehow propagated the news that I was looking. Specifically I want to thank Cal Evans, for all the support he has given in this transition. Thanks buddy, you rock!</p>
<p>~RW</p>
<p>The content above was originally published as <a href="http://www.wolerized.com/blog/and-next-employer">And the next employer is&#8230;</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><img src="http://feeds.feedburner.com/~r/wolerized/~4/xnmOf-39Cxc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wolerized.com/blog/and-next-employer/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://www.wolerized.com/blog/and-next-employer</feedburner:origLink></item>
		<item>
		<title>Goodbye Zend</title>
		<link>http://feedproxy.google.com/~r/wolerized/~3/8IVW4CJuwRA/goodbye-zend</link>
		<comments>http://www.wolerized.com/blog/goodbye-zend#comments</comments>
		<pubDate>Wed, 30 Mar 2011 16:23:45 +0000</pubDate>
		<dc:creator>Remi_Woler</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[manager]]></category>
		<category><![CDATA[telecommuting]]></category>
		<category><![CDATA[termination]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[Zend]]></category>
		<guid isPermaLink="false" />
		<description><![CDATA[<p><p>The following content was originally published as <a href="http://www.wolerized.com/blog/goodbye-zend">Goodbye Zend</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>As most of you probably know, I’ve been working for Zend Technologies since medio 2007 (first DevZone, then eBiz team). But to all things comes an end, and I have signed the “Termination agreement” that Zend handed me, which means I will no longer be working for Zend as of May 2nd, 2011. This also means I’m open for new opportunities. Let the funemployment begin.</p></p><p>The content above was originally published as <a href="http://www.wolerized.com/blog/goodbye-zend">Goodbye Zend</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>The following content was originally published as <a href="http://www.wolerized.com/blog/goodbye-zend">Goodbye Zend</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>As most of you probably know, I’ve been working for Zend Technologies since medio 2007 (first DevZone, then eBiz team). But to all things comes an end, and I have signed the “Termination agreement” that Zend handed me, which means I will no longer be working for Zend as of May 2nd, 2011. This also means I’m open for new opportunities.</p>
<p>The opportunity at Zend was my shot at playing with the big boys. There have been fun times, frustrating times, moments I will cherish forever and moments I have already forgotten. I have learned, a lot, but most importantly got to meet and work with amazing people, some of which I now consider good friends. But besides the good things, there have also been challenges, which have been ultimately the reason why Zend and I are parting ways. Ever since Matthew and Daniel left the team, there has been not much “team chemistry” between me and any of the developers of the team. I’m not sure if this is due to the cultural differences (all remaining developers were Israeli) or personal differences. Of course, the distance (they work locally in the office, I work from home, on a different continent, some 500 miles away) didn’t help in that either. Then communication becomes crucial, and if neither party is fully proficient in a common language, then there you have your challenge. The chemistry was there between my manager and me, but after he moved on to a job description that did not include managing the team I was in, the challenge became an issue.</p>
<p>Besides that, the job description itself gave me less and less of a challenge, ever since the initial (huge) project was completed and implemented. Over the years, tasks became to appear dull, and felt pointless and repetitive. It felt like “holding the fort” instead of accomplishing something or even making progress. Both Zend and I have attempted several things to resolve this, but no real change was accomplished in this. I can only conclude the description and me weren’t a good match, and at some point you just got to realize it doesn’t work out. I have thought about quitting a lot of times, but the awesome people and a feeling of betrayal to them when I would leave kept me at Zend. Now that Zend also can’t justify the costs anymore, it’s time to move on.</p>
<h3>Credits</h3>
<p>Now that the moment of leaving is defined, I can only feel thankful to dozens of people, who made my life and work fun, worth waking up for and going the extra mile when it was needed. I’d like to name a few by name, who caused an even bigger impact than the already-awesome “average” Zender: Thank you:</p>
<ul>
<ul>
<li>Boaz Ziniman, for trying everything in your capabilities to keep me happy</li>
<li>Cal Evans, for giving me a chance, and being such an awesome friend and mentor</li>
<li>Matthew Weier O’Phinney and Daniel Berstein for being such an awesome friend, mentor and teammate</li>
<li>Nili Gafni, Revital Hasenfratz, Shiry Benshar, Moira Cabrisy, Beth Gomez, Debbie Ottersteter, Avigail Ofer and Katja Reck, for giving me such good times and fun that everything else was worth it. If I could choose to work with you again, I’d sign without hesitation.</li>
</ul>
</ul>
<p>I could probably list every Zender here, had I worked with them more closely. I don’t know how they do it, but I don’t have hard feelings against anyone there.</p>
<h3>The future…</h3>
<p>And with that said, I’d like to make public that I’m now actively looking for new opportunities. I will not start freelancing (yet); while the frequent change in projects and the customer interactions sounds attractive, for now I still want the certainty of a long-term (6mo or longer) contract with a single employer. I am open for both on-site (Netherlands/The Hague,Utrecht,Rotterdam area) and remote positions, and even relocating is an option albeit that I’d like to find out first that the “relation” works, before the world gets turned upside down.</p>
<p>My talents lie in finding creative solutions that solve problems for customers, and I get the most satisfaction out of implementing solutions that save them time and/or make their lives easier. At Zend, the most fun projects were where through casual conversation or “watching customers work” I identified kinks in human/process interaction and was able to suggest and implement improvements, often trivial, that freed up customers (internal) to use their talents to the full extend instead of wasting it on no-brain-required tasks or going out of their way to conform to “the system”. My ability to see things from a customer POV together with quick learning usually get me the compliment of being fast, and the thanks I get for improving something people didn’t even identify as an issue is so incredibly rewarding. My whole life I have worked with customers in some way or another, be it in retail sales (shop manager), 3rd line technical support or development, and I can’t imagine a job where I wouldn’t interact with customers, internal or external. I guess I’m not so much a real developer, but more a solutions provider, and code is just a tool to make people’s lives better. Apparently I’m pretty good at that, judging by these quotes of previous managers:</p>
<blockquote><p>“As a matter of fact, I’ve got to be pretty insane to have handed you off to Boaz, you are the best contractor I’ve had.” &#8211; Cal Evans, Resume review 2007</p></blockquote>
<blockquote><p>“You are the most passionate developer I have worked with” &#8211; Boaz Ziniman, performance review 2010</p></blockquote>
<p>But I can only be good and productive in a good environment, so I am looking for a company/team that can define itself with keywords as “social” and “friendly spirit”. Communication is crucial to me, without “watercoolers” (virtual or not) I end up in a vegetative state. A high salary or a raise is fun for a week, but friends and social interaction (virtual or not) keep me happy on a day-to-day basis. Besides that, I need a target in my job description. Stuff like deadlines, roadmaps, goals, etc. A job description that can be summarized as “water-threading” isn’t suited for me; I get certainty and security out of being able to measure myself against defined expectations.</p>
<p>Should you have any questions, or maybe even have or know of a suited opening, feel free to shoot me an email at remi(a)wolerized.com (UPDATE: I&#8217;ve <a href="http://www.wolerized.com/blog/remi-woler/and-next-employer">signed with Barracuda Networks</a>). In case you’re a “headhunter/recruiter”: If you can only refer to the company as “a client”: don’t even bother, I won’t reply to your emails.</p>
<p>Thanks again to everyone, Zender or not, for making this time worthwhile. It’s not the blogpost I had in mind after this silence, and it’s a lot longer than expected, but I do wish you all the best in your current position and any future endeavors. I hope we stay in touch, and maybe our paths will cross again in the future. I feel blessed for your companionship, and I hope to update you soon with where I will be working next.</p>
<p>~RW</p>
<p>The content above was originally published as <a href="http://www.wolerized.com/blog/goodbye-zend">Goodbye Zend</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><img src="http://feeds.feedburner.com/~r/wolerized/~4/8IVW4CJuwRA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wolerized.com/blog/goodbye-zend/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.wolerized.com/blog/goodbye-zend</feedburner:origLink></item>
		<item>
		<title>Automating form creation with Zend_PDF</title>
		<link>http://feedproxy.google.com/~r/wolerized/~3/XKUQhm5BMTo/automating-form-creation-zend-pdf</link>
		<comments>http://www.wolerized.com/tutorial/automating-form-creation-zend-pdf#comments</comments>
		<pubDate>Thu, 17 Jun 2010 08:02:47 +0000</pubDate>
		<dc:creator>Remi_Woler</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[grid]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zend_Pdf]]></category>
		<category><![CDATA[zf]]></category>
		<guid isPermaLink="false" />
		<description><![CDATA[<p><p>The following content was originally published as <a href="http://www.wolerized.com/tutorial/automating-form-creation-zend-pdf">Automating form creation with Zend_PDF</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>For my job, I need to fill out a form monthly. Till a short while ago, I opened Microsoft Publisher for this, filled out the fields, saved, exported as PDF file and finally mailed the form. Given that the contents of the form are fully computable in 99% of the cases, there had to be a way to automate it. With Zend_PDF to the rescue, automating gets easy. Read on to see how.</p></p><p>The content above was originally published as <a href="http://www.wolerized.com/tutorial/automating-form-creation-zend-pdf">Automating form creation with Zend_PDF</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>The following content was originally published as <a href="http://www.wolerized.com/tutorial/automating-form-creation-zend-pdf">Automating form creation with Zend_PDF</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>For my job, I need to fill out a form monthly. Till a short while ago, I opened Microsoft Publisher for this (the form was designed in this app), filled out the fields, saved as .pub file, export as PDF file and finally mailed the form. Given that the contents of the form are fully computable in 99% of the cases, there had to be a way to automate it. After some digging around, I settled on a work-flow where I would create a PDF of an empty form once, use that as a template and use Zend_Pdf to &#8216;paste&#8217; the text on top of it, saving the end result as a new PDF.</p>
<p>While you do have a nice empty form, where you can easily visually identify where the content needs to go, the computer lacks eyes and only knows how many points there are in your page. To get the text pixel perfect (well, point perfect technically), you will have to try a lot, and optimize on the next run. Repeat a 100 times (depending on the amount of content, and how many fields you have).</p>
<p>To aid myself in getting a good start, I decided I needed to have a visual grid on the form, so I could get a rough idea of where what content needed to be placed. The code for that is as follows:</p>
<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$input</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/tmp/empty-form.pdf'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$output</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/tmp/finished-form.pdf'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Zend/Pdf.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span> <span style="color: #339933;">=</span> Zend_Pdf<span style="color: #339933;">::</span><span style="color: #004000;">Load</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$input</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Open $input file as a new Zend_Pdf document</span>
&nbsp;
<span style="color: #000088;">$page</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pages</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//we have only 1 page, so we can hard-code this</span>
&nbsp;
<span style="color: #000088;">$page</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addFont</span><span style="color: #009900;">&#40;</span>Zend_Pdf<span style="color: #339933;">::</span><span style="color: #004000;">Courier</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">9</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//use a fixed width font at size 9</span>
&nbsp;
<span style="color: #000088;">$width</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$page</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getWidth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$height</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$page</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getHeight</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$n</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$n</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #000088;">$height</span><span style="color: #339933;">;</span> <span style="color: #000088;">$n</span> <span style="color: #339933;">+=</span><span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$m</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$m</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #000088;">$width</span><span style="color: #339933;">;</span> <span style="color: #000088;">$m</span> <span style="color: #339933;">+=</span> <span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$page</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">drawText</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">ceil</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$n</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'-'</span> <span style="color: #339933;">.</span> <span style="color: #990000;">ceil</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$m</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$m</span><span style="color: #339933;">,</span> <span style="color: #000088;">$n</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//write the x and y positions / 100 (else the page is too crowded) at position x and y)</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">save</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$output</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>
<p>When you open this PDF, it shows numbers like &#8217;0-0&#8242; to &#8217;8-5&#8242; on your page (if you use A4 format, else your end numbers can differ, but the idea is the same). With these codes, you will spot immediately that Zend_Pdf starts in the bottom-left corner, instead of at the top-left. Remember this for off-setting! Now that you have the rough offsets (multiply the digit by 100 to get the points offset), you can use your eyes or a ruler to get a close idea of at which x and y position your content needs to appear. With a couple of tries per field, you should now have the content exactly where it should be.</p>
<p>But then there is variable content&#8230; For left-aligned text, you can use a substr() call, to make sure the text fits in the allotted space. Other alignments are harder. For right-alignment and center-alignment, you will need to know how much points a character is wide. Luckily, we have Google for the rescue, and others have done the calculations for us. In the case of Courier, we quickly find that a character is &#8217;0.6 * fontheight(size)_in_points&#8217;. So, a fontheight (or fontsize) of 9 means the character is 5.4 points wide. For left alignment, this gives the following offset:</p>
<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$x</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">452</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//random x for demonstration - text will have to end at this position</span>
<span style="color: #000088;">$y</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">180</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//random y for demonstration</span>
<span style="color: #000088;">$foo</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'foobar'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">drawText</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$foo</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x</span><span style="color: #339933;">-</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$foobar</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color:#800080;">5.4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>
<p>If you view the outputted PDF, you will see that the text starts strlen($foobar) characters before point $x, and will end exactly at point $x. Isn&#8217;t computing a good thing?</p>
<p>Now center-alignment. With the above code, you can probably already guess it, but just for completeness sake:</p>
<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$x</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">452</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//random x for demonstration - this is the exact middle of the content area</span>
<span style="color: #000088;">$y</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">180</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//random y for demonstration</span>
<span style="color: #000088;">$foo</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'foo'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$test</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'o'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">drawText</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$test</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x</span><span style="color: #339933;">-</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$test</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color:#800080;">2.7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//position text 'length*half_character_width' before the exact center</span>
<span style="color: #000088;">$y</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">170</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// line below previous $y</span>
<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">drawText</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$test</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x</span><span style="color: #339933;">-</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$foobar</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color:#800080;">2.7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$y</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>
<p>If you view the outputted PDF, you will notice that the o of $test and the first o of $foobar are exactly below each other. The f and the last o align at (respectively) the left and the right of the center. Perfect alignment. Since this logic may be a bit harder to grasp, here&#8217;s the logic in human terms:</p>
<p>Imagine the center of the content area as a vertical line. Any size on the left has to be the exact same size on the right:<br />
1 char: We offset by -half_a_char, so the first half of the character is before the line, the second half is after the line -> perfectly centered.<br />
2 char: We offset by -2*half_a_char = -1char, so the first character is before the line, the second is after the line -> perfectly centered.<br />
3 char: We offset by -3*half_a_char = -1.5char, one and a half char is before the line, one and a half after the line -> perfectly centered.<br />
etcetera, etcetera.</p>
<p>With 2 hours and close to a 100 tries, I automated the creation of the form, including a small web-form where I can select values from a drop-down list in case the form does vary this one time. With this effort, I saved myself roughly 200 EURO in bi-annual license costs (difference between 2 Microsoft Office packages &#8211; whether or not the package includes Publisher (and Access)), and 15 minutes of time per month. The generated PDF get&#8217;s moved to the general NAS, together with all the other iterations of the form. From there, I can attach it to an email and send it off.</p>
<p>I hope this write-up helps you in any way. If it does, please leave a comment below. If you have any questions, feel free to contact me.</p>
<p>~RW</p>
<p>The content above was originally published as <a href="http://www.wolerized.com/tutorial/automating-form-creation-zend-pdf">Automating form creation with Zend_PDF</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><img src="http://feeds.feedburner.com/~r/wolerized/~4/XKUQhm5BMTo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wolerized.com/tutorial/automating-form-creation-zend-pdf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.wolerized.com/tutorial/automating-form-creation-zend-pdf</feedburner:origLink></item>
		<item>
		<title>Really? Are we the idiots?</title>
		<link>http://feedproxy.google.com/~r/wolerized/~3/qi7kPK5ztmM/really-are-we-idiots</link>
		<comments>http://www.wolerized.com/opinion/really-are-we-idiots#comments</comments>
		<pubDate>Thu, 18 Feb 2010 01:59:26 +0000</pubDate>
		<dc:creator>Remi_Woler</dc:creator>
				<category><![CDATA[Two Cents]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[featured]]></category>
		<category><![CDATA[funkatron]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[ui]]></category>
		<guid isPermaLink="false" />
		<description><![CDATA[<p><p>The following content was originally published as <a href="http://www.wolerized.com/opinion/really-are-we-idiots">Really? Are we the idiots?</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>Ed Finkler makes two points in his post "We're the Stupid Ones: Facebook, Google and Our Failure as Developers". 1: Google is making a mistake in indexing. It doesn't select the most relevant page as the first result, but a somewhat relevant page, which confuses users. 2: developers should create UI's which behaves the way the user naturally expects. I'd like to give my opinion on both.
</p></p><p>The content above was originally published as <a href="http://www.wolerized.com/opinion/really-are-we-idiots">Really? Are we the idiots?</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>The following content was originally published as <a href="http://www.wolerized.com/opinion/really-are-we-idiots">Really? Are we the idiots?</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>This article is a response to Ed Finker (AKA funkatron)&#8217;s blog post: <a href="http://funkatron.com/site/comments/were-the-stupid-ones-facebook-google-and-our-failure-as-developers/">&#8220;We&#8217;re the Stupid Ones: Facebook, Google and Our Failure as Developers&#8221;</a>. If you have not read it yet, please read it first, as this post won&#8217;t make much sense if you haven&#8217;t read it. Ed Finkler makes two points in his post. First of all, a small one, which tells us that, in his opinion, Google is making a mistake in indexing. It doesn&#8217;t select the most relevant page as the first result, but a somewhat relevant page, which confuses users. Secondly the main point: developers should create UI&#8217;s which interprets user input the way the user naturally would expect it. I&#8217;d like to give my opinion on both.</p>
<h2>Google&#8217;s algorithm</h2>
<p>First of all, the Google mixup. Ed Finkler wonders how this is possible, but in reality, it fails because it tries to adhere to the main point of Ed Finkler&#8217;s post. Users have over the past years moved from finding information to finding answers. In the first years, search engines catered a problem where the internet grew too large to remember all the pages. Search engines were used when other tools (like bookmarks) failed, or when you were researching a subject, and wanted to find all pages that where relevant to your subject. In the later years, usage of search engines changed from being a last resort or a research tool, to being the primary way to navigate the web. You don&#8217;t have to use bookmarks, you don&#8217;t have to remember URL&#8217;s, you just enter a question, and the almighty Google answers. In the last couple of years, the &#8216;social web&#8217; started to arise, and search engines went with it. It doesn&#8217;t matter what has been written, the here and now is what matters. Therefor, a page like <a href="http://www.readwriteweb.com/archives/facebook_wants_to_be_your_one_true_login.php">ReadWriteWeb</a> is more relevant in Google&#8217;s algorithm than Facebooks own result. It&#8217;s been changed recently, it&#8217;s being referenced on web2.0 platforms (twitter, blog comments, etc), so it must be the new hot thing. Way more relevant than an ages old page where nobody talks about, and nobody links to. Google tries to interpret natural user expectations, and therefor fails to give what users expect naturally.</p>
<p>Which brings us to the main point: developers should write UI&#8217;s that work the way a user naturally expects. Let me get the record straight right away: I strongly disagree. Here&#8217;s my reasoning:</p>
<h2>What a user expects</h2>
<p>The reasoning and the expectations of a human being depends on thousands of things. Even partners, together for decades, still have issues now and then with interpreting the significant others&#8217; expectations. No company, no matter how many people work there, and how good their researches are, will ever be able to come close to a trustable way of determining what a user naturally expects. Even if, under perfect circumstances, it can be captured in an algorithm, it will fail to work as planned as soon as any of the circumstances changes. Let me give you a clear example. Let&#8217;s say we have a user Joe, and we have a search engine for pictures. Joe is a single male, 26 years old, and although being raised with christian values, he doesn&#8217;t spend much time on his religion nowadays. He goes to church on sundays, but that&#8217;s it. Right. Now Joe searches for pictures of &#8216;beaches in Europe&#8217; on a saturday. He gets a couple of pictures, and on one of them, a woman can be seen sunbathing topless in the distance. Joe kinda likes this, and doesn&#8217;t have an issue with it. On the contrary, the destination shown just gained a couple of points to be the choice for his next summer break. When Joe&#8217;s mom comes over the next day, he wants to show her where he&#8217;ll be going next summer break. The same image comes up. Suddenly, Joe is disappointed in the service. That&#8217;s not what he expected. What changed? Now it&#8217;s Sunday. And because of his childhood, and enforced by the presence of his mom, nudity just isn&#8217;t acceptable on a Sunday.</p>
<p>Let&#8217;s go back a bit in time. A user boots up the pc with a floppy disk still in it. The disk contains some documents, nothing else. Is it naturally expected that the pc tries to boot from it? No. But it&#8217;s consistent. Run into it once, and you can fix it every time it happens. Within 10 times, you make it a habit to remove disks from the drive when you shut down the pc. To shutdown a computer, you click start, then shutdown. Is it naturally expected? No. Does it work as expected? Yes. You click once start, find the shutdown icon, and you can shutdown every pc running Windows. It&#8217;s consistent. Yes, it needs a manual, yes, you need to learn how to use it, but then it works flawlessly. UI&#8217;s should have a consistent design, which always works the same. No matter if it&#8217;s Sunday, if you&#8217;re atheist, or had a rough day. Take for example a QWERTY keyboard. Naturally expected would be ABCDEF. It&#8217;s not, for historical reasons (to gain the highest speed on a typing machine, while minimizing the risk 2 hammers cross). Users were always told: this is how you interface with the system, and they accepted that. And it works. Yes, there&#8217;s a learning curve, but it always works. You adjust your expectations to the system, while you learn how to use it. Once you get the hang of it, you can blindly trust on it.</p>
<p>The reason why we can have such issues as detailed in Ed Finkler&#8217;s post, is because we spoil the users too much. Research has shown that for the non-ICT&#8217;ers, Google is generally considered to be an acronym to the internet itself, or as a browser (<a href="http://googlesystem.blogspot.com/2009/06/browser-is-search-engine.html">source</a>). Nowadays, you don&#8217;t have to understand the principle of the internet. You don&#8217;t have to know the difference between Google and a browser. Everything gets figured out for you. And if you enter &#8216;Facebook login&#8217; in the &#8216;go&#8217; window, it will go to the login page of Facebook. You see a login window, so you enter a username and a password. A 3 year old could do it. Why would it be any different tomorrow, when another page gets ranked higher? Why would it be any different when you click the link in your mail to answer &#8220;Facebook&#8217;s&#8221; request to validate your account again? Yes, the system administrator at your job always stresses that you have to check the URL, when he cleans out your system of viruses again, but you don&#8217;t even know what a URL is. You notice weird transactions on your credit card statement, but that&#8217;s your own fault. Your friends in the bar had told you that buying over the internet is the stupidest and unsafest thing to do.</p>
<h2>We are the idiots</h2>
<p>Non-ICT&#8217;ers generally do not know how to value information found on the internet. They don&#8217;t realize that anyone can put anything online. You just type a question, and the internet provides an answer. Google is optimized for usages like that, as that&#8217;s how the majority of the people use it. People used to research, read multiple opinions, then finally make their own. Nowadays, they just want the most recent, most relevant answer, and that&#8217;s the truth, the whole truth and nothing but the truth.</p>
<p>Yes, Ed Finkler is right. We are the idiots. Not because we can&#8217;t make a system that works the way a user naturally expects, but because we try to do that, even though it&#8217;s impossible, as long as there is no mind reader connected to USB. It&#8217;s the equivalent of trying to build a car you don&#8217;t need a drivers license for. It&#8217;s easy to drive, but it doesn&#8217;t teach you the rules of the road. Our client wants something that works without training, we build that, and then run into uneducated users who ask &#8220;stupid questions&#8221;. I mean, did you know that a *wireless* router needs to be *wired* to a power outlet *and* to the internet?</p>
<p>~RW</p>
<p>The content above was originally published as <a href="http://www.wolerized.com/opinion/really-are-we-idiots">Really? Are we the idiots?</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><img src="http://feeds.feedburner.com/~r/wolerized/~4/qi7kPK5ztmM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wolerized.com/opinion/really-are-we-idiots/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.wolerized.com/opinion/really-are-we-idiots</feedburner:origLink></item>
		<item>
		<title>Getting a complex MySQL resultset in CSV format on a remote client (*NIX)</title>
		<link>http://feedproxy.google.com/~r/wolerized/~3/W_G5xxSTl4M/getting-complex-mysql-resultset-csv-format-remote-client-nix</link>
		<comments>http://www.wolerized.com/tutorial/getting-complex-mysql-resultset-csv-format-remote-client-nix#comments</comments>
		<pubDate>Fri, 05 Feb 2010 15:40:43 +0000</pubDate>
		<dc:creator>Remi_Woler</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[outfile]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[select]]></category>
		<guid isPermaLink="false" />
		<description><![CDATA[<p><p>The following content was originally published as <a href="http://www.wolerized.com/tutorial/getting-complex-mysql-resultset-csv-format-remote-client-nix">Getting a complex MySQL resultset in CSV format on a remote client (*NIX)</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>Sometimes you just need a resultset in CSV (so non-geeks can read it in XLS format). MySQL has several options for that. First and foremost: SELECT (...) INTO OUTFILE. This is probably the most common one, and the easiest to use. However, this does not work if you're on a remote client, so solution does work if you're connected remotely? </p></p><p>The content above was originally published as <a href="http://www.wolerized.com/tutorial/getting-complex-mysql-resultset-csv-format-remote-client-nix">Getting a complex MySQL resultset in CSV format on a remote client (*NIX)</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>The following content was originally published as <a href="http://www.wolerized.com/tutorial/getting-complex-mysql-resultset-csv-format-remote-client-nix">Getting a complex MySQL resultset in CSV format on a remote client (*NIX)</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>Sometimes you just need a resultset in CSV (so non-geeks can read it in XLS format). MySQL has several options for that. First and foremost: SELECT (&#8230;) INTO OUTFILE. This is probably the most common one, and the easiest to use. However, this does not work if you&#8217;re on a remote client, as this will create a file on the server. You may not have access there, or the server may even be restricted to that, by not giving you FILE permissions.</p>
<p>Then there&#8217;s the option of mysqldump. This can take the same FIELD OPTIONS, creating a CSV as well, and works on remote clients. The restriction here is that you are restricted to single tables. You can use a WHERE constraint, but there&#8217;s no JOINing, or any other fancy MySQL stuff. And you really can&#8217;t just dump the whole db in CSV format, and expect the user to figure things out, and link the rows in their mind. So for complex resultsets, this doesn&#8217;t work either. Now what?</p>
<p>The MySQL manual suggests to use the &#8216;mysql -e &#8220;SELECT &#8230;&#8221; > /tmp/file&#8217; format. If you try that, you will notice that this does not create a CSV file, but simply the resultset you would otherwise get in your client. So that&#8217;s not much of a help either. However, we are on the right path here. We just need to call upon the powers of some other Linux tools, sed in this case, to help us out. After lots of googling, I came accross <a href="http://www.debianadmin.com/export-mysql-database-into-a-csv-file.html">debianadmin.com, a site with the ultimate solution</a>. From that site:</p>
<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">mysql <span style="color: #660033;">-u</span> exampleuser <span style="color: #660033;">-p</span> letmein exampledb <span style="color: #660033;">-B</span> <span style="color: #660033;">-e</span> “<span style="color: #000000; font-weight: bold;">select</span> <span style="color: #000000; font-weight: bold;">*</span> from <span style="color: #000000; font-weight: bold;">`</span>person<span style="color: #000000; font-weight: bold;">`</span>;” <span style="color: #000000; font-weight: bold;">|</span> \
<span style="color: #c20cb9; font-weight: bold;">sed</span> ’s<span style="color: #000000; font-weight: bold;">/</span>\t<span style="color: #000000; font-weight: bold;">/</span>”,”<span style="color: #000000; font-weight: bold;">/</span>g;s<span style="color: #000000; font-weight: bold;">/</span>^<span style="color: #000000; font-weight: bold;">/</span>”<span style="color: #000000; font-weight: bold;">/</span>;s<span style="color: #000000; font-weight: bold;">/</span>$<span style="color: #000000; font-weight: bold;">/</span>”<span style="color: #000000; font-weight: bold;">/</span>;s<span style="color: #000000; font-weight: bold;">/</span>\n<span style="color: #000000; font-weight: bold;">//</span>g’ <span style="color: #000000; font-weight: bold;">&gt;</span> filename.csv</pre></div></div>
<p>There&#8217;s 2 things that are worth noticing here. First of all, the -B parameter to the MySQL client. From the MySQL man page:<br />
<cite><br />
· &#8211;batch, -B<br />
Print results using tab as the column separator, with each row on a new line. With this option, mysql does not use the history file.<br />
Batch mode results in non-tabular output format and escaping of special characters. Escaping may be disabled by using raw mode; see the description for the<br />
&#8211;raw option.<br />
</cite><br />
In other words: instead of the pipelines between columns, and underscores between rows, stuff get&#8217;s seperated by tabs. This makes the output more readable for sed.</p>
<p>There&#8217;s the second thing: sed. Sed is a stream editor, with the power to apply filters on a stream. This is done in a single pass, so is usable as an intermediate step in a pipe-lined shell command. It transforms the data from the MySQL client (forwarded through the | operator) and passes it&#8217;s results to the filesystem (indicated by the > operator). The lines we use are simple regex, but for those not that familiar, the explenation is as follows:</p>
<ul>
<li>s/\t/”,”/g &#8211; Replace tabs with &#8220;,&#8221; throughout the whole line.</li>
<li>s/^/”/ &#8211; Replace the start of each line (prepend) with a &#8220;</li>
<li>s/$/”/ &#8211; Replace the end of each line (append) with a &#8220;</li>
<li>s/\n//g &#8211; Replace linebreaks with nothing (remove), throughout the whole line</li>
</ul>
<p>The end result? A perfectly formatted CSV, ready to be used in Excel, or any other tool of your choosing.</p>
<p>All credit goes to &#8216;admin&#8217; of <a href="http://www.debianadmin.com/">debianadmin.com</a> for finding this out, and posting it on the web.</p>
<p>~RW</p>
<p>The content above was originally published as <a href="http://www.wolerized.com/tutorial/getting-complex-mysql-resultset-csv-format-remote-client-nix">Getting a complex MySQL resultset in CSV format on a remote client (*NIX)</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><img src="http://feeds.feedburner.com/~r/wolerized/~4/W_G5xxSTl4M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wolerized.com/tutorial/getting-complex-mysql-resultset-csv-format-remote-client-nix/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.wolerized.com/tutorial/getting-complex-mysql-resultset-csv-format-remote-client-nix</feedburner:origLink></item>
		<item>
		<title>1 year of Tweeting – In retrospect</title>
		<link>http://feedproxy.google.com/~r/wolerized/~3/mOprNHIpO7w/1-year-tweeting-retrospect</link>
		<comments>http://www.wolerized.com/opinion/1-year-tweeting-retrospect#comments</comments>
		<pubDate>Mon, 07 Dec 2009 20:22:39 +0000</pubDate>
		<dc:creator>Remi_Woler</dc:creator>
				<category><![CDATA[Two Cents]]></category>
		<category><![CDATA[tweet]]></category>
		<category><![CDATA[twitter]]></category>
		<guid isPermaLink="false" />
		<description><![CDATA[<p><p>The following content was originally published as <a href="http://www.wolerized.com/opinion/1-year-tweeting-retrospect">1 year of Tweeting &#8211; In retrospect</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>365,25 days and 500 tweets ago, I registered for a Twitter account. I was already one of the last people in IT to do so, but I did beat Oprah to it. People who don't use Twitter don't get it. People who use it, often don't get it either. So the big question is: would I have joined Twitter a year ago, if I knew what I know now?</p></p><p>The content above was originally published as <a href="http://www.wolerized.com/opinion/1-year-tweeting-retrospect">1 year of Tweeting &#8211; In retrospect</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>The following content was originally published as <a href="http://www.wolerized.com/opinion/1-year-tweeting-retrospect">1 year of Tweeting &#8211; In retrospect</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>365,25 days and 500 tweets ago, I registered for a Twitter account. I was already one of the last people in IT to do so, but I did beat <a href="http://twitter.com/Oprah">Oprah</a> to it. While some of you may think they will never reach 500 tweets, I know most of you can&#8217;t even remember when they reached that number. People who don&#8217;t use Twitter don&#8217;t get it. People who use it, often don&#8217;t get it either. So the big question is: would I have joined Twitter a year ago, if I knew what I know now?<!--break--></p>
<p>First of all, I must admit I joined Twitter for a specific reason. Zend approached me with the request to run DevZone in between Cal Evans and Eli White, so I needed a way to be one of the first to know the hot stuff. If I didn&#8217;t had to be on Twitter, chances are I would never have joined it in the first place. I didn&#8217;t get Twitter, and honestly, I still don&#8217;t really get it. There are some pros, and a lot of cons. Let&#8217;s try to list the majority of each.</p>
<h2>The Pros</h2>
<ol>
<ol>
<li><strong>You get to stay up to date with your friends, even with information that&#8217;s too short for a blog post, or too insignificant for an email.</strong></li>
</ol>
</ol>
<p>A couple of notes need to be added. First of all, &#8216;friends&#8217; is a very grey area on social networks. It does include your BFF&#8217;s, but also people you run into once in a blue moon, or who wrote a great article, and you want to know more of. Secondly, there is no control on the updates. Most people I know about only tweet a couple of times per week, but there are exceptions that easily get 20 updates per day. While they may have one noteworthy tweet per day, there is no filter of any kind. You have to choose between &#8216;get all&#8217; or &#8216;get none&#8217;. This forces you to make a decision on how you use twitter. Do you want to get some updates, and just tune in and out whenever you have a spare moment? Or do you want to get all updates, and do you reserve a timeslot in your day to read all new updates? If you choose to follow &#8216;heavy tweeters&#8217;, you will have to choose the former, or you won&#8217;t be able to keep up (assuming you have a social life, and a job). I have chosen the latter, and I decided to &#8216;unfollow&#8217; the heavier tweeters, even though that included some of my better friends.</p>
<ol>
<ol>
<li><strong>One message can reach the whole world.</strong></li>
</ol>
</ol>
<p>Got big news to share, and you don&#8217;t know all the email addresses or phone numbers of all your contacts? If you tweet it, it can be read by anyone, all at the same time. You may get unexpected congratulations from across the globe, or notice you&#8217;re big in Japan. Everybody who follows you will get it delivered into it&#8217;s client within minutes, and everybody else can read the news on your own Twitter page, where *all* your tweets (except Direct Messages) are mentioned. You don&#8217;t need to visit the States every month or so, or spend hours on the phone/email threads to keep people up to date. One status message every now and then will keep them as updated as if you were living together. Well, almost.</p>
<p>&nbsp;</p>
<h2>The Cons</h2>
<ol>
<ol>
<li><strong>Marketing people discovered it too.</strong></li>
</ol>
</ol>
<p>If you sign up for an account, you are bound to get spam. The most aggressive seem to be the porn spammers (links to XXX websites) and the social media scammers (how to get a follower count of NNNN in X hours). Until quite recently, there was no way to stop these, but to block them. Your fellow Twitter users would still get the same spam, and there was nothing anyone could do about it, till Twitter itself decided the account was acting suspiciously, and started an investigation. A couple of months ago (years after the first spammer found Twitter), Twitter added a &#8216;Report for spam&#8217; feature. Luckily, this actually works out. While there are still a lot of bots reaching you, you may find an account blocked when you check out their profile, and you will get a lot less than you used to get. Still, up to 10 on a low profile account like mine, is far from unusual.</p>
<ol>
<ol>
<li><strong>There is only 140 characters.</strong></li>
</ol>
</ol>
<p>I hope for you that you don&#8217;t have much to say, as there isn&#8217;t much room to say it in. Yes, it does keep out the 3K word examples, but more often than not, you will find yourself rewriting content to have the same meaning, but fit in the 140 characters. Especially when you are replying to someone (and thus have to mention their full handle + an @), or direct-messaging (full handle *and* a 2-character control code) and have to use an url as well, you&#8217;ve pretty much run out of space to add. And when you finally managed to squeeze everything in, you get complaints from others that they can&#8217;t &#8216;re-tweet&#8217; your message, because you didn&#8217;t leave space for your own handle. Either Twitter will come with something to solve this (really? after 4+ years?) or I will find time to work out my idea of extending the space, while still using the same protocol.</p>
<ol>
<ol>
<li><strong>The majority of the content is pointless.</strong></li>
</ol>
</ol>
<p>Whether it&#8217;s spam, business &#8216;self promotion&#8217; or just pointless babble, there is hardly any message which you really needed to know. Sure, it keeps you updated on what&#8217;s happening in someone&#8217;s life, at one degree or another, but you wouldn&#8217;t be behind if you missed it. Visit your friends in the local pub, and you will learn more about that them than you could do over twitter in a month. Some people think that the content of Twitter is worth big bucks because it gets you news first-hand, way before the regular press comes on-site. While there may be an occasional newsworthy tweet, I believe the vast majority of those tweets are emotions and opinions, instead of facts. Read 100, and you still may not know what exactly happened. Read a 1000, and you may have a hunch, but you know how 1000 people feel and think about the event.</p>
<ol>
<ol>
<li><strong>Nobody reads your tweets.</strong></li>
</ol>
</ol>
<p>Because of the time zone differences, and the (social and business) lifes people have, there is absolutely no guarantee anyone will read your tweets. Unless your followers are obsessed with you, and use sophisticated clients that orders tweets into categories, your voice will likely get lost in the immense mass of tweets. So, you have over a 100 of followers? Cool! Maybe one or two read that tweet you just sent. What&#8217;s the point of it? Would you have said the same thing if you knew nobody would read it? Then why did you say it at all? If you really wanted people to receive it, email them, call them, see them in real life, or write a blog post about it.</p>
<ol>
<ol>
<li><strong>Everybody can read your tweets!</strong></li>
</ol>
</ol>
<p>Enjoying a cool flash game you just found while you should be working? You better not tweet about it, because your manager will likely be reading it too. No, (s)he doesn&#8217;t need to have an account for that; the whole world can watch your tweets, if they want to. So not only do you have pretty much a guarantee that nobody will read your tweet, you will also have to adjust your tweet to the audience, in case someone does read it. And, as Marco Tabini mentioned in his latest column in PHP|Architect, that can also be your (to be born) kid, looking what daddy and mommy were up to several years ago.</p>
<p>&nbsp;</p>
<h2>To conclude&#8230;</h2>
<p>After a year of using the service, and reading tweets on a pretty much daily basis, I still don&#8217;t get the point of it. Yes, I tweeted 500 times. Most of the times it was an @reply, because I was too lazy to email people, or didn&#8217;t know their email address. Sometimes it was a real message, mostly a shout out of frustration, to get it out of me into the emptiness of cyberspace. Given that Eli White is about to leave Zend, I&#8217;m holding on to my account in case Zend calls upon me again. But really, what&#8217;s the point?</p>
<p>~RW</p>
<p>The content above was originally published as <a href="http://www.wolerized.com/opinion/1-year-tweeting-retrospect">1 year of Tweeting &#8211; In retrospect</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><img src="http://feeds.feedburner.com/~r/wolerized/~4/mOprNHIpO7w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wolerized.com/opinion/1-year-tweeting-retrospect/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.wolerized.com/opinion/1-year-tweeting-retrospect</feedburner:origLink></item>
		<item>
		<title>OS in the cloud: The future?</title>
		<link>http://feedproxy.google.com/~r/wolerized/~3/hY25L_pvr74/os-cloud-future</link>
		<comments>http://www.wolerized.com/opinion/os-cloud-future#comments</comments>
		<pubDate>Wed, 25 Nov 2009 23:33:54 +0000</pubDate>
		<dc:creator>Remi_Woler</dc:creator>
				<category><![CDATA[Two Cents]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[featured]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[os]]></category>
		<guid isPermaLink="false" />
		<description><![CDATA[<p><p>The following content was originally published as <a href="http://www.wolerized.com/opinion/os-cloud-future">OS in the cloud: The future?</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>In an office, the workers open their thin clients and netbooks to start the day. A network connection is provided at every corner, and there is wireless too, so you can work everywhere you want. All applications run on some big systems, and they just connect to it through their browsers. Sound like the future? Think again: it's the past.</p></p><p>The content above was originally published as <a href="http://www.wolerized.com/opinion/os-cloud-future">OS in the cloud: The future?</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>The following content was originally published as <a href="http://www.wolerized.com/opinion/os-cloud-future">OS in the cloud: The future?</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>In an office, the workers open their thin clients and netbooks to start the day. A network connection is provided at every corner, and there is wireless too, so you can work everywhere you want. All applications run on some big systems, and they just connect to it through their browsers. As soon as they authenticate, they have their own data, and their own work, no matter on which system, or which location they logged in. They can even work at home, or on the road, as long as there&#8217;s a connection to the network. Without a network, the whole system is down. Sure, there are some caches, and they can work a bit in advance, but for anything not in their cache, they need a network connection. Picture sounds familiar? Did that just describe cloud computing in it&#8217;s essence? Or was it a copy from a computer networking textbook about centralized computing?<!--break--></p>
<p>There is nothing new in cloud computing. Only the term is, though even that is derived from a decades old concept. From the sixties to the eighties, centralized computing was the way to go. Big mainframes ran every application, and employees used the computer by a dumb terminal. The terminal had no to very minimal processing power, and couldn&#8217;t do anything without a connection to a mainframe. When computer parts became more common, likely because they were easier, so cheaper to produce, there was a quick shift to decentralized computing. Processing power at the client was easier and cheaper, and there was no longer a single point of failure. Sure, when the servers went down, workers were disconnected from shared services, but their pc did not stop working. They could do everything they wanted, like starting another task, as long as they did not need one of the disconnected services.</p>
<p>To overcome the issue of decentralized data, technologies like roaming profiles (backed by redundant domain controllers) and VPN connections were invented to allow workers to access shared services everywhere, from their own pc&#8217;s, or company provided &#8216;shared&#8217; pc&#8217;s. This is the setup you will find in most companies, and has proven to give the best of both worlds. That is, till Google decided to build ChromeOS: a semi-dumb terminal, useless without a connection to Google&#8217;s mainframes. It&#8217;s like the sixties all over again!</p>
<p>Apparently, Google thinks that now, a roughly 50 years later, there is a market for a system that will prevent work being done when there is no data connection available, for a system that forces you to share resources with everyone else, and a system that is a single point of failure. Will Google offer a SLA where you get compensation when you can&#8217;t do anything because something in their network screwed up? Will they provide compensation when you are waiting for a task to complete, on a server clogged by lots of other users? Will they increase their security to block the added probability their services get compromised? Will they invent a way which blocks scamming and social-engineer-hacking to prevent the leakage of all data?</p>
<p>Does your company trust it&#8217;s business-critical data to a company who&#8217;s main purpose is crawling and opening up data to the public? Where it&#8217;s a feature to have voicemails converted to text, indexed, and searchable for the whole world? Where it is a feature to get advertisements specialized on the contents of your data? Or did you think that was just a coincidence, that an advertisement was closely related to that mail you just received? Any company who values it&#8217;s business critical data will choose anything but a search engine company to store it. Of course, in-house is not always the best solution, but there are so much better alternatives, where your data is actually valued, and efforts are taken to keep it away from the public eye.</p>
<p>The only people who could benefit from the ancient model of centralized computing are home users. People with no data to hide, no monetary value to lose when things hit the street. But how many pc&#8217;s do these people have? What do they need a centralized cloud for? Sure, it&#8217;s handy for some personal documents or some school work, but how are you going to play Call of Duty: Modern Warfare 2? Unless you have an internet connection with at least 1 Gb/s up&amp;down, you will need local processing power to generate the sprites. How are you going to run Photoshop? Can you really keep your patience when you have to wait for each action to complete, because other render jobs are being processed for other people? Can you accept the vendor lock-in, where you can only use the application approved and installed by the cloud vendor?</p>
<p>While the analysts are calling Chrome OS the next move in the cloud war, history has already proven that this move doesn&#8217;t work. Well, maybe it does work for Google itself, if they intend to give their employees access to only the few applications available in their own cloud, and remember to do lock away their data from the public eye. For every other company, Chrome OS is a watercooler joke, or a re-enactment of a historic period, if you will.</p>
<p>~RW</p>
<p>The content above was originally published as <a href="http://www.wolerized.com/opinion/os-cloud-future">OS in the cloud: The future?</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><img src="http://feeds.feedburner.com/~r/wolerized/~4/hY25L_pvr74" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wolerized.com/opinion/os-cloud-future/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.wolerized.com/opinion/os-cloud-future</feedburner:origLink></item>
		<item>
		<title>What can be worse than the Oklahoma public school results?</title>
		<link>http://feedproxy.google.com/~r/wolerized/~3/n1ipUasHt1w/what-can-be-worse-oklahoma-public-school-results</link>
		<comments>http://www.wolerized.com/opinion/what-can-be-worse-oklahoma-public-school-results#comments</comments>
		<pubDate>Sat, 19 Sep 2009 18:27:15 +0000</pubDate>
		<dc:creator>Remi_Woler</dc:creator>
				<category><![CDATA[Two Cents]]></category>
		<category><![CDATA[immigration]]></category>
		<category><![CDATA[No child left behind]]></category>
		<category><![CDATA[Oklahoma]]></category>
		<category><![CDATA[school]]></category>
		<guid isPermaLink="false" />
		<description><![CDATA[<p><p>The following content was originally published as <a href="http://www.wolerized.com/opinion/what-can-be-worse-oklahoma-public-school-results">What can be worse than the Oklahoma public school results?</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>Recent news tells the world how little the average kid in a US high school actually knows about the country. The results in itself are a major disgrace; especially for a country that emphasizes that it is the best country in the world. Even I, non-American, European, had eight of the questions correct. However, if this was not bad enough, it actually gets worse!</p></p><p>The content above was originally published as <a href="http://www.wolerized.com/opinion/what-can-be-worse-oklahoma-public-school-results">What can be worse than the Oklahoma public school results?</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>The following content was originally published as <a href="http://www.wolerized.com/opinion/what-can-be-worse-oklahoma-public-school-results">What can be worse than the Oklahoma public school results?</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>Recent news tells the world how little the average kid in a US high school actually knows about the country. The results in itself are a major disgrace. As we can see on <a href="http://trueslant.com/jeffhoard/2009/09/17/understatement-oklahoma-students-fail/">this results page</a>, none of the 1000 kids could answer all 10 questions, taken from the US citizen test, correctly. Something is wrong there. Looking further, none of the 1000 kids could even answer 8 questions correctly. That is bad, really bad. By adding up a little, we quickly see that only 108 of the 1000 students had five or more (7 being the max) questions correct. That is a disgrace; especially for a country that emphasizes that it is the best country in the world. Even I, non-American, European, had eight of the questions correct (I failed the number of judges, and thought George Washington wrote the Declaration of Independence). However, if this was not bad enough, it actually gets worse!<!--break--></p>
<p>The story as described above was also featured on &#8216;News9&#8242;. This TV station, which should be educated and smart enough to be worth listening to, and be trustable when it comes to news, quickly tops the Oklahoma results. Kelly Ogle rounds up the story with the line &#8220;now in all fairness to the local students: they were not allowed to study these questions, we just hit them with &#8216;em, unlike those taking the US citizen test&#8221;. I do not blame Kelly Ogle for this, as he very likely read this from the auto-cue; this is on the account of the TV network.</p>
<p>Something is so wrong in that line. It should read &#8220;in all fairness, we do allow people taking the US citizen test to study these questions&#8221;. If you are a US citizen by birth, and grew up in the United States, you have absolutely no excuse to not know this stuff. Not knowing these basic things is like not being able to read or write, or to not be able to speak English. People immigrating to the US, and thus born and raised in another country, get the benefit of studying the questions. They did not take history lessons in a US class. They did not watch the USA TV networks for the past 10+ years. The kids in Oklahoma did. In addition, if it was just one kid, or a couple of kids, who could not answer all the questions correct, hey, that is allowed. Not everybody is good in remembering stuff, or taking tests (pressure), or maybe they just had other stuff on their mind. But 992 not being able to answer up to five of the questions correctly? Honestly, I would expect results like these from a high school in a foreign, for example European, country. Then they would be acceptable. Not for a US country. Moreover, if a US news channel is honestly convinced it is not mandatory knowledge for any born &amp; raised US citizen, they should get their license revoked.</p>
<p>It has always been somewhat of a dream of me to at least visit the US. Maybe I need to reconsider. I might get rejected for knowing a lot of stuff about the US that the average American does not know.</p>
<p>~RW</p>
<p>The content above was originally published as <a href="http://www.wolerized.com/opinion/what-can-be-worse-oklahoma-public-school-results">What can be worse than the Oklahoma public school results?</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><img src="http://feeds.feedburner.com/~r/wolerized/~4/n1ipUasHt1w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wolerized.com/opinion/what-can-be-worse-oklahoma-public-school-results/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.wolerized.com/opinion/what-can-be-worse-oklahoma-public-school-results</feedburner:origLink></item>
		<item>
		<title>Focussing multi-window Eclipse on Ubuntu (solved)</title>
		<link>http://feedproxy.google.com/~r/wolerized/~3/ktinu8z0480/focussing-multi-window-eclipse-ubuntu-solved</link>
		<comments>http://www.wolerized.com/tutorial/focussing-multi-window-eclipse-ubuntu-solved#comments</comments>
		<pubDate>Tue, 25 Aug 2009 14:38:35 +0000</pubDate>
		<dc:creator>Remi_Woler</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Gnome]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[TwinView]]></category>
		<category><![CDATA[Xinerama]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[Zend Studio]]></category>
		<guid isPermaLink="false" />
		<description><![CDATA[<p><p>The following content was originally published as <a href="http://www.wolerized.com/tutorial/focussing-multi-window-eclipse-ubuntu-solved">Focussing multi-window Eclipse on Ubuntu (solved)</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>As a fervent multi-monitor user, I ran into issues with the latest Ubuntu (9.04) in combination with Gnome and Eclipse. When I switched to another application which was (partially) overlapping Eclipse, I could not switch back to Eclipse by clicking the item in the taskbar. Nothing would happen, and if I clicked multiple times, the application would actually get hidden.</p></p><p>The content above was originally published as <a href="http://www.wolerized.com/tutorial/focussing-multi-window-eclipse-ubuntu-solved">Focussing multi-window Eclipse on Ubuntu (solved)</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p>]]></description>
			<content:encoded><![CDATA[<p>The following content was originally published as <a href="http://www.wolerized.com/tutorial/focussing-multi-window-eclipse-ubuntu-solved">Focussing multi-window Eclipse on Ubuntu (solved)</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><p>As a fervent multi-monitor user, I ran into issues with the latest Ubuntu (9.04) in combination with Gnome and Eclipse. When I switched to another application which was (partially) overlapping Eclipse (in my case: Zend Studio 6.x and 7.x), I could not switch back to Eclipse by clicking the item in the taskbar. Nothing would happen, and if I clicked multiple times, the application would actually get hidden. I could switch back to Eclipse by either alt-tabbing to the right icon (which takes a lot of time with many apps and windows open), or by double-clicking a file (effectively opening) in an Explorer window (PHP Explorer in my case). The issue seemed to be with un-docking windows, because when all windows are docked, the issue would not happen. Not really a solution, as that would limit my screenspace in Eclipse itself, and leave a monitor for decorative uses only. So off to Google for a solution.<br />
<!--break--><br />
After a lot of googling, I could not find anything related to Eclipse or Ubuntu or Gnome that could relate to this issue. Until I stumbled upon a similar issue with undocked toolbars in OpenOffice 3. This did come up with a possible lead. One message said that this could be related to window managers and focus-stealing-preventions. So, off to install Compiz. This is done quite easy in Ubuntu, as it&#8217;s just enabling the &#8216;Extra&#8217; window effects in the desktop manager. This resulted in the error &#8216;Composite extension is not available&#8217;. After playing a bit with nvidia-settings, disabling Xinerama, enabling TwinView, and following the suggestions in <a href="http://ubuntuforums.org/showthread.php?t=837819">this Ubuntu forum post about the Composite extension</a>, I got Compiz up and running. Starting Zend Studio 7 quickly revealed that the issue was gone, the weird stripes are gone, everything is better than ever! I like Ubuntu again!</p>
<p>~RW</p>
<p>The content above was originally published as <a href="http://www.wolerized.com/tutorial/focussing-multi-window-eclipse-ubuntu-solved">Focussing multi-window Eclipse on Ubuntu (solved)</a> under a <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY license</a>.</p><img src="http://feeds.feedburner.com/~r/wolerized/~4/ktinu8z0480" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.wolerized.com/tutorial/focussing-multi-window-eclipse-ubuntu-solved/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.wolerized.com/tutorial/focussing-multi-window-eclipse-ubuntu-solved</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 2.510 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-01-22 02:41:26 --><!-- Compression = gzip -->

