More sleepless nights
March 2nd, 2005Sheesh, it’s been a while since I’ve posted anything. Too much has happened to try and fill anything in, but basically work has been mega-busy. When I haven’t been working, I’ve been killing sleep time with GarageGamges Torque engine. I fancy myself a game developer wannabe, and hey it’s fun. Well, they just stole a whole lot more of my time. They recently came out with Torque 2D. It’s a simplified 2D game engine, complete with comprehensive particle emitters and physics.
Honestly for anyone who has wanted to try their hand at game development, and wanted to get started quickly, and affordably, Torque is the best deal out there. It’s not just a rendering engine. It has networking, physics, particle effects, and scripting for game logic. It lets an armchair game developer like me burn my precious sleep time on building a game instead of building a game engine so that I could eventually get around to building a game. On top of that, GarageGames has a thriving community to help me when I get stuck. They also provide a ready-made distribution channel to help me publish my game if I so choose.
All in all, it’s a pretty sweet deal. If you’ve ever found yourself wanting to try your hand at building a game, go check them out.
Happy Gaming
-Synwan
Context Aware UI
January 18th, 2005I’ve talked to a few friends about an idea that I had. I’m not very good at articulating it, so my apologies up front. So far 1 in 3 people sort of understands what I’m trying to suggest. To be honest, it’s a bit utopian, and may or may not be useful, but here goes.
I am a person who likes fluid organization. I like a bit of structure, but not a rigid structure. I find myself constantly bumping into structure all the time, and it’s somewhat aggravating. One thing that I really do despise is having to leave my environment for another just to look up a small piece of information. Here’s an example.
I come in to start the day. I open up a few consoles, and a vim session in each one. The primary session is editing the file that I actually want to work on. The other two are editing files that I’ll need to look at, header files for example, or perhaps a library reference. I constantly refer to the other two files while working on the primary file. This is good, and works well enough for me. Someone comes up and asks me about a bugzilla item. I don’t memorize each bugzilla item, so I have to leave what I’m doing, go open a browser, find the bugzilla item, go edit other source files to see what’s going on, and then answer their question. The problem is that I may have either opened up a few different windows, or taken my existing windows out of the context they are using. Let’s say that I opened a bunch of additional windows on another desktop. Now that I’ve answered their question, I don’t want to keep those windows there. However, if they come ask me again, I sure would like to get them back without having to wait for each window to open, each file to be found, etc.
Wouldn’t it be great if I could save some context along with that bugzilla item, so the next time I opened it up, I could be back to the point I was when I first did all the work?
Now before you start posting about fifteen different things that already do that, I have a question… Can I use my existing editor? Can I tie in emails, aim conversations, or whatever? If so, then yay, I’m late to the party again. If not, then do any of these solutions provide a plugin interface so I can tie in other applications?
What I’m getting at is most interfaces are tied to specific data, but they have a whole bunch of meta-data, or context to go with them. When I’m editing my primary package, I need to be able to see additional information at the same time. Whenever I’m working on that piece of code, it tends to be pretty much the same information.
It’s hard to make a concrete example of what I’m trying to think of, and all the ramifications that would result. Initially I want a bookmark for my current working environment. This would include any windows that are open, their location, their contents, etc.
Things could evolve down a road then where you could literally have an environment editor. What would this be? No idea… But what it is in my abstract little brain is something along the lines of an editor of anything. I can open up web pages, code snippets, email, shell sessions, whatever. And I can just open up different views into this meta-document. The meta-document would be the context. It would be the piece of data that associates an email with a web-page looking at bugzilla. It would be the thing that ties an aim conversation to a source file. The direct interface into this context document would be something that would have to evolve. I don’t really know what the most useful interface would be, all I know is that there is more data there than the computer is tracking now. I want the computer to be responsible for that data rather than wasting my own braincells on it.
If something like this came about, a possible evolution would be having the computer look for patterns, and perhaps suggesting environments for you. It would be nice if when someone aim’s me a question on bug #1234, and the browser automatically opens to the bug, or even better, the aim window just contains an embedded short description of the bug.
Note that there are a couple of projects that I’ve seen that are working on at least that little piece of functionality now. One is called Dashboard . It is an interesting approach, and shows some promise of being useful. However, I don’t like having yet another window open taking up real estate when 90% of the time it’s not relevant. Still, it is a very interesting project, and these guys deserve some kudos for it.
Well if you’ve gotten this far, I hope I haven’t completely lost you. If I have, then I’m sorry. Post your question, and I’ll try to clarify. If you’ve read this and said “Wow, he’s got no clue what he’s talking about!” I don’t deny it, however post your reason why. I guess it’ll be interesting to see how interfaces look in 20 years.
-Synwan
T-Mobile problems?
January 12th, 2005Slight departure from the normal postings here… I was reading securityfocus this morning and ran across this article regarding a compromise at T-Mobile. It seems that T-Mobile has had a significant breach of customer data. The worst part is that T-Mobile has yet to notify customers about this breach. I hope they know what they’re doing. I seriously doubt it though.
-Synwan
Policy Driven Development
January 7th, 2005I was reading some stuff on aspect oriented programming. I admit, I don’t know what that is. In my pursuit of trying to find out, I stumbled upon an idea.
First a bit of backstory. I use c++ for most (ok, almost all) of my work. It’s a language I’m familiar with. It’s the language that my toolkits are available in. It’s pretty much what my fingers write by default. As a user of c++ I’ve read many book on the language. One of my favorite books is Modern C++ Design by Andrei Alexandrescu (amazon). In this book he offers a generic way to drive certain behaviors of your design implementations. He uses policies, which are small classes that drive a template class. Example: If you write a generic singleton class, you may require thread safety at times, or not. Given a policy, you can control whether thread safety code is present or not. Since you use a template, there is no cost for inheritance, virtual tables, etc. The cost is born by the compiler when it resolves the template. Go read the book for a more in depth description of the why and how behind this.
So we have policies driving fundamental behavior of our classes. In Andrei’s book, he outlines many different uses of policies, however he doesn’t seem to reuse policies that often. In his classes, there’s not really that much overlap, so this lack of reuse is understandable. In a real environment though, I believe that there is quite a bit of overlap. With a bit of forethought, I believe that policy reuse could give us an entirely new level of code reuse. Entire threading models could be available just by reimplementing policies. Memory managers could also be swapped in and out. All that would be required is a new policy, and a recompile. There would be no runtime cost, yet you would get similar benefits as inheritance. Pretty utopian, and probably not realistic, but as I’ve not tried it, perhaps it is fun to think about.
Now Andrei does have a library that he created that provides the classes he describes in Modern C++ Design. It’s called the Boost library. He very well may do what I’m describing here. I honestly haven’t looked at it much. I do intend to now though.
Anyway, that’s my thought for the day. Perhaps it’s already implemented. Perhaps it’s impractical. Perhaps it’s worth trying out. We’ll see I guess.
Oh yeah, as for aspect oriented programming, you’ll have to go google that one for yourself.
-Synwan