<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-24559058</id><updated>2009-02-20T19:07:28.409-08:00</updated><title type='text'>Black Magic Code</title><subtitle type='html'>Black Magic Code is about my view about software engineering and coding. I may at times be controversial so I'm trying to be anonymous, because I'd like to keep my job.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-24559058.post-4129398728338408807</id><published>2008-12-03T15:09:00.000-08:00</published><updated>2008-12-03T15:24:53.598-08:00</updated><title type='text'>A good thing to think about.</title><content type='html'>This is short and to the point. &lt;a href="http://www.rebol.com/article/0381.html"&gt;Productivity&lt;/a&gt;. My personal reflection to this, he blames the Operating System(OS). It is not actually that where the problems is. You can get a productive experience on most OS:es. The problem is the software put on the OS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-4129398728338408807?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/4129398728338408807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=4129398728338408807' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/4129398728338408807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/4129398728338408807'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2008/12/good-thing-to-think-about.html' title='A good thing to think about.'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-4797507646492050554</id><published>2008-09-01T13:18:00.000-07:00</published><updated>2008-09-01T13:53:14.415-07:00</updated><title type='text'>Opinions, everybody has them.</title><content type='html'>There is plenty of C++ hate to go around. There are forums, blogs and social bookmarking sites where the hate sometimes appear.  This is usually posted through a web browser. The post are about how bad the language is in managing memory(because it doesn't), how hard it is to parse(there are some fun ambiguities) and so on. People claim in these posts that it takes a genius to get all these things right. But the thing is that bothers me is that... Ehm.... the majority of the web browsers are implemented in C++. In other words, they rely on the very language that they hate so much. &lt;br /&gt;&lt;br /&gt;Further, this is the fun part. By anecdotal evidence, the people that spread the most hate about C++ have their head up so far the "Web 2.0" ass, that they don't see that their beloved web experience is run by C++. &lt;br /&gt;&lt;br /&gt;Sorry and hate to break it the "Web 2.0" fanboys C++ is good for something. And it does not take a genius to program with it. Your favorite language of the hour is not good enough to build a complete web browser, that can bring the "Web 2.0" experience to people. Prove me wrong please.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-4797507646492050554?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/4797507646492050554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=4797507646492050554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/4797507646492050554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/4797507646492050554'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2008/09/opinions-everybody-has-them.html' title='Opinions, everybody has them.'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-7100732711587147133</id><published>2008-07-07T11:32:00.000-07:00</published><updated>2008-07-07T13:39:35.062-07:00</updated><title type='text'>This is getting out of hand now.</title><content type='html'>Adobe has released their latest Adobe Reader. Funny stuff can be read &lt;a href="http://diveintomark.org/archives/2008/07/04/adobe-9"&gt;here&lt;/a&gt; and &lt;a href="http://blog.micropledge.com/2008/07/adobe-reader-9/"&gt;here&lt;/a&gt;. Yes if you want to read PDF:s with the adobes own reader you must have atleast +200 megabytes available on your hard drive. &lt;br /&gt;&lt;br /&gt;This is a sorry state of affairs. This is not about bloat anymore. It is intrusive behavior by the software company. It is not new in the industry as a whole. Microsoft has done it, the redistributable for .NET 3.5 is a &lt;a href="http://blog.weminuche.net/2007/12/net-framework-35-redist200mb.html"&gt;whopping&lt;/a&gt; 197 megabytes. Yeah old Realplayer &lt;a href="http://real.lithium.com/real/board/message?board.id=realplayer&amp;message.id=24292"&gt;stole&lt;/a&gt; file associations for media files types(persistent rumors say that they even didn't support). Apple did a nice trick with an &lt;a href="http://bernardoh.wordpress.com/2008/03/26/apple-safari-itunes-dubious-upgrade/"&gt;update&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is not about bad programming with way too many features A.K.A. bloat. This is wasting the resources of their users without "asking" them what they want. If they even bother to ask what the users want they have to take an action to avoid the feature(s).&lt;br /&gt;&lt;br /&gt;Now ask yourselves this! What gives Adobe, Apple, Microsoft and RealNetworks the right, to steal disc real estate, your file associations and install other software that you downloaded?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-7100732711587147133?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/7100732711587147133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=7100732711587147133' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/7100732711587147133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/7100732711587147133'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2008/07/this-is-getting-out-of-hand-now.html' title='This is getting out of hand now.'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-6380131186592679679</id><published>2008-06-18T11:51:00.000-07:00</published><updated>2008-06-18T12:51:12.218-07:00</updated><title type='text'>Skills shortage?</title><content type='html'>Found on the web: &lt;a href="http://news.bbc.co.uk/2/hi/technology/7460870.stm"&gt;Skills shortage hits games firms&lt;/a&gt;. Poor poor game companies, they can't find skilled slaves anymore. They blame it on math education and whatnot. Well, sorry but your reputation is not that good. If the reputation was better and it would be a good job, *gasp* people would actually bother with the necessary math. &lt;br /&gt;&lt;br /&gt;It is about eight years ago I visited a game company with a friend. My friend knew a member of the team that did work on the Refactor 2 engine for Battlefield 1942. We visited him at his office, in the evening around eight or nine. Because he was still working. About two years prior to the release date. &lt;br /&gt;&lt;br /&gt;Usually what I've met game programmers they are insanely skilled at what they do. I can be humble and say that I'm not nearly as good of a programmer as most game developers are. But also AFAIK the average game developer drone is not paid that well compared to the skill set and the hours he puts in. &lt;br /&gt;&lt;br /&gt;Is there a shortage, I would not say so. Most people don't want to work under poor conditions for a lousy pay and they even have to know advanced math. People that know advanced math usually are smarter than that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-6380131186592679679?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/6380131186592679679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=6380131186592679679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/6380131186592679679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/6380131186592679679'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2008/06/skills-shortage.html' title='Skills shortage?'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-233099832592336400</id><published>2008-05-31T12:27:00.000-07:00</published><updated>2008-05-31T16:14:17.857-07:00</updated><title type='text'>About outperforming STL</title><content type='html'>I can't really say that I'm chocked by the conclusion in the article by Sergey Solyanik called &lt;a href="http://1-800-magic.blogspot.com/2008/02/stl-vector-performance.html"&gt;STL vector performance&lt;/a&gt;. But it is a fine piece on what is wrong with microbenchmarking. It is also a case study of people who critique C++/STL should actually learn it before they critique it. &lt;br /&gt;&lt;br /&gt;I've spent a great deal of time in learning C++ and STL. It is complex language and library where there a number of finer points to remember. There are a number of other things that I cringe on but I'll limit myself to "microbenchmarking" and actually learning the library/language.&lt;br /&gt;&lt;br /&gt;You can make any language/library look bad with a microbenchmark. Because it limits itself to a couple of features and a particular way of solving a problem. The biggest problem in the STL vector performance post is that he is comparing a narrow problem of filling an array with values and filling the same values into a much more complex and capable vector template. All that complexity is adding abstractions that cost a fair bit of cycles that in the case of integers can be outperformed with realloc or if you have known size preallocating. The post revolves around a very unclear problem. What exactly is vector bad at? This is where the language and library knowledge comes in. &lt;br /&gt;&lt;br /&gt;As a C++ programmer I am in the habit of using vectors and arrays the same way. Because the STL library implementation gives a nice little detail with vectors. The elements of a vector are stored in a continuous area of memory exactly like an array. You can access the internal array of a vector through the [] and it will have same speed as a regular array access. But to keep this continuous array of objects this way it needs to reallocate the memory when you need more space for your objects. i.e. insertions of objects at the end of vector is not constant. This the complexity of push_back, check if you need more space before you insert and actually doing an insert. For a vector of int:s it could be quite large compared to a array of int:s reallocated with realloc(). If I'm ready to sacrifice access speed to the elements I could use something like deque from STL instead. Insertion in the front and back is guaranteed to be "constant", because it does not provide the guarantee of continuous storage. Internally it looks quite different, read all about it in &lt;a href="http://www.codeproject.com/KB/stl/vector_vs_deque.aspx"&gt;vector vs. deque&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;What if you need fast access by index? You should use a STL vector and fine tune your growth with reserve to increase capacity. Adding to the vector with push_back might still be costly depending on what you are pushing. Because when you reserve you don't actually add anything to the vector you just make sure it has enough memory(a.k.a. capacity) when you add more objects onto it. Read all about it in &lt;a href="http://www.gotw.ca/gotw/074.htm"&gt;Uses and Abuses of Vector&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-233099832592336400?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/233099832592336400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=233099832592336400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/233099832592336400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/233099832592336400'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2008/05/about-outperforming-stl.html' title='About outperforming STL'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-1289368729512510300</id><published>2008-02-18T10:46:00.000-08:00</published><updated>2008-03-26T15:04:13.322-07:00</updated><title type='text'>Further comment on "How software companies die!"</title><content type='html'>People that work with sales and marketing are for software developers a strange bunch. For a software developer it is totally nonsensical why anyone would come up with ideas like: Gluing a couple of eyes on a rock and call it a &lt;a href="http://en.wikipedia.org/wiki/Pet_rock"&gt;Pet Rock&lt;/a&gt;. But marketing people see how brilliant it is. They think: "You can sell anything with the right marketing!". &lt;br /&gt;&lt;br /&gt;But you can't sell everything with marketing. It depends on the nature of the "product". As soon as the buyer expects it to something and be usable the meme of "anything can be sold with marketing" becomes useless. Marketing and sales do not understand the nature of the beast of software. When you cram in more features in the poor developers schedule two things happen. They have less time to fix old bugs and the buyers (sometimes referred to as the market) get confused by too many options and features. If you ever try to fight a marketing department when they say "the market demands more options and features", you will get slammed each and every time with "developers are too dumb too understand the users" or "developers don't understand marketing". So when they get their way the result is an unmaintainable mess of buggy bloatware with features no one knows how to use. Thanks marketing. &lt;br /&gt;&lt;br /&gt;Are there any solutions for this mess? &lt;br /&gt;&lt;br /&gt;Lets look at a related business of hardware. Processors to be precise. I feel like an old fart when I think back to the dancing clean room guys. But that was exactly what happened with Intel. Marketing took over because they had a successful campaign with brightly colored people dancing telling about MMX enabled processors. They started to butt in to the engineering decisions of the company. Intel had an CEO that allowed that. To make a long story short, it resulted in a Pentium IV with a magical number of 3.2. But a lot of engineering compromises where necessary to reach the magical number. Competitors caught up, they had engineers making R&amp;D decisions. Resulted in a different gamble from their part. AMD trounced Intel with good engineering, they wouldn't have had the chance if Intel had made decisions based on technical merits than reaching a magical marketing number. Intel shifted to an engineering based decisions and they are making solid products ever since. &lt;br /&gt;&lt;br /&gt;This is also very true for software. It is better to make solid products rather than market the crap out of compromises.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-1289368729512510300?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/1289368729512510300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=1289368729512510300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/1289368729512510300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/1289368729512510300'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2008/02/further-comment-on-how-software.html' title='Further comment on &quot;How software companies die!&quot;'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-2910296394074261046</id><published>2008-02-18T07:08:00.000-08:00</published><updated>2008-02-18T07:13:50.549-08:00</updated><title type='text'>Sounds awfully familiar.</title><content type='html'>This pops up now and again when you read about software engineering and programming on the web. &lt;a href="http://diary.carolyn.org/osc.html"&gt;How Software Companies Die&lt;/a&gt; by Orson Scott Card. It is scary how often you see this pattern repeated. It seems to be repeated at my current workplace. Considering it is written in 1995, the remaining question is will people ever learn. &lt;br /&gt;&lt;br /&gt;I'll post a longer comment on it later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-2910296394074261046?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/2910296394074261046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=2910296394074261046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/2910296394074261046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/2910296394074261046'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2008/02/sounds-awfully-familiar.html' title='Sounds awfully familiar.'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-3748954013976490721</id><published>2008-02-01T09:57:00.000-08:00</published><updated>2008-02-01T10:18:38.550-08:00</updated><title type='text'>Here is a scary thought for you.</title><content type='html'>The faith of billions of euros(or dollars or whatever currency you prefer) are decided by Excel sheets with quick n' dirty VBA hacks. These hacks are sometimes built by people with little or no training in software engineering. This is the scariest bit of information that I have got from the SocGen scandal. Jeromé Kerviel isn't a computer genius, he knows a little VBA. Don't believe me read &lt;a href="http://www.theregister.co.uk/2008/01/31/kerviel/print.html"&gt;this&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Who would have known, an Excel bug could trigger the next stock market crash. Microsoft decides the faith of more money than they are themselves worth. &lt;br /&gt;&lt;br /&gt;I don't know about you, but to me this looks like an accident waiting to happen. And if we don't do anything about, it will not be pretty.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-3748954013976490721?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/3748954013976490721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=3748954013976490721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/3748954013976490721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/3748954013976490721'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2008/02/here-is-scary-thought-for-you.html' title='Here is a scary thought for you.'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-1956403919576407478</id><published>2007-10-25T15:00:00.000-07:00</published><updated>2007-10-25T15:27:47.453-07:00</updated><title type='text'>This can't be for real...</title><content type='html'>I have huge amounts of power available on computer. A dual core with a lot of RAM available. This dual core is 64-bit capable so of course my OS(the latest Ubuntu if your curious) supports it. On occasion I use it to browse the web.  I landed on "Aftonbladet" and the JavaScript coupled with a couple of Flash ads. Guess what, my beautiful dual core with 2 gigabytes of RAM memory became sluggish! From visiting a web page! &lt;br /&gt;&lt;br /&gt;Why would anyone in their right mind think that everything in the future of computing is going to be Rich Internet Applications? Seriously, we have enormous amounts of hardware in our homes to browse the web. But the crazy thing here is that our monster machines idles when we use them to browse the web. We are wasting clock cycles on inefficient software that is supposed run the wave of the future by enabling new whizzbang Rich Internet Applications! Think about it... is this really the way to go?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-1956403919576407478?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/1956403919576407478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=1956403919576407478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/1956403919576407478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/1956403919576407478'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2007/10/this-cant-be-for-real.html' title='This can&apos;t be for real...'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-3442132088282104646</id><published>2007-05-17T11:16:00.000-07:00</published><updated>2007-05-17T11:30:15.887-07:00</updated><title type='text'>I hate Windows Vista.</title><content type='html'>I have for the first time professionally crossed paths with Vista. I hate the Vista experience. How many of those mind numbing dialogs of Allow and Continue buttons I have to press? How about the thing where you drag and drop a file into a folder where it already exists and it asks you every time that if you want to Move and Replace or Copy and Replace, with the cancel where the continue used to be on XP. &lt;br /&gt;&lt;br /&gt;But you can customize away most of these dialogs, but is it easy? No.... after I have seen the guides for disabling the dialogs. It has left me wondering why people insist on that Vista is granny-ready but not the nearest Ubuntu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-3442132088282104646?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/3442132088282104646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=3442132088282104646' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/3442132088282104646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/3442132088282104646'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2007/05/i-hate-windows-vista.html' title='I hate Windows Vista.'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-1897523060752155393</id><published>2007-04-06T04:02:00.000-07:00</published><updated>2007-04-06T04:41:53.018-07:00</updated><title type='text'>About PHP security...</title><content type='html'>I saw a link on &lt;a href="http://programming.reddit.com/"&gt;programming.reddit&lt;/a&gt; that was about PHP security. It was a few slides of which vulnerabilities a inexperienced PHP coder can introduce. Take a look for &lt;a href="http://ilia.ws/files/zend_security.pdf"&gt;yourself&lt;/a&gt;. These are the most common and quite easily exploitable holes in your garden variety of PHP "application".&lt;br /&gt;&lt;br /&gt;Now the holes in them selves aren't that interesting. It is this comment I found in the discussion on reddit about the pdf slides above. &lt;blockquote&gt;&lt;span class="little"&gt;         &lt;/span&gt;           &lt;div id="body2412728" class="commentbody"&gt;               &lt;p&gt;That's one of the things I don't like about PHP's culture and philosophy. They think it's the programmer's fault. The programmer should have to do all this by hand every single time. The programmer shouldn't be given any help or supplied with any set of intelligent defaults.&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;That is the best thing ever written about secure coding in PHP. The PHP tool providers has a flawed culture when it comes to aiding the programmer in security. It has a very low barrier of entry to start programming in and it means that inexperienced people will use it to start coding. But the security aspects of writing less vulnerable code in PHP has a steep learning curve. Also this has to be done manually each and every time you accept user input. Do you see budding PHP coders thinking about security when they start out. Do you think that your average PHP monkey is thinking about security when sitting in his hot little room at the local web dev shop with his boss breathing down his neck and asking "is it done yet?" every five seconds. &lt;br /&gt;&lt;br /&gt;Of course the programmer has some responsibility to see that his code is securely written, but the programming language should help him if he does a few mistakes in writing secure code. And that is up to Zend company to change their culture and philosophy when it comes to this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-1897523060752155393?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/1897523060752155393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=1897523060752155393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/1897523060752155393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/1897523060752155393'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2007/04/about-php-security.html' title='About PHP security...'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-4053030701242687009</id><published>2007-02-28T12:03:00.000-08:00</published><updated>2007-02-28T12:30:36.065-08:00</updated><title type='text'>Managment using bad metrics.</title><content type='html'>I have always thought that I'm one of the lucky ones that is not measured with Lines Of Code or something similarly bad metric on my day job as a software developer. Managers has always tried to measure the productivity of a developer, and some of the metrics are notoriously bad. Like Lines Of Code(LOC). LOC counts are really bad at measuring productivity when it comes to comparing developer A who does nice concise well designed code and developer B that is a notorious copy paste programmer without even considering design. With LOC measuring developer B is more productive. Most of the software industry has realized that developers B are bad for you, without things like design and forethought when developing software is bad for the end result. But the message has not gone through to various marketing, sales and PR people out there.&lt;br /&gt;&lt;br /&gt;As it turns out marketing/sales at development shops has their own metric. I'll call it "Ass Heat Index". This is the metric where you as a developer is measured by the time spent with your ass in the office chair and warming it up. It seems that they have a covert sensor sensing the heat that your ass i radiating to the office chair and plots graphs accordingly. The more heat over a longer period your ass is giving away to the chair means that you are more productive than the guy sitting shorter time in his chair.&lt;br /&gt;&lt;br /&gt;The funny thing is that we wasted over an hour in an meeting with our PR director learning about this index and thus lowering all the Ass-Heat-Indexes for our developers.&lt;br /&gt;&lt;br /&gt;Seriously if your schedule is slipping, do something else about than complain to your developers that they aren't spending enough time in their chairs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-4053030701242687009?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/4053030701242687009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=4053030701242687009' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/4053030701242687009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/4053030701242687009'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2007/02/managment-using-bad-metrics.html' title='Managment using bad metrics.'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-116525916564825585</id><published>2006-12-04T11:00:00.000-08:00</published><updated>2006-12-04T11:06:05.660-08:00</updated><title type='text'>I've seen them all...</title><content type='html'>I've got a link for you, continuing on what is wrong with the software industry. This time it is Steve Mcconnell filling in on the &lt;a href="http://www.stevemcconnell.com/rdenum.htm"&gt;Classic Mistakes&lt;/a&gt; you can do in a project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-116525916564825585?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/116525916564825585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=116525916564825585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/116525916564825585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/116525916564825585'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2006/12/ive-seen-them-all.html' title='I&apos;ve seen them all...'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-116475372465882532</id><published>2006-11-28T14:33:00.000-08:00</published><updated>2006-11-28T14:42:04.673-08:00</updated><title type='text'>This is almost to good to be true....</title><content type='html'>I was over at &lt;a href="http://programming.reddit.com/"&gt;reddit&lt;/a&gt; today and found a very interesting link. An interview with Bjarne Stroustrup the designer of C++. Titled: "&lt;a href="http://www.technologyreview.com/InfoTech/17831/"&gt;The Problem with Programming&lt;/a&gt;". Now if you have a hard time figuring out my last rambling about the software industry. This is the article to read.&lt;br /&gt;&lt;br /&gt;Bjarne states:&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;I think the real problem is that "we" (that is, we software developers) are in a permanent state of emergency, grasping at straws to get our work done. We perform many minor miracles through trial and error, excessive use of brute force, and lots and lots of testing, but--so often--it's not enough.&lt;/p&gt;&lt;p&gt;Software developers have become adept at the difficult art of building reasonably reliable systems out of unreliable parts. The snag is that often we do not know exactly how we did it: a system just "sort of evolved" into something minimally acceptable. Personally, I prefer to know when a system will work, and why it will.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;And when asked about how to fix it.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;In theory, the answer is simple: educate our software developers better, use more-appropriate design methods, and design for flexibility and for the long haul. Reward correct, solid, and safe systems. Punish sloppiness.&lt;/blockquote&gt;But he is not naive and continues with&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;In reality, that's impossible. People reward developers who deliver software that is cheap, buggy, and first.&lt;/blockquote&gt;Read the whole interview it is worth your time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-116475372465882532?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/116475372465882532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=116475372465882532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/116475372465882532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/116475372465882532'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2006/11/this-is-almost-to-good-to-be-true.html' title='This is almost to good to be true....'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-116422236854830025</id><published>2006-11-22T10:43:00.000-08:00</published><updated>2006-11-22T14:05:20.626-08:00</updated><title type='text'>One thing wrong with the software industry.</title><content type='html'>This is a post I have wanted to write a long time. This will be an article about what is so depressing about the craft of creating computer software and hopefully I'll be writing a few more of these articles.&lt;br /&gt;&lt;br /&gt;The thing is that I know the secrets of why so many software projects just fail. Well they aren't exactly secrets, they are more like lessons that many people in positions to make decisions about software development just don't learn. If they where secrets, I would be a billionaire by now with a streak of successful projects behind me.&lt;br /&gt;&lt;br /&gt;Lesson one: Artificial deadlines, milestones, timelines or time related whatever that is way too short, have a habit of biting you in the ass in the end. This is the most costly mistake that many companies do. Examples of this practice is: "This can't possibly take more than a couple of hours!" or "This must be done in x months, or the company must close up shop!". If a developer or developer manager buys into this then the impending train-wreck is almost always is a fact.&lt;br /&gt;&lt;br /&gt;The single most important reason why it is a train-wreck just waiting to happen is that: Developers under stress is almost always more prone to produce low quality code. It could be possible that the code that was produced under pressure actually works, sort of. Lets say that it produces the desirable result. Of course there are a few bugs, but those get fixed... no big wreck that I warned you of earlier. This is a possible outcome, also in my experience not too uncommon. So where is the train-wreck?&lt;br /&gt;&lt;br /&gt;It is in the maintenance phase of your application. All of a sudden when you have stressed out code it lacks some things like uhm... design because there was no time, comments because the developer that was under stress thought "I'll fill in that later, after the project is shipped and done!" and the next crisis surfaced(it was those pesky bugreports that poured in!).&lt;br /&gt;&lt;br /&gt;The psychology behind the keyboard that produces this is that with an artificial timeline/deadline it is treated like a 100 m dash instead of a marathon. This is the important thing, when you impose stress on a developer he will code like there is no tomorrow and the result has no tomorrow either. He expends all his energy on the very beginning of the race and just codes away without thinking of the rest of it. What happens if the bug that surfaces six months after delivery and it turns out that it is a huge design flaw? There is no simple way of "patching" it, it takes a lot of time and money. What happens if the feature request that come in after one month is crucial for your customer/customers and it doesn't fit in your design without rewriting significant portions of the code? Same result. You might lose the customer(s), because they lack patience and/or find a cheaper vendor that (can) provide what they want. That is expensive isn't it. That is the wreck in all its glory...&lt;br /&gt;&lt;br /&gt;This was an entry inspired by parts of this &lt;a href="http://www.fastcompany.com/magazine/06/dropcode.html"&gt;article&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-116422236854830025?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/116422236854830025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=116422236854830025' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/116422236854830025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/116422236854830025'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2006/11/one-thing-wrong-with-software-industry.html' title='One thing wrong with the software industry.'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-116402633252597851</id><published>2006-11-20T04:35:00.000-08:00</published><updated>2006-11-20T04:38:52.540-08:00</updated><title type='text'>This looks like great fun....</title><content type='html'>I've been keeping my eye on &lt;a href="http://www.damnvulnerablelinux.org/"&gt;Damn Vulnerable Linux&lt;/a&gt; for a while now. It looks like a terrific educational tool... who knows it might teach a trick or two for experienced people also.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-116402633252597851?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/116402633252597851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=116402633252597851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/116402633252597851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/116402633252597851'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2006/11/this-looks-like-great-fun.html' title='This looks like great fun....'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-116354080550083594</id><published>2006-11-14T13:33:00.000-08:00</published><updated>2006-11-14T13:46:45.513-08:00</updated><title type='text'>kernel.randomize_va_space....</title><content type='html'>This is actually a quite a cool feature that I recently ran across on my Linux box at home. It is an Ubuntu 6.10 and I tried to run some old shellcode. For the life of me I didn't get it to work. In this was examples with specially crafted vulnerable software just to demonstrate.  So I forgot about for a week or so, and one day last week I started to hunt down what was wrong. I found it... all never 2.6 linux kernels have the nasty habit of randomizing the address space of new processes. Why would you want to do that may you ask...&lt;br /&gt;&lt;br /&gt;Because classic shellcode exploits rely on a known address space to execute its malicious payload. When you randomize your address space on the new processes means that your computer becomes more secure against some exploits.&lt;br /&gt;&lt;br /&gt;Notice the &lt;span style="font-style: italic;"&gt;some&lt;/span&gt; because it is not a panacea. It is not going to fix all your vulnerabilities. Also it is possible to turn it off if you by some odd chance experience problems. "sysctl -w kernel.randomize_va_space=0". And I suspect that there is going to be a number of System administrators out there just turn it of "because it could pose a problem", if they knew about it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-116354080550083594?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/116354080550083594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=116354080550083594' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/116354080550083594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/116354080550083594'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2006/11/kernelrandomizevaspace.html' title='kernel.randomize_va_space....'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-116188860189335578</id><published>2006-10-26T11:46:00.000-07:00</published><updated>2006-10-26T12:26:31.203-07:00</updated><title type='text'>Why I program linux in the evening...</title><content type='html'>Maybe it is time for an update of the blog.&lt;br /&gt;&lt;br /&gt;Being a developer you can almost guess what platform I develop for on my day job. You don't need superior mind reading skills to know that it is windows. Because the majority of the computers out there are running Windows. So it is natural that some program for that platform.&lt;br /&gt;&lt;br /&gt;But looking at the development on the Windows world for developers I've recently becoming more and more worried on what direction it is taking. It is not something highly technical as the newfangled WinFX API that is the new "managed" interface to work with windows. The scariest part of the new direction is the Microsoft commitment of having the biggest media delivery platform. It means that they pay more attention to please the big media companies than the actual needs of their customers. You know the people that are actually buying the Microsoft products.&lt;br /&gt;&lt;br /&gt;I know it is a conspiracy theory, but look at the circumstantial evidence: Microsoft patched the "vulnerability" that allowed removal of DRM in Windows Media faster than the VML exploit in the worlds most widely used browser. And of course there is the difference in the media capabilities of the different windows editions, there is more possibilities with patchguard than without. I'm going to hold my view what I think of patchguard for myself. But I'll tell you this much, I think it doesn't help to keep the questionable software out of your computer, even if it is marketed as such. The Sony rootkit fiasco should have taught us that, what happens if Sony f***s up again?&lt;br /&gt;&lt;br /&gt;With Linux I don't have to worry of the direction of the company that delivers your favorite Linux distribution, because you can always change distribution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-116188860189335578?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/116188860189335578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=116188860189335578' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/116188860189335578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/116188860189335578'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2006/10/why-i-program-linux-in-evening.html' title='Why I program linux in the evening...'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-115817162771527318</id><published>2006-09-13T11:07:00.000-07:00</published><updated>2006-09-13T11:20:27.730-07:00</updated><title type='text'>"Are you incompetent, it is just adding a single button!"</title><content type='html'>Oh no not again. It has been years since I last encountered the "it is just a button!".  For f****ks sake, adding a button to a Graphical User Interface is no actual work, but making that button do something is.... uhm, anything from quite easy to impossible. The most annoying thing, is that there is no way of explaining to the person that can be nearly impossible especially when the person refuses to provide a spec for it.&lt;br /&gt;&lt;br /&gt;The discussion starts with a "add a button", when the developer asks what the button is supposed to do and the response is "it shouldn't be that difficult". Now the developer thinks "great, for the first time in my career I get a proper spec!" and all he gets is dissappointment. He is provided with basicly what the button is supposed to be labeled and he is left by his manager to figure out what the label means. No spec, no cursory requirements, just a button called something and alot of questions...&lt;br /&gt;&lt;br /&gt;And I have run into it too many times to count by now...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-115817162771527318?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/115817162771527318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=115817162771527318' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/115817162771527318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/115817162771527318'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2006/09/are-you-incompetent-it-is-just-adding.html' title='&quot;Are you incompetent, it is just adding a single button!&quot;'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-115417258625391251</id><published>2006-07-29T04:05:00.000-07:00</published><updated>2006-07-29T08:47:54.216-07:00</updated><title type='text'>On development of security applications.</title><content type='html'>Over at &lt;a href="http://blog.assarbad.info/"&gt;assa's blog&lt;/a&gt; an interresting &lt;a href="http://blog.assarbad.info/20060727/agnitum_panicked/"&gt;post&lt;/a&gt; appeared... I'm not going to comment on the whole thing just to say that he is righteous. I will comment on a small passage on the business case of the anti - virus/spyware/hacker software companies. &lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;"How about education of PC users? That is something mostly neglected by anti-&lt;whatever&gt; vendors, just because educated users making educated decisions could possibly harm their business." - Assarbad&lt;br /&gt;&lt;/whatever&gt;&lt;/blockquote&gt;&lt;whatever&gt;This quote shows the short-sightedness of the whole anti- industry. Education of users to have good habits when using internet services like mail or the web would improve the experience for everyone. Because some of the spam you receive daily in your inbox is from someones computer who clicked on a link that he/she shouldn't have clicked on. The solution is not relying on out dated definition files of your particular security software. I hope that you run some security software but, it is the last line of defense, first and foremost you must have good habits. What those good habits are... Maybe I'll run a series on that later...&lt;br /&gt;&lt;br /&gt;&lt;/whatever&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-115417258625391251?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/115417258625391251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=115417258625391251' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/115417258625391251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/115417258625391251'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2006/07/on-development-of-security.html' title='On development of security applications.'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-114841174034447799</id><published>2006-05-23T11:52:00.000-07:00</published><updated>2006-05-23T12:38:17.406-07:00</updated><title type='text'>But I know it when I see it...</title><content type='html'>A swedish television investigative journalism "show" called "Insider" is currently running a investigation about the money behind porn industry. Now why I use the term "show" for the television program is that it is not totally unbiased journalism. The first episode of this investigation was little about the background on the history and starting to follow the money. One of the points was that Internet Service Providers(ISP) makes a bundle out of this. I could almost buy their point if it wasn't for their "expert": &lt;a href="http://svl.blogspot.com/"&gt;Per Hellquist&lt;/a&gt;.  I'll translate a quote for you: "It is possible to screen pictures for skin colored pixels, and from there determine if a picture is pornographic or not!". This in the context that it is feasible for ISP:s to intercept porn traffic by this method. This is so wrong at so many levels.&lt;br /&gt;&lt;br /&gt;To start of Per works at Symantec in sweden. Nothing wrong with working at symantec ( &lt;a href="http://www.ranum.com/editorials/corporate-songs/sure-2.htm"&gt;or is there&lt;/a&gt;? ), but it begs the question how he got his job in the first place? He lacks some fundamental knowledge about how the internet works and lets not forget some common sense.&lt;br /&gt;&lt;br /&gt;Lets try to break down what is wrong with the statement.&lt;br /&gt;&lt;br /&gt;1. When you transfer a file on the internet, the file is divided in to chunks called packets and routed through the network!&lt;br /&gt;&lt;br /&gt;This means that to analyze a picture all packets of that picture must be captured ( also rerequest a packet if it was malformed during transport )  and then assembled to the file, first after that you can start your analysis of the picture. But if you capture your packets during transit then it is too late to stop the transfer! To solve these problems we must somehow &lt;a href="http://en.wikipedia.org/wiki/Web_proxy"&gt;proxy&lt;/a&gt; the transfer. If by some luck we succeseed in capturing and analyzing the content of the image the next problem rears it's ugly head.&lt;br /&gt;&lt;br /&gt;2. Picture analysis is not cheap!&lt;br /&gt;&lt;br /&gt;It takes enourmous amounts of memory and processing power to keep up with just the http traffic of a connection. But these companies are usually rich and they could actually take a slightly higher fee for a slower connection just to filter it for the customers. Which customer would not like to pay more and get less content???&lt;br /&gt;&lt;br /&gt;3. Picture analysis is hard!&lt;br /&gt;&lt;br /&gt;Really, thats why it is so computationally expensive. First of all what is skin color, the shade of colors differs slightly with race. That makes it a little harder but lets assume that we can solve this problem. How would the computer determine image comes from a lingerie webshop or porn page? Number of pixels that are skin colored? The problem here is actually very well known. A human can actually tell &lt;a href="http://en.wikiquote.org/wiki/Potter_Stewart"&gt;what is smut or not&lt;/a&gt;, but it is a matter of personal taste. A computer has a very hard time to "&lt;a href="http://www.cs.indiana.edu/%7Emarawils/writing/aiporn.html"&gt;see the difference&lt;/a&gt;".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-114841174034447799?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/114841174034447799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=114841174034447799' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/114841174034447799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/114841174034447799'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2006/05/but-i-know-it-when-i-see-it.html' title='But I know it when I see it...'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-114668328739972619</id><published>2006-05-03T11:35:00.001-07:00</published><updated>2006-05-03T12:10:29.053-07:00</updated><title type='text'>How about C...</title><content type='html'>Recently I started studying the deep stuff in C++ with things like meta template programming(MTP) and so on.  But also realized the problem with the cool stuff. In my previous post I described programmers that are not proficient enough with C++ and why I'd like to see them move on to the managed land. You should not use MTP in environments where people are not ready to learn it.  Because you may not be around until End of Life of that particular code to maintain it. I only know a few people that I would dare get near such code unless it was really carefully crafted.&lt;br /&gt;&lt;br /&gt;Maybe we should go back to C instead. Don't get me wrong, C++ is extremly powerful and versatile programming language but maybe it has too much power. C has a less features but it has plenty of  power. Less features means less worry about something biting your fellow programmers in the *ss.&lt;br /&gt;&lt;br /&gt;Maybe someone says: "This is 2006 and C is very old!"... Yes it is 2006 and C is old, but what is wrong with that? I'll tell you whats wrong with that! Nothing... There is no expiry date on programming languages. It is fairly portable and has a stable standard and has plenty of power.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-114668328739972619?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/114668328739972619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=114668328739972619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/114668328739972619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/114668328739972619'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2006/05/how-about-c_03.html' title='How about C...'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-114357696389595654</id><published>2006-03-28T12:04:00.000-08:00</published><updated>2006-03-28T12:36:30.970-08:00</updated><title type='text'>The C++ Illuminati...</title><content type='html'>There almost seems to be a secret society of C++ programmers out there (I'm not a member... even if I was I wouldn't tell you). They are rooting for the success of Java and C#(pronounced C-Suck). You would ask yourselves why?&lt;br /&gt;&lt;br /&gt;If you ever had attempted any significant C++ development you should have developed a love-hate relationship for this programming language. This because there a number of things that you need to understand and remember when programming. Not only all obvious things like copy-constructors and virtual destructors, also things like what methods are silently created, their default behaviour and how static variables must be created to exactly determine when they are initialized. Of course you have worked with programmers that doesn't know or care about these details. They think that they can't be bothered with this, but if you are a better programmer than they are you know how important these "finer-points" are. So you end up hating the language instead of the programmers who can't program in it. But yet you love its power.&lt;br /&gt;&lt;br /&gt;This is the reason why the C++ illuminati is hoping for success of the managed languages. Someone once said to me "The devil is in the details!". Managed environments can't give that close attention to details as the native languages can. The most mindless and booring development projects out there are fine with managed langauges. These projects are good money and the talentless developers who couldn't code their way out of a wet paper bag need a language and environment that saves them from themselves. When more talentless cubicle drones move to languages that suites them, the more real work talented C++ programmers can do instead of cleaning up the miserable messes by the talentless programmers. This is where C++ gets a real revolution... atleast that is what the C++ illuminati hopes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-114357696389595654?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/114357696389595654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=114357696389595654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/114357696389595654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/114357696389595654'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2006/03/c-illuminati.html' title='The C++ Illuminati...'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24559058.post-114306215462800568</id><published>2006-03-22T13:02:00.000-08:00</published><updated>2006-03-22T13:15:54.636-08:00</updated><title type='text'>A short introduction.</title><content type='html'>It is important to remember what software is about. The things that code does. At the lowest level it only manipulates 1 and 0. To this dual state we attach layers of abstraction. Grouping these primary pieces to numbers. These numbers are sometimes turned into characters. A series of characters are grouped together into strings and so on. My goal when trying to become a good developer is to effortlessly move between these abstraction levels efforlessly.&lt;br /&gt;&lt;br /&gt;I'm a C++ programmer by trade. By night I use Python, Assembler, C and of course C++.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24559058-114306215462800568?l=blackmagiccode.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blackmagiccode.blogspot.com/feeds/114306215462800568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=24559058&amp;postID=114306215462800568' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/114306215462800568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24559058/posts/default/114306215462800568'/><link rel='alternate' type='text/html' href='http://blackmagiccode.blogspot.com/2006/03/short-introduction.html' title='A short introduction.'/><author><name>paracelsus</name><uri>http://www.blogger.com/profile/07146305446785518302</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14727831123903101872'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>