Operating systems I wish I could use again.

Last night I stumbled upon a couple of screenshots of Rhapsdoy DR2 running under Bochs, and that brought along a couple of long-forgotten memories into my head. So a quick list then.

BeOS

When I used it: a couple of years ago, not very long before Be Inc. went into oblivion. I first used BeOS 5 Personal Edition, after reading about BeOS in a Romanian magazine (XtremPC, one of its earlier numbers). I then managed to use the “real” BeOS5, and, later on, the likes of Zeta.

How much: pretty much. I even started working on a couple of small BeOS applications — a 3D pong game and, at some point, a YIM client which never got to the point where it worked. I absolutely loved the BeOS API.

Why I’m not using it anymore: at this very point, I really don’t need it anymore. However, if I’ll ever get a laptop which is integrally supported by BeOS, it would my main option.

What I liked about it: very light and Unix-ish. It was very responsive, and although some applications were relatively prone to crash, it wasn’t really such a bummer.

Amiga Workbench

When I used it: Even more years ago, on an Amiga. Later on I fiddled with it using some Amiga emulators.

How much: not much, I only played a few games and fiddled with computer-generated nois^H^H^H^H music.

Why I’m not using it anymore: I don’t have an Amiga

What I liked about it: it was pretty light and had a lot of intensely geeky applications. Paper scores are no fun compared to a good ol’ tracker.

NeXTStep

When I used it: a couple of years ago (I’m getting a pattern here)

How much I used it: non-stop for about two months I think, I absolutely loved it. I still like the desktop and I’ve used WindowMaker for years, not to mention getting all mydocks, regardless of their type, on the right. I’m still hoping I’ll be able to make OS X behave relatively similar to it.

Why I’m not using it anymore: technically speaking, I am using it (OS X basically is NeXTStep). Otherwise, I don’t have a NeXTStation. I do have that x86-able version somewhere around here but NeXTStations are simply too inherently cool.

What I liked about it:  the desktop experience. It’s simply incredibly ergonomic and quick, and I also loved the hardware it ran on (I used it on a NeXT Cube). Ironically, I hated Objective-C, and I don’t really like it now either.

(Romanian) Mic ghid de învățat la chimie

Se dă următoarul sistem termodinamic:

  • Măgarul are examen la chimie (mâine). Este vorba, mai precis, de Chimie Generală, un curs care include noțiuni (interesante) de electrochimie (cam o treime din material), iar restul e format din lucruri excitante pentru chimişti
  • Măgarul nu este chimist
  • Măgarul are o aversiune generală vis-a-vis de reținut formule
  • Măgarul nu prea a dat pe la curs (care era plasat, neconvenabil, între Cultură şi Civilizație Europeană/Tehnici de Comunicare Profesională, funcție de săptămână, şi Psihologie), iar atunci când a dat, profesorul Măgarului, un om fără îndoială minunat, i-a zădărnicit, prin mirificul şi anticoerentul discurs, orice încercare de a lua notițe. Drept care materialul Măgarului este format din cursul tipărit al d-lui profesor, redactat în acelaşi stil deşirat şi lăți-lungit.

Colac peste bufniță, Măgarul face rost de curs cu vreo trei zile înainte de examen. Acțiunea decurge după cum urmează:

  1. Se deschide cursul; se începe cu noțiunile de electrochimie, se citeşte rezonabil până la prima linie de fracție mai lungă de 10 cm.
  2. Se subliniază ideile interesante pe curs, şi se trag săgeți care să indice ordinea corectă a frazelor. Se constată că de fapt conspectul ar însemna rescrierea întregului material.
  3. Se încearcă reținerea formulelor lungi, evident nu se reține decât linia e fracție. Se face un semn pe foaie, în semn că trebuie revenit asupra subiectului.
  4. A doua zi, se începe învățarea capitolului “Cinetica chimică”. Capitolul este, cum ziceam, excitant pentru chimişti, şi cum eu nu sunt chimişti, îmi dă, cel mult, o impotență. Se sar formulele, care înseamnă cam jumătate din material.
  5. Se recapitulează, ocazie cu care se observă că de fapt nu prea ai reținut nimic. Urmează osanale, idei cu “hai lasă că învăț la noapte”.
  6. Realizând că am exact 51 de puncte din timpul semestrului, subsemnatul probabil va lua mâine nota 3. Notă cu care, dată fiind performanțele de la celelalte materii, probabil că o să iau şi bursă, cu toate că din toată mirobolanta chimie generală am reținut numai electrochimia.

Geeks love screen estate

I know it’s an axiom, but I just got a little bit nostalgic. Some hefty years ago when I started programming, I had a (very crappy) 14″ screen. I was using Turbo C, so there was 80×24 for me, and when I moved to using Emacs under X11, the screen estate seemed huge. But still I thought, 15″ would be so cool…I gradually moved from 14″ to 15″, 17″, 19″, 20″ and 21″. I loved my 21″ screen. It was a huge, 30 kilograms or so CRT screen which got up to a wee 2048×1536 (I think) resolution, which was reasonably enough for me. I had to give it away though — it was very large and way too power-draining (not to mention my eyesight — it was well calibrated so I didn’t feel anything wrong, but still).Right now I’m stuck with a 20″ LCD which can’t go beyond 1600×1000 (not without feeling like a strobelight anyway and I hate it. It feels claustrophobic, I can barely fit the documentation, two code windows and a file system browser in it. Ironically, there were times when even my old 21″ CRT felt a bit small, to the point where I ended up using it together with the old 14″ screen I still had back then.I can’t help but wonder where the hell will I stop. Right now I’m dreaming of something that can at least get to 1920×1200, although even that feels barely enough right now. Something that can get even higher would be cool, but hell, that would cost me more than my Mac Mini, and it feels a bit wrong to spend more on a monitor than you do on a computer.And hell, there was a time when fitting more than 60 lines of code on my screen was unbelievably cool.  Right now, I have fitted more than that and I’m also able to read the documentation in a browser window which is just right to my code, and all I can say is “damn, how the hell was I being able to do shit in 1024×768?”I think I’ll get my CRT back… 

Ugh, pointer arithmetic is scary

Ok, so I’ll admit: I enjoy my share of functional programming, but I haven’t written a single purely-functional program that was longer than a few hundred lines. Sure, those few-hundred-lines would have meant a few thousand lines in any imperative language of your choice, but as we all know, the real work is in your head, not in your keyboard.Now I think I know why FP hasn’t been my cup of tea in every case. I have been touched by the claws of C and ASM long before I was in contact with Haskell (not to mention LISP).Call me one of those Real Programmers Elitists who don’t eat quiche and scorn Wirth, but a lot of over-protective ideas seem extremely dumb to me. Read-only parameters, so that you don’t change them inside a function? Right, as if writing something like iShouldntChangeThis = someobject->funnyFunction() is something easy to be done by mistake.Sure, there are a couple of not-so-desirable things introduced by pointers and arrays (think C strings). However, I don’t think the solution to this problem is simply taking out any possibility of destructive updates. Some destructive updates could indeed hurt your program — but this doesn’t mean that most uses of destructive updates are not perfectly legit.On the other hand, destructive updates also have the advantage of being fairly intuitive. Learning concepts like monads and currys in order to be able to do something as simple as I/O is surely not making a language very elegant. 

(Romanian) Matematici şi planul Bologna — sumar

Tocmai m-am întors de la examenul examenelor, ciuma ciumelor, examenul la care în ciuda muncilor de sisif la care m-am înhămat de vreo săptămână-ncoace eram 99% sigur că nu iau 6 nici dacă-l dau în două rate. Am luat 9, ocazie cu care am descoperit vreo câteva lucruri interesante despre rezolvarea integralelor duble (i.e. mi-a explicat profesorul în timp ce corecta).Concluziile legate de modul în care am făcut eu matematica (3 curs + 2 seminar la analiza, 2 curs + 3 seminar la algebră, unde am examen săptămâna viitoare) sunt următoarele:

  1.  Un semestru + 2 ore de seminar nu sunt nici pe departe de ajuns ca să pricepi cum trebuie ce-i de priceput. În primul rând pentru că la seminar este timp de acoperit în jur de 30% (cu optimism) din materia de la curs. Materie de la curs care altfel nu e foarte abstractă, nici foarte greoaie, dar una e când o faci acasă şi alta e când ai pe cine să întrebi când nu îți iese “ceva”. Un semestru + 3 ore de seminar este de ajuns ca să treci prin toată materia dintr-un curs echilibrat.
  2. Ori sunt deştept, ori ecuațiile diferențiale sunt simple, având în vedere că am aflat cum se rezolvă cu vreo patru zile înainte de examen, în cursul unei sesiuni de pregătire maraton de vreo şase ore. De fapt am aflat cum se rezolvă o parte din ecuații, pentru că semiplictisit de nervii profesoarei (nervi justificați, dar eu sunt o persoană mai calmă din fire…) am plecat cu vreo două ore înainte de final.
  3. Atunci când, printr-o vagă coincidență a sorții, ai timp să faci totuşi ceva la seminar, ceva-ul ăla se face numai cât să ştii că există. Accentul se pune, în particular, pe exercițiile mai simple, pentru că din două exerciții mai complicate se duce seminarul. Drept urmare, integrale pe sfere, tetraedre, elipsoizi şi alte asemenea sunt rarități la seminar. Prin semestrul II, studenții din Elth dau peste integrale pe orice numai pe paralelipipede nu. Desigur, aşa se învață mai bine ;) .
  4. Cele trei ore de curs dedicate analizei matematice sunt cu atât mai eficiente cu cât sunt programate mai târziu. Prin contrast, orele de Cultură şi Civilizație Europeană, Tehnici de Comunicare Profesională şi alte asemenea filosofii esențiale unui viitor inginer trebuie programate la o oră cât mai normală. Matematica se face mai bine în somn. De asemenea, seminariile trebuie puse la sfârşitul săptămânii, la o diferență de timp cât mai mare față de curs.

Nu pot să spun că sunt nemulțumit complet. Știu destui cârcotaşi care mârâie că nu e timp, că nu e loc, că materia e naşpa dar n-ar pune mâna să lucreze nici de-ai naibii. Într-adevăr, modul în care s-au chinuit profesorii mei de matematică ( a fost vrednic de tot respectul. Am muncit pe brânci şi la seminar, şi acasă, și dumnealor dimpreună cu mine şi cei câțiva rătăciți din elth (Inginerie Electrică, pardon) pe care ne mai interesează — situație în care probabil că mulți profesori ne-ar fi dat bibliografia şi ne-ar fi dat cinci la restanțe.Cred totuşi că problema e una de priorități, în sensul următor:

  • Materii dubioase din semestrul I: în momentul în care te plângi că abia ai timp, de când cu planul Bologna, să acoperi chestiunile esențiale la materiile de care chiar ai nevoie, n-o fi aşa mare durere dacă materii gen CCE (cultură şi civil…) ar fi trecute frumos ca liber-alese pentru cine are chef. Mie chiar mi-a plăcut CCE, atât cât am fost la seminar (pe la curs n-am dat, fiind plasat în mod convenabil pentru plecat acasă), dar cele două ore pe săptămână dedicate sus-numitei materii ar fi fost mai utile distribuite pe altundeva.
  • La nivel de materie în sine, cred că se putea renunța la destule lucruri. În particular, se puteau sări destule lucruri legate de şiruri. De fapt, m-aş fi simțit la fel de satisfăcut cu explicații de genul: acesta este un şir; matematicienilor le plac şirurile; voi o să fiți ingineri, nu vă plac şi nici nu vă trebuie; dacă adunăm termenii unui şir, obținem o serie. Matematicienilor le plac seriile. Voi trebuie să ştiți cum se foloseşte seria Taylor, şi o să mai faceți voi câte ceva în semestrul doi la MS. Nu vreau să mă declar vreo somitate în materie de matematici sau de inginerie (de vreme ce sunt anul I), dar m-am informat din timp vis-a-vis de ce e necesar şi ce poate trece pe planul doi.

Edit: fără vreo legătură cu subiectul, se pare că nu inginer trebuie să mă fac :-P. Da, Alexandru Lazăr sunt eu.

    It’s Not Always Like That: Documentation in Open Source vs. Commercial Programs

    One stereotype I often hear about open source programs is that they are badly documented. Ok, they generally are. I actually gave up trying to use Mono for this reason, after being forced to use GTK’s C documentation simply because nobody bothered to write Gtk#’s. But there are odds and ends in this. Both Gtk and Qt (the latter being my choice, due to the fact that it has a better cross-platform support than Gtk) are quite well documented. In fact, Qt’s documentation has been instrumental in my process of learning it. I don’t remember having to ask anything around on an issue concerning Qt’s working itself — everything was just in the docs already.These days I’m struggling with Cocoa, and I find myself struggling in the same way I struggled with Gtk#.Now don’t get me wrong: I really like Cocoa’s completeness and consistency. Apple’s APIs are wonderful themselves, covering a lot of ground and simplifying a lot of my work. And besides, the learning curve is quite cool — when you can find what you’re looking after.Compared to Qt, Cocoa’s documentation is simply gruesome. If you are looking for something like Qt’s samples — programs of just a few lines demonstrating only a couple of basic things — good luck. They’re not on ADC, and if they are, they are very well hidden. XCode does come with a few samples, most of them concerning some more special functions, and certainly not commented or explained.If you are trying to learn the basic programming techniques — good luck, again. In Qt, they are nicely grouped in just a couple of places, and once you have read the Tutorial and looked over a couple of examples, it’s easy to get started and pick some things along the way. In the case of Cocoa, this seems to involve a multi-step process:

    1. Stare blankly at http://developer.apple.com/cocoa/ , wondering where the hell do you actually start from
    2. Hopefully, you discover Apple’s up-to-date tutorial for creating a simple CurrencyConverter application. Google links to one that is out-of-date and, since Xcode 3.0 comes with a revamped version of Interface Builder, you’ll have some fun staring at it. This is assuming you know Objective-C. Otherwise, good luck learning that from about two or three articles, too.
    3. You finish the CurrencyConverter tutorial. You are amazed at how cool Cocoa is — no, it really is.
    4. You decide to write something simple. In my case, it’s a “tea-time” application: it maintains a simple database of tea blends. You can add, remove, modify and browse them. Once you find one you would like, you click “brew” and this will start a timer, either based on a personal choice or on the parameters defined in the database, so that you don’t forget about the tea and that you get the optimum flavor. Once the time is up, a little alarm sounds. Simple. With something like Cocoa, it should be interesting.
    5. Put things on paper.
    6. Blankly stare at http://developer.apple.com/reference/Cocoa/index.html . Where the hell do I start? Or, rather: what are the conventions? How do we store the tea database in an OS X-friendly way? How do we store the sounds? What are the exact widgets we should use? Realize you have no clue.
    7. Realizing you have no clue, start reading.
    8. Realizing you have no clue where to start reading from, get a book, hoping everything is tightly integrated (at least that’s what I’m going to do…) . Leopard users will have a surprise once they try to use Interface Builder.

    The information I need right now seems to be spread around 30 entries in the reference — or at least I hope it is, because there’s nothing punctual.For instance, I would like to use a panel in my app to manage the tea blends — in order to keep the main window uncluttered (the browsing will be done one-by-one from the main window, but adding, removing and modifying teas in a table view is something users need less often). So I figured I’d use NSPanel and happily went to http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSPanel_Class/Reference/Reference.html#//apple_ref/doc/uid/20000244  . Unfortunately, that page is half useless to me. I’m just learning, so I don’t really know if NSPanel is the best choice — a quick overview of how you use it and where would be cool. No, that information is in the Window Programming Guide. Actually, half of the information is there. The other half (namely, how I actually integrate the panel in my application and how I work with its outlets) is, I assume, in a sample program, which I cannot find. The NSPanel situation is really just an example. I find it very hard to find my way around this way — and frankly, I find it very inconvenient to need a book in order to learn an API (or rather a set of APIs). I would understand buying a book to learn a new language, or things like design patterns. Needing a book in order to patch up an annoyingly deflated and atomized documentation is not.

    Three Days With Leopard: First Impressions

    I’ve spent the last three days fiddling with OS X Leopard (I was too curious not to try it), and my feelings towards it are rather mixed. Basically — but without making it a full-blown review, and in no particular order, they would be:

    •  The newfound consistency is a wonderful idea, but I don’t really fancy the theme. The theme is pretty similar to the look of iTunes, while I would have preferred a more Aqua-ish look. I used Shapeshifter before — I may use it again if it works.
    • Also in terms of look, I don’t like the huge shadows under the windows. I’m sure there’s a hack somewhere, but I didn’t bother looking for it — which doesn’t mean that I won’t. On the other hand, I do like the new dock look (for what it’s worth… it won’t be long before I revert to my old, Classic-like desktop I hacked a couple of months ago — also on this blog).
    • In terms of speed, Leopard is hardly the beast I’ve heard it to be. It runs okay on my Mac Mini. I don’t use hardcore memory eaters, like Photoshop or Quark XPress, but Aquamacs, XCode and NetBeans have no problem. It does boot slightly slower than Leopard, but compared to how Vista runs on a dual-core system with 1 GB RAM and all the OS X-ish visual effect, it runs, well, like a leopard :-D .
    • I haven’t had the time to fiddle with Time Machine, and chances are I won’t do it too soon — my old backup scripts work fine. Spaces is cool though.
    • Finder is still broken.
    • I heard a lot of people complaining about Java — but I had no problems so far. Save for the dialog windows (which do look “generic” indeed), I’m a happy NetBeans user.

    In sfarsit, Mac Mini (si un post in romana)

    Intr-un glorios final, mi-am bagat picioarele in ea de asteptare si am dat pur si simplu un telefon la iStyle sa intreb daca exista totusi un Mac Mini pe stoc. Initial incercasem sa iau de la magazinul Apple online, unde astept de vreo luna jumate (18 octombrie mai exact). A durat cred ca… 15 minute? pana sa plec acasa cu Mac Mini-ul si o tastatura cu imprumut, data de ei pana cand vine tastatura wireless pe care o vroiam eu. Foarte seriosi si preturile ok. De-asta si scriu postul acesta in romana, in caz ca mai are cineva chef de cumparat un Mac. Nu stiu daca a fost doar experienta mea, insa am fost foarte dezamagit de magazinul Apple. Omul de la celalalt capat al firului a fost amabil cand am sunat, dar de fiecare data raspunsul a fost “asteptam si noi saptamana viitoare…” (chestie care am tot auzit-o de pe la jumatea lui Octombrie), iar mailurile s-ar parea ca nu le-a citit nimeni. O sa dau luni un mesaj de anulare a comenzii. In schimb, chiar mi-a placut de cei de la iStyle. And I got a brand new Mac Mini :-D

    Margelutze

    You may want to check this outMy friend has a thing for little beads (that’s mărgeluţe in Romanian — roughly margelutze). Enjoy! (And order :-D ).header2.jpg

    One more reason to like Lewis Caroll

    A lot of people don’t know that Lewis Caroll (actually, Charles Lutwidge Dodgson) was also a mathematician. And although I enjoyed reading Alice’s Adventures in Wonderland at least three times until now, I needed this note to the light.

    « Articole mai vechi