<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>The Blog From Hell &#187; Programming</title>
	<atom:link href="http://silentcoder.co.za/tags/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://silentcoder.co.za</link>
	<description>A.J. Venter&#039;s weblog www.silentcoder.co.za</description>
	<lastBuildDate>Thu, 17 May 2012 11:21:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>WordPress 3.0.5+Constructor &#8211; quick-fix/workaround</title>
		<link>http://silentcoder.co.za/2011/02/wordpress-3-0-5constructor-quick-fixworkaround/</link>
		<comments>http://silentcoder.co.za/2011/02/wordpress-3-0-5constructor-quick-fixworkaround/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 05:20:37 +0000</pubDate>
		<dc:creator>silentcoder</dc:creator>
				<category><![CDATA[Diary]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://silentcoder.co.za/?p=1566</guid>
		<description><![CDATA[Those who recently updated to the new WordPress 3.0.5 and also upgraded to the latest Constructor theme may have discovered that suddenly their wp-admin system started throwing an error 500. This is due to a bug in the new constructor (at least with the latest wordpress &#8211; I &#160;suspect a fix would have &#160;been out <a href='http://silentcoder.co.za/2011/02/wordpress-3-0-5constructor-quick-fixworkaround/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<img style='float: left; margin-right: 10px; border: none;' src='http://www.gravatar.com/avatar.php?gravatar_id=743cda1409edb78bbd63e1a49b174b95&amp;default=http://use.perl.org/images/pix.gif' alt='No Gravatar' width=40 height=40/><p>Those who recently updated to the new WordPress 3.0.5 and also upgraded to the latest Constructor theme may have discovered that suddenly their wp-admin system started throwing an error 500. This is due to a bug in the new constructor (at least with the latest wordpress &#8211; I &nbsp;suspect a fix would have &nbsp;been out already if it had been present in earlier releases).</p>
<p>&nbsp;</p>
<p>Luckilly it&#39;s quite easy to fix. Using FTP or shell or whatever method you have, go into your wordpress directory and then edit this file:</p>
<p><code>wp-content/themes/constructor/libs/Constructor/Admin.php</code></p>
<p>Go to line 31 which reads:</p>
<p><code>session_start();</code></p>
<p>Replace it with this:</p>
<p><code>//session_start ();</code></p>
<p><code>echo &quot;&quot;;</code></p>
<p>What does that do ? The two slashes removes the session_start method (which is the cause of our problem here). However said line is in a big if statement and getting it all nicely out without breaking syntax would be tricky &#8211; easier to just replace it with the echo &quot;&quot;; line &#8211; which is simply a line that tells php to print absolutely nothing to the screen (the equivalent of a valid &quot;don&#39;t do anything&quot; command &#8211; but it keeps the syntax structures good and makes for the easiest way to implement the quick fix (especially for somebody who can&#39;t program.</p>
<p>The change is obviously related to php sessions &#8211; which works fine in all my other code including wordpress itself, so it seems to be either a bug with the latest wordpress and constructor &#8211; or the latest constructor and ligHTTPD. Either way, this quick work-around will get your admin screen working again until a proper fix is available. &nbsp;</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://silentcoder.co.za/2011/02/wordpress-3-0-5constructor-quick-fixworkaround/' addthis:title='WordPress 3.0.5+Constructor &#8211; quick-fix/workaround ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>]]></content:encoded>
			<wfw:commentRss>http://silentcoder.co.za/2011/02/wordpress-3-0-5constructor-quick-fixworkaround/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programming humour on IRC</title>
		<link>http://silentcoder.co.za/2009/04/programming-humour-on-irc/</link>
		<comments>http://silentcoder.co.za/2009/04/programming-humour-on-irc/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 18:15:07 +0000</pubDate>
		<dc:creator>silentcoder</dc:creator>
				<category><![CDATA[Diary]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://silentcoder.co.za/silentcoder/?p=493</guid>
		<description><![CDATA[Framstag: Nobody finds comments in my code. Framstag: That is, because nobody's looking for Framstag: comments, since, nobody (except me) writes them silentcoder: my code is commented in hieroglyphic ascii art silentcoder: { silentcoder: __ silentcoder: / \ silentcoder: / &#124; &#124; &#124; &#124; > silentcoder:]]></description>
			<content:encoded><![CDATA[<img style='float: left; margin-right: 10px; border: none;' src='http://www.gravatar.com/avatar.php?gravatar_id=743cda1409edb78bbd63e1a49b174b95&amp;default=http://use.perl.org/images/pix.gif' alt='No Gravatar' width=40 height=40/><pre>
Framstag: Nobody finds comments in my code.
Framstag: That is, because nobody's looking for
Framstag: comments, since, nobody (except me) writes them
silentcoder: my code is commented in hieroglyphic ascii art
silentcoder: {
silentcoder:    __
silentcoder:   /   \
silentcoder: / | | | | >
silentcoder:  <___________/
silentcoder: }
Framstag: Looks like those Dr. Who thingies
silentcoder: roughly translated: modify this
silentcoder: function and the Daleks will get you
Framstag: I can't believe, that those comments work
</pre>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://silentcoder.co.za/2009/04/programming-humour-on-irc/' addthis:title='Programming humour on IRC ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>]]></content:encoded>
			<wfw:commentRss>http://silentcoder.co.za/2009/04/programming-humour-on-irc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing Kongoni: A call for volunteers</title>
		<link>http://silentcoder.co.za/2008/10/announcing-kongoni-a-call-for-volunteers/</link>
		<comments>http://silentcoder.co.za/2008/10/announcing-kongoni-a-call-for-volunteers/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 09:02:20 +0000</pubDate>
		<dc:creator>silentcoder</dc:creator>
				<category><![CDATA[Diary]]></category>
		<category><![CDATA[bluewhite64]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[fsf]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[kongoni]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[slackware]]></category>

		<guid isPermaLink="false">http://silentcoder.co.za/silentcoder/?p=373</guid>
		<description><![CDATA[Today I posed this message to several of the LUG&#8217;s in South Africa. I am reposting it here without edits. Hi Everybody, Sorry for the cross-post, I promise it&#8217;s a once-off but this is a bit of a special circumstance. In the grand tradition of GNU and later the Linux kernel, I am beginning with <a href='http://silentcoder.co.za/2008/10/announcing-kongoni-a-call-for-volunteers/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<img style='float: left; margin-right: 10px; border: none;' src='http://www.gravatar.com/avatar.php?gravatar_id=743cda1409edb78bbd63e1a49b174b95&amp;default=http://use.perl.org/images/pix.gif' alt='No Gravatar' width=40 height=40/><p>Today I posed this message to several of the LUG&#8217;s in South Africa. I am reposting it here without edits.</p>
<p>Hi Everybody,<br />
Sorry for the cross-post, I promise it&#8217;s a once-off but this is a bit of a special circumstance.<br />
In the grand tradition of GNU and later the Linux kernel, I am beginning with a mail to announce<br />
my intentions, and a request for anybody who shares my vision to help out.<br />
The interest in my CLUG talk about distribution creation some time ago left me thinking that<br />
perhaps there are enough people out there (particularly here in South Africa) who may feel up to<br />
the fun and work of helping to create something special. Having spent 5 years creating a<br />
successful commercial distribution, I believe I have the skills for such a project to be workable, though this one is meant to be very different as you&#8217;ll see. </p>
<p>Starting in the next weeks I want to create a GNU/Linux distribution called kongoni. Kongoni is the<br />
Shona word for a gnu (wildebeest) and this represents the origins of the system: firstly it is African,<br />
secondly it is meant to be a truly free distribution of the GNU operating system.<br />
The name in other words translates literally as: GNU Linux <img src='http://silentcoder.co.za/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  (I rather like the wordplay as well).</p>
<p>Fundamental to the design will be an absolute commitment to free software only. That means we will not<br />
include in the installer, nor in the ports tree or any other officially distributed packages any piece of<br />
software that is not under an FSF approved license.<br />
Some degree of the workload can be shared by utilising (and contributing back to) Gnewsense&#8217;s list (and blacklist).</p>
<p>Development releases will have a kernel compiled with the no-taint flag &#8211; not allowing any non-free drivers to load,<br />
which will be very useful for auditing purposes, where possible we will provide free alternate drivers.<br />
<em>UPDATE: I should have been more clear here. I mean ONLY development releases will have notaint, official releases will not restrict what users can or cannot load.</em></p>
<p>Where possible I want the system to actively contribute to high-priority free software projects like GNASH and Nouveau,<br />
not least by providing automated scripts in the packages to allow even non-technical users to file automated<br />
bug reports to the projects with usefully information for their needs. Thus possibly increasing the number of testers<br />
exponentially, the improvements that arise will in turn benefit all free software users and developers.<br />
The system will never be commercial, I have no problem with commercial free software (in fact I run a commercial free<br />
software company) but this project would best benefit from being a true community project. If the need arises to<br />
formalize structures, I pledge that it will be done by registering a charity organisation, or joining an existing one<br />
 &#8211; not by starting a company. If people some day want to start companies that sell services related to the system however<br />
more power to them.</p>
<p>Now on to the initial technical details. First off, I don&#8217;t think there is any room in the market for yet another Ubuntu<br />
respin. Ubuntu is a nice system in many ways, but the need is met &#8211; and Gnewsense already provides a fully free alternative<br />
to fans of Ubuntu. Instead I believe there is room for new ideas and new thinking.<br />
To this end I want to start with a slackware/bluewhite64 baseline initially targeting x86_32 and x86_64 platforms.<br />
Slackware has many advantages as a baseline and offers enormous power of (easy) customization to give the system a real<br />
unique identity while staying true to standards.<br />
The biggest catch is addressing slackware&#8217;s number one shortcoming for desktop users: the limited package manager.<br />
To address this, and also minimise the workload of multiple platforms, I intend to use portpkg to provide a ports tree<br />
that is fully tracked for dependencies. Among my first coding tasks will be a full graphical frontend for portpkg as well<br />
as a series of patches to portpkg itself to allow us to maintain our own ports trees as default. These will consist<br />
of license-audited and dependency-mapped clones of the slackware/bluewhite64 repositories for upstream, and source-only<br />
ports for 3rd-party packages. It is important to maintain our own ports tree since unfortunately all the default ports<br />
available in portpkg include non-free software in their package lists. While we cannot (and should not) prevent users<br />
adding those repositories and installing such proprietary packages &#8211; we should not give this action any official support.</p>
<p>The initial default desktop will be KDE4 with intention of including KDE4.2 (due in February) in the first stable release<br />
if possible. OpenOffice.org 3.0 is on the standard packages list, and if the promised GNU/Linux port of Chromium is available by<br />
release time it will be the default browser, otherwise one of the free firefox forks.<br />
An absolute must is a powerful and complete system administration and configuration tool,<br />
utilising things like darkstarlinux&#8217;s ALICE suite to complement a full kit for user-admin,<br />
setting up advanced Xorg settings (like multiheads) and other common admin tasks. To ensure<br />
seamless wireless and wired network roaming, wicd will be a default package (and madwifi with the new free ath5k hal for older cards and the newly GPL&#8217;d hal from Atheros as well).</p>
<p>It is quite possible that if we have enough volunteers and resources future releases could include parallel versions for<br />
Gnome,xfce,enlightenment etc. and I am happy to include these in the ports tree if somebody helps create the ports.</p>
<p>In terms of project admin I wish to set up a suite of easy-to-use web-apps for contributing, auditing and approving<br />
of ports (the first should be open to all, the latter two to trusted testers only). Designed to make the task<br />
of contributing in this manner not only as simple as possible but to minimize the time needed as far as possible so<br />
that those who choose to contribute their spare time to it can spend as much of that time as possible doing fun stuff<br />
and as little as possible doing drudge work.</p>
<p>The focus of the project is home and desktop users, there are other distro&#8217;s aiming at this market but precious few<br />
with a stated mission to be completely free, in both senses of the word.<br />
After freedom, our second most important design principle should be one of &#8220;it just works&#8221;. </p>
<p>Now of course, as I type this Kongoni is vapourware, the first line of code has yet to be written (though I&#8217;ve done<br />
significant amounts of research to make the decisions above, and I have written an installer).<br />
Normally, it isn&#8217;t my style to announce something until the first pieces are written but in this case I<br />
find it crucial to the very concept that other people be involved from the start. I have proposed a vision<br />
(not an uneditable one technically) and I want to see who shares my vision and would like to contribute to it&#8217;s<br />
realisation. I will be happy to fund hosting for the project and contribute much of my free time to it&#8217;s realisation<br />
but I would like to have as many people helping as possible so that this is not just my vision, but our vision.<br />
People who can suggest ideas and improvements, people who can help realise those ideas and help with the<br />
large workload ahead. </p>
<p>If just a few people say &#8220;I&#8217;m in&#8221; &#8211; then that&#8217;s a go-ahead as far as I&#8217;m concerned.</p>
<p>The most useful skills right now will be:<br />
*Web-app programming and web-design<br />
*Ports builders and co-maintainers of the tree<br />
*Graphic design<br />
*Testers</p>
<p>These will likely get official lieutenants appointed on a first-come, first-serve basis.<br />
There is much more to do so if you feel that you can contribute something please feel free to speak up.<br />
If any of the mirror maintainers would be willing to host local mirrors of the ports tree and ISO&#8217;s when<br />
we get to release time, please let me know as I have learned from hard experience how even a small distro<br />
release can hit a server.</p>
<p>May I request that those who wish to contribute also reply to me directly as I do not want any<br />
names to get lost in the noise as people discuss the idea.<br />
Finally, I would like to suggest that those who are in Cape Town (once we have a list) meet up<br />
for a face-to-face planning session. Perhaps over coffee on Saturday somewhere in Rondebosch ?</p>
<p>Thank you for reading this far <img src='http://silentcoder.co.za/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
I hope to hear from you.</p>
<p>Ciao<br />
A.J.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://silentcoder.co.za/2008/10/announcing-kongoni-a-call-for-volunteers/' addthis:title='Announcing Kongoni: A call for volunteers ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>]]></content:encoded>
			<wfw:commentRss>http://silentcoder.co.za/2008/10/announcing-kongoni-a-call-for-volunteers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I love me some NWN</title>
		<link>http://silentcoder.co.za/2008/10/i-love-me-some-nwn/</link>
		<comments>http://silentcoder.co.za/2008/10/i-love-me-some-nwn/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 20:33:25 +0000</pubDate>
		<dc:creator>silentcoder</dc:creator>
				<category><![CDATA[Diary]]></category>
		<category><![CDATA[bluewhite64]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[nvidia]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[slackware]]></category>

		<guid isPermaLink="false">http://silentcoder.co.za/silentcoder/?p=369</guid>
		<description><![CDATA[I got my hands on a copy of NeverWinterNights for Linux the other day, and I&#8217;ve been playing it whenever I have spare time at night &#8211; what a great RPG. Now before the flame comments start, I&#8217;m on record as saying I don&#8217;t think it&#8217;s ethically crucial that games be free software because they <a href='http://silentcoder.co.za/2008/10/i-love-me-some-nwn/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<img style='float: left; margin-right: 10px; border: none;' src='http://www.gravatar.com/avatar.php?gravatar_id=743cda1409edb78bbd63e1a49b174b95&amp;default=http://use.perl.org/images/pix.gif' alt='No Gravatar' width=40 height=40/><p>I got my hands on a copy of NeverWinterNights for Linux the other day, and I&#8217;ve been playing it whenever I have spare time at night &#8211; what a great RPG. Now before the flame comments start, I&#8217;m on record as saying I don&#8217;t think it&#8217;s ethically crucial that games be free software because they aren&#8217;t software to begin with &#8211; they are art. At least, they art part is far more important than the programming part.<br />
Which is not to say it&#8217;s not very good (and certainly a lot better) when they are free software, but like with music it&#8217;s good when it happens, but not evil when it doesn&#8217;t.</p>
<p>So back on topic, I really enjoy NWN. It&#8217;s rules are familiar to anybody who knows even the basics of DnD or has played Nethack for that matter, and it&#8217;s filled with tremendous flexibility of gameplay (as befits an RPG). I haven&#8217;t tried the online version at all I must admit, but the single player version is really nice. A compelling storyline with the kind of environment that allows you to live that storyline out. </p>
<p>NWN is of course, 32-bit only but I had no real trouble running it on Bluewhite64, all I had to do was grab the 32-bit SDL packages from slackware.com install them in a temp root and copy the usr/lib files into /usr/lib32 and it worked fine ever since.</p>
<p>I did find one nasty &#8211; it doesn&#8217;t play (no pun intended) nicely with twinview, putting itself in the middle of the two screens spanning halfway onto each. With Xinerama, it works perfectly. Of course Xinerama on NVidia means no compiz effects but I have also found that with twinview enabled my system is really slow and unstable, using Xinerama instead is much faster and works way better under KDE4.</p>
<p>I made one change though, I don&#8217;t run it under KDE at all, seeing as I have two screens, KDE needs to keep managing the one NWN is not on, and it&#8217;s not like I can multitask that way since the mouse is trapped inside NWN, so that was just a waste of resources, instead I created a .desktop file to launch NWN by itself and copied it into /usr/share/xsessions, now when I want to play it I just select &#8220;Neverwinter Nights&#8221; from my session menu on the login screen and log in, when I exit the game I&#8217;m back at the login screen. I tend to do this with most heavy-on-resource games anyway and I highly recommend it. Being able to completely switch off your desktop while playing games is just part of the real power that GNU/Linux with it&#8217;s immense customization offers over other OS&#8217;s.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://silentcoder.co.za/2008/10/i-love-me-some-nwn/' addthis:title='I love me some NWN ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>]]></content:encoded>
			<wfw:commentRss>http://silentcoder.co.za/2008/10/i-love-me-some-nwn/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to hack people.</title>
		<link>http://silentcoder.co.za/2008/05/how-to-hack-people/</link>
		<comments>http://silentcoder.co.za/2008/05/how-to-hack-people/#comments</comments>
		<pubDate>Mon, 12 May 2008 10:56:01 +0000</pubDate>
		<dc:creator>silentcoder</dc:creator>
				<category><![CDATA[bash]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://silentcoder.co.za/silentcoder/?p=321</guid>
		<description><![CDATA[I&#8217;ve been reading PenguinPete&#8217;s series of blogs called &#8220;you can hack an OS but you can&#8217;t hack people&#8221; and I must say it&#8217;s a well thought-out, well written piece with a fairly clear understanding of the history of the desktop. So far it has raised the two biggest problems facing a desktop revolution. It comes <a href='http://silentcoder.co.za/2008/05/how-to-hack-people/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<img style='float: left; margin-right: 10px; border: none;' src='http://www.gravatar.com/avatar.php?gravatar_id=743cda1409edb78bbd63e1a49b174b95&amp;default=http://use.perl.org/images/pix.gif' alt='No Gravatar' width=40 height=40/><p>I&#8217;ve been reading <a target=_blank href="http://penguinpetes.com/b2evo/index.php?p=469&#038;more=1&#038;c=1&#038;tb=1&#038;pb=1">PenguinPete&#8217;s </a> series of blogs called &#8220;you can hack an OS but you can&#8217;t hack people&#8221; and I must say it&#8217;s a well thought-out, well written piece with a fairly clear understanding of the history of the desktop.<br />
So far it has raised the two biggest problems facing a desktop revolution. It comes down to this: the masses of windows users may want to change  -but their culture is one where there was never any problem solving (it wasn&#8217;t POSSIBLE to solve problems), it&#8217;s one that&#8217;s made up of a combination of handholding and blind-clicking, so they need a lot of initial help to get started. The other problem is &#8211; they outnumber us thousands to one.</p>
<p>The next problem is that they refuse to read manuals &#8211; if you suggest one, you&#8217;re an elitist.</p>
<p>These are all valid points &#8211; and part of why I said all along we<a href="http://silentcoder.co.za/silentcoder/?p=282"> won&#8217;t have a year of the GNU/Linux desktop. But we can and will have a decade.</a> Part of the reason why the process is slow &#8211; is because it takes a lot of manhours to get a windows user comfortably migrated. A lot of effort &#8211; and there are only so many of us to do it. </p>
<p>What Pete has not yet made any attempt to do (granted he has 2 blogs to go in the series) is to actually suggest solutions. The fact is &#8211; he is right we cannot do it one-on-one because there aren&#8217;t enough of us &#8211; and there won&#8217;t be for a long time, especially at that rate. So we need to start developing <strong>efficient</strong> one-on-many support mechanisms. Ways to talk many people through it at once. I think <a href="http://silentcoder.co.za/silentcoder/?p=54">WOLE</a> had been a step in that direction. But imagine something like that in Ubuntu. Something that takes the admin OUT of things that <strong>aren&#8217;t</strong> admin &#8211; that makes all the most common <strong>setup</strong> tasks as simple as the most common <strong>day to day</strong> tasks have already become.</p>
<p>WOLE did it by looking and acting like an IM client between you and your PC. It handled  updates, it handled WIFI and bluetooth setups. Too bad WOLE was never finished- in a 5 year period of very many innovative ideas (many of which are now standard in other distro&#8217;s) &#8211; I believe it was the best, most revolutionary idea I ever had. Oh well, technology is not always the only question.<br />
It would be nice if other distributions realized it though &#8211; added a social aspect to it &#8211; and turned the GNU/Linux hand-hold problem into something that worked like self-service but didn&#8217;t <strong>look</strong> like self-service.</p>
<p>I think that&#8217;s the crucial aspect, right now the only one-on-many support there is, is googling the problem and getting either a manual or somebody else&#8217;s discussion of the same problem on a forum somewhere. This just isn&#8217;t good enough.<br />
It needs to be right in there. Wole had to cheat a lot of the desktop concepts to achieve it. Nowadays, with desktops like KDE4 &#8211; this is not even needed anymore. Everything WOLE did, and much more, including a user-to-user linking and &#8216;find users near me&#8217; and all sorts of other Web2.0-ish human-to-computer-to-other-human interaction funky stuff could happen as native and comfortable parts of the desktop paradigm.</p>
<p>So that is the answer I see &#8211; and the obvious side-note is that I think the technology that will make it happen (way beyond my little vision of 2 years ago) is already (inevitably) being developed onto the GNU/Linux world.<br />
Guess what, I think you <strong>can</strong> hack people. Marketroids have been very effectively hacking people for centuries. But you don&#8217;t hack them the way you hack code. People aren&#8217;t actually very logical. What you need to do to really hack people &#8211; is take what used to be difficult and make it fun. Everytime somebody achieves that &#8211; he&#8217;s about to cause a social revolution.<br />
GNU/Linux has always been that (not only that, but for a lot of people including Torvalds that was the big thing) &#8211; making computing fun. The new challenge is to make computing fun for people who are not computer engineers. Everyone has been trying to do this for 30 years of course with mediocre success at best &#8211; but I actually think that GNU/Linux is busy achieving it &#8211; even if it does look like the underdog. It&#8217;s achieving it because ultimately, one of the cornerstone things about fun is that you cannot have fun if there are too many rules. The less rules, the more playtime &#8211; and that is why windows can never <strong>be</strong> fun.<br />
GNU/Linux has been fun for geeks for years, every day it&#8217;s getting more fun for non-geeks. And if we crack the computer talking to you the way normal people listen and communicate problem (which I think we&#8217;re damn close to &#8230;. (tell me, why was WOLE the only program EVER to actually show a DESKTOP VIEWABLE MESSAGE if a disk in the optical drive cannot be read instead of leaving the user waiting for ever and wondering why nothings happening ? I cannot be the only person who ever thought that maybe showing critical stuff from dmesg as popups on the desktop is a good idea ?) &#8230; well once we do that, I think the revolution will happen &#8211; and who knows &#8211;  I may even be pleasantly wrong and wake up one day and find out it wasn&#8217;t a decade, it was  a year after all.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://silentcoder.co.za/2008/05/how-to-hack-people/' addthis:title='How to hack people. ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>]]></content:encoded>
			<wfw:commentRss>http://silentcoder.co.za/2008/05/how-to-hack-people/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Geeks can get their bling on.</title>
		<link>http://silentcoder.co.za/2008/05/geeks-can-get-their-bling-on/</link>
		<comments>http://silentcoder.co.za/2008/05/geeks-can-get-their-bling-on/#comments</comments>
		<pubDate>Mon, 05 May 2008 14:18:55 +0000</pubDate>
		<dc:creator>silentcoder</dc:creator>
				<category><![CDATA[Diary]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://silentcoder.co.za/silentcoder/?p=319</guid>
		<description><![CDATA[After nearly 3 months of very hard (and secret) labor, I can finally reveal my latest project. GeekBling a South African based online T-Shirt shop with a specific focus on computer programmers, savvy users and other geeks of various degrees. It&#8217;s all about pride, and living life passionately. Check it out.]]></description>
			<content:encoded><![CDATA[<img style='float: left; margin-right: 10px; border: none;' src='http://www.gravatar.com/avatar.php?gravatar_id=743cda1409edb78bbd63e1a49b174b95&amp;default=http://use.perl.org/images/pix.gif' alt='No Gravatar' width=40 height=40/><p>After nearly 3 months of very hard (and secret) labor, I can finally reveal my latest project. <a href="http://www.geekbling.co.za">GeekBling</a> a South African based online T-Shirt shop with a specific focus on computer programmers, savvy users and other geeks of various degrees.</p>
<p>It&#8217;s all about pride, and living life passionately. Check it out.<br /><a href="http://www.geekbling.co.za"><img src="http://geekbling.co.za/sitephotos/ifyoucan2.JPG" alt="Ifyoucan" /></a></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://silentcoder.co.za/2008/05/geeks-can-get-their-bling-on/' addthis:title='Geeks can get their bling on. ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>]]></content:encoded>
			<wfw:commentRss>http://silentcoder.co.za/2008/05/geeks-can-get-their-bling-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chesscode &#8211; the #sporks esoteric language mostly by me (updated now even more TC)</title>
		<link>http://silentcoder.co.za/2008/03/chesscode-the-sporks-esoteric-language-mostly-by-me/</link>
		<comments>http://silentcoder.co.za/2008/03/chesscode-the-sporks-esoteric-language-mostly-by-me/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 12:00:47 +0000</pubDate>
		<dc:creator>silentcoder</dc:creator>
				<category><![CDATA[funny]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://silentcoder.co.za/silentcoder/?p=300</guid>
		<description><![CDATA[So on #sporks today, we discussed Aargh! I compared it to assembler for chess players, and EvilTerran suggested the idea of an esoteric computer language using chess rules/moves. I subsequently (with the help of #sporks) designed one. Yes it is possible, it is Turing complete and I believe it can be implemented. A particular thank <a href='http://silentcoder.co.za/2008/03/chesscode-the-sporks-esoteric-language-mostly-by-me/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<img style='float: left; margin-right: 10px; border: none;' src='http://www.gravatar.com/avatar.php?gravatar_id=743cda1409edb78bbd63e1a49b174b95&amp;default=http://use.perl.org/images/pix.gif' alt='No Gravatar' width=40 height=40/><p>So on #sporks today, we discussed <a href="http://www.esolangs.org/wiki/Argh!">Aargh!</a> I compared it to assembler for chess players, and EvilTerran suggested the idea of an esoteric computer language using chess rules/moves.<br />
I subsequently (with the help of #sporks) designed one. Yes it is possible, it is Turing complete and I believe it can be implemented. A particular thank you to Maximinus who contributed a number of useful ideas.</p>
<p><strong>Starting principles:</strong><br />
Your program is represented by the pieces on a chess board and the board itself. There is a two-byte stack providing state.<br />
Pawns are value pieces, all other pieces are operations. White pawns represent 1, Black pawns represent 0. White blocks on the board are 1 black blocks are 0.<br />
When a pawn is taken, the block it is on represents a bit, the pawn itself another, the piece taking it represents an operation performed on those bits. The result goes in the stack.<br />
When there are 8 bits in the stack, the ascii value represented by the byte they make up is placed on the 2-byte stack.<br />
When operational pieces are taken &#8211; the operation they represent cannot be used again in the current game.<br />
If a pawn takes a pawn, nothing goes in the stack, but the pawn is no longer available for arithmetic.</p>
<p>A program consists of a series of games. Each game is started by feeding in a set of starting positions for pieces. All pieces move as in normal chess rules.<br />
Once all the pawns are taken (unless pawns take pawns this means 2 bytes have been placed into the stack &#8211; but using pawn-take-pawn you could split stack over several games), the &#8216;game&#8217; ends and you<br />
feed in values for the next game.</p>
<p>Since you have a theoretically infinite amount of games, the language will be Turing complete if all required operations are supported.</p>
<p><strong>The operations pieces (white) are:</strong><br />
Rook: AND<br />
Bishop: OR<br />
Knight: XOR<br />
Queen: ADD<br />
King: SUB</p>
<p><strong>The black operations pieces represent the NOT&#8217;s of their white counterparts:</strong><br />
Rook: NAND<br />
Bishop: NOR<br />
Knight: NXOR<br />
Queen: SUB<br />
King: ADD</p>
<p>A game is begun with a call to start and a set of values representing the initial layout of the board for this game.<br />
The values are given as chess coordinates for all pieces.<br />
The first 8 values represent the white operations pieces&#8217; locations.<br />
The next 8 values represent the black operations pieces&#8217; locations.</p>
<p><strong>Basic example:</strong><br />
<em>start A1 A2 A3&#8230;H6 H7 H8 </em><br />
(whatever layout you need) However you can NOT place any pieces on the two center-rows.</p>
<p>Then you need to place the pawns, which are used as input. There are 2 ways to do this.<br />
You can call:<br />
<em>const_pawns</em> &#8230;<br />
const_pawns takes 16 parameters each a chess coordinate, the first 8 places the white pawns the next 8 places the black pawns.  You can place them on<br />
any unused space on the board.<br />
Alternatively you can call:<br />
<em>stack_pawns</em><br />
Stack_pawns works by itself without any parameters, and places 16 pawns representing the two bytes in the stack.<br />
In this case you may not have a normal chess setup of 8 white and 8 black pawns. The Center rows hold the two stacks as input, it is up to you move the pawns so the values they stand on<br />
represent what you want (initially this is simply a matter of which bit in the byte you have)<br />
The first byte in the stack is placed on the row D1-D8 the second on row E1-E8.<br />
Calling stack_pawns without the stack being full results in an error.</p>
<p><strong>Operating on the stack:</strong><br />
From here on, you write down a set of valid chess moves. Those moves that take a pawn are done as operations and the result added to the output stack.<br />
For example:  C7 B4<br />
Means: Piece moves from C7 to B4 (only a knight could do this move btw. But we don&#8217;t need to specify the pieces as it&#8217;s the interpreter&#8217;s job to remember the current location of each piece).<br />
Each operation is written on a new line below the last.<br />
Please note that while you can place any piece ANYWHERE during the start call, you can ONLY make moves for each piece that is allowed under chess rules for during a game.<br />
Once all pawns are removed, you must call start again with a starting position that will allow you to do your next operation. White moves first just like in real chess and moves then take turns.<br />
Some have suggested a variant where games cannot end by merely removing the pawns but require a state of checkmate or a draw to occur &#8211; this is still being debated.</p>
<p><strong>Displaying output:</strong><br />
The print command prints out the ascii character represented by a byte from the stack. It takes one argument, either a 0 or a 1.<br />
If it is 0 it prints the first byte in the stack. If it is 1 it prints the second byte in the stack.</p>
<p>Example:<em> print 1</em></p>
<p><strong>Loops and branches:</strong><br />
<strong>The if statement</strong><br />
The program can branch by using the if statement.<br />
If works by performing a boolean test on the two bytes in the stack in the following form:<br />
<em>if OPERATOR then<br />
   actions<br />
else<br />
  actions.<br />
fi</em></p>
<p>OPERATOR can be any valid boolean comparison: AND, OR etc. if the result is 00000000 then the if is false, otherwise it is true. It is up to the programmer to place values in the stack that evaluate as he wants it.<br />
Additionally you can also do a boolean operation using the value (0 or 1) of a specific piece (regardless of the type of piece, merely the color determines this).<br />
To do so:<br />
<em>if A5</em><br />
Where A5 can be any valid chess coordinate. It returns true if the piece on A5 is white, false if it is black or the block is empty.</p>
<p>Actions represent blocks where the programmer can write any valid chesscode commands including nested loops and branches, output or games (which changes the stack).</p>
<p>Calling if without two full bytes in the stack causes an error.</p>
<p><strong>The while loop</strong><br />
Chesscode supports while loops. Like if statements while loops do a boolean operation on the bytes in the stack.<br />
They take the following structure:</p>
<p><em>while OPERATION<br />
   actions<br />
elihw</em></p>
<p>The actions once more is any valid chesscode commands including games. In fact failing to put games in the loop which will change the stack (and use input from it) to something that ultimately returns false will cause an endless loop.<br />
Like an if statement, calling while on an incomplete stack causes an error.<br />
You can also use a query by coordinates for a while loop e.g.<br />
<em>while C7</em><br />
In this case, if the piece there is white the loop starts, moving it out or taking it with a black piece leads to a false and ends the loop.</p>
<p><strong>Getting user input.</strong><br />
Like the print command can write a value from the stack to the screen, the read command can read a value from the keyboard to the stack.<br />
It takes a single parameter, which indicates a byte in the stack.<br />
For example: <em>read 1</em><br />
The user hits a key on the keyboard, the binary representation of the ascii value of this key/letter is then stored in the second byte in the stack.<br />
If you use read 0 instead, then it will go in the first byte of the stack (replacing any value already there).</p>
<p><strong>Ending the program:</strong><br />
Using these structures, you can write all the code to do whatever you need your program to do. When you are finished, call<br />
<em>end</em><br />
To tell the interpreter/compiler that your program is finished.</p>
<p><strong>Final notes:</strong></p>
<p>Note that all indentation is done for clarity and completely optional. Also note that the EOL character is used as an end of command marker throughout (as opposed to ; for example) so all commands must be placed on a single line.</p>
<p>You are welcome to hate me until the end of time.</p>
<p>Comments are very much desired, and if somebody is up for trying to create a working implementation I would love to know and maybe help.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://silentcoder.co.za/2008/03/chesscode-the-sporks-esoteric-language-mostly-by-me/' addthis:title='Chesscode &#8211; the #sporks esoteric language mostly by me (updated now even more TC) ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>]]></content:encoded>
			<wfw:commentRss>http://silentcoder.co.za/2008/03/chesscode-the-sporks-esoteric-language-mostly-by-me/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>GamePack 1.0</title>
		<link>http://silentcoder.co.za/2008/02/gamepack-10/</link>
		<comments>http://silentcoder.co.za/2008/02/gamepack-10/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 06:00:38 +0000</pubDate>
		<dc:creator>silentcoder</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://silentcoder.co.za/silentcoder/components/com_jd-wp/?p=281</guid>
		<description><![CDATA[Now as many of you know, I stopped development on TappyTux some time ago as there were better projects for the same job that had become available over time. However, I did not stop development on GamePack, the component suite I developed for doing games in Lazarus, originally for the purpose of writing TappyTux. Now, <a href='http://silentcoder.co.za/2008/02/gamepack-10/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<img style='float: left; margin-right: 10px; border: none;' src='http://www.gravatar.com/avatar.php?gravatar_id=743cda1409edb78bbd63e1a49b174b95&amp;default=http://use.perl.org/images/pix.gif' alt='No Gravatar' width=40 height=40/><p>Now as many of you know, I stopped development on TappyTux some time ago as there were better projects for the same job that had become available over time. However, I did not stop development on <a href="http://outkastsolutions.co.za/outkast/index.php?option=com_openwiki&amp;Itemid=&amp;id=gamepack">GamePack,</a> the component suite I developed for doing games in Lazarus, originally for the purpose of writing TappyTux. <br />Now, nearly four years into it&#8217;s development, GamePack has reached 1.0 status &#8211; and it has become a pretty impressive component suite of which I am quite proud. GamePack does sprite handling, collision detection, double-buffered blitting and most other base-graphics work you would need to do a 2D game.  Whether it&#8217;s a simple puzzle game or an advanced tile-based game, GamePack provides the basic tools you need to write it. It&#8217;s closest rival is probably SDL but unlike the latter it does not require you to use a sepperate threading library, or a seperate event manager  (why Larry WHY did SDL do their event manager to use loops ?) or anything like that. You just use the same components and structures you would use to develop any other Object Pascal program in Lazarus. This means a reduced learning curve, the ability to work in a high-level way and a great deal of power. Your core game design can be done in the Lazarus visual form editor, even if you are doing tile-based levels, this is still a powerful and easy way to do it. All doable because GamePack uses only Lazarus native components.</p>
<p>I will soon begin development of a LodeRunner clone using it (I have wanted to write a modern LodeRunner clone true to the spirit of the original for as long as I can remember) and thanks to the power of the suite, this will not take a huge amount of code. The demo program included with the package has about 60% of a complete pacman game. Most pacman clones are around 15000 lines of code, with GamePack &#8211; the demo program is less than 100 lines of new code. That is the power of it.<br />The only difficult bit left is designing game graphics &#8211; which is an entirely different set of skills. If anybody feels like helping me with that part for my LodeRunner clone, please leave a comment b.t.w. </p>
<p>You can download GamePack 1.0 <a href="http://outkastsolutions.co.za/outkast/index.php?option=com_docman&amp;task=doc_details&amp;gid=15">here.</a><br />There is a wiki page <a href="http://outkastsolutions.co.za/outkast/index.php?option=com_openwiki&amp;Itemid=&amp;id=gamepack">here.</a><br />Library documentation available <a href="http://outkastsolutions.co.za/pasdoc/gamepack/">here.</a></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://silentcoder.co.za/2008/02/gamepack-10/' addthis:title='GamePack 1.0 ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>]]></content:encoded>
			<wfw:commentRss>http://silentcoder.co.za/2008/02/gamepack-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deep hack mode and flash-mode</title>
		<link>http://silentcoder.co.za/2006/08/deep-hack-mode-and-flash-mode/</link>
		<comments>http://silentcoder.co.za/2006/08/deep-hack-mode-and-flash-mode/#comments</comments>
		<pubDate>Tue, 15 Aug 2006 01:11:08 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://silentcoder.co.za/silentcoder/components/com_jd-wp-new/?p=188</guid>
		<description><![CDATA[Geeks, hackers, programmers &#8211; call them what you will, everybody nowadays knows which group of programmers I am reffering to. Among us there is a concept known as deep hack mode . Deep hack mode is a state of intense concentration engendered during programming to the exclusion of very nearly all outside stimulus. In fact <a href='http://silentcoder.co.za/2006/08/deep-hack-mode-and-flash-mode/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<img style='float: left; margin-right: 10px; border: none;' src='http://www.gravatar.com/avatar.php?gravatar_id=d41d8cd98f00b204e9800998ecf8427e&amp;default=http://use.perl.org/images/pix.gif' alt='No Gravatar' width=40 height=40/><p>Geeks, hackers, programmers &#8211; call them what you will, everybody nowadays knows which group of programmers I am reffering to. Among us there is a concept known as  deep hack mode . Deep hack mode is a state of intense concentration engendered during programming to the exclusion of very nearly all outside stimulus. In fact a hacker in deep hack mode is unlikely to hear you talking to him at all and usually it requires a physical touch to get his attention.Not that I would advise that &#8211; he will not thank you for it. Deep hack mode takes about an hour of intense work to get into, but by hackers can usually maintained for as much as 12-16 hours. But any interruption that requires more thought than lifting a coffee mug or going to the loo takes you back out of it.There is a reason hackers go into deep hack mode &#8211; and it&#39;s done on purpose. It&#39;s impossible to describe deep hack mode to a non-hacker but mysticizm provides a vocabulary to at least give an idea. In deep hack mode, you become one with your code. The algorythms flow from your mind to the screen with absolute clarity. It&#39;s not so much programming anymore as prophecy. So what is deep hack mode ? Well neurologists actually reckon that it&#39;s a form of hyperfocus, a mental state very similiar to what top athletes call the  the zone . Those who have the ability to hyperfocus are of course often (incorrectly) labeled as having concentration problems &#8211; this is crap. The difference is that if you can hyperfocus, you usually cannot focus partially. So you are either interested enough to hyperfocus, or you are literally going to feel sleepy when you are told to concentrate on something. Hyperfocus is often  treated  as though it was a disease, in reality it&#39;s a powerful talent that allows one to achieve seemingly impossible feats. Virtually every one of the most important lines of code in the world was written by somebody in a state of deep hack mode. On the far opposite end  of the mental scale is  Flash mode . Flash mode is where you get flashes of inspiration. It could be an idea for an amazing new program, or the answer to a problem that you could not even understand, let alone solve, before.Flash mode however requires the opposite mental state from deep hack mode. Deep hack mode is an ideal mental state for churning out code &#8211; it allows you to take your skill as a programmer and translate it into genuine results with frightening efficiency. But it&#39;s a very wrong state for flashes of inspiration &#8211; which can be no less crucial. The best way to get a flash of inspiration is to leave deep hack mode, and go do something entirely different. Read a book. Watch a movie. Chat on IRC &#8211; anything not related in any way at all to the project you are working on (but don&#39;t work on a different project), let your subconscious play with the problem but keep your conscious mind occupied with something unrelated that is fun, destressing and relaxing.Then go to sleep.9/10 times, you will wake up knowing the answer. That is flash mode. When you wake up and suddenly you know what was wrong all along &#8211; and the jubilation it causes is what we call a hackergasm. Of course you knew the answer all along &#8211; but you couldn&#39;t see it because you  were looking too  deeply, and missing something &#8211; getting out of that entirely and letting your subconscious mind do the work, frees you from whatever conscious mental mistake has been preventing you from seeing what was actually wrong &#8211; and find an answer, delivered to your mind when you wake up like room service. Although you cannot always take a nap when you need a flash of inspiration &#8211; when you can, use it.I chose to write this advice today because I went through just this process over the past 48 hours while working on OpenLab. States of hyperfocus, alternating with completely unfocussing and letting the answers come to me&#8230; I did it instinctively, without planning &#8211; because many years in this field have taught me these techniques at the bone level. And when you&#39;re in that cycles is the only time you can describe it in a way that others can copy. People often ask me how they can become programmers like me. I always recommend a lot of books on the topic (hundreds &#8211; it doesn&#39;t matter so much which books as that you read as many programming books as you can), dedication, and years of effort &#8211; but I usually do not describe these mental techniques because when not in this cycle it&#39;s almost impossible to describe them.Having said that, anybody with any actual talent for the field of programming will acquire these skills within the first few years of learning it &#8211; without my or anybodies help &#8211; it comes naturally, in fact it&#39;s unavoidable, those who do not inately have these talents, particularly for hyperfocus never succeed as programmers. They start, they learn, the get okayish but they can never get to that next level, not because they don&#39;t work hard (which is to be respected) but because they simply cannot keep up the pace compared to those who do hyperfocus, and usually they change careers within a few years. It is probably not politically correct to say that, but there is a side to programming that is a matter of talent and you are either born with that talent or you are not. If you aren&#39;t, you can at best be a mediocre programmer -and it&#39;s a field where there is no room for mediocrity, a field where the only choices are between superstar and abject failure.Politically incorrect but true &#8211; and no less true for any other field. I have zero mechanical aptitude, I can&#39;t even change my own oil. It&#39;s a talent I just don&#39;t have. I cannot draw. I cannot sing very well. I certainly cannot model swimwear.Every career field requires talents, and people&#39;s talents vary. That is a good thing -it means that  whatever needs doing &#8211; somebody, somewhere is going to be exceptionally good at it. Yes with practise and training I could improve my drawing, but I will never get beyond mediocre at best &#8211; I don&#39;t have the hand-eye coordination to move a pencil better than that. It&#39;s a talent I just don&#39;t have.  I do not feel bad about this, nor should anybody who finds that as programmers they struggle because they simply don&#39;t have the talent to hyperfocus. There is an entire world of opportunity out there which needs people who can jump in and out of concentration rapidly. So this was certainly not written to teach people how to hyperfocus (though flash mode is something probably almost everyone can learn &#8211; that&#39;s a technique more than a talent) &#8211; but to help outsiders understand a bit better. Geeks hyperfocus as a matter of course &#8211; and turn this &#39;weakness&#39; into their greatest strength. So if the geek in your life is hyperfocussing, she is not ignoring you &#8211; or caring less about you &#8211; but at that stage is in a physical mental state where nothing except code exists. When she comes out &#8211; she&#39;s going to be starved for human contact (and the same goes obviously for a geek &#39;he&#39;) and will spoil you rotten &#8211; it&#39;s just the way we are.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://silentcoder.co.za/2006/08/deep-hack-mode-and-flash-mode/' addthis:title='Deep hack mode and flash-mode ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>]]></content:encoded>
			<wfw:commentRss>http://silentcoder.co.za/2006/08/deep-hack-mode-and-flash-mode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

