kwantum computing

Door pinna_be op zondag 25 mei 2014 00:42 - Reacties (15)
Categorie: Mijmeringen, Views: 5.670

inleiding
Zoals velen van jullie waarschijnlijk gelezen hebben, heeft google een tool uitgebracht waarmee je kan leren met kwantum computing te spelen. Wat ontdekte ik: ik versta er geen *** van. De concepten zijn redelijk ingewikkeld en in een poging om het te snappen heb ik een uitleg gemaakt. (De uitleg is Engelstalig aangezien ik hem gepost heb op reddit)

Nu, is deze uitleg mogelijk niet helemaal correct, ik deel hem met jullie in een poging het onderzoek voor jullie makkelijker te maken, maar vooral ook in de hoop dat er verduidelijkende reacties komen. Als we met meerdere mensen onderzoeken, kunnen we misschien een uitleg bekomen die wel correct is. En indien we geluk hebben leest iemand die er daadwerkelijk iets van weet deze blog ook, en kan hij/zij veel mensen helpen door aan te vullen.

De uitleg bestaat uit meerdere delen. Ik probeer eerst het heel simpel uit te leggen, en probeer dan uit te diepen.

uitleg - deel 0

http://qcplayground.withg...ayground/5653164804014080[1] . Dit is het basisvoorbeeld waar ik mee wil werken. De reden is omdat dit het eerste voorbeeld is waar er kwantum magie aan de pas komt.


Eerst creŽer je een vector van 8 bits 0000 0000 geÔnitialiseerd op 0. Aan de linkerzijde zie je een veld met grootte 256. Elk vierkantje op dit veld stelt een mogelijke staat voor, namelijk alle combinaties die je kan maken met 1en en 0en. Dit zijn er 256 en staat i komt overeen met de bitwise unsigned interpretatie van i.

We proberen eerst Hadamard uit te leggen. Hadamard zal een qubit i in superpositie zetten, dit betekend dat deze qubit zowel 0 als 1 is. Wanneer we dit doen op de bit met index 2, dan krijgen we mogelijke staten, namelijk de staten 0000 0000 en 0010 0000 (0 en 4). We merken op dat Hadamard een 2de keer runnen op een bit de eerste keer ongedaan maakt. Hademard is dus z'n eigen inverse. We merken ook dat de tool een balkje zet wanneer de staat "mogelijk" is, of in de 2d versie een vierkantje inkleurt.

uitleg deel 1

Nu klopt deze uitleg niet helemaal. In de Quantuminformatica wordt er immers gewerkt met qubits ipv bits, en elke qubit is eigenlijk een lineaire combinatie 𝛂*0 + β*1, waar 𝛂 en β complexe getallen zijn met de eigenschap |𝛂|^2 + |β|^2 = 1. ( Je kan dit grafisch voorstellen door een sfeer voor je te nemen. De noord en zuidpool zijn de klassieke bits 0 en 1, een qubit kan elk ander punt zijn op de oppervlakte van de sfeer.

Dus, wat doet een Hadamard gate nu eigenlijk met een qubit? je creŽert nog steeds een superpositie, enkel ben je niet gewoon meer 1 en 0, er zijn parameters bij nu, die beschrijven "hoeveel 0" of "hoeveel 1" je op dat moment bent. Je berekent new𝛂*0 + newβ*1 met new𝛂 = (𝛂+β)/sqrt(2) en newβ = (𝛂-β)/sqrt(2) . Dit betekent dat de qubit startend vanaf 𝛂=1, β=0 na de Hadamard bewerking new𝛂 = (𝛂+β)/sqrt(2) en newβ = (𝛂-β)/sqrt(2) . Merk op dat Hadamard nog steeds invers is.

uitleg deel 2
Nu, wat met de staten op het veld. Wanneer je je muis beweegt over het vel zie je |0> en |1> en |2> en ... . Wel, wanneer je met een qubit werkt, dan heb je duidelijk 2 mogelijke staten, waar je parameters hebt om te bepalen "hoeveel" je in welke staat zit. In het een qubit geval noem je deze staten respectievelijk |0> en |1>. Wanneer je met meerder qubits werkt, krijg je meerdere staten, meer bepaald 2^k staten. Op die 2^k staten geldt de volgende eigenschap: ∑ (|i>^2) = 1.

Wanneer we Hadamaren op bit 0, 1 en 2, zetten we deze 3 bits in superpositie. De formule is anders (liefhebbers kunnen dit makkelijk vinden op wikipedia na het lezen van deze blog, ik hoop voldoende info te verschaffen om het artikel te begrijpen), maar het concept is hetzelfde: Je "verdeelt je kans" over je verschillende staten, met andere woorden ∑i=02^k (|i>^2) = 1. en elke |i> is evengroot. (??? meer info gevraagd over het effect van een bewerking op een qubit, wanneer je met meerdere qubits werkt aub)

sigmaX + matrixnotatie

SigmaX is de not port in de quantumfysica. De nieuwe |0> van een betreffende qubit is gelijk aan de nieuwe [1> en omgekeerd. Merk op dat sigmaX op een bit in superpositie geen effect heeft.

Een laatste belangrijke zaak om op weg te geraken is de matrixnotatie. Waar een qubit is geschreven als [ |0>, |1> ]^t en een poort op 1qubit voorgesteld wordt door een vierkante 2*2 matrix.

bvb. de Hadamard matrix is [ [1/sqrt(2), 1/sqrt(2)], [1/sqrt(2), 1/sqrt(2)] ], Je kan dus het resultaat berekenen door [new|0>, new |1>]^t = [new|0>, new |1>]^t * [ [1/sqrt(2), 1/sqrt(2)], [1/sqrt(2), 1/sqrt(2)] ].

tot slot

Hopelijk heb je genoten van mijn blog en is hij niet te onwaar. Laat zeker een reactie achter, ter appreciatie van de blog of om iets toe te voegen/suggereren/op te merken. Zelfs spellingsfouten mogen gemeld worden, hoewel liever in DM, zodat het minder inspanning kost om de reacties on topic te houden.

TweakBlog API is releasewaardig

Door pinna_be op donderdag 10 april 2014 00:52 - Reacties (11)
Categorie: mini projects, Views: 5.199

inleiding

Zoals u misschien al had gelezen in mijn vorige blog, ben ik begonnen met een third-party api te schrijven voor tweakblogs. Dit was begonnen als een persoonlijk project (ik wilde enkel mijn blogs op mijn website zetten), maar er leek wel wat interesse voor te bestaan.

features

Met deze versie van de API kan je
  • Een lijst van recente tweakblogs ophalen (met blacklist/whitelist features)
  • Een lijst van een gebruiker's tweakblogs ophalen
  • Voor elke tweakblog een titel, een samenvatting, de auteur (momenteel niet echt de auteur, zie later), de inhoud en de reacties opvragen
Dingen die er misschien in de toekomst nog bijkomen:
  1. Een eficiŽnte manier van lokaal opslaan en uitlezen
  2. Een manier van reacties achterlaten
  3. de echte auteur opslaan, naast de "url-auteur"
  4. Eventuele suggesties van jullie
issues
  1. lokaal opslaan/uitlezen:
    Ik heb geen idee of ik dit via SQL moet doen (de "mooie" oplossing imo) of via een file-based manier. Via SQL vind ik het mooist en is het handigst voor eventuele zoekfuncties en dergelijke, anderzijds is een file-based versie draagbaarder (sql is niet vereist). Deze functie is wel essentieel voor mensen met een beperkte datatrafiek op hun webhost
  2. reacties achterlaten
    Dit is me na meermaals proberen niet gelukt. Het is niet zo simpel als gewoon het formulier overnemen, aangezien ik vermoed dat de beveiligingstoken die je meekrijgt rekening houdt met het ip die het opvraagt. Ik ben gestopt met het zoeken van manieren om dit te omzeilen, eerst en vooral omdat het voor mij niet essentieel is, maar vooral ook omdat het me echt niet lukte. Als iemand hier een manier voor kent of tijd heeft een beetje te reverse engineeren, laat het dan aub weten, ik denk dat het voor veel tweakers een meerwaarde zou kunnen zijn.
how to use

Een lijst van recente Tweakblogs ophalen:


code:
1
2
3
require_once "Folder/TweakBlog.php";
    
$list_of_tweakblogs = TweakblogAPI\TweakBlog::getTweakblogsLatest();



Werken met filters
  1. crŽer een blacklist of een whitelist

    code:
    1
    2
    3
    4
    
    require_once "Folder/TweakBlog.php";
                
    // laat tweakblogs van marcotm.tweakblogs.net niet toe
    $bw = new TweakblogAPI\BlackWhiteList(TRUE, array("marcotm") );


    OF

    code:
    1
    2
    3
    4
    
    require_once "Folder/TweakBlog.php";
                
    // laat enkel van pinna.tweakblogs.net of marcotm.tweakblogs.net toe
    $bw = new TweakblogAPI\BlackWhiteList(FALSE, array("marcotm", "pinna") );

  2. haal je lijst op

    code:
    1
    
    $list_of_tweakblogs = TweakblogAPI\TweakBlog::getTweakblogsLatest($bw);

Een lijst van iemand's tweakblogs ophalen


code:
1
2
3
4
require_once "Folder/TweakBlog.php";
    
// haal de blogs van pinna.tweakblogs.net op
$list_of_tweakblogs = TweakblogAPI\TweakBlog::getTweakblogsFrom( "pinna" );



Een aparte tweakblog ophalen


code:
1
2
3
4
require_once "Folder/TweakBlog.php";
    
// haal een specifiek blog van pinna.tweakblogs.net op
$tweakblog = new TweakblogAPI\Tweakblog("http://pinna.tweakblogs.net/blog/10130/update-tweakblog-api-01.html");



Standaard attributen van een blog ophalen


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
require_once "Folder/TweakBlog.php";
    
// haal een specifiek blog van pinna.tweakblogs.net op
$tweakblog = new TweakblogAPI\Tweakblog("http://pinna.tweakblogs.net/blog/10130/update-tweakblog-api-01.html");

// haal de titel op    
$titel = $tweakblog->getTitle();
// haal het tijdstip van plaatsen op
$tijdstip = $tweakblog->getTime();
// haal een korte beschrijving (= de eerste 400 karakters van de blog) op
$beschrijving = $tweakblog->getDescription();
// haal de inhoud van de blog op
$bloginhoud = $tweakblog->getBlog();
// haal de schrijver van de blog op (bvb pinna bij pinna.tweakblogs.net en dus niet pinna_be, de eigenlijke gebruikersnaam)
$auteur = $tweakblog->getAuthor();



Reacties


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
require_once "Folder/TweakBlog.php";
    
// haal een specifiek blog van pinna.tweakblogs.net op
$tweakblog = new TweakblogAPI\Tweakblog("http://pinna.tweakblogs.net/blog/10130/update-tweakblog-api-01.html");

// haal een lijst van reacties op
$reactions = $last_tb->getReactions();
    
// reacties standaard attributen
$reaction = reactions[0];
// haal de naam van de plaatser op
$plaatser = $reaction->getName();
// haal de inhoud van de reactie op
$inhoud = $reaction->getMessage();



installatie

Op github vind je de source code van het project. Je moet simpel weg de source files BlackWhiteList.php, TweakBlog.php, TweakBlogreaction.php ergens in een folder steken en dan hoef je enkel TweakBlog.php te includen/requiren.

extra opmerkingen

In de readme.md beschrijf ik hoe je een donatie kan doen. Dit is geen specifieke vraag naar donaties (ook geen afwijzing uiteraard), ik heb dit geplaatst op verzoek van iemand die onbekend wil blijven en iets wilde doneren.

Een andere manier om te steunen, is om de api te gebruiken om een alternatief tweakblogplatform op te zetten of om simpelweg je blog op je website te zetten en het me te laten weten. Dit kost je niks en je doet me er een groot plezier mee.

De inhouden van blogs krijg je zonder opmaak, enkel de htmltags die in de originele blog staan staan erin. In het algemeen lijken deze tags voldoende om een redelijk mooie blog weer te geven.

bugs en feature-requests

Je mag ze laten weten op een manier naar keuze. Opties zijn DM via tweakers, een mail, reactie onder deze blog, via github, ... . Ik probeer steeds te antwoorden en zal in het antwoord laten weten of ik het kan/wil implementeren. Hoe dan ook ben je vrij (leve opensource!) om mijn code te forken en aan te passen. Verder kan je ook steeds een commit sturen, als ze iets bijbrengt voeg ik ze mee toe. (vergeet ook zeker niet jezelf als author te vermelden als je iets meldenswaardig hebt gedaan).

UPDATE: Tweakblog API 0.1

Door pinna_be op donderdag 27 maart 2014 00:30 - Reacties (28)
Categorie: mini projects, Views: 6.562

update
Het project wordt nu gehost op github:
https://github.com/ThomasPinna/TweakblogApi
Dit moet nog een beetje geŲrganiseerd worden, maar het is alvast makkelijker bereikbaar en makkelijker updatebaar.
Ook zijn ondertussen de utf-8 charset in de testcase verholpen.

inleiding
Dit is de eerste blog waarin ik een klein projectje openbaar maak. Merk op dit is een klein projectje, eerder een fix voor iets dat ontbrak in mijn leven.

Dit projectje is ontstaan doordat ik zin had om mijn blogs ook op een andere manier te tonen dan enkel op tweakblogs.net en ik het stom zou vinden om de blogs te kopiŽren en bij elke wijziging/verbetering beide versies te moeten verbeteren. Bovendien was mijn kennis php / DOM al een beetje aan het vervagen en wilde ik iets klein doen om dit terug op te frissen.

Daarom heb ik een kleine api ontwikkelt die enkele dingen kan met tweakblogs.

features
Features
  • blogs opvragen van een bepaalde blogger
  • van een blog de content, titel en samenvatting opvragen
  • volledig in php, enige dependencies zijn: simplexml en DOMdocument (meestal standaard geÔnstalleerd)
Todo:
  • een lijst van reacties opvragen voor een bepaalde tweakblog ondertussen geÔmplementeerd
  • indien de titel/beschrijving niet bestaat, automatisch opvragen (nu wordt het uit de rss gepikt)
  • (indien ik erin slaag) een reactieformulier afdrukken dat de reactie toevoegt aan tweakblogs
  • blogs opvragen voor meerdere bloggers
  • recente blogs (met blacklist/whitelist features)
  • cache functionaliteit (tekst lokaal/in database opslaan)
howto use
Hier vind je een running example http://pinna.be/tweakers/output.html *, waarbij de hoofdingen in <h3> de commando's voorstellen en het resultaat eronder wordt weergegeven.
* opgelet, lelijke opmaak. Bovendien kan het voorbeeld verouderd zijn ik raad je aan de test op github te runnen. (ondertussen geen running example meer, maar een htmlbestandje met voorbeeldoutput)

Maar dus, je hebt een klasse die als volgt werkt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class TweakBlog {
        // construct a blog with the url to the blog
        function __construct($url);
        // sets a title
        public function setTitle($arg);
        // sets the description
        public function setDescription($arg);
        // get the title
        public function getTitle();
        //  get the description
        public function getDescription();
        // get the contents of the blog
        public function getBlog();
        // returns a list of TweakBlogs
        static public function getTweakblogs( $url_name );
        private $url;
        private $title;
        private $descrip;
    }



En je gebruikt hem als volgt:

code:
1
2
3
4
tb = TweakBlog::getTweakblogs( "pinna" )
    $tb[0]->getTitle();
    $tb[0]->getDescription();
    $tb[0]->getBlog();



Download + install
Download gewoon de php klasse hier http://pinna.be/tweakers/tweakblog_api_0.1.zip, pak de zip uit en include het php bestandje waar je het nodig hebt. Je kan de "installatie" testen door TestTweakBlog() op te roepen. (!!!generereert output)

Als bovenstaande link niet werk: hier een dropbox link: https://dl.dropboxusercon...689/tweakblog_api_0.1.zip (Ik heb enkele problemen met mijn webhost, iets met ddos

update:: je vind de source nu op github: https://github.com/ThomasPinna/TweakblogApi

extra?
Je mag de code vrij gebruiken/aanpassen, wat je maar wil, wel moet je mijn naam (ergens in de code) vermelden wanneer je je baseert op mijn code en het wil releasen. Als je er iets leuk mee hebt gedaan, laat dan zeker iets weten! Ik brand van nieuwsgierigheid, (en ben misschien weer een beetje overenthousiast).
Verder: Als je nog zaken geÔmplementeerd wil zien, laat zeker iets weten. Houd er wel rekening mee dat dit bedoeld is om een klein projectje te zijn, ik zal dus geen grootse Artificial intelligence dingen hierin verwerken. Ook bugs mag je zeker melden (als je wil zelfs met de fix erbij :p ).

Goed gevoel over het internet

Door pinna_be op vrijdag 14 maart 2014 14:05 - Reacties (8)
Categorie: Mijmeringen, Views: 4.469

inleiding
Welkom op mijn eerste blog over mijn mijmeringen. Het doel van deze blogreeks is gewoonweg mijn gedachten die opgesloten zitten in mijn hoofd de wereld in te sturen. Een trend die je zal merken is waarschijnlijk dat ik makkelijk onder de indruk ben en uren kan doorschrijven/praten over eigenlijk enorm kleine dingen.

het internet en mensen
Soms vergeten we wel dat de mensen op het internet ook mensen zijn, met gevoelens, gedachten enzovoort, maar wat ik zelden besef is dat elk van die mensen een leven leidt dat minstens even complex is als het mijne.
Dit is indrukwekkend als je er even bij stil staat. Als je op reddit een post plaatst en 50 mensen hebben de moeite genomen je een upvote te geven, dan is elke upvote gegeven door een mens met een complex leven met moeilijkheden, keuzes, deugden, waarden, beslissingen, meningen, enzovoorts. Machtig gewoon om te beseffen dat een post ergens aan de andere kant van de wereld een reactie heeft uitgelokt in die mate dat ze het nodig hebben geacht om hun appreciatie te laten blijken door op een virtueel knopje te drukken.

hulpvaardigheid
Mensen op het internet zijn ook soms enorm hulpvaardig. Vaak zonder dat ze er rechtstreeks iets aan overhouden. Getuige zijn sommige grote crowdfunding projecten waar sommigen doneren om het doneren, niet om het ontvangen van een product, maar gewoonweg om te steunen. Niet alleen dit: maar ook vind je talloze opensource projecten, gemaakt door mensen gewoon om het anderen gemakkelijker te maken.
Dit drong pas echt tot me door toen ik onlangs aan het spelen was met custom roms voor mijn smartphone. Op de reactiepagina van een custom rom had ik gevraagd naar een bepaalde flashable zip die een niet heel belangrijke maar wel aangename functionaliteit kon bieden. Nu heeft iemand geantwoord dat hij/zij dit zou regelen voor mij. Deze mens is hier nu kostbare tijd van zijn complex leven in aan het steken om mij, iemand waar hij nooit van heeft gehoord, te helpen, zonder er geld of wat dan ook voor te vragen. Mede dankzij hem, geloof ik nu echt in de goedheid van de mensen.

vrije virtuele beschaving?
Ook beschaafdheid kan me enorm raken. Uiteindelijk is het niet vanzelfsprekend dat een groep anonieme mensen op het internet zonder enige vorm van sociale controle of politie of iets dergelijks zich toch nog volwassen en beschaafd kan gedragen.
Uiteraard is dit niet overal even hard en zijn er nog steeds mensen die proberen de sfeer een beetje te verzieken, maar dit is in het echte leven toch ook zo? Onlangs, hier op tweakblogs heb ik op de blog van een ander een reactie achtergelaten. Vol schrijffouten en redelijk slecht geschreven (naar mijn mening), maar toch heeft de schrijver van de blog mij bedankt voor zijn reactie, ondanks dat ik het zelfs niet rechtstreeks voor hem opnam, integendeel zelfs ik was het absoluut niet eens met zijn blog. Dit bezorgde me echt een vreemdsoortig warm gevoel, ik kan moeilijk onder woorden brengen hoe onder de indruk ik hiervan was.

"slechte reacties"
Uiteraard heb je een soort reacties die weinigen graag lezen, met als ultiem voorbeeld reacties van zogenaamde grammar nazi's. Ook heb je wel wat mensen die zaken direct als onzin afschrijven op een redelijk groffe en kortaffe manier. Persoonlijk stoor ik mij hier niet aan, vooral omdat ik geloof dat deze soort mensen in de minderheid zijn en uiteindelijk laten de mensen die beleefde reacties achterlaten een diepere en warmere indruk achter bij mij.
Ook geloof ik niet dat de mensen die "slechte reacties" posten het per se slecht bedoelen, ik kan me niet voorstellen dat je er voldoening uit haalt om mensen die je niet kent met de grond gelijk te maken met een botte reactie. Daarom, voor deze mensen, een afsluiting met een kleine ...

hint
Ben je het niet eens met een mening of stoor je je aan de spellingsfouten, dan heb je 2 opties:
optie 1 Hou de mening voor jezelf. Het zal geen effect hebben op iemand en je maakt dus niemand ongelukkig, even goede vrienden met iedereen.
optie 2 Deel de mening. Deze stap is vaak moeilijker:
voor grammar nazi's: stuur een DM met een vriendelijke boodschap in en eventueel een oplijsting van de fouten die jou heel erg hard stoorden. Op die manier heb je iemand een plezier gedaan, geholpen iemands blog beter te maken en heb je meer kans op succes. Bovendien lijkt het dan ook niet dat je iemand gewoon publiekelijk belachelijk wil maken, maar komt je ware bedoeling, namelijk de schrijver helpen, meer tot uiting.
aan zij die het niet eens zijn met iemand anders' post: argumenteer. Dit is echt de grote regel, schets situaties waarin de schrijver het volgens u fout heeft en leg rustig uit waarom dit volgens u zo is. Denk je echt dat de schrijver van mening zal veranderen als je hem uitmaakt voor het rot van de straat, of denk je dat je mening meer effect heeft wanneer je daadwerkelijk de ander doet inzien dat zijn mening misschien niet absoluut juist is.

tot slot
Dit soort blog is experimenteel, en ik heb geen idee of hier een goed doelpubliek voor is. Laat weten waar je het wel/niet mee eens bent, wat beter zou kunnen in het vervolg en of je mijn blog graag gelezen hebt. Ook filosofeer ik graag, en denk ik graag na over allerlei zaken. Je bent altijd vrij een reactie achter te laten die een eventueel volgende blog zou kunnen inspireren.

Goedendag, tot de volgende, bedankt voor het lezen en geniet van het mooie weer!

De eerste stappen en mislukkingen

Door pinna_be op woensdag 12 maart 2014 21:56 - Reacties (4)
Categorie: Project, Views: 4.556

Inleiding
In deze blog wijd ik verder uit over het software project waarvan ik al een tijd geleden had verteld dat ik het zou starten. Het starten is begonnen en er zijn een paar zaken duidelijker geworden. We hebben een eerste vergadering gehouden, waaruit we een klein beetje dichter staan bij wat we gaan doen.

license
Na veel wikken en wegen hebben we gekozen voor de GPL3 license. Het was reeds vroeg het plan om het project opensource en gratis aan te bieden.
We hebben hiervoor gekozen omdat we ervan overtuigd zijn dat we onder deze license het makkelijkst onze hoofddoelgroep, namelijk studenten en dergelijke, kunnen bereiken. Ook is het blijkbaar mogelijk om onze code onder een andere license uit te geven voor commercieel gebruik, moest dit ooit interessant worden.
Een belangrijke reden is ook dat dit het makkelijker maakt om gebruikt te worden in andere projecten, het is de bedoeling dat code die we schrijven makkelijk gebruikt kan worden in andere opensource projecten. (bvb Stel we maken een efficientere matrix vermenigvuldiging, dan zouden we deze code eveneens kunnen contributen aan projecten zoals octave).
Ook stelt dit ons in staat om andere gpl3 projecten te gebruiken, echter is het dan niet meer mogelijk om een andere license te verschaffen in eventuele latere stadia, maar deze keuze kunnen we alsnog later maken.

tools
documentatie: Eerst en vooral gebruiken we docygen voor de documentatie die naar de programmeur gericht is. Dit omdat dit snel te maken is, er snel proper uitziet en redelijk dicht bij de code staat. We zullen ook een wiki/website starten en onderhouden, waarin we eerder op user-niveau documentatie zetten.
Ook zullen we in ons projectdocument een oplijsting van functionaliteiten geven, zodat het ook mogelijk is om in pdf-formaat een overzicht te downloaden als referentie. In de documentatie zal ook meer info staan over de gebruikte algoritmes.

communicatie: Interne communicatie zal via een licht gemodereerd forum verlopen. Dit omdat het gemakkelijk is om discussie per threads bij te houden en achteraf kan je in de beginpost de conclusie van de discussie zetten. Dit forum hosten we zelf.
Externe communicatie zal verlopen via een website/wiki en zal vooral typische zaken zoals de documentatie, downloads en dergelijke bevatten.

development We werken met cmake zodat iedereen vanuit elk platform en vanuit de meeste IDE's mee kan werken aan het project. Bovendien zullen we git gebruiken als tool voor version management en voor issue tracking.

testen We zullen gebruik maken van google test om onze testcase te maken. We hebben hier allemaal ervaring in en het werkt ook gewoon goed.

specificaties
globaal het project zal bestaan uit 3 lagen:
1) een low-level api : dit is de eigenlijke library waarin we alles implementeren. Hier zal de meeste aandacht gaan naar performance, features (hoeveelheid algoritmes voor een probleem) en herbruikbaarheid. Deze library zal waarschijnlijk niet erg aangenaam zijn om als bioloog of gelijkaardig te gebruiken.
2) een high-level api : in deze laag geven we een eenvoudige interface die het makkelijk moet maken om onze library te gebruiken. Dit zal gebeuren door de gebruiker toe te staan functies te definiŽren in een wiskundige syntax, welke dan gecompileerd zal worden naar c++ code. We hebben deze vorm gekozen bovenop een constructie met wrapperfuncties en typedefs, omdat we zo lekker veel optimalisaties kunnen doorvoeren. Bovendien moet er dan ook minder zaken dynamisch berekent worden, aangezien we een deel van de bewerkingen reeds op voorhand kunnen vereenvoudigen.
3) een gui: we maken ofwel een standalone gui of wel een plugin voor bestaande tekstverwerkers/IDE. Hierin geven we de gebruiker de kans om aan rapid prototyping te doen in onze eenvoudige syntax. Dit is handig voor wanneer het eerder gaat om numeriek gedrag te bestuderen in plaats van daadwerkelijk een project te maken. Ook zal deze gui een export hebben die een header file en een (gecompileerde?) cpp file output, zodat je je functie kan gebruiken in je project.

beginplan
We beginnen met de basis voor ons project: een numerieke library. In het begin zullen we ons vooral focussen op zaken uit de (numerieke) lineaire algebra, waar we dus vooral met matrices, vectoren en dergelijke zullen werken. Later zullen we meer functies toevoegen uit calculus, verzamelingenleer, getallenleer enzovoort.
-> Onze library zal niet enkel een resultaat geven, maar zal voor zover mogelijk ook een bovengrens op de fout op dit resultaat weergeven.
-> Onze libary zal de gebruiker de keuze geven welk algoritme te gebruiken en indien dit niet gekozen is, kiezen wij automatisch de meest performante keuze, voor zover we er inzicht in hebben.
-> We willen multithreading ondersteunen en zullen onderzoeken of opencl een grote meerwaarde bied op vlak van performantie en wat de kost is op vlak van draagbaarheid. Niemand van ons heeft reeds ervaring met opencl, maar we gaan hier zeker prototypes van maken om toepassingen te verkennen en te testen.
-> dependencies worden vermeden en indien toch nodig zo veel mogelijk beperkt. Het project moet hoe dan ook eenvoudig te installeren zijn en er zullen voor meedere platforms installers geschreven worden.

vorm
De specificaties zullen geleverd worden in het input/output formaat. Tevens zullen we trachten onze algoritmes zo vaak mogelijk te bewijzen en indien de bewijzen reeds bestaan, ze toe te voegen.

design
Zoals meerderen erop wezen tijdens de vorige blog willen we zeker geen design-up-front, omwille van tijdsefficientie. We kiezen dan ook voor een incrementeel design, waarbij we per stap een archiectuur opstellen, specificaties opstellen, prototypes maken, testen en implementeren in ons project. We zullen dus een soort weekly version hebben, buiten dan het feit dat het niet wekelijks zal zijn.

versie 0.1
We beginnen hier met het begin: we willen een klasse Number, Vector en Matrix implementeren en alle basisbewerkingen: "+, -, *, /" moeten ook geÔmplementeerd zijn. We houden hier alvast rekening met de fouten op de resultaten (conditiegetal, absolute fout en relatieve fout) en het effect van de bewerkingen hierop.
We zullen in het begin uitgaan van floating_point arithmetiek om snel een werkende versie klaar te hebben en zullen dan een number ontwikkelen die gebruik maken van exacte arithmetiek die dezelfde interface biedt als onze floating_point Number.
Ook willen we al nadenken over optimalisatie zoals: wanneer je 2 diagonaalmarices hebt, kan de som veel efficienter gebeuren, echter moet omzetten van diagonaal naar gewone matrix ook snel en efficient kunnen gebeuren.

Het probleem
Hier hoop ik van invoer van jullie kant, maar er is een groot probleem. Ik krijg mijn groepsgenoten niet warm om voluit te gaan voor het project. Velen willen niet betrokken zijn in fases zoals design en dergelijke terwijl anderen gewoon heel sporadisch willen meewerken. Met andere woorden, ik ben de enige die er met volle kracht voor wil gaan.
Hoe kan ik dit oplossen? Is het beter dat ik het project start als een eigen project, waar ik dan mense toelaat om bij te dragen. te forken (zodat ik alvast kan beginnen, want nu moet ik wachten op de rest)? Moet ik een rangorde opstellen in bevoegdheden in het maken van beslissingen, zodat we al heel snel kunnen beginnen en taken kunnen verdelen over degenen die enkel willen implementeren? Alle input is welkom!