Personal info for mikevdg

This person is currently certified at Journeyer level.

Name: Michael van der Gulik

Homepage: http://www.gulik.co.nz

Notes: DPON author.

This person is:

Recent diary entries for mikevdg:
RSS

3 Mar 2008  »

Yes, I'm still working on Namespaces. I'm heading up to a new release which will include the work I've done on Packages as well.

Some documentation, which I'll touch up a bit before the release, is available at http://gulik.pbwiki.com/Namespaces.

The Packages work has a lot of potential. I'm going to separate source code from binary code; the Package will be binary and the PackageVersion will contain the source code. Packages have a unique UUID each, and dependencies between packages use these. Combined with the fact that multiple versions of the same package can be loaded into Squeak at the same time, it should - in theory - ensure that any code will always run using exactly the same dependencies that it was orginally installed with.

After this work, I'll be looking at making a Kernel and Collections package so I can start refactoring it! I'll be making the Squeak Kernel completely namespaced. I'll remove a lot of junk out of it, and add Dominion support so that runaway processes cannot crash the image (yay!).

4 Sep 2007  »

My NamespaceTools are slowly becoming usable. You can now define a new Package, Namespace and Class from scratch using the tools, and the import list is automatically populated... well at least it is when you define your class.

I spent most of last night tracing through the compiler trying to work out where it was still looking at the SystemDictionary for literals. I almost gave up, except for when I realised that I could put a breakpoint in Namespace>>bindingOf:. Before that, I couldn't insert breakpoints because the debugger uses the compiler (Aaargh!). A few minutes later... I realised that Class>>bindingOf: invokes itself on it's superclass as well (!), which was Object (the original Object class, that is, which is still in the SystemDictionary), who would then look up variable bindings in the SystemDictionary... then I went to bed.

So tonight my task is simple: rewrite Class>>bindingOf: to *not* call superclass>>bindingOf:. That behaviour is stupid, and I can only imagine it is so that the superclass's pooled and class-pool variables can be used by subclasses.

I don't intend for these tools to be rock-solid, production-quality code. I will probably just stop work on them once they work well enough for my purposes. These tools are just so that there's an initial development environment that allows people to work with Namespaces. In the long term, I hope that somebody else will come along and replace them with something that is much better designed.

Next up once Namespaces are working: replicate the buggers! I'm quite excited to see if I can finally get DPON to do remote class loading. After that I hope to make a few demos. After that, I'll probably look at making a completely secure Namespaced image (i.e. the goal of SecureSqueak).

Oh, and there's a write-up about Namespaces here: http://gulik.pbwiki.com/Namespaces.

SecureSqueak is described here: http://gulik.pbwiki.com/SecureSqueak

26 Jul 2007  »

I'm still chugging along with Namespaces. I had a brief diversion with REPLServer (a backdoor Telnet server for Squeak) - I found a couple of bugs. It's now been released on the PackageUniverse again.

In other news, I also made a release of Namespaces in the PackageUniverse for Squeak 3.10 as well. This required newer versions of ToolBuilder and a release of the PlusTools as well. The PlusTools aren't really ready for general consumption, but neither is Namespaces. They're only there for curious people to look at.

Next up is a PackageManager tool. This gives you a list of all packages installed locally. It is intended only for developers; my great end-goal is to have package management done completely transparently to the user such that imported Objects "just work". The PackageManager shows a list of packages available. Each Package can be edited (with the NamespaceBrowser) or removed. The PackageManager is used by the NamespaceBrowser and other tools to search for particular classes and to do automatic import list management.

The PackageManager also allows somebody to import several versions of the same Package into an image. The reason behind this is that Packages depend on particular versions of other Packages. If a user installs a Package, all dependancies (i.e. particular versions of other Packages) will also be installed. In this way, code will run in exactly the same environment it was written and tested in. Again, this is also up there with the great goal of having imported Objects "just work".

6 Jun 2007 (updated 6 Jun 2007)  »

I lied about BitBlt being slow on the Jornada. Sure, it's slower than a PC, but I wrote a small demo to move a form across the screen following the mouse. It was... comparable to moving solid windows on a new PC, and probably fast enough to make an arcade game! I always thought that re-drawing a window from a display list would be faster than copying large bit maps around, but it appears to not be the case, probably because bit maps are done using primitives?

I've made a few minor changes to StandardSystemView - a one-liner will make moving and selecting windows run at bearable speeds by re-enabling caching of bits.

Anyway... onwards. I'm working on ReactiveUI on the Jornada when I'm commuting or waiting for something. This is going to be a simple UI framework specifically targetted at... 16MB ARM-based Jornadas :-). If I can make it fast and fully functional then I'll release it and start using it instead of Morphic or MVC. I've always wanted a UI that reacts to your mouse clicks before the next screen refresh!

Meanwhile, on my desktop PC at home, Namespaces are coming along nicely. I've just gotten some better conversion of the SystemDictionary categories to Namespaces working, so that pooled variables and method literals are converted. I need to write some tests for this. Next I'll be working on the tools again as I start converting (umm... pick from the list...) Collections to a Namespaced Package.

So what "Packages" would a basic Namespaced Squeak kernel need? Kernel, Collections, Compiler, and a UI... maybe Pavel's console or REPLServer.

23 May 2007  »

I got myself a new (second-hand) Jornada 820. It's a nice little machine in theory: ARM processor, 640x480 screen, 10 hours battery life, 16MB RAM.

Unfortunately, Squeak doesn't run on it that great. After some initial hiccups, I finally got Squeak to go - the two issues were (1) Find a VM that run on this machine and find an image that's under 10MB. Chuck in a 1GB CF card and I have a NZ$80 laptop! Less than half the price of the OLPC :-).

However, it's slow. BitBlt is damn slow - I can watch individual Blts in progress. I've found a GAPI (i.e. fast graphics lib) DLL for this machine, so when I get some free time at home I might have a crack at making a VM that uses that. The LCD controller is built into the ARM processor and uses the system bus for screen refreshes meaning that the processor runs slower than it could if the screen wasn't there. There's a greyscale mode which I might try playing with - not only will it make BitBlts faster, but it theoretically might make the CPU faster by using less bandwidth on the bus.

It's too slow to run Morphic, and removing Morphic makes an image under 10MB, so that was the first step. MVC is slow but usable. There's a bug in MVC on 3.9 and 3.10 where half the mouse-clicks get lost, so I used a 3.8 image and stripped it myself. There are also some spots such as opening a debugger that needs some speeding up to to make the machine more usable.

At the moment, I'm working on Namespaces on this machine. I don't think I'll be able to run the Morphic-based Namespaces browser on it, so instead I'll be porting Squeak to Namespaces at home, and probably working on a new, simpler GUI framework on this small machine. When that GUI framework works, I'll port my Namespaces development tools to that.

7 older entries...

This person has certified others as follows:

Others have certified this person as follows:

[ Certification disabled because you're not logged in. ]

[ Home | Articles | Login/Account | People | Projects ]