These features are pending proof of concept implementation. Currently I’m very busy with my study and my job and Maurice is as well so you probably won’t see anything anytime soon. But to be honest, from my side it’s also laziness. But today I sat down and wanted to come up with some algorithms.
HAI! / Language
Hello World! I’m Maurice, I’m new to .simplicity, nice to meet you, etc.
Language
I’ve been experimenting with some fun stuff lately, it involves language, programming, password-dictionaries, spell checkers, and more
.
STF Utility (updated!)
The SSS STF (a cool new format for storing data with multiple levels but still > XML, more info here) parser is almost finished. I’m trying to simplify it up as we speak. C++ Templates sure can be frustrating! “/me twitches with his eyes.”
So the parser was working, but it didn’t utilize C++ all the way. I’m trying to reduce the code and thus ease further development and maintainability.
Some hours later…
It is finished! As far as I can tell anyway. It has a nice example app with it, here’s a (now already dated) sneak peek:
prettyprint("Welcome to the SSS example app");
cout
< < "This application shows how easy it is to use SSS.\n"
<< "STF is a \"new\" way to store leveled data, just as XML can do, for example.\n"
<< "The format looks like a C(++) struct, which we think is easier to read than XML.\n"
<< "Each :{ is a node, a node has other nodes and values. The first node is unnamed.\n"
<< endl;
So what are you waiting for? Grab the source with example app from the SourceForge page (either checkout from the SVN or select “Browse SVN” -> “Download GNU tarball” (all the way down) ), and use this neat alternative to XML! More information after the break.
Component Oriented Entities – Updated (and some more…)
The code I posted in the article Component Oriented Entities has been updated. The code in that article contained some documentation mistakes. Thanks to Nick these mistakes have been corrected. Besides that I’ve also added some new methods (Entity::remove*) which were somehow forgotten in the first implementation. And of course the code has also been slightly improved. Unfortunately the Event Management part of the implementation still hasn’t been included. Still I would like to encourage people who are using the code or parts of it to update their own code.
Also, a sneak peek on what I’m currently working on.
SSS > XML
Title says it all.
Maurice and I were thinking of how to circumvent XML one more time, and Maurice came up with this format:
ideayaybox:{
author:"nick overdijk"
author:"maurice bos"
description:
"blabla
blabla"
link:{
file: "blah"
tag: "something"
tag:"something"
}
}
So, basically we have 2 types, values and lists (which can be seen as values). Values are between quotation marks, if you want a quotation mark inside a value, you need double quotation marks! A list starts with ‘{‘, and ends with ‘}’.
In the above example, ideayaybox consists of 2 authors, 1 description, and a list of links. Simple enough right?
Simple String Structures, taking over the world!
Component Oriented Entities
Recently I started working at a game framework. The idea is to create a reusable framework that can be used across multiple platforms and libraries (I.e. Irrlicht, OGRE, SDL). Myself, I already have some experience with game programming (Entwined Worlds). However, all my previous game implementations were based upon the traditional deep hierarchy approach. At first sight this seems like a good idea, but I noticed that this approach always leads to very specialized entities. The true problem with this is that those entities often share various functionalities. And in order to prevent rewriting the same code over and over again, these functionalities are often put in a derived class from the base entity class. And the specialized entities then inherit from that class. The problem should become clear now: for every set of shared functionalities the programmer has to inherit from the base class (or maybe even an derived class). This can result in a gigantic unmaintainable tree of entities. Luckily, there is another approach called Component Oriented Entities.
The idea behind Component Oriented Entities is to make entities data-driven. In order to do this the functionalities are split in various individual components. As a result an entity is in fact nothing more than a collection of components. An added advantage is the ability to describe these components (and thus the entities) in XML or a similar mark-up language.
Yesterday I actually had a discussion with Nick about Component Oriented Entities. Initially he disagreed with me as I had some trouble explaining the “dangers” of the blob anti-pattern (a huge single class with a large amount of complex functionality). Later on, he agreed with me, but he also pointed out some things to keep in mind. One of those things was the implementation. And I really agree with that as these kind of things stand or fall based upon the implementation. Which brings me to my own implementation of Component Oriented Entities. Please note that all of the following code has been placed in the public domain and that I’ll take no responsibility or liability of any kind for any use that you may make of this code.
Idea Designer: Pt. 2 Example Usage
Fast File Finder – Ideayay Example Usage
User wants to create a local file search program.
User already has worked out a GUI in a file.
User creates idea: “Fast File Finder”
Ideayay creates a folder “Fast File Finder” and sets its status to “Just started”
User creates question: “What GUI?” and links earlier mentioned file to this as answer.
Ideayay asks if that completely answers the question, user says yes, Ideayay marks this question as answered.
User creates the problem: “How to index all files on a PC?”.
Then goes on the internet to look it up and stores some links as attachments to that problem.
Then writes code using the attachments and links that (the sourcecode file) as solution for the problem.
Ideayay asks if that completely solves the problem, user says yes, Ideayay marks this problem solved.
User creates the problem: “How to quickly search through strings?”.
He posts the problem to a forum and links the URL as attachment to the problem.
The solution is found on the forum and he copies the text containing the solution as “Solution” to the problem.
Ideayay creates a file: problemname.answer.txt and metadata.
Ideayay asks if that completely solves the problem, user says yes, Ideayay marks this problem solved.
User links final source files to the idea itself and marks the idea finished.
Where is the horizontal rule when you need it?jaskldfjlkasjflkajsfkljaslkjflajslfjalsjfjaslkfjalksjfsal
That’ll do. The program’s name is. Ideayay. It was the worst name I could think of that’d surely piss off my partner. I was not wrong. Hehe.
We are going FAST with this one. Our SVN server definitely has an headache trying to keep up with the commits and updates and merges.
Idea Designer
I wondered if there was any software for working out ideas. I couldn’t find any, so I decided to try and create my own. The software will act as an idea dump. Say I have this idea, but don’t have the time to work it out. I used to have a small document with the name and a small description, but when I found something related to that idea say, on the internet, I could only paste the link inside that file and later on I’d forget about it anyway. I want one central place for all my ideas! And it’s coming pretty soon.
Less ideas in the mind makes room for more new ideas! Woeii.
You’ll the the software draft up here in a few days.
-Nick
SXML Parser
Oi, it’s done I guess. Beta phase though, but it seems to work rather well! This code parses the “SXML” of the post right before this one.
It’s tested with this file:
<window 100 456 789 120 windone SimpleXML>
<button 101 258 369 123 buttone Ok 1337/>
<button 102 258 369 123 buttwo Cancel 1338/>
</>
<window 103 456 789 120 windtwo SimpleXML1>
<window 104 456 789 120 windthree SimpleXML2>
<button 105 258 369 123 buttwo yes 1339/>
<button 106 258 369 123 buttwo nay 1340/>
</>
<button 106 258 369 123 buttwo nay 1340/>
</>
