laststep
Grids. Virtual desktops come to laststep.
Dec 9th
In the last few days I have begun working on a solution for virtual desktops in my one-man-OS-project laststep. Tonight I have finished implementing important milestones for this feature.
Implementing this required extending the existing window class, it also required for both to be able to communicate with each other, the Desktop and Grids. It doesn’t do much other than displaying previews of open windows on its corresponding desktop, but that’s a start. The desktop the mouse hovers over is highlighted and slightly brighter than the others.
It is however possible to assign an application to a certain desktop. Right now this works with a cryptic command – but hey, the Settings tool comes eventually
What also works right now is movement between desktops. You open the overview, click on a desktop, you are taken there.
Ultimately I want to implement the functionality to drag windows from one Grid to another. This is the next challenge.
This service is fully integrated into the user interface and is completely automatic. You will be able to choose whether to use it or not.
Also, you can choose between 4, 9, and 16 desktops (2×2, 3×3, 4×4 grids).

Doesn’t look like much, but it can display open windows of each desktop, and lets you travel between desktops. Moving windows between them per drag and drop is coming.
Not very pretty yet, but hey – it’s just development.
Veni, Vidi, Codi.
P.S.: I designed the icon =)
Illuminous. See the light.
Dec 5th
That is what I call the graphical compositing engine that I put into laststep, my little one-man-OS-project. After another incredible odyssey into code and how to make things happen, I finally managed to put together a mechanism for compositing that’s really fast, and looks nice.
The active window (of which there should only be one at any one time) has a visibility of 95%, so only very little transparency. Inactive windows have a 75% visibility.
I did this for the idea that the window (or program) you are working with right now is the prominent one, where as the others sort of step back, and wait to become active again.
Interestingly, ImageMagick cannot take screenshots of windows which had their translucency property changed (meaning of course ImageMagick can take screenshots, but the translucency does not show in the resulting image?), so I had to use my mobile camera… Damn. Anyways, this is how it looks now:

Illuminous renders active windows at 95% visibility, where as inactive windows are 75% visible
Wrote a little compositing engine in GNUstep!
Nov 26th
So like I said in the post before, I got a bit tired of playing EVE and have come back to my project with a clear head and fresh new ideas. One idea I had, and its realization, was the implementation of a compositing mechanism which would allow for translucent windows and more overall slickness.
Today I worked on it, and I quickly wanted to share the result here. Compared to earlier designs of the UI for the project, this is probably the slickest approach yet and starts to look pretty awesome, yet serious. At least I’d like to think so.
Such an implementation does currently not exist in the current GNUstep frameworks (Cocoa on the Mac however has one, but it is different and requires certain hardware).
Have a look! =) First implementation of the lastCompositor, or the easier recognizable name Illuminous.

A bit like Aero, but you don’t have to buy expensive graphic cards for it
Code hard, code true
Nov 26th
I haven’t reported on my project in a while, so I gonna give you a quick update on where it’s at. I took sort of a longer break from writing code for the project, after 4 months straight coding every day, my head was sort of burned out.
However I now have new ideas that I want to implement in the codebase, and I think it’s gonna get interesting now, having developed new UI elements for the desktop.
Right now I’m trying to figure out how I can implement compositing features for window title bars and borders, while GNUstep itself does not offer hardware-accelerated drawing of visuals. I have an idea… but I need to test it.
I’ll keep you posted.
Quick follow up to the LSTable element
Aug 14th
In file browsing what do you want? Icons. This is why I extended my element to display the right type of icon beside the entry of the list.
The table element now has a special column on the left. This column is fixed in width and does not participate in resizing operations.
If you require this icon column, you just post a message that it is required – and column index 0 will be used for it.
[myTable setHasIconColumn: YES];
That’s all you have to do. I won’t go into much details now, but… how cool is that? Maybe the GNUstep engineers want to know how it is done =D
How do you copy-protect your software?
Aug 13th
By now you probably know that I’m working on my own OS, named laststep. Thing is that I have already invested almost 2 years of time and thought, and coding, into this project… So understandably, I kinda want to protect my work.
This means that once the software goes on sale, I’ll implement a few measures to ensure that the software cannot be copied just like that. There are a few ways to do this… Obviously the best way to go is to do this on hardware level.
Which is why I have ordered a Software Developer Kit of the UniKey, a driverless USB dongle that enables developers to effectively tie software to hardware. In other words: without this piece of hardware, the software cannot and will not run.
This thing looks a bit like this:
The SDK of this Pro key is free. I can confirm that, ’cause I ordered it from their site and it said it was free. Got the package, no invoice. Fair enough then =D
Don’t get me wrong. I am full for open source. But I also wish to protect my work… I hope you can understand that.
laststep’s latest element: LSTable
Aug 12th
I am telling you. For quite a while now I was trying to basically build a view that displays files in a list and can sort them by criteria. Like type, name, size… etc. My first attempt failed, miserably.
Then I learned that within the Cocoa framework, there is an element named NSTableView. What this does is basically displaying large amounts of data in tabular form (note: the maximum of elements displayable with an NSTableView is somewhere around 2 million, it’s a mathematical limitation).
So I thought I just grab it and customize it… And let me tell you. Compared to the rest of the entire Cocoa and GNUstep documentation, information on this one element was pretty sparse. I was on my own… after all.
Well. I finally managed to produce some results.
I usually refrain from posting screens of my project, because I really want to keep things to myself right now. However I think after quite a ride of six weeks of coding, I should post one.
LSTable with a column highlighted.
I know I know… nothing special.
But why do I post this?
Well, the original implementation in GNUstep of NSTableView DOES NOT have alternating row colors, although the method exists to set it. It took me 2 days to hack this into the table view, so that it renders alternating row colors correctly.
Yeah, I like the iTunes alternating row colors…
What the original implementation also does not allow you to do, is changing or customizing the column buttons on the top. Also, I made them customizable.
The rest is basically specific to the source of the data – like what kind of file we have and so on.
The table sizes as the window sizes… if you want a dynamic table sizing that is.
Man, my head is wrecked.
That’s all I want to show you right now.
A short update on laststep
Aug 4th
I’m still working on it… still in the process of implementing file management features, mostly graphical elements that allow for handling of files. Like list them in list view or icon view, etc.
It is gonna take a bit more time on that front as I thought it’d take… experimenting around with NSTableView – which I find very very difficult to handle. Anyways… The thing is still progressing and has not come to a halt.
laststep Shirt is been made now
Jul 6th
So since I did a Madlax shirt, I went to the same guys to have a shirt made for my project. It has two images.
LSShirt *completedTShirt = [[LSShirt alloc] initWithFrontImage: [attachment1] withBackImage: [attachment2]];
[completedTShirt setArriveDate: @"Thursday"];
return completedTShirt;
Project laststep – where it’s at
Jul 1st
In the last few weeks I have been working pretty hard on my project, which eventually is meant to become a FreeBSD based operating system, with all likelihood commercial in nature.
Recently the entire code base has crossed the 5,000 line mark, and it’s all working out nicely.
I can tell you that I have developed features that currently are not to be found in all modern operating systems, like Windows, Mac OS X or desktops on Linux (KDE, GNOME, etc).
I cannot tell you the specifics about it or post screenshots because I want to keep these features a little closer to my vest in the moment.
Rest assured that it is progressing nicely and I am now in the area of implementing file management features.
For now, you can have a look at the placeholder page I have put up at the domain for the project, laststep.eu.
For the technical people out there:
laststep is built upon a FreeBSD 7 core, which then has the GNUstep libraries and frameworks – upon which my code is built on. Some of the features use GNUstep quite extensively, while others built upon my own frameworks (which then in turn use GNUstep).
GNUstep is a cross-platform, object-oriented framework for desktop application development. Based on the Cocoa API (Formerly OpenStep) originally created by NeXT (now Apple), GNUstep enables developers to rapidly build sophisticated software by employing a large library of reusable software components. GNUstep is used in production environments at several organizations.




