Experiment: Request for interactive help

0 views
Skip to first unread message

Bruce Long

unread,
Jul 8, 2011, 2:53:34 PM7/8/11
to Slipstream Proteus Developers
Hi all,
There are a number of people in this group now; some that I don't
know. If you know C++ and are interested in helping, please read on.

I'm not getting a lot done the last few weeks because our daughter is
due to be born soon and there are a hundred other things that are
taking my attention. But I always know what the next tiny step is.
These are steps that might normally take a few minutes, like think of
a name for a flag. But they're taking me hours or days. In addition, I
really would like for more people to understand how the engine works.

I need 1-4 folks to chat in this thread and solve those micro problems
with me. Maybe you'll check in a single change like a line of code or
a change to an identifier. I'm thinking really small tasks that I can
email about while cleaning house.

You can probably even do this while working; I'm thinking a very
interactive-but-asynchronous collaboration.

If you're following this group and you want the Slipstream's
functionality soon, please respond with an "I'm in" or just jump in.

BTW, if you contribute, please let me keep the copyright for now. The
code is GPL so do what you will with it.

---------------
The current task is this:
If you look at the agent::normalize function you can see that I have
gutted it. The old code is pasted above the function and commented
out.

The next thing I want to add where the old code used to be (at line
Proteus.cpp:617) is this pseudo code

if (CI->flag2&withSpecAsFirst) { normalize(...)}
else if (CI->flag2&withSpecAsList) { normalize(...)}
else if (CI->flag2&withSpecAsLast) { normalize(...)}

But the flag withSpecAsFirst isn't set yet so it needs to be set in
the parser (ReadInfon())

It should be set if the item is a list and the list was created with
square brackets.
So the function ReadPureInfon needs to return a flag when ever the
item read is a list started with '['. (See line 178: else if(tok=='[')
{rchr=']'; *flags|=tList;})

Probably we can just add something to that line. Problem is that I've
added a new flag word to the infon class called "flag2" which
ReadPureInfon() doesn't know about.

Perhaps we could add a pointer to a flag2 variable to ReadPureInfon's
arguments.

-- If you can program, would you please take a look at this and
propose some code or ask questions?

Thanks!

Bruce

David Van Duzer

unread,
Jul 19, 2011, 2:14:37 PM7/19/11
to slipstream-pro...@googlegroups.com
Hi folks. I have a few questions, a bit belatedly. Maybe we can try
this again...

First: Naming. How about something other than 'flag2'? Is it that we
just ran out of room in 'flags' or is there substantially different
purpose to these flags?

Related to this: Could you explain what f1 and f2 do in ReadInfon()?

ReadPureInfon is only ever called twice, and f1 tracks the
modifications to flags. The natural name to use to add to the
ReadPureInfon() call would be f2, but that's already used. I'm
guessing WFlags is a candidate, but that might not be safe.

Finally, the names for bits used here seems to be missing something.
On line 50 of Proteus.h, you've added several new flag names to the
enum, but there is overlap with the old names. I assume there is
something wrong here. Maybe this should have been the first thing
mentioned, since it is probably part of the explanation to my other
questions.

Hope this helps narrow the discussion a little...

dvd

Bruce Long

unread,
Jul 19, 2011, 3:18:01 PM7/19/11
to slipstream-pro...@googlegroups.com
I've moved substantially beyond this problem by now. It would be exciting to have interactive programming going on. And it would help others become experts on the code. Perhaps we should advertise a little and find more devs who are interested? A big push with 2-5 C++ devs working on it interactively with me and we could likely have this finished in a month.
--
Give me immortality or give me death!

Bruce Long

unread,
Jul 19, 2011, 5:00:31 PM7/19/11
to slipstream-pro...@googlegroups.com
I'd like to set up a more private work space and get a handful of people who are interested to help for one month. I need to have very interactive help because the learning curve on the code is several months if you hole-up and try to decode the whole thing before contributing. Can we make notices on gitHub or other dev forums? Perhaps you guys can do a month of heavy work. If not, do you know people who would be interested in such a project?

Here is how I see the conversation going:

"Hi guys, I want to help, I've never looked at the code but I know C++, what should I do?"
"Here's access to our private work area. Look at task #4. The sub-task of that we are on is to find out why X is not working. Can you play for half an hour and comment?"

"Sure. I need help getting it to build and these are my questions: ___"

...



1. My current tasks are to bring the code back to full power after gutting it. (I could use interactive help on this.)
2. Write some notes on what the project is for those who wish to help but want to know more.

David, do you know of a project management system that will let us have multiple levels of nested lists? Neither Toodledo nor Basecamp can.

Bruce

David Van Duzer

unread,
Jul 19, 2011, 7:17:30 PM7/19/11
to slipstream-pro...@googlegroups.com
I've looked for better project management systems. Programmatically,
nested lists are really straightforward. It's the UI that gums up the
works.

I could set up a private mediawiki as a stopgap if that would help?

dvd

Bruce Long

unread,
Jul 19, 2011, 7:35:15 PM7/19/11
to slipstream-pro...@googlegroups.com
Thanks David,
A wiki will work. How does medaWiki compare to a private gitHub wiki?

David Van Duzer

unread,
Jul 19, 2011, 8:03:38 PM7/19/11
to slipstream-pro...@googlegroups.com
I'd go with a private github wiki if that's an option.

Mediawiki is just wikipedia's software. Easy enough to install and maintain, but still more admin overhead than github.

Davide Del Vento

unread,
Jul 19, 2011, 10:51:09 PM7/19/11
to slipstream-pro...@googlegroups.com
> Perhaps you guys can do a month of heavy work

How heavy? If not "too much" I can do it provided (see below)

Starting from when? Until July 29th I'm swamped. From the first week
of August things will get better. Second week of August should be even
better.

Bye,
Dav

Bruce Long

unread,
Jul 20, 2011, 2:44:38 PM7/20/11
to slipstream-pro...@googlegroups.com
That sounds great Davide. Things are also getting better for me as we get into a routine with the baby. It will be really great to finish 1.0. It's close!

Bruce Long

unread,
Jul 24, 2011, 6:27:23 PM7/24/11
to slipstream-pro...@googlegroups.com
I've pushed my current work. I won't have time to do much more today. Almost all the ./M tests fail. This is almost certainly due to the "\\\^" code not working, I pasted the code for that into the new switch statement. (look at the branch notes; The normalize function is now called "fillBlanks" and instead of a complex nested it/else, it uses a single switch statement. The cases iToPath and iToPathH are the ones not working correctly. In clip try 

[+_ ({555, 444, \\\[_]},)] <: +7000

You SHOULD get back {*1+555 *1+444 *1+7000 }

If any can work on this, feel free to email you questions, observations about the code, etc.

Cheers!
Reply all
Reply to author
Forward
0 new messages