Newer Posts Older Posts

Cleanup Yerr Code

2012-09-04

 

I have been given a body of code that is old. The copyright notice says 1995 and the project name is something that was never released under that name. Knowing the developers here, probably some of the code base was copied from previous projects, but I can't check since the code was imported into Clear Case around 2000. The code is an amalgam for all the coding paradigms from that time to now. It starts with classic Win32 / C code, then people started to use MFC, they learned that you can also use object in your code what resulted in C with object and lately someone started to "apply" patterns. But that is not the biggest problem that I have with the code, it is code that looks like this:

  char                  returnedString[255];
F_ConsistencyCheck*              fkt_F_ConsistencyCheck    = NULL;
  F_ConsistencyCheck_V60*   fkt_F_ConsistencyCheck_V60 = NULL;

        if (transactionId == TA_BASE)
        {
            om_ret = rom_IsSclInstalled();
        }
        else
        {
            om_ret = rom_IsSclInstalled_V701(transactionId);
        }
if (om_ret != OM_OK)
{
  delete pEsFile;
  pEsFile = NULL;

  sclError->write(MOD_MAIN | 0x01, 0);
}        
DWORD numberOfObjects;
result = gen_ObjectsCount(
                            cpuId,           // (IN)  Database-Id.
                            ENTIRE,          // (IN)  Generation Type
                            numberOfObjects, // (OUT) Number of Objects
                            transactionId    // (IN)  Transaction ID
                           );
switch (gl_ErrorIdGet(result))
{
  case OK:  break;
  default:  glError->write(MOD_MAIN | 0x02, result);
            break;
}

I am seriously offended by this code! Show me pictures of people torn to pieces and I will go "meh", but this code, I get foam around my mouth...

read more

No Lock Down for Nukes

2012-08-28

 

I recently have seen a very good presentation by Cory Doctorow, The Coming Civil War over General Purpose Computing. It is worth reading / watching for many reasons. In this presentation he mentions that it may make sense to look down hardware used at nuclear power plants with a TPM. That is only allowing the computers to run software signed by the Nuclear Regulatory Commission.

Actually I think this is a totally bad idea, and for totally different reasons that Cory Doctorow. At first it sounds like a good idea. Anyway, every line of code that runs in a nuclear power plant in the US must be approved by the NRC. This is true for most other countries, some regulatory body needs to approve what runs in nuclear power plants; actually in most industrial installations. Basically, I think this is a good idea and I want the TÜV to crack down on bad code at the nuclear power plant 30 km away and the oil refinery down a few blocks from my work.

read more

Solid Shelved - For Now

2012-08-09

 

These last two weeks had it's ups and downs. I learned a lot about my engine design, what I was doing wrong and what I was doing right. But I also learned that I am somewhat in an impasse. My current design hit a snag when I tried to integrate a console and scripting. Engine wise these two weeks where a loss, but that is not the biggest issue.

The elephant in the room is currently the total lack of artistic and narrative cohesion. Although this is not so clear from the development snapshots, I am meandering around concepts and styles from Tron Legacy over Portal to Myst IV's Spire.

The problem is not that I have good ideas, it is how do I implement them with the minimal alloted time budget?

As a result I decided to stop actively developing solid for now.

It is not fully over though. I will certainly let the ideas breed some more in my mind, with all the 25 other ideas I have. I will continue to work on engine technology, maybe with a wider focus to integrate more proven frameworks. I might even find an engine, that I think is worthwhile. The landscape has changed since last I looked properly...

read more

Solid InDev6

2012-07-22

 

This development has a rather tragic story. To illustrate that tragedy, coming close to a classic Greek tragedy, I wrote a short screen play for you.

Somewhere in my dark schizophrenic mind, my different personae meet. Think of a boring meeting room.

Monday, 9th of July: Iteration Kickoff Meeting

rioki(Manager):     OK team, this iteration we will focus on the 
                    editor. Let's make the editor ready for prime 
                    time.

rioki(Artist):      Nice. The current state of affairs is just 
                    frustrating, my pristine art will not touch 
                    abomination.

rioki(Programmer):  Whatever! 

                    There are some minor issues I want to have 
                    resolved. 

rioki(Designer);    I have been thinking, how about we make the 
                    primary level geometry voxels. Just like 
                    Minecraft. It will be really easy to edit 
                    and all.

rioki(Programmer):  We have been over this! The current 
                    implementation is good enough. We want to
                    take the same approach like Overgrowth.
                    You know, use modular set pieces and arrange 
                    and combine them.

rioki(Artist):      Thanks for the extra work.

rioki(SoundArtist): Until you guys haven't implemented sound I 
                    will not even start.

rioki(Manager):     We know that.

                    OK team let's get this show on the road.


Wednesday, 18th of July: At the coffee machine.

rioki(Manager):     So guys, how are we doing?

Artist, Designer and Programmer look away.

rioki(Manager):     Guys, so how are we doing?

rioki(Programmer):  I was trying things out, like on my hobby 
                    project. Did you know that it is really easy 
                    to build web applications with flask?

rioki(Artist):      I did, ... um ... research ... um ... I did 
                    research into ... um ... Shogun 2, you know 
                    Steam Summer Sale and all.

rioki(Designer):    I still think we need voxels. I have been 
                    thinking about how the editor can integrate 
                    voxels.

rioki(SoundArtist): No sound system, nuf said.

rioki(Manager):     Gyaaa!!! What you did no progress at all?! 
                    OK what was the problem?!

rioki(Designer):    The game is not fun! It is totally not 
                    playable!

rioki(Programmer):  Yea the movement system it still buggy and 
                    the "gravity gun" is still not implemented.

rioki(Manager):     OK. Focus on making the game playable. So 
                    that we have some progress.

You can try out the latest build for Windows: Solid-InDev6.exe

read more

Solid InDev5

2012-07-08

 

For this development snapshot of Solid I concentrated on improving the code and solved many small problems. As a result not so much changed vsibly.

This snapshot contains:

Jeff Atwood argues in Can Your Team Pass The Elevator Test? that you should design the box of your product as a vission statement.

Design-the-Box is a fantastic way to formulate a vision statement. It's 
based on a concrete, real world concept that most people can easily 
wrap their heads around. Forget those pie-in-the-sky vision quests: 
what would our (hypothetical) product box look like?   

So while I did not yet design the back side, but I am working on it, I took the time to whip up the from of the box:

You can try out the latest build for Windows: Solid-InDev5.exe

read more

Solid InDev4

2012-06-23

 

Here is the biweekly release of the development snapshot of the game Solid.

This snapshot contains:

You can try out the latest build for Windows: Solid-InDev4.exe

read more

Dear Firefox,

2012-06-13

 

it has been a very long time that we where together. I remember the 2.0 times where we tried to show the world the evils of Internet Explorer. Those where great times. Times of innovation, times times of pleasure and times of freedom.

But recently you started to get on my nerves. First you started to focus on superficialities, like the themes instead, of innovating the experience. You started to get slower and slower. I know that measurements told you where getting faster, but it did not feel that way. You can't blame me, I has only 3 plugins installed, Ad-Block Plus, Better Privacy and HTTPS-Everywhere. But even without these you did not perform well and even starting with a fresh profile did not help. Especially lately in the last two or three versions you kept freezing up. You would start to load a page and suddenly the entire application froze for a second or two. I know that it takes a while to load a page, but you should not prevent me to use other tabs.

This is un acceptable, I can't go on like this. I still believe in free software and I still believe in a browser by the people for the people. But until you get your act together, we can't be together anymore.

Sincerely,

Rioki

read more

Solid InDev3

2012-06-10

 

Yet a timly development snapshot for Solid. I present you development snapshot InDev3:

Features that made the cut:

You can try out the latest build for Windows: Solid-InDev3.exe

read more

How To Install UnitTest++

2012-06-05

 

In my opinion UnitTest++ is the most awesome unit testing framework for C++ ever created. The only minor downside is that the library misses an install routine for when built with make.

I actually wrote the procedure down a while ago, but apparently I don't have this article online anymore. So here I will post it again.

The actual procedure is quite simple, first you build the library are normal:

make

I am assuming that you want to install it to the common location /usr/local. If you fancy a different place, you just need to change that bit.

The first step is to create any missing folders:

mkdir /usr/local/include/UnitTest++
mkdir /usr/local/include/UnitTest++/Posix
mkdir /usr/local/include/UnitTest++/Win32

And now you copy the files:

cp src/*.h /usr/local/include/UnitTest++
cp src/Posix/*.h /usr/local/include/UnitTest++/Posix
cp src/Win32/*.h /usr/local/include/UnitTest++/Win32
cp libUnitTest++.a /usr/local/lib

Note, that I included both the Win32 and Posix headers. You actually just need one set of them and can skip the other. I include it, since people acutally use MinGW32 (for example me) and there the Win32 headers come into play.

read more

R-Value References

2012-06-02

 

The new C++ standard C++11 brought many new and interesting features. Recently I stumbled acorss one of the lesser discussed features, r-value references. At first r-value rerferences seam elusive and for the most part they are, but I have found one use case that really changes everything and greatly simplifies code. What I am talking about, is the constructor and assignment operator that takes a r-value reference.

This aspect if often refered to move semantic and described as a way to greatly reduce perfomance costs when moving objects. But what is often left out of the equasion is that you now can move objects that where not copyable before.

read more

Newer Posts Older Posts