13 Dec 2009

About knowledge transfer in High-schools and Universities

As of December 2009 I think that it all should conform to the Brain Rules, which can be followed if everyone learns in a place, where one wants to and at a time when one wants to. For example, a home environment probably provides such possibilities. To be more explicit, if people are mentally active at different times of a day, then a lecture at a given, fixed, time of day definitely ignores some of the student's biological needs.

People also differ in their background, which means that feature X needs a more in-depth explanation to student A and feature Y might need a more in-depth explanation to student B. Therefore, there is a need for private, personal, consultations. On the other hand, a common material is a good thing to start with, because it provides a seed for the consultation sessions and the learning process in general. Usually that common material is in a form of a lecture, lecture notes, or some literature.

It's also a fact that people forget. According to the brain rules, repetition is good, but that does not say, that people do not forget things, if they do not work on the things. It's also known, from practice, that males are better at doing things when they do one thing at a time. As a matter of fact, the switching of activity can be quite unpleasant to some of them, me included. (I also know other people that have had similar observations about themselves.) So, for at least some of the males it makes sense to let them learn one subject at a time. That, of course, does not conform to the testing schedule that assumes that a student has to learn one certain part of the material by a few certain tests in the midst of semester.

I believe that a simple and cheaply implementable solution to the testing issue would be that there is one special classroom with 2 security guards. The classroom is open every workday from morning to evening and anyone in the school or university can come there either by first reserving a time-slot or just by dropping by, if there are any free seats available. One of the security guards, who can be even an elderly lady with thick glasses, prints out the test questions and applies a timestamp and her/his personal stamp to the test. From that moment onwards, the student has a given amount of time to perform the test within that classroom, without using his cellphone or laptop. One of the security guards makes sure that the cellphones, nor laptops are used. When the student is ready with the test, he/she hands the test back to the old-lady security guard, who then applies a second timestamp to the test and later, at the end of her work day delivers all of the tests to different lecturers for evaluation. This way, any student can take any test at any time he/she is ready for taking it. The only requirement imposed to the student might be that all of the tests have been passed by the end of the semester. The professor, lecturer, benefits from that system, because he/she is freed up from the dull and boring activity of sitting in the classroom while students take their tests.

What regards to the lectures, then those might be just made available for download and all that the lecturer, professor, has to do, is to provide personal consultation and evaluate the tests.

Well, may be someone might even start to provide the services of such a testing-center to multiple private, or even public, universities, schools, private educators. The old-lady security guard might be even some pensioner, who can watch soap operas while there's no one asking for or handing in a test.

One Thought About the Transhumanism and Nazism

As the future relies on the standing on the shoulders of giants and as the software development has demonstrated that one of the prerequisites of keeping the amount of labor in a feasible limit is by recombining previously completed components, it's no wonder that I do not always have much to add. So, some of my articles, starting with this one, are a combination of citations and a small amount of my own thoughts. And yes, I know, that many people HATE video, photo and sound based citations, but they have an option not to read my posts. I think that a person's time IS equivalent to a part of that person's LIFE.

Well, here it goes. First, I think that the following video explains the political and social aspects of artificial intelligence, without applying the percentage of non-informing SciFi mystification that tends to be added to the topic in many technology popularization texts.

As of December 2009 it seems to me that it is racist to apply segregation laws to that highly intelligent machines, because humans, tehcnically, are not better and the distinction is purely based on the difference in “species”.

As of December 2009 I personally love the idea of cyborgs, because humans can't survive in cold winter without clothing, I.e. self-enhancements, tools. Drugs, artificial joints, glasses, hearing aids, are, according to my view, exact examples of cyborgization. If evolution takes thousands of years, then cyborgization is something that one can use before dying. For instance, if brain prosthesis become stable enough and the computing technology miniature and mature enough, then I hope to have brain enhancement. I believe that it does not hurt if the thinking part of the brain has more computational power than currently can fit into the skull.

And, in that light, the artist called Haddaway has a darn good song:

5 Oct 2009

Programmer Friendly text Exchange (ProgFTE)

(This is edited version #7 of this post.)

There are 2 versions of the ProFTE specifications. As of January 2013 the most up to date version is the ProgFTE_v1.  The rest of the text in this blog post describes the ProgFTE_v0, which originates from 2009.

ProgFTE Specification Version 0 (ProgFTE_v0), which is superseded by ProgFTE_v1

For short: each key-value pair of a hash-table is encoded as:


The text versions of the key-value pairs are concatenated and one can even use JSON/YAML/XML/almost-whatever strings for the value part, except that one also has to make sure that neither the key, nor the value, contains the literal “|”. This can be overcome by replacing the “|” within the keys and values with some string (one calls it hereafter: pillarSubstString) that does not occur within the keys and values.

For decoding, one has to write a function that BISECTS a string at the first occurrence of a search-string. In this case, the search-string is the “|||”. For example, bisect(“simpler|||than|||XML|||”,”|||”) would output a PAIR that consists of string “simpler” and string “than|||XML|||”.

The reason, why "|" is replaced in stead of the "|||" is that if a key or value contains "|" or "||" as its suffix (one omits the analyzing of the prefix case for now), one ends up with <key or value without suffix>|||| or <key or value without suffix>|||||, which makes the finding of the "|||" problematic.

So, all in all, the format is:


The number of key-value pairs is prefixed to avoid the counting of the “|||” at deserialization.

The reason, why the separator string is "|||" in stead of the more space/traffic efficient "|" is that the "|||" is easier to read during debugging and the "|" and the "||" already have historic meanings in software development.

The main benefit of this format is that one can implement it in different languages with relatively little amount of work. That includes exotic languages, self made, domain specific languages, that do not have extensive XML or JSON or other "mainstream" format libraries available. An example application is a website, where the server side has been written in PHP or Java and the client side has been written in JavaScript (keyword: AJAX) or some JavaScript based Scheme dialect.

The secondary benefit comes from the comfort of using hashtables.


Update on 22 December 2011

Actually, the format that is described in this post, is in use in the real world and has worked without problems, but unfortunately that's pure luck, because the format(ProgFTE_v0) is flawed and I have a new, improved, specification in the works. (Update on 03 January 2013: the new specification  is called ProgFTE_v1.)

If (Hash.new)["nice_key"]="Cariba|" and the pillarSubstString=="baba", then the ProgFTE is


There is an issue, how to reverse-translate the "bababa" part of the "Caribababa". Should it be "Cari|ba" or "Cariba|".

The good news is that one can distinguish the old version of ProgFTE, the one described in this blog post, from the new one and simply improve the ProgFTE libraries of the real world application, without any need to convert saved data. The old version, the one in this blog post, always starts with a number, but the new version always starts with a letter "v", like "v<format_version>". I'll update this blog post after I have shipped the new version.

17 Aug 2009

JavaScript __LINE__ and “this” Substitutes

Leaving a longer explanation to aside, the following code demonstrates, how to overcome the absence of the __LINE__ and the proper semantics of the “this” in the JavaScript.

function niceclass(){
    var self_public_=this; // Yes, that's the first "innovation".

    function a_private_method(){
        document.write('Public fields value is:'+self_public_.a_public_field);

        } catch (err){
            // If all of the methods have try-catch-s with
            // Globally Unique Identifiers Copy/Pasted from
            // http://www.guidgenerator.com/ , then
            // it's possible to find out the faulty region even
            // when the JavaScript does not have the __LINE__ support.
            throw "GUID== ba6e3063-9438-42a4-a041-e8fd635fb4c5"+
        } // catch
    } // this.a_public_method
} // niceclass

    var v1=new niceclass();
    v1.a_public_field='Another value';
} // window.onload

For the sake of correctness, I have to give credit to the http://www.quirksmode.org/js/this.html and the
http://jspro.org/. Of course those were not the only sources, but as of August 2009 I found them to be the best that I could find.


Update at 2013_04_27:
Tools for debugging and editing GUID-marked JavaScript reside within the BSD-licensed GUID_trace package, which is part of the mmmv_devel_tools package.

The GUID_trace package components assume that GUID-s are surrounded by either double quotes or single quotes, like

3 Aug 2009

About the Feasibility of Hydrogen as a Gasoline Replacement

According to my calculations, if one compares gasoline and energetically identical amount of hydrogen, then the price of a gasoline forms about 86% of the price of the hydrogen provided that only green electricity is used for producing the hydrogen and that there are no energy losses within the hydrogen production process.
The price of energetically equivalent amount of jet fuel, kerosene, forms about 90% of the price of the hydrogen.

Conclusion: both, in the case of cars and flying machines, the green electricity based hydrogen seems to be economically feasible, but unfortunately it would still be too expensive to make it affordable to have helicopter based ambulances in regular use. For example, a 300km two-way flight with the Eurocopter AS365 seems to cost at least about 200 Euro-s.

The good news is that if someone figures out a way, how to decompose water by using solar energy and some microbes or chemical reaction, then the hydrogen based aviation might become affordable. :-)

The Mathematica notebook source:

(* All of the following calculations are about one litre of gasoline.*)

litersPerGallon = 3.78541 Liter/Gallon;
cubicMetersPerGallon = litersPerGallon/(1000*Liter)*Meter^3;

(* http://www32.wolframalpha.com/input/?i=gasoline *)

gasolineEnergy = 47.73 *10^6 Joule/Kilogram;
gasolineDensity = 0.735*10^6*Kilogram/(1000*Meter^3);

gasolineEnergyPerCubicMeter = gasolineDensity*gasolineEnergy;
gasolineEnergyPerLiter = (gasolineEnergyPerCubicMeter*Meter^3)/(
eurosPerKroon = 1/15.7 *Euro;(* www.seb.ee *)

greenElectricityUnitPrice = 1.8*eurosPerKroon;
gasolinePriceLiter = 15*eurosPerKroon
gasolineEquivalentElectricitySalesUnits = (
gasolineEnergyPerLiter*(1*Liter))/(3600000 *Joule);
gasolineEquivalentGreenElectricityPrice =
ratioGasoline = \

dollarsPerKroon = 1/12*Dollar; (* www.seb.ee *)

eurosPerDollar = eurosPerKroon/dollarsPerKroon;

(* http://www32.wolframalpha.com/input/?i=kerosene *)

keroseneDensity = (0.819*10^6*Kilogram)/(1000*Meter^3);

(* http://hypertextbook.com/facts/2003/EvelynGofman.shtml *)

keroseneEnergy = 42.8*10^6 Joule/Kilogram;
keroseneEnergyPerCubicMeter = keroseneDensity*keroseneEnergy;

(* http://www.nyserda.org/energy_information/nyepg.asp
kerosenePricePerGallon = (5*Dollar)/Gallon*eurosPerDollar;

gasolineEquivalentKeroseneMass =
gasolineEquivalentKeroseneVolume = gasolineEquivalentKeroseneMass/
gasolineEquivalentKeroseneVolumeGallons =
gasolineEquivalentKerosenePrice =
ratioKerosene = \

(* http://www.eurocopter.com/site/en/ref/Characteristics_99.html *)

eurocopterAS365Power = 700*10^3 Joule/Second;
eurocopterAS365Speed = 269000/3600*Meter/Second;
distanceFromHospital = 300*10^3 Meter;
flightDistance = 2*distanceFromHospital;
flightTakeoffsAndLandingsDuration = 15*60*Second;
flightDuration =
flightDistance/eurocopterAS365Speed +
flightDurationInHours = flightDuration/(3600*Second)*1.0*Hour

flightEnergy = flightDuration*eurocopterAS365Power
flightEnergyPriceElectricity =

6 Jul 2009

About Caring for Others

This posting is a mixture of some of my beliefs and some thoughts. One of their common denominators is that as of July 2009 I believe them to be true. I will probably think differently in the future.

So called axioms or, in a laxer context of this posting, automatic thoughts:

Different people mostly differ in their objective function

People always use their most up to date version of their objective function, even if the objective function contains some inherent random variables.

When people agree to participate in a transaction, they act only according to their own objective function. (The way the Noam Chomsky put it: if 2 people perform a transaction, let's say, one person sells another person a car, then the 2 parties only care about their own profits and do not take to account the cost of the transaction to third parties.)

Money is just one, though very important, type of currency out of many.

Some implications, which seem to match with observations:

In business people do not mind participating in transactions, where the other side has a terrible disadvantage. An example: whenever there's enough people in a bad enough situation to find a sweatshop a viable working environment and if sweatshops are legal, sweatshops will emerge.

Love is not free. Sometimes some part of it can, indeed, be payed with money, but just like one has to repay a bank loan in Estonia in Euros, while the local currency is Kroon, one has to pay for love with a fine company and physical attraction.

In the case of employee-employer and buyer-seller relationships there are cases, where the selling side does not expect to receive only money. For example, in some cases respectful treatment is also expected, in addition to the money.

Hunting of animals, including humans, does not constitute a murder as long as the hunted do not enforce themselves. (Illustrations: deer hunting, the slaughter of Iraq citizens by united states army and security forces, civilian deaths of United States drone attacks in Pakistan, the holocaust imposed by the Israeli army to the people within the Gaza Strip in 2009, fishing, etc.)

Even people at noticeably honored positions, for example, university professors, don't mind stealing and deceiving in a way that is even worse than that of common pocket thieves. (I won't name anybody, but I know one such case really well.)

What I think that is useful or harmful for the other person probably differs from his or hers own view, because his or her objective function probably differs from mine. (I have also noticed that my views have a much greater match with the views of those people, who have somewhat similar background, let's say, that of other programmers, physicists. For some reason the decisions of people with economics background tend to seem the craziest to me. That is to say, for some weird reason biologists and philologists tend to be much more similar to me than economists.)

One of the questions that might be of interests at the notion of those statements is:
What is to be wanted from a truly true and affectionate lover?

This question has been inspired by an erotic story, where a daemon changes to a passionate lover and a true companion of its disenchanter, while requiring human sperm to stay alive.

From the love perspective there's also a question that if there were a robot, like in the movie Alien Resurrection, with technical ability to attend one's daily life, i.e. shopping, sports, leisure, work, etc., and the robot had comparable or greater intelligence than that of fellow humans, then why should someone fall into love with another human in stead of that robot?

A side-note: As of July 2009 I still find the movie, Alien Resurrection, inspiring. I think that it is one hell of a well done movie in multiple contexts. May be it's because it somewhat summarizes my career, interests, goals and desires (provided that the violence part of the movie is skipped)?

15 Jun 2009

About the Alternative to Knowing Everything

There's a saying, at least in Estonia, that the one, who knows everything about everything, knows nothing at all.

I actually tended to agree with that saying, but, unfortunately, the situation, where I am currently(June 2009), sounds like: “Know everything or become an asocial and die.”

The controversial part is that if one works for one company, becomes specialized in the set of skills, technologies, that are needed at that given position, and then the company reduces staff, goes to bankrupt or just changes business directions, it's next to impossible to find another company, where the acquired skill set is relevant. Specially in a small place like Estonia, where the number of companies is relatively small. As of 2009 there's about 10 companies of each type: banks, security firms, robotic engineering companies, universities, fine hospitals, etc., with an exception of web development companies and consumer product marketing firms.

One might think that, great, one learns web development and one has a secure future. However, I don't think that that's the case, because before the web boom, the type of applications that are now implemented as web based software, i.e. all sorts of business automation related software, was written in Delphi, C++, using Microsoft Foundation Classes, etc. Therefore, I think that it's not possible to say that the things that the businesses currently pay for, are the ones that they will pay for in the future. In another words, if I make an effort to become a top notch web developer, I'll be exactly in the same position, where I am today: I acquired a set of skills, became really good at it, and after getting sacked, for whatever reason, I have difficulties finding a job, where I can say that I'm the top notch specialist for You.

Leaving a long contemplation to aside, I have an urge to bring in a question, what would the job market look like, if machines were much more ample at mental activities, let's say, at jobs that human programmers do nowadays? What would happen to people, in a social context, who do not use brain implants, enhancements, if some other people did use brain enhancements? I mean, the ones that don't, probably will not have any chance at the job market, or will they?

So, in order to be in a different situation after, let's say, 30 years from now, I have to change something in my strategy.

Programming takes a hell of a lot of effort and time, and I want to be at least payed reasonably for making this effort. For example, at one of my positions, at a company that I intentionally will not name here, I learned one programming language from ZERO to an expert level within 3 months, in addition to the company specific technologies and standards. Then the company just sheds about half of its staff. Leaving one small project to aside, all of the development work was halted and obviously there was no need for a brand new programmer, who has been with the company for just about 4 months. And yes, from my perspective, it really seemed that I did not have such a rough times even at the university examination period, as I had while working at that company. I did not receive even a lay-off compensation, because they sacked me literally at the very last day of my trial period. (Actually the story is a little bit more complicated. The CEO got also sacked and the new CEO applied structural changes and applied the layoffs and even that's not all of the story.)

Anyways, the idea is that I know, from my personal experience, that I am capable of learning new technologies and relatively quickly. The described example is not the only example, but I'll skip the description of other cases here. However, coming back to the brain enhancements example, quick is not quick enough. One has to go faster in order to earn a living. As specializing only to a single technology for 5+ years (as requested in many job adverts) is unfeasible, one can only convince potential customers to accept results based pricing. The opposite would be hourly or monthly wage. But this means that one still has to be capable of doing the job at an expert level, which brings me to a question: how do I manage to do that?

Well, the answer is: I don't know. However, it seems to me that I don't stand a chance, if I don't figure that one out. There are no brain-enhanced competitors in the real world, but the job market of today's economic situation seems to impose plain human programmers to a situation that seems to be quite similar to the one, where the brain-enhanced competitors do exist.

May be I'll post something to my blog, if I come up with something along those lines of life.

9 Jun 2009

Sex and Drugs and Rock and Roll

Well, this is my first blog-posting in English. The reason, why I switched from Estonian to English, is that almost nobody ever reads my blog anyway. I thought that I might make this blog a bit more useful by writing it in English. Besides, almost everyone in Estonia can read and speak English anyway.

So, sex. Well, I'll come to that later, but for now, I'll keep to the drugs part. I started to wonder, what does Google pop up, if I feed it with a name of a drug that one of my doctors prescribed me. Rivotril. I found out, besides that the drug is somewhat toxic, as expected, that it has a "halfe life" ranging, according to various sources, from 18 hours to 80 hours.

According to my practice, that data is nonsense. I take it at the evening and feel well, fresh, in the morning, and it relaxes my muscles about 30 minutes after I have eaten it, but, yet again, I'm not a drug developper, nor a doctor.

I started to wonder, how long does it take for that poison to get out of my body. Considering a fact that I visited gym 2 days earlier, did not jog after the gym, and had a really good night sleep with exceptionally nice, and erotic, dreams, there should not be any reason, why I am not at my best at jogging. However, I think that I was not at my best at jogging today.

So, considering that the halfe life varies, it's no use of drawing just a line that shows the amount of drug left in the body. It takes 2 axes: time passed since administration and drug halfe life. For halfe life in range 18h to 80h and time since administration between 0h and 100h (==about 4 days), one gets the following "picture":

So, no wonder that I missed the "tone" today. The conclusion: it makes sense to use the drug not more than once a week and it should be administered at the evening of a day, when exercises took place. The administration timing aims to use the training interval for drug decay.

About the sex part, well, forget it, but what comes to the Rolling part, then it's not recommended to drive a car, when under the influence of that drug. Some sources claim that Rocking with alcohol intensifies the effects of the drug, so I guess that alcohol based Rocking is not recommended either. Cheers!

Here's the Mathematica source for the above image:

initialAmount = 1;
famount[hours_, halfeLifeInHours_] := initialAmount/2^(hours/
Plot3D[famount[hours, halfeLife], {hours, 0, 100}, {halfeLife, 18,

1 Jun 2009

Üks, tõenäoliselt loll, mõte energia ja mateeria teemal ning natuke lobajuttu matemaatikaalaste töövahendite teemal

Tunnistan, et Mai 2009 seisuga ei ole ma veel endale ei Einstein'i teooriaid ega Schrödinger'i võrrendeid selgeks teinud (jättes praegu kõrvale teema, et kas ma selleni üldse küündin), kuid mul on vaikselt, juba vist keskkooli ajast saadik, kummitanud peas, mõnikord, jalutades, taevast pilvi vaadates, mõte, et võibolla on mateeria hoopis ruumis kokku surutud energia. Keskkooli füüsika tunnis ju käidi välja Einstein'i kuulus võrrand, E=m*c*c.

Ülikoolist mäletan, et footoni energiat sai välja arvutada, teades tema sagedust. Samas,
kui võtta eelduseks, et footoni liikumise kiirus on vaakumis C, saab välja arvutada footoni "pikkuse", eeldusel, et ta koosneb vaid ühest võnkest.

Minu amatöörlik, ketserlik, esmaspäevaõhtune, mõte on, et võrdleks füüsikute poolt väidetavat prootoni "suurust" sama "pikkuse" footoniga ja siis arvutaks footoni "pikkuse" järgi välja tema sageduse, ning siis paneks selle sageduse füüsikute poolt väidetavalt kehtivasse footoni energia arvutamise valemisse, saades sedasi võrreldava footoni energia ja siis avaldaks Einsteini valemist, E=m*c*c, footoni "massi" ning siis võrdleks toda footoni hüpoteetilist massi(ma mäletan, võibolla valesti, mingit füüsikute väidet, et footonitel massi ei ole) füüsikute poolt väidetava prootoni massiga, mis peaks enam-vähem ühilduma vesiniku aatomi massiga, sest elekroni mass pidavat aatomite massist vaid väga tühise osa moodustama.

Kui need massid klapiks, siis oleks minusugusele, Einsteini teooriaid mittetundvale inimesele, see maailm tsipa intuitiivsemalt tajutav.

Muideks, kogu selle ürituse inspiratsioon seisneb selles, et mul õnnestus omandada Mathematica 7 Home Edition litsens ning WolframApha otsingumootor näib igasugu äraunustatud, ning ka veel mitteõpitud, koolitarkuse ülesleidmisel päris hea abivahend olevat.

Aga, ega siis midagi. Siin on mu Mathematica töölehe kood, Copy-Paste tegemiseks:

c = 299792458 Meter / Second;
electronCharge = (1.6021765*10^(-19))*Coulomb;
(* The PhysicalConstants` gives the proton mass in MeV. *)

protonMassEnergy =
ParticleData["Proton", "Mass"] *10^6*electronCharge *Volt ;
protonRadius = (9*10^(-16))*Meter;
protonDiameter = 2*protonRadius;
plancConstant = 6.626069*10^(-34)*Joule*Second;

fFrequency[wavelength_] := c/wavelength;
fPhotonEnergy[wavelength_] := fFrequency[wavelength]*plancConstant;

Manipulate[fPhotonEnergy[prd], {prd, 1.6*10^(-15), 1.7*10^(-15)}]

ourPhotonEnergy = fPhotonEnergy[protonDiameter]

ourPhotonEnergy2 = fPhotonEnergy[1.6*10^(-15) Meter];

Ja tulemus: prootoni diameetri suuruse üksiku võnkega footini energia on 1.10358*10^(-10)J ning prootoni mass energiaks ümber arvutatuna 1.50328*10^(-10)J ehk footoni energia moodustab prootoni energiast 73%. Minu meelest, polegi paha, eriti kui arvestada, kui umbmääraselt prootoni raadius antud on.

Näiteks, kui kasutada prootoni raadiuseks Wikipeedias antud 1.6*10^(-15)meetrit, siis on footoni energia juba umbes 83% prootoni "massist". Aga jah, paistab, et selles valdkonnas mulle veel intellektuaalseid harjutusi jätkub. Selleks, et mõõtmistega seonduvaid ebakõlasid kontrollida, peaks ma vist juba materjaliteadust oskama, mida ma ei ole õppinud. Seega, jätan need vesiniku aatomid esialgu sinna paika ja mõtisklen, õpin, pigem, kuidas matemaatiliselt tekivad meremeestele hirmu tegevad asjad, mida inglise keeles nimetatakse "Rogue Wave".

Muidugi, huvi pärast võiks mõni päev välja mõelda mudeli, kus seisulaine ei liigu "2 seina vahel", vaid moodustaks oma "põrgetega" kera. Näiteks, tekib küsimus, et mis tingimustel on vaid osa kera pinnast põrgetega kaetud ja millal on kogu kera, "matanalüüsi mõttes pidevalt" põrgetega kaetud.

Ah jaa, muideks, naljaga pooleks võiks ju rääkida ka sonarite tehnoloogiast teada olevate ultraheli-lainete massiosakestele iseloomulikest omadustest. Vähemalt mingi analoogia näib ultraheli-lainetel ju, vähemalt väliselt, katood-kiirtega olevat. :-)

Üldiselt, kommentaar Mathematica 7 kohta on, et mul on selle Linux versioon ja see Debiani peal täitsa toimib. Aeg-ajalt küll variseb kokku, kuid mitte nii tihti, et see kokkuvarisemine eriti tööd segaks.

Samas, mis Wolfram'i litsensipoliitikasse puutub, siis see on küll minu meelest viidud absurdini.
Konkreetne näide on nende otsingumootori FireFox'i otsirea litsensist, kus on öeldud, et seda otsirea pluginat võib kasutada vaid mitte-kommerts eesmärkidel. Teisisõnu öeldes, lähed nende lehele, saab küll tööasjus valemeid meelde tuletada, aga läbi FireFox'i otsirea ei tohi. Absurd.

Ma siin küll ei ütle kust, aga teine näide on nende akadeemilised litsensid. Need on täiesti mõttetud. Sisuliselt on nii, et kui soovite asja väga rangelt vaid õppimiseks ja hobiks kasutada, siis tohib kodukasutaja litsensi osta ja kõigil ülejäänud juhtudel tuleb sõna otseses mõttes 10 korda suurema hinnaga (==40kkr) Proffessional litsens osta. Nende tasuta allalaetav Player või Viewer on ka täiesti mõttetu, sest vähegi keerukam tööleht ei ole sellega interaktiivselt vaadatav. Tasulise Player'i eest tahavad aga umbes sama suurt hinda kui kodukasutuse litsensi eest (~4kkr). Õnneks on siiski töölehte võimalik koos väljaarvutatud piltidega HTML-i eksportida ning interaktiivsetest asjadest ekraanivideosid teha.

Aga noh, teisest küljest jällegi, Mathematica on siiski tõesti hea kraam. Kuigi, isiklikult arvan, et suuremahuliseks numbrinärimises ta seoses igal võimalikul hetkel analüütiliste lahenduste ksutamisega ei kõlba. Teistpidi jälle, asjadega katsetamiseks on väga oluline, et kasutatakse just analüütilisi lahendusi, sest see elimineerib ära palju numbriliste ebastabiilsustega seonduvaid probleeme, võimaldades keskenduda numbriliste arvutuste spetsiifiliste küsimuste asemel käsil olevale probleemile. Vähemalt selline on minu senine, 2009. aasta kevadine, kogemus.

Näiteks Octave korral tekkisid mul ühel juhtumil numbriliste arvutustega seonduvad probleemid. Konkreetselt rääkides, kui lineaarvõrrandisüsteeme lahendada kasutades pöördmaatriksi leidmist, siis võib juhtuda, et tavalised ujukoma arvutused ümardavad esialgse, matemaatiliselt mittesingulaarse, maatriksi singulaarseks, muutes sedasi võimatuks pöördmaatriksi leidmise ja seeläbi ka pöördmaatriksi leidmisel põhineva võrrandisüsteemi automatiseeritud lahendamise.

Ise kodeerides on lahenduseks absoluutse täpsusega ratsionaalarvude kasutamine, näiteks kasutades GNU MP teeki, kuid seda teeki ma ei soovita, sest ta on C++ poole pealt väga problemaatiliselt kodeeritud ning teda on ka suht ebameeldiv kompileerida.