Monday, June 27, 2005

Fleksitid og -sted

Jeg har fleksitid på jobb, noe som er vanskeligere å beherske enn man skulle tro. Det begynner også å demre for meg hvorfor masteroppgaven tok så lang tid. Den gangen førte jeg aldri noen oversikt over hvor mange timer jeg faktisk jobbet hver dag, mens jeg nå er tvingende nødt til å bevisstgjøre meg selv på hvor mye tid som forsvinner i rent, skjært sommel. Samtidig, selv om jeg er smertelig klar over problemet, er det vanskelig å f.eks komme seg ut av senga når jeg vet at jeg ikke . Dusjing, frokost og morgensommel tar normalt et par timer, slik at jeg sjelden er på plass før 0930. Lunsj har vist seg umulig å tvinge innpå på under en time. Og blir man sulten og ikke klarer å hoste opp noe konsentrasjon er det jo ikke vits i å bli sittende. Middagspause må man ha! Og etter middag blir man så søvnig... Og slik går dagene. Etter litt helgejobbing er jeg nå oppe i et snitt på 7.4t/dag, målet er normale 7.5.

Nå har jeg også fått innvilget fleksisted. Jeg spurte sjefen om det var i orden at jeg flyttet til Italia, og det syntes han var en strålende idè. Min søster ordnet med leilighet til meg i Vado Ligure, et forsted til Savona, byen hun bor i. Og der hadde jeg flaks, for å finne utleieleilighet i Italia er lettere sagt enn gjort. De har visstnok en lov som gjør at når noen har leid et sted i over ett år, har ikke huseier lov å kaste dem ut. Dermed er folk livredde for å aldri bli kvitt leieboere, og lar heller være å leie ut. Min søster måtte følgelig love husverten at jeg ikke skulle bli boende lengre enn til jul.

Ettersom fleksitiden allerede har avslørt en noe laber selvdisiplin, skal det bli spennende å se om fleksisted frembringer nye lavmål. I mellomtiden må jeg skrape sammen den lille fritiden jeg har til overs etter å ha somlet bort store deler av dagene, og se å lære meg italiensk i en fart. Som jeg har påpekt før, kommer man ikke så fryktelig langt med engelsk der nede.

Sunday, June 26, 2005

AnyLogic Enumerations

AnyLogic is a tool for creating agent-based, system-dynamics-based, or, as the name implies, any-kind-of-logic-based, simulation models. The neat thing is that one can also mix the supported kinds of logics, thereby creating for example a discrete, agent-based model with continuous elements. This is what I am currently trying to do. Another neat thing is that AnyLogic is Java-based, such that one can not only write Java-code almost anywhere in the tool, but one can also create and use external Java libraries. This provides an extraordinary level of flexibility. Anyway, since AnyLogic is all new to me, I thought I'd blog different issues as they arise.

One of the first problems I encountered, was to deal with Enumerations. They are easily created, but I had problems figuring out how to access the elements from the code. The solution turned out to be emabarassingly simple: whereas I tried to access the enumeration elements using syntax int someVariable = EnumerationName.ELEMENTNAME, I realised that this can only be done if someVariable is of type EnumItem. Obvious in retrospect, however, I wasn't even aware of the existence of the class EnumItem, and it's not mentioned in the manual. I also believe that in for example C#, one can cast the Enum type to an int, using syntax int x = (int)Enumtype.ELEMENT;, though attempting this in AnyLogic gives a compilation error. Further, in some cases the syntax EnumerationName.ELMNAME is required, but in other cases only ELMNAME is accepted. I have not yet found the pattern for where the different syntaxes are to be used.

Oh, and the enumeration itself appears to be of type EnumIndex (both types are documented in the AnyLogic class reference).

Monday, June 20, 2005

Foreign key problems with MySQL

I recently ran into a problem with creating foreign keys in MySQL. I used the syntax alter table child add foreign key (parentID) references Parent(id) on update cascade on delete restrict. I also tried to declare the foreign key as part of the table creation statement, but received the same error message anyway: ERROR 1005 (HY000): Can't create table 'sometempname.frm' (errno: 150). When I looked up error 150, it said: MySQL error code 150: Foreign key constraint is incorrectly formed. This lead me to believe that my foreign key syntax had problems, however, as I coincidentally discovered when running show create table Parent, my Parent table was in fact of type MyISAM, whereas Child was of type InnoDB. I have no idea how Parent ended up being of type MyISAM, InnoDB is supposed to be the default engine. Anyway, by redefining the parent table to be of type InnoDB my foreign key declaration worked.

UPDATE: Other aspects to check with this error message: the columns used as foreign keys must be indexed, they must be of the same type (if i.e one is of type smallint(5) and the other of type smallint(6), it won't work), and, if they are integers, they should be unsigned.

MySQL start-up problems

When I first installed MySQL I had little problems with installation/startup. Today however, when trying to start the server using either mysql -u root -p or the MySQL Command Line tool, I got the error message saying: Error 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061). Further, when using mysqld --console, I got an error message saying: [ERROR] can't find messagefile 'c:\mysql\share\english\errmsg.sys', whereas MySQL is installed in directory 'c:\Program Files\MySQL\MySQL Server 4.1', which should thus be the place to look for the \share folder. I checked my my.ini file, which seemed to have the correct settings. Apparently though, something must have messed up my server settings so that it was no longer using the .ini-file, because specifying the defaults file in the following way almost solved the problem:
mysqld --defaults-file="C:\Program Files\MySQL\MySQL Server 4.1\my.ini" --console. Now I got an error message similar to one I got when installing MySQL in the first place, saying: InnoDB: Error: log file .\ib_logfile0 is of different size 0 5242880 bytes than specified in the .cnf file 0 10485760 bytes! I therefore deleted the files ib_logfile0 and ib_logfile1, because they will be automatially re-created and set to the size specified in the my.ini-file when starting mysqld. After that, MySQL started up fine.

It worries me a bit that the error message refers to the .cnf file, because MySQL is supposed to use the .ini-file, and besides, there is no *.cnf file on my entire harddrive. So at the moment, I am assuming that it is an error with the error message...

Sunday, June 12, 2005

Formattering for begynnere

Laptopen min har i helgen blitt utsatt for min første egenhendige formattering. Etter å ha pøst på med alle slags impulsive installasjoner av programmer i halvannet år, måtte jeg bare innse at det var på tide med full vårrengjøring. Klok av skade fra den gangen min stasjonære PC ble formattert kjøpte jeg nå en ekstern harddisk som til alt overmål har en one-touch knapp for backup. Slikt kan jeg like. Nå vet jeg ikke akkurat hvordan det skar seg, dokumentasjon er jo som kjent for pyser, men one-touch fungerte ikke helt som jeg hadde tenkt. Etter å ha rotet litt frem og tilbake satte jeg på one-touch backup av hele C: over natten. Morgenen etter holdt den fremdeles på med noe (det kunne se ut som den drev og forberedte en ny backup), og siden det ikke er snakk om mer enn 80GB ante jeg ugler i mosen. Da jeg sjekket viste det seg at nesten alt unntatt jobb, skolearbeid og musikk var backet opp. Etter å ha roet pulsen og kopiert de resterende filene manuelt to ganger for sikkerhets skyld, satte jeg i verk formatteringen. På grunn av manglende teknisk innsikt får jeg alltid litt adrenalin av slike prosjekter, men dette gikk overraskende bra. Jeg har lært følgende:
  1. Man må ha en bootable Windows CD (det finnes faktisk Windows CD-er som ikke er bootable også)
  2. For å formattere C: må man først slette partisjonen, og så opprette den igjen. Windows vil da automatisk formattere den med NTFS filsystem
  3. Man kan klare seg med to defekte Windows CD-er dersom den ene har det den andre mangler og omvendt
  4. Det som tar aller lengst tid er å installere et utall med drivere, samt å endre alle preferences i Windows
  5. Windows Messenger er kanskje verdens vanskeligste program å bli kvitt. Selv etter å ha blitt fjernet under add/remove programs ligger det der og lurer. Et kjapt søk førte til denne oppskriften på hvordan man i alle fall får deaktivert faenskapet
  6. Microsoft viker ikke av veien for å være irriterende på andre måter heller, og krever IE for mange av oppdateringene man trenger å gjøre
  7. Det er ikke nødvendig å grue seg så mye til reinstallering som jeg gjorde, spesielt ikke når man har backup av hele C: slik som jeg hadde

Friday, June 10, 2005

Italia for begynnere

Jeg var nylig i Italia og besøkte min søster, som studerer der. Noen dager før avreise begynte jeg så smått å kikke i en italienskbok jeg hadde liggende, bare for å mate reisefeberen. Den første kvelden møtte jeg vennene til min søster og oppdaget at de kunne heller lite engelsk ("the car" uttalte den ene motvillig da han skulle demonstrere sine engelskkunskaper), og med det gikk det alvor i språkstudiene mine. Søsteren min lærte villig vekk nyttige fraser som "figura di merda" (drite seg skikkelig ut) og "cazzo" (hyggelig oversatt til "faen"). Den gangen jeg skulle utbryte cazzo spontant sa jeg cozza i stedet, som typisk nok betyr blåskjell. Standhaftig studerte jeg videre i boken jeg hadde, og mot slutten av uken kunne jeg forstå en akseptabel mengde italiensk. Det var verre med egenproduksjonen, og frekvensen på uttalelsene så ut til å øke eksponensielt i forhold til antall fraser jeg kunne, slik at den siste dagen jeg var der uttalte jeg fremdeles ikke noe stort mer enn informative "fa caldo" (det er varmt) og "molto bene" (veldig bra), bare veldig mye oftere enn første dagen.

Men Italia for begynnere dreier seg slett ikke bare om språk. Blant annet fungerer offentlig transport på en litt annen måte enn her hjemme. Rutetabellene er for eksempel ikke ment bokstavelig, trolig mer som guidelines, og det er ikke unaturlig at toget stopper en halvtime her og der, eller at det rett og slett stopper helt, og man må komme seg for egen regning den resterende biten. Et avslappet, men meget grundig personale bidrar også til at det kan ta over en time å stå i billettkøen for tog som går innen en time.

En annen ting som kan være verd å merke seg er at dersom man har skrot liggende som man ønsker å bli kvitt, kan man sende det i posten. Da er det nesten garantert borte for alltid.

Når dette er sagt, må jeg nesten føye til at italienere er utrolig kjekke mennesker. Nå begrenser riktignok mitt referansegrunnlag seg til min søster sine venner, pluss en som tok systemdynamikk samtidig med meg, men de var i alle fall veldig kjekke. Og all ære til de som på tross av sviktende kommunikasjonsgrunnlag gjorde sitt ytterste for at jeg skulle trives, noe som lyktes svært godt! La vita è bella in Italia!

En blogg kan være et godt verktøy for en som i litt for stor grad glemmer de små og store tingene som utgjør livet. Dette er min reserve- hukommelse.