Tuesday, November 29, 2005

Old Source Code

You know what... just for kicks! Here is the old source code of version 0.1 and 0.2 that I made 3 years ago. The first versions of Screens that proved to me that it works, It was coded in Falch.net and not been touched for 3 years. I backed it up about a few months ago from my parent's computer. http://www.geocities.com/zhamilton1/Screens1.zip http://www.geocities.com/zhamilton1/Screens2.zip Enjoy! Technical stuff about v2: They work on the idea that they hold a fixed array of windows, controls and items that the API functions deal with automaticly. You can actually include the screensapi.cpp and screensapi.hpp into your project, call the functions in screensapi.hpp and it should work :D Remember to call InitAPI() before any other API function. You can modify the limits in the hpp file but beware that the limits depend on your stack size. It currently allows up to 20 windows, 100 controls and 100 items.

Monday, November 28, 2005

Welcome + Update

Hi, Prepare yourself... alot of just text... So you have arrived to this blog of text and wondering what all this jumbo mumbo is about, you have arrived to the right entry. Hi, My name is Zakai Hamilton... This project started out officially on 8 September 2002 (Yes... I started writing notes on my palm then for the project). Q: So what is Screens Environment? A: Good Question. PalmOS - Yes... the OS (not the hardware) does feel a little old in the last few years right? Feel a bit abandoned? We were promised Cobalt just to find it trashed with some future linux version which we are a bit afraid of. But what about existing devices? If you have spent over 400$ on a LifeDrive device, you want to know that your device is going to last for quite a few years. So, the Screens Environment project is designed to bring the magic back to the OS. How? By enhancing it with a nice thick layer of icing. Think of PalmOS... Its very low level, its API is low level costantly using your pointers logic and even its user interface is low level. Very bare, simple and small. It reminds me alot of DOS... a very relatively simple thing which realy got better with the applications built on top of it. Then came windows and the rest is history. I think history is repeating itself with mobile platforms. You have the bare PalmOS which is cool and edgy at the beggining but looses its edge as time goes by. So to keep it alive but still be compatible, you have two options: Emulation and 'Shutdown to DOS'. I decided to choose the second option to be compatible with PalmOS applications. So Screens Environment is like Windows 3.1? Yes... Its an operating system on top of an operating system. So what does Screens Environment offer? 1. Cooperative Multi-tasking - Just like Windows 3.1 you will able to run multiple applications at the same time and switch between them easily. 2. Window Management - You will able to move, resize, size and so on just like Windows but on your Palm. Sounds flaky? It isn't. Its not the default. The default is maximized windows, so think of window management as an extra, not a forced default. 3. Managed information - Hate that Contacts and Calander dont cooperate very well? Screens Environment has a center object store that not only can store information but can manage external information as well. You will able to make relationships between information from different data sets so changing one automaticly changes the other. This is the highlight of Screens Environment and I feel is a key to its success. These I guess are the main three key points in Screens Environment with the third one being the main key point. Managing Information is why most users have a PalmOS device in the first place and Screens Environment is designed to take that a step further. Q & A: Q: Why is Screens Environment taking so long? A: This project has grown just as I have. I am married and work at a full time job which leaves me very little time for the project but my passion for it keeps me going (plus the comments and notes I get from you users here and there). Q: How much will Screens Environment cost? A: Nothing... Its open source... Free of charge... No money required... I respect users, not credit cards. Q: How open source? A: As much as it goes. I dont care if you take every line of code, repackage it as your own and sell it. If that's what you think will bring you success, its fine by me. Really... Consider it your own personal idea. That's what Screens Environment is... a bunch of ideas merged together. So its not GPL, LGPL or anything like that. Its Free as is as Free as it gets. Q: Wheres the catch? A: Uh... There is always a catch... but why I should I tell you that ;) Q: If Screens Environment is an OS, how much will the API cost? A: Nothing just as the operating system environment will = 0$ Q: Is this like Open source where you get money by support? A: No, Support is free... email me at zhamilton1@yahoo.co.uk at any time for any help. I constantly help PalmOS developers with thier bits and pieces. Q: So what's the catch then? A: You'll just have to wait and see ;) Q: What is Screens Environment requirements? A: A Palm III and up Q: Memory requirements? A: About 256K for minimum I think Q: Will it support HiRes and HiRes+ A: Yes... I personaly have a Tugsten E so it will mostly be driven for HiRes at the beggining with HiRes+ towards the 1.0 release. Q: Where are the diagrams? A: Well... there isn't much to show at the moment... I think diagrams will be more helpfull when the project is more 'alive' on my display. OK... Thats it folks... Now the update: The plan code named "Saturn" is designed to be the first release of Screens Environment. It does have the object storage but uses it more for data store and less for API calls. While this means less flexability, it gives the ability to release Screens sooner which I think is important. Technical Whoo...hooo... follows: The major stop part at the moment is the KernelObject component. The good news is that its not far away from being coded in that there is 4 functions left before it which hopefully I should finish by the end of the week to work on getting this object storage working. I must admit that my knowledge from NDS has had a positive effect on this object storage. I actually have a working version of it working on windows CE but its NDS property and coded in C++. Screens Environment is coded in C, so it uses its own object storage implementation but the ideas and design share quite alot. I finished coding the previous components: KernelMemory, KernelArray, KernelMap, KernelCollection have been coded with KernelItem left before KernelObject. Thier names are quite straightforward. KernelMemory deals with memory allocations, KernelArray handles a memory allocation split into fixed size elements. KernelMap extends that by allowing each element to have an identifier, KernelCollection is a two dimensional array where columns have identifiers while rows are by index and finally KernelItem is a hierarchy of memory allocations. All these together are used in KernelObject to form the hierarchy and organization of objects including relationships between objects. Just to give you a quick glipse on the code, here is the header file of the kernel which I have written up to and including KernelObject. http://www.geocities.com/zhamilton1/Kernel.zip I will give out the source code of up to the KernelObject once I finish writing it. But enjoy the header file untill then. Basicly I will publish the source code for every component I finish. Note that the source code has not been checked that its correct untill I can get the drawing functions to work, so dont tell me how the code is illegal (although I have spent alot of time on writing good code without a debugger). Also note that this is my own code, so feel free to accuse me of copying ;) I know this is a lot of technical stuff, but that's all exists at the moment. It will get much more interesting once I get to the layering component which follows shortly. Thanks again for your comments, they keep this project alive, Zakai Hamilton

Saturday, November 26, 2005

Choose your subject:

Hi Guys, Since Screens Environment is not going to be released any time soon unless some miracle happens and I get loads of coding time, I decided that at least my knoledge shouldn't go to waste. Screens Environment is a collection of ideas which I am trying to implement myself, but the ideas work. This is one of the reasons Screens Environment is going open-source. I dont mind if any one ripped of my ideas even without telling me (although it would be nice to tell me). Because My ideas are ideas of others merged in specific ways. So... To make this blog a bit more interesting... post in the comments some of the parts of Screens Environment you want to know... like either technical details to the bone or maybe something more abstract... like the slider... from the object storage to the UI handling to multi-threading, if you wanted to know some information about how these things are done... post me a comment on some subject you would like to know about... anything ;) I figured out how to use the blogger picture feature, so I will try to show some pictures if they help (like maybe some diagrams or quick mockups). Enjoy and waiting for subjects, Zakai Hamilton P.S. http://tamspalm.tamoggemon.com/ - Thanks Brad for the link ;)

Friday, November 25, 2005

Where is Screens History?

Here you go, A list of links to how real Screens was at least before I went deep into details only ;) These are hosted on my old web-site so remember to do Save As... Old Demos: http://www.geocities.com/zhamilton1/ScreensOS.zip

When I mean old, I mean realy old around 2002. I made them at the beggining and figured out that I wanted to go full fledged and go the way of a kernel creation which I didn't know means that I'll be late for more than 3 years for a release.

Old Screenshots collection: http://www.geocities.com/zhamilton1/MyPictures.zip

I made alot of mockups as time goes by creating new designs, changing colors adding ideas and so on. The current design has no screenshot but has a combination of a widget bar at the bottom (like this: http://www.geocities.com/zhamilton1/SL-5-15a-6.gif ) with the popup 'slider' design (like this: http://www.geocities.com/zhamilton1/SL-4-5c.bmp ). The colors are more like this: http://www.geocities.com/zhamilton1/Objects.jpg

Hopefully this should show some of you where Screens has been through and a bit of where it will go. I have quite a few good UI ideas fitted in those screenshots here and there. I played around with colors constantly... it went from blue to purple to green to white. Enjoy!

Thursday, November 24, 2005

Thinking about things

You know... I have been thinking alot about what is Screens Environment's main point and my conclusion is actually the object store. Think about it... There have been and will be releases of applications that provide frameworks or launching/file manager capabilites but there still has been no application that allows you to sort & manage all your information from a single location. This includes files, appointments, databases, contacts, memos, pictures, preferences and any custom information by 3rd party plug-ins. Think about it for a second what I am trying to accomplish... One location where you will be able to view and edit your information from a single location and make references from one data to another easily. This is a hard task which requires answering of many questions and I think that so far... I have solved a great amount of them. Screens is going to be spatial browser so every item in your collection has a window with a position, size, color and so on. This experience on a small screen might sound not very usefull which is why all windows are full-screen BUT give you the ability to move them around if you want to. Yes... Its a hard thing to do and I have been going round in circles for the last 3 years refining the design again and again... but its needed to do this right. I only have one chance to do this right... so why not take my time. It could be that many of you are angry or frustrated for this vaporware while others might have some faith in me but IF I do get this project done... It will realy make a difference I feel in the PalmOS world. Well... I guess we will just have to wait...

Update - Changes

OK, The good news is that I got a full time job position at NDS. I have been working very hard for this and while Screens Environment has lost some speed because of it, I need NDS as a financial stone to give me freedom to work on Screens without worry about my financial state. I will find some more time this coming week to code the kernel components again and get this object storage yet again hopefully done and working. About the screenshots... I just dont know where to start... All the screenshots I made untill now were done pixel by pixel in MS Paint. I just have no idea where to start with my screenshot mockups. I guess you'll all just have to wait or forget about this project ... I'm sorry.

Tuesday, November 22, 2005

Update - Made a pre-design of the sub components

I have renamed the kernel components to the Kernel prefix instead of the Core prefix keeping the Core prefix for the API. Here is my current list of to-do components untill I get to the object component: KernelMemory - Handles memory allocations and has the platform hooks KernelArray - Manages an array of fixed size elements KernelMap - Manages an array of fixed size elements with a key identifer KernelCollection - Manages a two depth array of a combination of a Map and an Array KernelTree - Manages a hierarchy of fixed size data with a callback to handle dynamic stuff like constructors and deconstructors. KernelObject - The object component which uses all the above components. Well see how it goes...

Monday, November 21, 2005


OK, Didn't get to do much coding today but I found out why Screens Environment has constantly got stuck on the object storage. It wasn't because of the object storage design that evolved continuously but rather the way I designed the code. I was trying to build a user/programmer experience without any experience before it. I think thats why most developers get stuck in bootloader progress. Its because you are trying to build something on nothing which unless you are god, is plainly impossible. I was coding lets say CoreObjectNew and driving myself nuts on why I couldn't get the code logic to work. It just mounted into lines of code with a spageti and repetative feel. This is why NDS applications work out and Screens doesnt! For NDS I am building application on top of an existing API. Here I am trying to build an API on top of another API. The problem? The API I am trying to build is too high-level on top of the other API. That is PalmOS API is too low level for my own API. So I will need to stop trying to abstract too much and actually add some 'conversion' components between the low API and my high API. I cannot build the object storage on a low API which is why it just wasn't working untill now. Problem: I was trying to make a programmer experience with nothing inbetween. Doesn't work that way... Solution: Make some components to build up to the object storage instead of the object storage being the third component in the kernel. The object storage does alot of things and if I want that code to be small and neat, I'll need to create my own low level experience just for the kernel. The kernel needs a programming interface of its own, not an application programming interface. Well see how things go... but it does explain all these times I re-wrote when I got to the middle of the object storage... everytime!


Hi Guys, A took a day off my NDS job to stay home and code... code... code... And boy... its tough... I am still stuck on this #?!% Object Storage. Why you might ask? Why is this object storage killing me? Because its new and not done by any other system for mobile devices for sure. One of the key things the object storage does is stop bad pointers. Which means that if you destroy an object, it makes sure that all locations that point to the object now know that the object is destroyed instead of keeping the destroyed pointer address. This is done by having a middle-man handle between the instances and the object itself. Basicly... Its still tough and its driving me nuts that its so hard for me. NDS has been a life-saver for my ego allowing me to know that I do know how to code, so I guess it's because Screens Environment is just a tough project. I feel kinda isolated here... while I get a comment once a month on my blog... I feel in the dessert. Everyone has lost interest and signed my project as vapor-ware. All my MSN Users I dont even bother to contact anymore because it feels like no one has time for me since I just go through the same redesign-recode stage that feels like it never stops. Its funny looking back... Screens Environment is a much larger project than it was 3 years ago but still I am the only one working on it. Users come and go and now... they are all gone. About my only inspiration left is my wife and Zane (EDGE). Zane, if you are reading my blog... Thanks!

Thursday, November 17, 2005


Hi Guys, Not only is my PalmOS knowledge expanding but my PocketPC knowledge is now getting realy good. Just learnt about DIB Sections which is a device independent bitmap (DIB) that an application can write to directly... going to check this out next week for some drawing effects since GDI just wont cut it I guess. While I am currently coding Screens Environment for PalmOS, I am coding my NDS stuff for Windows Mobile. This means I get double exposure and learn new ways of doing things for both platforms. So things are still tagging along... About the screenshots, I hope to find time next week since I had none when I got home this week - too tired to move out of my snuggish bead I guess ;) Have a nice weekend, Zakai Hamilton

Tuesday, November 15, 2005


Thanks to Zane, I was able to finish my first EDGE experience. This is the best game ever :D Yesterday I went to do a IQ test to become a full time employee at NDS... Hopefully I have passed. On Screens Environment issues: I spent some more time on this object storage and hopefully this build should be better than previous versions. I am going to test it more thoroughly in the coming days. About the mockups... I know I haven't updated them in quite some time... so I'll spend some time this week to create you an updated mockup of what I expect Screens Environment to look like in some way or another. So stay tuned...

Friday, November 04, 2005


OK... I got to admit... EDGE (Extreme Dungeon Game Experience which I think it stands for Extreme Damn Great Experience) is realy taking up my time. I must release myself from the game to get some more coding done. You'd think that because I bought a Palm game, I wouldn't be playing it while sitting next to my desktop computer... go figure ;) Anyone who hasn't checked it out: CHECK IT OUT! www.zanegames.com For only 24.95$, its well worth it! My personal only pick! OK... enough for advertisements... Screens Environment is moving a bit slow in the last month from working extra at NDS. However my experience at NDS has been only great for Screens. I have polished my programming and learnt how to finally fix myself on ideas without constantly changing. I am now coding this week v2 of the MobileEPG UI which will only be great news when I use these ideas for Screens Environment such as alignment to any layer dynamically (realy eases those window sizing since controls can be aligned to any other window/control position in multiple ways). I believe that Screens Environment will be hitting the year 2006 because of NDS. They have realy made me able to test out my ideas without implementing the whole thing at once. I have tested my Layering engine skills and Object storage skills. Expect Screens Environment to be a real kicker - 2006! Expect some more work done this month than ever and more posts... I am asigning November as the month of work. So you might even see some graphics at the end of the month but thats realy teasing myself. Remember that Screens Environment is free and will be released open source. Requirments: Palm III and up Yes... low requirements but will support all the latest HiRes+ displays. The idea is that Screens Environment has very low dependencies to work but has a driver model to take advantage of all newer capabilities.