About Me

Michael Zucchi

 B.E. (Comp. Sys. Eng.)

  also known as Zed
  to his mates & enemies!

notzed at gmail >
fosstodon.org/@notzed >

Tags

android (44)
beagle (63)
biographical (104)
blogz (9)
business (1)
code (77)
compilerz (1)
cooking (31)
dez (7)
dusk (31)
esp32 (4)
extensionz (1)
ffts (3)
forth (3)
free software (4)
games (32)
gloat (2)
globalisation (1)
gnu (4)
graphics (16)
gsoc (4)
hacking (459)
haiku (2)
horticulture (10)
house (23)
hsa (6)
humour (7)
imagez (28)
java (231)
java ee (3)
javafx (49)
jjmpeg (81)
junk (3)
kobo (15)
libeze (7)
linux (5)
mediaz (27)
ml (15)
nativez (10)
opencl (120)
os (17)
panamaz (5)
parallella (97)
pdfz (8)
philosophy (26)
picfx (2)
players (1)
playerz (2)
politics (7)
ps3 (12)
puppybits (17)
rants (137)
readerz (8)
rez (1)
socles (36)
termz (3)
videoz (6)
vulkan (3)
wanki (3)
workshop (3)
zcl (4)
zedzone (26)
Sunday, 10 May 2009, 14:38

More muck'n about

In the quest to find something to keep me busy I've switched tacks again. I've been playing about with writing an operating system, of all things. I guess it will only be a diversion as it would take years of work to get anywhere, but it is nice to play with some low level stuff for once.

I think the idea came after I found some link to Minix 3 and had a look at that. It looked quite interesting, and I always had a soft-spot for micro-kernels. It's surprisingly functional and very small - boots in an instant. Although one problem is you really need to buy the book to understand the code as the documentation is lacking, and even then the code has moved on quite a bit since the book was written, so it isn't terribly useful anyway. The way the various servers inter-communicate isn't very simple either; for a microkernel it seems to have a tighter coupling between servers than I'd have imagined, although there is probably a reason for that. I think the original goal of nice clean readable code has also been corrupted by the bolting on of new features like virtual memory and a vfs layer. And then there are some serious performance issues with it's synchronous message passing design; well not so much the message passing bit (although the overhead is quite large) as the way the services have been implemented. I'm sure it makes the code simpler but it just doesn't scale. And no threads. I do like my threads.

But anyway, the idea of a tiny micro-kernel intrigued me, so I read up on Minix 3, HURD, Mach, L4, ECos. Grand ideas flashed before my eyes. Then all the work involved pulled me back to earth. It took me days just to get a context switch working because of the shitty PC hardware (more on that below). So I definitely want to keep things simple and have pretty low expectations of where things might end up, if not just another long-forgotten directory on one of my PC's (which is pretty much a dead-set certainty no matter what else happens).

The PC isn't nice to play with at all. How disappointing that such an utterly bullshit architecture ever got so common and cheap. First there's the processor, which starts with an ancient and obtuse instruction set and then just goes down-hill from there. Segments and TSS? Enough said. Even the manuals aren't very good; after having read other processor and hardware documentation, they seem to make things far more difficult to find than necessary and leave out too many important details. Then there's the rubbish hardware beyond the rubbish processor. Only one real timing source? And even that isn't very good. Jesus, even the bloody C=64 had far more advanced peripheral hardware than that. Even one of it's timer chips had 2 timers (plus a TOD/clock - which also had an interrupting alarm function), each of which could create interrupts, and they could be cascaded for very long intervals, they even had safe easy programming interfaces - and it had two of these chips! I don't even have to mention the SID chip vs's the PC sound - oh that's right, lets just use another timer channel to make offensive beeps instead.

Sigh. So I should really be targeting the PS3 I guess; maybe if I get the system simulator up I'll look into it. The docs on the hypervisor are a bit slim though.

Well, despite all the rubbish you have to deal with I'm making slow progress; thanks to Grub and some of the free OS's out there and making lots of mistakes in Qemu and Bochs. I have a pretty simple context switch and system call mechanism sorted out, and basic interrupt handlers for timer and keyboard. I got bogged down just writing a very simple memory allocator, which was quite disheartening (I blame lack of sleep; I made it in the end). And instead of Minix or HURD I'm looking to AmigaOS for inspiration instead. It's such a simple and functional design; although I'd like to play with memory protection and similar ideas which don't translate directly and will make things a bit trickier and slower (than they might be otherwise). So that probably means the next thing to look at is signals - which are quite trivial (the only mechanism in AmigaOS used to wait on events or signal them), and then message ports - which aren't much more complex (although separate address spaces makes the whole notion quite different). Once they're done I can probably look at implementing simple devices like keyboard and timing. Although I might also have to look at how I might handle process isolation and virtual memory at some point fairly early in the piece too.

Well, unless I get bored with it all before then.

Tagged hacking, os.
Thursday, 16 April 2009, 04:28

More Cell Tutorial

Part 3 of my Cell tutorial is up. Not much in this round, but more to come of course.

I've been doing pretty much SFA on hacking for the last week or so; the weather's turning to winter here and that always seems to such some enthusiasm out of you; at least for a bit. As did a few hang-overs and so has being stuck with writing documentation for so long.

Tagged biographical, hacking, ps3.
Wednesday, 15 April 2009, 06:19

People actually pay for this rubbish?

I was forced by the project manager to convert one of my documents into Microsoft Word format.

Wow, what an unpleasant journey this turned out to be. First the Lyx/LaTeX to ODF converter didn't work very well. Although I eventually got it to work on a GNUOS machine by removing some ps-tricks diagrams first. The text converted ok, but there were other problems. All the cross references were broken and needed to be fixed up, and the images needed re-inserting as they'd been re-sampled at a lower resolution.

Fighting with OpenOffice 'dot' org's nasty GUI features wasn't much fun. Such as the ones that have the screen bouncing around as you navigate through different document elements; often losing focus in the process -- navigating by keyboard was simply impossible. And finally, after getting the document to a decent state following one last change it simply refused to save in ODF format, so I was forced onto Microsoft Word.

So then came the less-than-perfect conversion to Microsoft Word format. It broke all of the references again. And inserted images, captions, and tables in a way which didn't work very well and needed to be re-done. Microsoft Word crashed twice just trying to re-arrange a table; and had the gall to make out that it was doing me a favour by (very) slowly ``recovering'' my work. Lots of issues with cross referencing (the cross referencing tool is worse than the OpenOffice 'dot' org one, and that's saying something), numbering, tables of contents, maths sections, styles, formatting, and even plain editing functions and the user interface. None of it worked well, and much of it barely worked at all.

Over-all, a few days of a head-ache inducing and hair-greying experience I hope not to repeat any time soon. At least OpenOffice 'dot' org has an excuse, it doesn't cost anything. Although the claimed interoperability is simply not there; but we all know who to blame for that. But someone paid for this Microsoft Word, and it is an utterly ghastly horrible product that only produces amateurish results when it does manage to do what you ask it to.

After having written the document originally using Lyx, and having recently worked with Texinfo as well, even their combined quirks and difficulties pale in comparision to these utterly unproductive, rubbish tools.

Tagged rants.
Wednesday, 08 April 2009, 23:42

Introduction to CBE, Part 2 (chapter 3)

I've uploaded the second part of my Cell BE intro up toEverything Cell. Things are a bit more interesting this time and it gets straight into talking about double-buffered DMA and SPUs and registers and other fun stuff. Should be enough to digest until the next chapter which gets into multi-processing.

Whilst checking that it uploaded ok I did some proof-reading and realised the writing style isn't terribly good. If wordpress didn't force html line breaks all over the place it would look a bit better too. My excuse is that it's only a draft and i'll keep working on it as I have time.

Although now i've got this out of the way i've gone back to playing with some of my Java projects for a while. Oddly enough, using wordpress has given me inspiration to work on my own internet publishing tool again; although it also shows just how far off my ideas are of being realised too.

Tagged hacking, ps3.
Tuesday, 07 April 2009, 14:08

National Broadband Network

Wow, so Ruddy and Crew want to build a fibre-to-the-home network for the whole of the country through a publicly sponsored company. Well since nobody else would do it, I guess they had no choice, and It's about time we jumped into the 21st century. We've been held back too long by abusive behaviour from our local telephone monopoly.

All the 'pundits' keep focusing on the impact on phone companies and ISPs ... Far too narrow a view -- I think for example that if I was a free-tv television broadcaster I'd be somewhat more worried than anyone else right now.

One negative is that this is the same government who wants to censor the internet. That's a major negative.

Monday, 06 April 2009, 13:24

Introduction to CBE

Aren't we spoilt today, two posts in a few hours.

Just a quick mention that I've started publishing my introduction to Cell programming - based on the Mandelbrot generator I wrote last year and a few other bits and pieces.

It's on a new site Everything Cell which is a tad bare at the moment, but will hopefully tie together some cell programming resources for free software developers and hackers interested in programming on the PS3 and the CBE CPU.The first chapter is a bit unexciting but sets up some framework before I can get into the nitty gritty. It's surprising just how much work it is getting this stuff together.

PS I cleaned up the theme here too.

Tagged hacking, ps3.
Monday, 06 April 2009, 04:57

Free Software Inspiration

What inspires people to write free software? It isn't psoryisis or insufficient hygiene as some have appeared to claim.

Self Education

Self education is a significant driver of contributions to free software. There is no better way to learn about something simply to do it. Free software has been built with education in mind; all the source, the documentation, the tools, even the operating system is available to all for no cost and with few restrictions. Good quality documentation and manuals are a core part of the free software eco-system.

In addition there are other ways in which computer software itself is an ideal self-education persuit:

As a student or professional, contributing to free software can be a great way to learn about a new area or keep up with technology. It costs nothing but your time and you gain not only knowledge but may end up with a useful tool or application from your efforts in addition to the knowledge gained. It also provides a public portfolio of your work that may aid your career (it should be worth more to an employer than a paid-for certificate).

Entertainment

Writing software can be incredibly fun. Learning new things in itself is quite a fun activity, but even simple things like getting a Makefile working nicely is a little spot of joy -- at least until you move onto the next problem.

I like to compare it to a polymorphic Rubik's Cube. No matter how many times you solve one part of the puzzle there will always be more puzzles to solve. It is a never-ending journey with little victories at every stage. Like the adventures of Monkey the journey is important, not the destination.

Of all the thousands of dollars i've spent on entertainment such as movies and games, I would only have experienced a tiny percentage of enjoyment in a far smaller period of elapsed time than compared to simply writing software.

Unfortunately releasing your software efforts to the world can destroy the entertaining aspect. Once you have users you also have complaints and bug reports, and although these can be ok for a time they can quickly get out of hand. More so recently as there are increasing numbers of less-skilled users likely to be using your software.

Personal Psychology

Perhaps it is for the approval of others, or simply to assert that you exist as an individual in a modern world, or that you belong to or lead a desirable group.

I think this must be quite a factor in many peoples decision to take part in free software projects rather than keep their efforts private. For example, projects don't have ``programming teams'' and ``users'' anymore, they have developer and user ``communities''. I don't really like the term, and find it devalues the original meaning -- much like a facebook ``friend'' does.

Need

Need is the major driver for most software full-stop. So it must necessarily be a major driver for free software. Some developers simply release their code as free software as a matter of course, regardless of whether others might find it useful. Others attempt to leverage the skills and time of others to improve and maintain a project. But in either case the software was written in the first place simply because it was needed, and it's development has already been paid for.

Unfortunately, most needs-based software stays locked up in individual organisations or machines until it ages beyond repair and is replaced by more of the same.

Politics

Obviously the free software movement is a political one. It strives to produce a completely free software computing environment for all users. It is about empowering users as much as it is about empowering developers, and it intentionally blurs the line between the two. Being able to programme a computer is not a secret that is only to be shared amongst the priviliged few -- it is an activity anybody can partake in. And one everyone must be allowed to partake in should they choose to.

Although I believe strongly in this ideology, I do find it quite difficult to use it as a sole source of inspiration. I've downloaded several ``high priority projects'' from the GNU project and looked at the source, but I usually just end up with a sinking realisation that I just can't get committed to any of them.

Ego

Lets face it, you're a better programmer than most -- I know I am!

So when you're using a piece of software that sucks, you always know you can do a better job. And there's no better way to put your money where your mouth is than show it off to the world in a free software project.

Although it probably took me a while to realise it, this is really what inspired me to join the GNOME project in the first place, and is driving me in my latest interests as well. There is some very poor software out there, and thus a great deal of potential inspiration.

Tagged philosophy.
Tuesday, 31 March 2009, 09:44

Sore throat, sore fingers, sore head, sore heart.

I had a party for a friend visiting from Chicago last week. Drank way too much of course. Not bad for a school night, although I planned ahead and took the day off. Then I caught a bad cold or a mild flu off a house-mate, and got stuck with that over the whole bloody weekend.

Over that same weekend I worked on an introduction to Cell B.E. programming. Quite a lot. A series of worked examples starting from a plain C Mandelbrot generator, through various phases of SPUification and SIMDisation up to a final high performance(?) implementation. And all the trials and tribulations, discoveries and tricks along the way. I'm looking to publish a chapter a week or so to a new free software Cell hacking site that will hopefully come together soon. I wrote it using texiweb, using literate programming. Eight postable chapters plus introduction and appendices so far, and there are still plenty of ideas to explore.

And to top it off, yesterday I was cooking some meat on the BBQ, and I wanted to check the flame setting -- which tends to involve looking under the front. I didn't notice the folding chair right where my head was heading to, so I got a rather heavy bump on my forehead that seems to hurt more now than it did at the time.

After the party and flu I finally went to work today but I think I could've done with another day off. Apart from not being fully past the virus, it feels as though I'm suffering withdrawal from all the hyper-active hacking I've been doing on the couch over the last few days. Empty heart, irritable disposition, and feelings of exhaustion and despair.

Tagged biographical, hacking, ps3.
Newer Posts | Older Posts
Copyright (C) 2019 Michael Zucchi, All Rights Reserved. Powered by gcc & me!