Monday, September 24, 2007

Silence of the blogs

Some say silence is golden.

Of course, they didn't even bother following their own golden rule, so we shouldn't pay any attention to them. I, however, was not lost for words, but an overload of work left very little time for some of my favorite things. One of them is writing here, but others are watching TV, and of course, playing computer games (how's that for segue of the year?).

Most ‘real’ adults I know don’t actually play computer games (no , soliter and minesweeper don’t count). I am talking about “hard core” games. RPG’s like gothic (one of the best RPG’s ever. Well, two actually. Gothic 1 and 2 where amazing. Gothic 3 was an awful mistake that I am willing to overlook if they change it back and fix the engine in gothic 4) and Never winter nights. One might also expect me to mention oblivion, but the truth is it’s a terrible game with an amazing graphics engine. The problem with oblivion btw is that it takes the whole fun of RPG’s out of the game by creating a game system that upgrades your enemies according to your current level…and this means you simply can’t progress in the game. Doing a beginner quest later on is just as hard as if you would have done it in the beginning….it doesn’t “keep the game challenging” as some misguided game designer might think, it keeps you from getting anywhere. Imagine a life where things never get harder or easier…they are just the same all the time. Sure, the graphics are great, but the plot leaves something to be desired, and you can never achieve anything.

Hmm…it seems I strayed from my point there….what I was saying is that “true adults” don’t seem to play computer games, and I think it’s a shame. I bought myself an xbox in the beginning of the year. I’v always wanted a game console as a kid but my parents couldn’t afford one. They also considered it to be a waste of money (‘why would you spend that much money on a game anyway’). They were, however, willing to buy a computer because we managed to convince them it was ‘educational’. Turns out it was. Wanting to play computer games motivated me into learning how to tweak the mighty Autoexec.bat and the holy Config.Sys. Words cannot describe the joy of getting your conventional memory up to a free 620k (and I could even manage 632k in some cases). It was almost as satisfying as playing the game. So the years passed, and it turns out that playing all these games and learning how to tweak things, finding new ways to cheat at games by freezing and changing memory addresses and hex editing save files really played off. These days I can afford to do all the things I wanted to do as a child thanks to these computer thingies.

The problem is that our society is structured in a very annoying way, now that I can afford to do all these cool things I am considered too old for them (which doesn’t usually bother me…) but mostly, it doesn’t leave you time to do all the things you CAN do. Time also takes away some of the energy, although I have an untested theory that you actually gain energy by running around, playing with your friends and doing fun and exciting things. they also took all the fun junk food away. When you’re a kid, your parents limit your junk food consumption because it’s not healthy for you (you don’t care , because you’re a kid and you know what’s fun) , but as you grow older , you start to believe that junk food is actually bad for you. Hell, it’s not even just junk food anymore..as time passes it seems food in general is just out to get you and is looking for new ways to kill you (mad cow, cancer , allergies, free radicals, confined radicals, toxins, chemicals, monosodium glutamate to name a few). The only things that are good and healthy are things you don’t really want to eat. And even if you find something that you like to eat and is both good and healthy, then you still have to watch out for the ominous cholesterol creeping through your veins…really, it seems some people can’t enjoy life , and somehow they manage to convince the rest of us that we shouldn’t either. Even if we still do things that are fun , they find all kinds of ways to make us feel guilty about it.

So I bought myself an Xbox. I don’t have as much time as I did when I was a kid to play games. Usually I prefer spending time with my girlfriend, watching TV, reading or having a drink with my friends. But every now and then I still find the time to play a new computer game (maybe I’ll buy that ultimate gaming pc I always wanted..which will be outdated a month later J ) or a cool game on the xbox (last one was BioShock… Unreal engine 3 is truly Unreal… ) . And I wish to say to you : buy your xbox, travel to that place, do that thing you wanted to do as a kid. Maybe people will tell you it’s silly or a waste of time and money. Don’t listen to them - I promise you, it’s worth it.

Monday, August 20, 2007

File sharing vs, Copyrights

Copyright laws have been the subject of much debate in recent years. With the passing of USA's Digital Millennium law (DMCA) many individuals have become the target of lawsuits from large and powerful media corporations. These corporations are now testing the boundaries of the mandate given to them by the U.S. legislator. On the other side of the debate (and perhaps the law) are the File sharing networks, allowing the mass distribution of digitized content, often copyrighted. This discussion is an attempt to make the case for both sides.


FileSharing – The file sharing industry have been a major pain for the RIAA , they have been trying to shut down any network they can. They got Napster, Kazaa, and recently Edonkey as well. Of course, the donkey network is still alive thanks to the Emule team. And the torrent network is very active. Also, the newsgroups are a source of content – its still file sharing, just not bandwidth/disk space/p2p sharing. While the law may unjustly support the prosecution of people who distribute copyrighted content, it has nothing to do with p2p file sharing itself. This technology has many different uses.

Copyrights – you can't seriously argue that the file sharing networks are a harmless tools for sharing original or non-copyrighted content. File sharing network transfer consists almost entirely of copyrighted materials – movies, music, games and other software. A tiny percentage of the data transferred is free information, such as open source software distribution.

FileSharing – well, I’m sure you know the "guns don’t kill people…" argument. The fact that file sharing network CAN be used for transferring copyrighted content is not reason to eliminate those networks. I’m sure you would also love to see rewritable digital media eliminated, along with hard drives, TiVo, flash-memory based devices and practically anything else that can be used to copy copyrighted content. But you can't start banning technology just because it might be used for illegal activities.

Copyrights - guns are used primarily to kill people. Much in the same way file sharing networks are used primarily to "share" copyrighted content. The difference is that guns are heavily regulated in most countries. The same goes for drugs – they can be used legally and illegally. Legal use of drugs is heavily regulated – you need a prescription to get any drug that might be addictive, and you are monitored while using it. None of this can be said for the file-sharing networks. They are completely unregulated. In fact, they are almost impossible to regulate – you need to penetrate many layers of anonymity before you can find out who is the person sharing material you have copyrights for. The RIAA does not have the legal authority to regulate file sharing networks, and even if the laws where changed to include regulation such regulation would probably be technologically impossible. The only real option is to seek legal action against providers of file-sharing services and against users of such networks who share material they don’t own the copyrights for.

FileSharing – so your argument is that if we can't regulate something, then we should ban it completely? This is a very problematic argument – first of all how do we define the limits of file sharing, is it the applications? The protocols? The concept? Second, many things cannot be regulated – the internet itself cannot be regulated. Should we bad website construction tools or website hosting because these things can be used to publish child pornography?

Copyrights – well, first of all, I am not saying that anything that cannot be regulated should be banned. Second, I am not saying that anything that might be used for immoral or illegal purpose must be banned or regulated – but I do think that in the particular case of file sharing networks, the primary use of existing technology is the illegal, immoral sharing of copyrighted material. Should the situation change – either by finding a way to regulate file-sharing networks, or by a comprehensive change in the type of materials shared on these networks, then I would have no problem with the technology itself. But as long as the primary use of these networks remains what it is today, I consider the providers of such services to be accomplices to these illegal activities.

FileSharing – this brings us to another major point of the argument – I can't argue with the statement that sharing copyrighted material is an illegal activity – there are laws in many countries that define such acts to be illegal. As soon as you manage to create a strong lobby supporting such laws - you make such activities illegal. In the 1920's the United States banned the production, transport and sale of alcohol. By instituting prohibition, the US government made a very popular activity illegal, and in the process made many people felons, giving rise to powerful criminal organization that still exist today. The argument made against the use of alcohol was its immoral nature, in the same way that copying copyrighted material is said to be immoral today.

Copyrights – the fact that many people wish to consume alcohol or share copyrighted material does not make such activities morally correct. I do not wish to defend prohibition, as I do not consider the consumption of alcohol to be immoral or to be a catalyst of immoral activities. I do wish to point out that alcohol use IS regulated - in many countries there is a limitation on the legal drinking age. As for stealing copyrighted martial – I don’t see how the immorality of such activities can be questioned.

FileSharing – by using the word "stealing" you effectively called millions of people world wide "thieves". I doubt that many members of the file sharing community would agree with that categorization. And yes – I do believe actual thieves would agree to call themselves "thieves". Theft and stealing is a concept generally reserved for physical property. By replicating copyrighted material the owner of the media in question does not lose anything – unlike actual theft – the theoretical offense is made here not against the owner of the physical media (if such media exists) , but against the owner of the copyrights to the material recorded on the media. When talking about theft you should demonstrate that one side has gained something, while the other side lost something. If no one lost anything, then how can you argue that something was stolen?

Copyrights – I do not agree that there was a "theoretical" offense, and that no one lost anything. If a person wants to use or own materials created by other people , it is reasonable to require that this person be given permission by the author to do so, if by paying for the permission, or by some other means acceptable to the author of the work in question. The loss here is not theoretical , its very real – when you download copyrighted material and enjoy the product without paying for the right to do so – a right other people DID pay for – you are denying the author appropriate compensation for the time, effort and creativity he invested.

I feel I cannot end this discussion with a clear conclusion, as there are valid points to be made for both sides. I also can’t keep arguing with myself forever :)

Join us next time for another argument of me vs. myself. And please feel free to suggest subjects for discussion.

Saturday, August 18, 2007

What the $&@^&*#???

This article was written by Adina Lederhendler:

Over the years several people have asked me for my opinion on the film "what the bleep do we know". I hadn`t seen it and assumed it was another popular-science film trying to explain quantum mechanics. I saw the film today and really feel like I have to set the record straight. The film is not, as it seems, a scientific documentary, but is actually a promotional film for a spiritual movement based upon the teachings of JZ Knight (who appears herself in the film as one of the interviewees), a woman who founded "Ramtha`s School of Enlightenment", Ramtha being the spirit who Knight claims to channel.

My objection to the film does not stem from the ideas that are portrayed in it. In fact I agree to some extent with the claims that our emotions and past experience effect our reality and that there are psycological effects on biological phenomena (the placebo effect, for instance, is an example which is widely accepted as valid). Even the more radical ideas that the universe is actually created by our thoughts and that our behavior is dictated solely by our bodies "addiction" to certain emotions didn`t bother me. I think people should be free both to believe whatever they want and be able to present their beliefs to whatever public agrees to hear them.

What I did find disturbing, however, was the presentation of these ideas as scientific fact. This was done so cleverly that it took me about half an hour to realize that what I was watching wasn`t just another pop-science film. We tend to regard an expert presented as a "scientist" to be both objective and trust-worthy. While many (but not

all) of the interviewees in the film were in fact scientists, they were far from objective. The most impressively credential-ed scientist in the film is John Hagelin, who tells us about both his Harvard degree and his work at CERN. What he fails to mention, however, is that since 1984 he has been the head of the physics department at the Maharishi University of Management, founded by an Indian guru. His research concentrates on trying to link particle physics to Transcendental Meditation. (He has also run for President three times as the leader of the Natural Law Party).

The ideas presented in the film rely heavily on "facts" taken from quantum mechanics, specifically that the state of a system is not determined untill it is measured by an "observer". While the mathematical formulation of quantum mechanics can be "translated" into words in that way, like in any translation something of the substance is lost. In any case, attributing literal meaning to this formulation even with regard the sub-atomic world which it describes is controversial within the scientific community, and certainly no one would claim it applies to the world of people and basketballs and such.

But all this is just a manifestation of a much bigger problem. Our society relies heavily on science and technology. However, informed knowledge of these fields is held only by a small minority. The fact that scientific theories cannot be fully explained without the use of mathematics leaves many people in awe of science and they tend to credit it with disproportionate authority.

Another factor is a general misconception of what science is all about. The goal of science is to find the best way to describe nature, not to find an ultimate truth as to "what it is". For example, gravity is the best way we have found to describe how things fall to the ground, but even the most advanced theories of gravity will not tell you what it is! Most importantly, scientists don`t care. They might ponder philosophical implications of various theories as they look up at the stars on their way home from the lab, but it is very clear that these are purely the realm of metaphysics and not scientific research.

Finally (yes finally...) there is a dangerous lack of understanding of the scientific method. The scientific method can perhaps be summed up

as: "When I see it, I still won`t believe it". In fact, a true scientific theory cannot be proven, and a good scientist spends most of his time trying to disprove his theory. As silly as that sounds, it is the only way to ensure that only the best ideas survive. A scientific theory is only accepted if it can accurately predict the results of many different experiments and the results of an experiment are only accepted if they can be replicated. Even then, scientists continue to come up with ideas to test the theory, to find the cracks.

Otherwise there is no progress.

So here`s where you come in. Do not (ever!) accept ideas or facts simply because they were presented by someone claiming to be a scientist or using scientific-sounding terminology. Approach these ideas or facts with caution: Is this person objective? Is he basing spiritual or philosophical claims on science? Are his methods scientific? Google it!!!!

I know I sound a bit dramatic here, but there are many people out there who abuse the standing of science in our society to promote their own agendas, and people are many times taken in on false pretenses.

But don`t take my word for it, check it out for yourselves

Tuesday, August 14, 2007

Planet of the spoons - Part 2

Previously on planet of the spoons.
The spoons have constructed a machine that allows them to take a Quantum Leap and appear on distant lands, but the machine had one critical fault - those pesky quantums are always so uncertain. The spoons where debating who should be assigned to watch the machine, when the forks tried to take control of the machine. The spoons quickly realized that true unison is achieved by fighting against others. And so, the story of the spoons continues.

Many historians still debate how the spoons won the war against the violent forks, as it was not in their nature to be instruments of war. Some believe the forks where overpowered by brilliant tactical maneuvers. General Spoony , leader[1] of the spoon army explains : "Wars are not won by numbers or training, wars are won by kicking the enemy in the silverware when their back is turned."
However, other historians say the defeat could be best attributed to the fact that the forks didn't know where the quantum machine was, and where actually on their way to the annual fork convention.

Wars are known around the world as the leading cause of activists, and the Spoon War was no different. Even though the war was very short and was considered by all[2] to have been a clear victory, some still manage to find fault, as some always do.

The anti-war movement was led by Made-In-China - foreign ambassador to the Spoon Council, who criticized the war for being a half measure that would only lead to further conflict. The activists believed that the only way to avoid future wars was to get rid of all the enemies. Their argument was that wars are fought against enemies, so: No enemies = No wars. This would have been a popular bumper sticker, but none of the spoons owned cars (or bumpers).

A spoon mathematician later proved that the equation was, in fact, false. The anti war movement retaliated by defining said mathematician as "the enemy" and proved the opposite. The incident helped the activists realize that by naming new enemies and getting rid of them they can advance the coming of ultimate peace. unfortunately for the anti-war movement (but fortunately for everyone else) someone pointed out to them that by defining enemies, they were becoming enemies of their enemies themselves, and the anti-war movement was forced to eliminate itself.


....To (maybe) be continued...


[1] - no one could remember how he became general, nor could they agree on what it was exactly he did during the war, therefore they assumed it was the job of a general to take credit for victory.

[2] - All spoons. No one else seems to have noticed this war.

Thursday, August 9, 2007

Planet of the Spoons

A recent study proved that spoons are rapidly disappearing from our planet. some suggestions are made by the researchers as to where the spoons are disappearing to, the most promising suggestion is based the theory from The Guide - The Theory of Plane of the Spoons!(imagine hearing ominous notes)

As you all know, The Guide is the most reliable source of information and is widely regarded by the scientific community as infallible. With such a well established source of information as basis for this theory, i decided to go forth and extend the original paper. The results of my research will be presented in an n part series (n>=1). While the spoons eventually migrated into a utopian planet where they live a happy spoonful life, much controversy and conflict preceded their arrival at their new home planet. This part tells the story of how it all began.

Planet of the spoons resides in an undisclosed[1] location. it enjoys a cool average temperature of about 15 degrees and long walks in the park. It’s one of those rebellious planets that never joined up with a stable star system. it just flies carelessly through space refusing to revolve around a sun or trim it's pointy mountains. It likes to hang around asteroid belts and sometimes pretends to collide into a passing sun to scare the natives. The spoons didn't really want to settle on this planet, but the leaders of the exodus convinced everyone that its really a nice planet and he just got a bad rap.

When word got out that spoons are planning to migrate from earth into their own planet, other cutlery where skeptical of this move. Everyone knew that the knives were on the verge of achieving teleportation and that the forks have almost completed work on their faster than light drive, but no one imagined that the spoons would be the first to leave the planet. only when the first spoons started their migration did the cutlery world finally realize that the spoons were on to something. a committee was founded and a joint task force was sent to the leaders of the spoons in an effort to persuade them into letting everyone escape from the clutches of the evil humans[2]. The spoon leaders refused the request and were given an ultimatum by the knives to disclose the location of their planet and means of transport "or else...".

"or else what?" asked the spoon leaders. "um....ni?" said the knives. The spoons were not impressed[3]. Nevertheless, fearing the knives might come up with something more imposing to threaten them with, the spoons expedited their efforts to leave this planet. they were about to begin a massive quantum leap removing all spoons at once from the planet, when it was discovered in the nick of time[4] that this may result in all spoons being here and there at the same time (bloody quantums and their superior positions.) it was then decided to forgo the original plan and instead have someone stand by the machine to watch it and make sure the quantums behave themselves. This meant that someone had to stay behind. Since no one wanted to stay some method was needed for choosing the operators of the machine. at first it was suggested that everyone draw straws and this was generally agreed upon by everyone as the best method with the least amount of complications. However, the straws strongly opposed this method so a different solution had to be found. A vote was suggested, everyone could vote for the person they did not wish to see operate the machine. Naturally, the idea failed when everyone voted for themselves. This effectively destroyed all future hope for a democracy amongst the spoons as this attempt at voting clearly demonstrates that everyone only thinks about themselves and shouldn't be allowed to make decisions for other people.

After democracy was finally proven to be completely useless, a succession of regime changes followed as the spoons tried them all to decide which method of government might be the best one for their utopic planet, and more practically - to decide who stays to operate the machine. Unfortunately the lack of government prevented the spoons from coordinating their search for a better regime and all regimes were attempted simultaneously. Many spoons were lost during this dark period in spoon history. But fortunately for the spoons it didn't last very long. The forks were secretly trying to capture the machine and the spoons quickly united against them and blocked the attack. In the aftermath the spoons realized that the best leadership is not leadership from within, but from without! Instead of uniting with each other, they could unite against others!

....To be continued...



[1] - i have been sworn to secrecy and may not reveal the true location. i am only allowed to say that its most definitely NOT somewhere in the vicinity of betelgeuse.

[2] - almost all humans were considered evil and clutching , except for the Chinese since the chop stick population was widely ignored in those days*.

* - while usually the past is considered better then the present, some aspects of it are considered by most to be less then optimal. these days chop sticks are regarded as only slightly less equal then other kitchenware (the word cutlery is now considered a racial slur)

[3] - some suggest that it was actually the insidious forks behind the attempt to threaten the spoons. it is widely accepted that while ominous looking, the knives rarely work without the forks.

[4] - deceptively called nick, but actually played by johny

Wednesday, August 8, 2007

...And patents for all*

I read an article which claims that "Software patents help heighten the standard by supporting the re-use of the code of established and tested systems" the theory behind this idea is very nice - if you give people patents, then they can afford (by selling the patented software) to build higher quality software and thus be able to provide the market with a high quality less error prone product. to me this article represents a deep misunderstanding of the software world. patents are granted for 20 years while software is outdated in 2-5 years at most (and 5 years is REALLY stretching it) things change quickly in the software world and that is the reason people code quickly and are forced to build and rebuild things. sure, some software still contains very old code, some systems are continuously developed over long periods of time. but every now and then you have to rewrite things. knowledge has progressed. the tools, languages , operating systems , design patterns and coding methods change over time. when enough time has passed your code becomes so outdated and inefficient that you're just better off starting from scratch. this doesn't mean you haven't learned anything - you gathered alot of knowledge on the way the software should function and look, and writing the system again is usually faster than writing it the first time. the added benefit of the world around you progressing usually results in new and faster more reliable ways of doing things. patents don't help improve the quality of software, they prevent people from using good ideas that were patented. you can easily write software today using advanced languages and support from the OS , that would have taken you months to write just 10 years ago. and the software you end up with will be more reliable , better looking and support more functionality that it would have 10 years ago. but to do that you must use new methods, languages and tools.

I was recently entertaining the idea of starting up a software company. its not very hard coming up with interesting ideas that can make alot of money. its also possible to get funding if you have a serious business plan and a good team. the problem is that if anyone is thinking of something similar to the thing you wanted to do, odds are they have patents in the field. this means that even if you are more capable then whoever else is doing approximately the same thing, you still won't be getting any money from investors - and for good reason , you might find out that you cant market your product because you might be sued for patent infringement. this goes against the very ideology behind a patent - if the idea is so innovative , how come so many people came up with it again and again? of course, you could say that with no patents to begin with, someone would just copy your idea. well, if your idea is easy to duplicate and trivial to come up with - i guess its not patent worthy to begin with. i know its pretty hard to give a general definition of what is a trivial idea, its also hard to agree on what idea is trivial and what idea is innovative. the thing is , you know it when you see it. if you know something about a certain field , you can say if something is truly innovative or just something a lot of other people can (and will) come up with (or may have already thought of). the one-click buy is such an example. the idea is so trivial i would have never in a million years thought it's possible to patent. amazon where issued their patent in sept 1999. they sued B&N by October. i don't know when B&N added the feature to their website, but i think no one can seriously claim they started work in September - when they saw the patent approval - and were done and launched the feature by October. it was probably in the works long before that, which only helps to demonstrate how obvious the idea is. really, this sort of thing should probably be grounds for revoking the patent rights. but then again - it should never have been issued in the first place.

* well, maybe not *all* - all , more like "if you have the money and are the first to ask for them" kind of all.

Sunday, August 5, 2007

One click patent ©®™

The Israeli version of the 'American dream' has become in recent years the 'start-up' dream. as far as everyone is concerned you can come up with some silly idea get a patent for it and get rich. the concept is so wide spread that the expression 'that's a startup(company/idea)' meaning 'a trivial/obvious/stupid idea' has come to replace a previously wide spread expression 'that's a patent' - meaning the same thing . everyone here has some startup idea. mostly these ideas are impractical/impossible/useless/done-to-death/done-and-failed/already-exist[1].

So, following in the footsteps of my people i wish to present my new 'startup' idea - the amazing 'one click patent' software:
In this revolutionary new product you can enter your patent application and then get it reviewed and approved in just one click! with patent pending patent issuing technology our application can run through thousands of previously issued patents and cross check the validity of the patent pending patent request. With the new patent pending Insta-Pent™ algorithm we can scan all current human knowledge and judge the LOI (Level Of Innovation) in your patent vs. the current level of background innovation. once your application has surpassed the LOI required by US patent law[2] , our software automatically confirms your patent. if your patent request is below the minimal required LOI you are displayed a unique Insta-Ject™ screen showing our friendly (Copyrighted) message : "A thousand monkeys can come up with Shakespeare and all you can come up with is this? please hire more monkeys and try again later". So hurry and get your copy of "One click patent".
In the words of our advertising agency : "Get a patent today, before all the good ideas are taken!"

All kidding aside, the reason people think of a patent as something easily attainable is because it actually is. of course, i could be wrong, it might take a true genius to come up with one-click-purchase. personally, i think the conversation leading to the patent went something like this:

Marketing : "our users are not buying things fast enough!"
Development : "why not?"
Marketing : "well, i've done some extensive research and it seems that people are clicking on the wrong things in our website. they have to click again and again..and they get confused. i conducted this research on myself."
Development : "hmm...so , what do you suggest?"
Marketing : "well.. i dont know. this is a real though one. maybe we can add more flash animations, pop up windows and commercial banners?"
Development : "but wouldn't that cause the exact opposite of what you are trying to achieve?"
Marketing :"let me think about this for a minute....hmm.....yes..i see your point. ok , well then how about ..."
Development : "listen, why don't we just reduce the number of clicks a user has to go through when buying something? maybe we can use some sort of account"
Marketing :"oh, stop it with your technical terms, this is a real world problem. let me think about this scientifically. well, the minimal number of clicks a user can possibly make is two.."
Development :"what? why two?"
Marketing :"You see - thats what happens when they make me talk to technical people , everything has to be explained to you people - you have to click on things twice to get them to do stuff. it's known in the marketing world as 'twicely clickable' "
Development :"you mean double click?"
Marketing :"if you must use layman's terms.."
Development :"..um...you know, you don't actually have to click everything twice.."
Marketing :"of course you do."
Development :"no , you don't, look (click) "
Marketing :"what? let me try that, you're probably unconsciously clicking twice. ....(click)...hmm...(click again)....interesting. hey listen. this gives me an idea. why! this is brillant! what if we had a button on all our products that supports this single click technology? i'll have to research it, but im pretty sure no one has ever thought about this before. we should really patent this one"
Development :"patent? clicking on something once to buy it? your not serious?"
Marketing :"of course i am. you technical people cant appreciate real-world creativity when you see it."



[1] - pick any combination you like. as unlikely as it may sound, some of the things i heard are impossible and impractical and still have been done to death , and of course , failed because they are impractical , impossible and completely useless.

[2] - due to the level of innovation in our product we have advanced far beyond current patent application laws (apparently no one else seem to agree about the need and validity of our LOI concept..a mere technicality).therefore, predicting the coming change and definition of LOI we use the Amazon One-Click-purchase patent as a benchmark for all other applications. if you are at least as innovative as one-click , you are automatically granted the application.

Tuesday, July 31, 2007

The (role playing) games we play

RPG games have been around for years now, and with the onset of computerized RPGs they have evolved beyond games once played by groups of spotty faced geeks. with the invention of the MMO world , RPGs are more popular today than ever in human history[1]! There are many elements that make RPGs fun, but i want to focus on one impotent aspect of the role playing world - the classes and levels system. when you play a role playing game you need to increase your experience to gain more power and magic. you have to learn to use your powers wisely if you are to progress. this crucial concept- experience-based power-wielding ability - is missing from the real world. especially in the software world.

I have been a programmer for a while now, and I've seen horrors coded in many languages. I've seen all kinds of dangerous 'language features' that should not be left unattended for the inexperienced programmer to abuse.
In the same way you will not let a ten year old operate heavy machinery while intoxicated(well, maybe for some harmless fun), you really shouldn't let computer science students use parameter overloading in c++ when they can barely comprehend the concept of functions.

This is why i think we should learn from the RPG world and implement a class and level system for the coding world. the details of such a system are presented here:

First you start apprenticing (Levels 1-3) and you are only allowed to use non languages like LOGO or HTML, after a while when you have proven yourself worthy, you might be allowed to progress to more advanced scripting
[2] (Levels 4-7).you can use java/vb scripting but only in a web based environment, where the browser prevents you from causing too much harm. once you gathered more experience (Level 8-10) you will be allowed to choose a VB programmer class. experts[3] agree that VB is not really a programming language, so anyone who chooses to use VB is forever forbidden from writing code in any other language.
Anyone who tries to code in Perl will lose all their execution privileges, not that it matters since it seems Perl programmers are more concerned with how many "kewl" things they can do in a single incomprehensible line of code, they wont actually notice that the code doesn't execute.

if you decide to program in a real language you will be allowed to select one of the real languages (c, c++, java, c#, assembly is reserved to levels 50+) each language will have it's own restrictions for a beginner.

C :
beginner c programmer can only use if, for, while, switch, single parameter function (you can choose between return param or function param), and 3 global variables (any more and the beginner gets confused). loops cannot be nested until level 13, you get a nesting level for each level above 13. altho, if you need beyond 3-4 nesting levels for anything you will be converted into a VB programmer. function within function calls have a limited stack of 3 calls. this effectively disables the beginner from using recursion, and also helps reduce their confusion with all these functions calling functions. the use of pointers is only allowed from level 15, void pointers from level 20, you get a new level of pointer nesting beyond the first for every level beyond 21, function pointers starting level 35, malloc is disabled until you reach level 30. you get 1 ifdef per level starting with level 12, programmers above level 20 can use as many as they like.
syntactic sugar like using ++ is only allowed from level 14 and on.
copy and paste functionality is disabled in the IDE until level 18 to prevent use of the poor man's code reusability (lazy programmers that cant refactor things into functions).

C++ :
all limitations for c also apply to c++, with extra limitation for operator overloading (level 50+). the required use of classes lowers the required level for use of pointers to level 10 (entry level for c++) but only class and primitive pointers. the use of function pointers is forbidden in c++ (object orient damn it!) until level 50+ those who practice the black art of function pointers and operator overloading will be periodically reviewed by the great council :the ICCC[4]. any transgressions will cause immediate demotion to either VB programmer or perl coder.

Java:
well, no malloc and pointers, so that makes life a little easier, also use of classes is enforced by the language, and no param overriding or ifdefs so you can do less harm to begin with.
the limitations for java programmers like function call stack size, loop nesting etc. is the same as in c++ and c. the catching of Exception is forbidden for programmers under level 23, RuntimeExceptions can only be caught by programmers level 26+. NullPointerException cannot be caught by anyone (except by catching more global exceptions) attempt to catch a NullPointerException will result in immediate demotion to VB programmer. the use of Vectors is allowed starting level 20 but allows only for storage of primitive wrappers and strings. When you reach level 25 you can choose other things, but you must take a test on garbage collection before you can advance to level 25. passing the test also allows the use of HashMaps. reflection can only be used from level 30+. the use of threads is allowed from level 40 and on, attempt to use the double lock pattern will result in a hearing before the great council which may result in a 3 week transfer to customer support. inheritance depth will be limited to 2 until level 15, you get an inheritance depth level for every level beyond 15. the use of anonymous classes is allowed starting level 18.
using JNI is allowed starting level 45 and requires knowledge of either c/c++ of at least level 20.

C# :
mostly the same as java, but with the reintroduction of pointers and limited operator overloading. unmanaged code + operator overloading require a level 50 c# programmer.
c#/java programmers get a bonus level in the other language for every 2 levels they get their native language.

You too can help improve the future of coding, coders, and software in general by joining the great council and adding new, more draconian restrictions on low level programmers (only level 40+ programmers are allowed to join (but not vote). you get one vote[5] per level starting with level 50). Join today by leaving your email address in any public website or forum and get free Viagra commercials, exciting business opportunities from Nigeria and more!




[1] - well, known human history, or rather ... human history that is known to me...which is a somewhat limited scope..but , well, it happened so long ago that no one* could seriously say they care about it..

*- no one except old people. it seems that at a certain age a lot of people start caring about history. i think it might be driven by their quest to prove everything was better in the good old days, and everything sucks now. then again, it could be that they are simply bored...

[2] - OS scripting not included. if you wanna write OS scripts you can change your class to Sysadmin, of course, you'll have to apprentice as annoying user, then progress to user, windows installer, super user, computer tech, and finally sysadmin. level 1 sysadmin can only maintain windows servers, only starting level 10 are you allowed to even see a linux/unix system. attempting to do so earlier can result in sever shock and sometimes death. the lack of a mouse based gui system has caused many inexperienced sysadmins to lose their minds and start clicking on random monitors. before the LCD days this often ended in electrocution .

[3] - an expert is anyone programming in any of the real languages (assembly, c, c++, java, c#)

[4] - - International Council of Computer Coders (take that, I triple E) - not associated with the other ICCC

[5] - The votes don't count

Saturday, July 28, 2007

The rythm of writing

I sometimes find something lacking in the written word.
When i write there's a certain rhythm to the writing, i sort of expect the text to be read at a certain pace and intonation. all of this is lost in the written word and i always wonder how would this text 'sound' to someone else? can my particular way of expression cross over through the text?
I assume that people who know me and are aware of my style of conversation might be able to more accurately reproduce my rhythm from the text. but then again, i am not sure i can do this when i read their writings.

When i was in high school we where learning a Hebrew poem by Leah Goldberg called 'mi shirei ha ben haoved' (From the songs of the lost son. loosely translated) . Our teacher was reading the poem in a kind of empty voice, she was reading the words and sentences but she was ignoring the rhythm and intonation that to me where screaming from the page. it was just so obviously there. and the poet was obviously using it - the poem was build from three separate 'sub poems' and each had it own rhythm. eventually, when my teacher reached the last of the sub poems , which was the most obviously structured and had the most meaningful rhythm to it i couldn't take it any more. i stopped her reading and i asked why wasn't she reading the poem the way it was meant to be read? why was she leaving out the rhythm and intonation? she didn't understand what i was talking about and asked me to read it. there was a deep silence when i finished.

In a Hebrew bible you can find markings that details the precise way of expression for a word and a sentence. the precise tone , rise fall, rhythm and pace are described by numerous markings decorating the regular alphabet characters. certainly these symbols are not required in order to read the text and understand it and while i can read the bible , i do not know the meaning of all the different symbols that decorate it. the reason these markings are there is that the people who wrote the bible aspire to preserve not only the words but also the accurate 'sound' of reading the bible. there where no means of recording at the time, and since people wanted to preserve everything very accurately , they constructed a very elaborate and accurate method of conveying both the words and their pronunciation , rhythm, everything they could think of. add to that constant repetition and very strict methods of transferring the accurate knowledge of reading both the words and their decorations , and you get something very close to a recoding from two thousand years ago.

it would have been nice to have this sort of decoration, that way i could know exactly how my words would 'sound' to a reader. but maybe leaving the 'sound' to the reader provides some of what is called the 'power of the written word'. perhaps when you read the text to yourself, with your own internal voice , the words become more personal, more persuasive. maybe a bit more like your own thoughts than like someone else's writings.

Thursday, July 26, 2007

For the love of Embedded databases

mmm...there are a lot of dev blogs out there that focus on information for developers. they have guides, reviews and code samples.
i might do that (review, guide, code samples etc' ) from time to time, but really there's so much out there that i find it somewhat redundant to have yet another post on some tech or another.
the reason i am still posting this one is to share the results of some research, and to share what might happen when you fall in love with some crazy idea of embedded databases.

so , anyhow, today's topic is my experience with setting up O/R mapping and it's relational DB using .net.

first a short intro:
O/R Mapping stands for 'Object - Relational mapping' and it's a concept that makes databases a more useful , easier to work with thing. (it gets very close to making them worth while ;) ).
basically, it defines a way to easily map objects into database tables and structures. its a rather complicated problem when you start thinking about how to represent parent/child relations, or one to many ..or collection...joins...and other weird things db people like to do.
if you want more details, please check out the source of all knowledge for more details.

in the java world, there's only one O/R mapper worth its while - Hibernate. its a very powerful , well written , well maintained , open source O/R mapper.
the grate thing about .net is that its so much like java that all the cool projects out there started porting to .net (Spring, Log4Net, NUnit to name a few). its so much like java that you only have to learn how they renamed the classes and packages. the rest is pretty much the same.

anyhow, in the .net world there seem to be a few others. but i know the way the hibernate people do the job and i trust them more then some other projects. especially since they are amongst the few that are open source for .net . also, they already solved alot of the problems when they where writing the java version, so i guess they can do it better then other inexperienced dev's.
One other project i particularly liked the idea of was db4O. it used to be an open source, and is still free for non commercial use. its not actually an o/r mapper , but an embeddable object based database.
unfortunately , i am a commercial user , so we preferred the open and free option.

at first i thought i wanted an embedded database. it sounded so cool - no installation for the user, no DB administration for the user, none of the annoying hassle of a full blown DB.
sure, it wouldn't have the same performance , and it might have trouble working with too many concurrent users , but our project doesn't need either. but, as bono once said - love is blindness*.

since i already decided on hibernate , there was only the question of which db to use. this means we need a db with a dialect hibernate understands (one might think that SQL is enough of a standard , but as you soon find out, its very far from being standard. ). this gave me a very short list to work with. some databased i already knew and knew i didn't want :
Oracle - expensive and annoying
MS SQL - expensive and annoying, tho probably not as much as oracle
Access - not really a database
DB2 - expensive , annoying and made by IBM(to relieve and doubt - being made by ibm is a bad thing. one might think that its a big prestigious company , and it is. but their products suck. badly.)
so that left the databases i never heard about , and MySql. i'v always heard people say that its a grate open source database , and that everyone is using it. i'v never met someone who told me they where actually using it (they all use Oracle...those poor bastards)
now, MySql was such an obvious choice that i had to go with something else. and besides i was inlove with the concept of a the three no's of embedded databases : no-installation , no-configuration , no-administration.
so i checked out:
SqlLite - looked awful , no smooth integration with C# as far as i cared to look.
PostgreSQL - seemed nice but wasn't really embeddable.
Firebird - seemed nice and was also embeddable.
so i decided to give firebird a go. everything was fine for a while..it was a bit annoying to install it's driver and it took some effort to properly configure nhibernate due to some mistakes in their guide (which is very much unlike them , particularly since the corrections where present as user comments on the bottom of the configuration page) , but anyway, i got it to work. i was very happy with my shiny new embeddable database, and then DISASTER! i started getting : Internal gds software consistency check (cannot find tip page (165)).
hmmm... i thought to myself...this cant be a major thing, i just finished setting up the db, just committed my first tiny bit of data...i probably configured something wrong. quick google search turned up this page ... and...oh my...not only is this not a configuration error, its a critical DB error....database is completely destroyed....
Wait a minuet...when i started reading up on firebird ..all this backup, repair and fix tools where mentioned...1 .... + ..... 1 = wtf???
well, i guess i am fortunate it failed so soon. it would have been far more disastrous if these crashes only happened after we delivered it to our customers.

for the random google searching user i will state this plainly :
Don't use Firebird. don't use it with .net . don't use it with NHibernate. Just don't use it at all.

i ran some more searches, looking for some obscure database i might have missed but no go.
i also took a short look at the embeddable version of MS SQL express edition, but it only supports a max 4 gig database (it has other annoying limitations as well)..so it was useless for our app.

eventually i came back to MySQl... as it turns out , if you want a free, open source real DB...its the only serious option out there.

EDIT: read update at the end of this post , turns out MySql is not actually free.

it took half an hour to install and configure it to work with hibernate. and aside for an annoying problem i had starting it up (i wanted to use UTF8 as the charset because our users might need internationalization ..to set it up in MySQL you need to enter a freetext string, so i put in UTF8...turns out you have to put in lower case utf8....the the exception you get is just perfect "key not found in dictionary" worse yet - there's a gui and a ""test connection" which tells you everything is ok even tho you configured a nonexistent charset. how i figured it out i still don't know..i guess you come to expect silly things like that when you do this sort of work long enough) but after that everything seems to be working.. no complete database crashes for no reason , fast responses, and some nice db management tools.

As for my initial infatuation with the concept of embedded db, well, they** say "you never forget someone you loved"..so i still think some day embedded db's might be something we take for granted in every application. in the mean time we can all tell everyone that everyone is using mysql.

Join us next time for "Transparent Controls or: how i learned to stop trying and hate windows forms"


UPDATE (8/10/2007): German Viscuso mentioned that MySql isn't actually free. its distributed by a dual license - the dirty trick fake open sources use (free means free. not 'free under the following conditions') - a GPL infective**** or a Commercial license. so we turned to the only available alternative : PostrgreSQL. supported by NHibernate, works flawlessly and most impotently , doesn't infect my company with an evil licenses (PostgreSQL is distributed under BSD license - almost completely free. basically all they want is the credit for the db they wrote...) .


* - i told you it was the source of all knowledge :)
** - 5 points for anyone*** who guesses which happened first - i thought up the line, or i saw the quote in that link.
*** - only one vote per ip , the points don't matter.
**** - GPL is like a virus - if you want to use something licensed under GPL, you have to use GPL yourself. ad infinitum. they even have a philosophy as to why they have to make you be just as 'free' as they claim they are. so , in the eyes of the GPL people - software should be 'free' as long as they get to define the meaning of freedom.

Wednesday, July 25, 2007

Don't panic

at first i thought i might title this "the evolution of ui" but im not a UI expert, im mostly a UI user , and sometimes a UI designer.
What i would like to say tho, is that i like the direction new UI is heading. back in the DOS days, you where happy if someone was kind enough to give you a text based screen with some text boxes you can tab through. then this new "windows" fad came up. and alot of people where quite skeptical of this concept. it's sad to say that even in these modern times , when even the most dedicated linux* , who compiles his own kernel and in the mean time (it could take days , seriously ) argues which editor is better, VI or EMACs (if they had just asked me i could have ended the discussion and tell them the simple truth - they both suck :) ) have probably seen, if not used , a mouse controlled GUI based operating system , there are still people out there who refuse to join the civilized world of modern UI.

See, when people got their hands on GUI's and some GUI dev tools, they started going crazy. its like the first days of the internet, some companies built html authoring tools and suddenly everyone had a "homepage" , and they where ugly. i would have supplied links to some , but i oppose that sort of thing and i refuse to increase it's google score. for interesting result, try searching for "virtual reality glove" (yeh, i know...whatever happened to the whole VR thing?) and click on the first link..check out the wonderful 'scrolling' back button at the bottom of the page, and follow twice for a particularly vivid reminder of how most of the web used to look.
anyhow, people did some terrible things on the old GUI's, they started putting textboxes and images and other ugly things all over the place, and it only got worse as time passed. UI's became more cluttered , more buttons more menus with more options. have you ever tried enabling all the possible toolbars in word 2003? not to mention try and reach every possible setting available on the menus, submenus, and subsubmenus (maybe there are subsubsubmenus also, i never had the patience to find out). its not the worst of it. word is a "user" application, application for programmers or other professionals are much much worse , try your average CAD software for a taste of how horribly complicated UI can be. but this new trend of minimalist UI is wonderful.
people finally realized that cluttering their users with useless options in hundreds of unreachable submenus is not such a good idea. that maybe there are more useful features and , god forbid, LESS useful features, or even features that are completely USELESS.
it's kind of like a revolution, the people have been abused for years with annoying cluttered overcomplicated UI and they finally rose up and said : no more! we will not have your irrationally placed options! we will not use your incomprehensibly selected icon toolbars! and we will never again surrender to your annoyingly popping windows asking us silly "Yes-No-Cancel-Abort" questions!
well, it would have been nice if it actually came from the users, but i suppose in a way it did. programmers, designers and on the rare occasion even software dev execs are all horrible UI users...i'd like to think they actually got fed up with all this cluttered nonsense.
its like adams wrote about in hitchiker's guide : if you just have the words "dont panic" in big friendly letters on the cover, you will sell a lot more books :)
i dont know if adams ever considered this analogy but having a nice , clean , simple UI with big friendly buttons and large friendly fonts is a lot like having "Don't Panic" printed in big friendly letters on the cover.



* - while usually refers to an operating system, i find that its more of a way of life, almost a religion, for most people who use it (the OS) , so in the same way one may be a Buddhist one may also be a linux (plural linuxs or maybe linuxi ? any linguists out there care to comment on this one?)

Welcome to my new blog

Hi everyone (well, future everyone...).
Welcome to my new blog.
this is jumping ahead abit, but i was really impressed with this blogging platform..
im not very well versed in the blogging biz, but i do have another blog in hebrew, and this blogging platform is just so nice...but more about that later.

i suppose the first post should have to do with a sort of mission statement, so here goes:
this is intended to be a blog about science, technology, programming, software in general and probably some other random things i think about.


back to the blogging platform, now the random reader (U(0,1)) might think that perhaps this is some kind of commercial for Google , or for blogger.com or whatever, but really its not.
i just like the "feel" of everything, i love that it took me 5 mins to set up the blog, that it has nice features like autosave for posts while writing, many nice looking and tastefully done templates (so what if i went with the first one ..i like the "word press like" feeling) but mostly i like the nice friendly clean uncluttered interface.

but enough about that.

anyhow, i hope you enjoy your stay, and please feel free to feed on my RSS , it has 20% of the daily recommended dosage of news and updates!

Yossi.