team: PySoy

August 03, 2012

Juhani Åhman (fzzbt)

YA Update

Managed to partyally fix the shading rendering issues with the examples.I reckon the rest of rendering issues are opengl ES related, and not something in libsoy side.
I don't know opengl (ES) very well, so i didn't attempt to fix any further.

I finished implementing a rudimentary pointer controller in pysoy's Client.
There is a example program for testing it. Unfortunately it keeps crashing once in a while.
I reckon the problem is something with soy.atoms.Position. Regardless, the pointer controller works.

I started to work on getting keyboard controller to work too, and of course mouse buttons for the pointer,
but I got stuck when writing the python bindings for Genie's events (signals). There's no connect method in pysoy, so maybe that needs to implemented, or then some other solution. I will look into this later.

Plan for this week is to finish documenting bodies, scenes and widgets. I'm about 50% done, and it should be straightforward. Next week I'm finally going to attempt to set up Sphinx and generate readable documentation.  I reckon I need to refactor many of the docstrings as well.

July 10, 2012

Mayank Singh (mayanks43)

Mid-term and dualshock 3

Now that SoC mid-term has arrived, here's bit of update about what I have done till now. The wiimote xinput driver IR update is almost done. Though just like it can said about any piece of software, it's never fully complete. 
I also corrected the code for Sphere in the libsoy repository to render an actual sphere. 
For now I have started up on an integration of dualshock3 controller. I am currently studying the code given here: and trying to understand how the dualshock works. I also need to write a controller class to be able to grab and move objects around without the help from the physics engine.

July 04, 2012

Juhani Åhman (fzzbt)

Weeks 5-7 update

I've have mostly finished writing unit tests for atoms now.
I didn't write tests for Morphs tough, since that seem to be still in WIP.
However, I did encounter a rare memory corruption bug that I'm unable to fix at this point,
because I don't know how to debug it properly.
I can't find the location where the error occurrs.

I'm going to spend rest of this week writing doctests and hopefully getting more examples to work.

June 25, 2012

Amaury Medeiros

In order to simplify even more the user experience with Freeseer on Windows, I extended the script to create some batch files to call freeseer-record, freeseer-config and freeseer-editor directly from Start Menu. The result can be seem on the picture below.

June 19, 2012

Juhani Åhman (fzzbt)

Week 3-4 update

Last week, wrote pretty good coverage of unit tests for soy.atoms.Rotation, Position, Vector and Color. Will try to write doctests next and then proceed to other atoms that I didn't get to yet.

June 15, 2012

Amaury Medeiros

Windows Install Script

As I've mentioned before, I'm currently working on making Freeseer installable on Windows via an install script. The script should download the dependencies, install them, configure some environment variables and download and install freeseer itself. Thus, the user should do as few manual work as possible.

Since the script manipulates environment variables, it should be run with administrator privileges. By default, a batch script executed with administrator privileges is run on directory C:\Windows\System32. We'll use some relative paths on the script, so it's important to keep our current directory. To do that, the lines below should be put on the beginning of the script:
@setlocal enableextensions
@cd /d "%~dp0"
After that, it's time to download the dependencies. Windows doesn't have nice native ways to download files via command-line, so the approach used here is to use a compiled version of wget, which can be downloaded here. It should be in the same folder of the script. The folder should look like as shown on the Figure 1. 

Figure 1 - Script folder.
The dependencies can be on .exe or .msi extensions. Each one should be treated differently. Dependencies with .exe extensions are called directly, while the ones with .msi extensions are called using msiexec command. There's a wizard for each dependency. The user should just accept any license agreements that might occur and choose the default options.

Figure 2 - Downloading dependencies

Figure 3 - Installing dependencies
Then, it's necessary to change the environment variable Path to include Python and Gstreamer. To do that, I used a VBScript that appends Python and Gstreamer locations to Path. There are some dependencies (feedparser, pygtk and yapsi) downloaded via easy_install.

Gstreamer uses the bindings for Python 2.6 by default. The next step is to put the correct files on the correct folders so Gstreamer can use Python 2.7. The script moves Python 2.7 bindings to Gstreamer's main folder (the one that we set in the environment variables before, remember?) and copies Gstreamer's site-packages folder to Python's site-packages folder.

The final step is, of course, install Freeseer itself. I hosted Freeseer installer here, because I was facing authentication problems while trying to wget it from GitHub's page.

Figure 4 - Freeseer installation

Finally, we can run freeseer:
python C:\Python27\Scripts\freeseer-record
Figure 5 - Freeseer running

June 13, 2012

Mayank Singh (mayanks43)

Shaky cursor woes and mouse drivers

I have been trying to use the ir pointer as a mouse for quite a while now. The major problems I faced was that it was really shaky. So, I looked up the net and turns out most mice send only the difference of position to the driver. And maybe there's a freeze time to not receive input. I also came across this nice post on mouse drivers: Seems I have found some stuff to add to the driver. I need to start storing some state into the driver to keep track of a little history of the mouse pointer.
Also, I have planned a simple game where random cubes appear on the screen and you're supposed to shoot them down using a mouse or ir pointer.

June 05, 2012

Mayank Singh (mayanks43)

Wiimote driver update and other stuff

After having made cursor move using the ir pointer last week, I am trying to add the ability to click on items like you would with a mouse. Also, I tried creating a new pointer for the wiimote. You can do that using the xinput program. However, for me xinput --create-master lead sometimes to a complete loss of control and to a lot of crashes the other times. I haven't really been able to move that second cursor using the ir input yet. I plan to complete the driver this week leaving aside the second cursor problem. From next week onwards, I'll start working on the input module of libsoy and think of ways to integrate this driver with it.

In other news, I completed udacity's cs212 final exam. The finals had six questions, all involving varied areas of program design including a question to simulate the parking lot puzzle of rearranging cars and a probabilistic puzzle on darts. The parking lot puzzle gave the most pain but like all others it fell.

June 04, 2012

Juhani Åhman (fzzbt)

Week 1-2 update

The first two weeks of GSOC have gone fast.
A bit faster than I hoped for.
I have (re)written about half of the unit tests for soy.atoms.Rotation, Position, Vector and Color; pysoy bindings and some libsoy side things. I hope to finish those this week and then proceed onto rest of the atoms: Vertex, Size, etc. next week.

Despite summer time, I have exam coming up tomorrow and another one next week :( -- which is why I have been lagging a bit last week.
I hope to get into speed again after those are done.

May 27, 2012

Mayank Singh (mayanks43)

Random Stuff

Ok. Long time no post. Accepted. So, here's what's up recently... I have taken up another SoC with PySoy. Considering a lot of stuff from last year wasn't finished, this was an obvious choice. I have started writing a wiimote xinput driver taking help from david herrmann's current driver that provides key-mappings. I am trying to add IR cam support. And for that I had to build a homebrew wii sensor bar and I came up with this. Good enough until it gets the job done. Couldn't find battery holders around so had to use the arduino for power. Yeah, you can see the IR light in the picture. So far, I have been studying documentations on the internet, reading sample xinput drivers, and looking up the API of the kernel driver. I'll start some coding today.

Apart from that, I received my Diablo III preorder two days back. \m/ Have been levelling up since two days. Also, My GRE is on 24th July, so have been pumping up my vocabulary recently.

In another news, My ISP MTS has been a lot of pain in the past two days. If this continues on I plan to switch to Tata photon. Have been getting speeds <22KBps. Really sad :(

Also, something about online courses. I had planned to do finish off three udacity and two coursera courses these holidays. But the workload seems overwhelming and I have rounded down to completing the courses Machine Learning (coursera) and Design of Computer Programs (udacity). Both courses are really awesome. Design of Computer Programs is being taught by Peter Norvig and it teaches advanced python and software design. Machine Learning is an area I have always wanted to learn about and the course is giving me what I wanted. I may do an MS in this area soon. (One year to go)

A note about competitive programming. I have been trying hard to get good at code-jamming for two years. I believe I have become better but I am no competition against most good jammers. So, recently I bought this book and it seems to be a really great book for people like me who have no people around to tutor them. This book contains pointers to >500 problems from UVa along with hints and all very well categorized. I have tried lots of other books and I thought cormen and my DSA class would help me get better. Yes they have but they haven't made me competitive. This book targets today's codejams and contains topics that are common in the current scenario. Another good point about the book is that UVa has a special section that contains all the questions from this book arranged categorically. However, I missed topics like Grundy games on whom I have seen a lot of questions these days. Anyways I plan to finish off atleast 100-150 questions from important topics from the book this summer.

May 21, 2012

Amaury Medeiros

GSoC 2012


This year I'm participating Google Summer of Code again. This time, I'm involved with the FreeSeer project, a powerful software suite for capturing or streaming video. The main goal of my project is to make Freeseer as easy as possible to install in Windows and in a few Linux Distros.

Until now, I was reading articles about packaging in Fedora, Ubuntu and OpenSUSE. Today, the coding period has started, so I intend to move to my next goal: create a Windows install script to install FreeSeer and all its dependencies automatically. For now, I'm doing the tests on Windows, but late (when the script gets more complete), I intend to create a virtual machine with a fresh Windows installation and test it, to see if everything goes normal.

Juhani Åhman (fzzbt)

I was accepted to GSOC 2012

I will be working again for PySoy in GSOC 2012.
My project title is "Improve testing, documentation and examples".
Additional info is available.

The project starts today and I will be starting with updating the old tests in pysoy side.

February 17, 2012

Arc Riley

Hyperfocus and balance

For as long as I can remember I've worked in short hyperfocused bursts, regardless of what I was learning or doing. For example, a few weeks ago I spent 8 hours all night learning everything I could about sugars and how they're digested, absorbed, and metabolized by our bodies. Fascinating stuff.

Last year around this time I learned my health, turning 32, was in very poor shape - hypertension, difficulty losing weight, trouble remembering to eat and when I did I didn't pay much attention to how much or how it would affect me. At that point I was on a low-carb diet which had plateaued but was the only thing that kept me from ballooning back to 36%+ body fat. This worked for me because it didn't require much attention, I could continue doing whatever I wanted as long as I followed a few simple rules, except that it didn't work. The root of the problem wasn't diet or lack of exercise (I walk/bike everywhere), but that when not eating or exercising I was sitting for hours (10+) at a time and would often go for days glued in front of a computer screen.

Rugby was at first a reason to get off my ass more often, after I played a few games it became an obsession (Red #23). Thinking back I can't remember when I switched from playing rugby to get in shape, to getting in shape to play rugby, but after spending 5 days a week all Winter training my ass off to be ready for Bingham Cup 2012 I'm well past that tipping point. Rugby isn't a career, especially at my age it'll never become one, though it has strongly altered my lifestyle and choices.

Training has become a much-needed metronome for my life. I wake up with the sun now, every day I have something on my schedule (including days for rest/recovery), every meal is timed and planned, my time in front of a computer fits into that schedule.

My best work is done after 3-4 days of concentration, when the hyperfocus reaches a point where the only thing I'm aware of is the code I'm working on. I have a few hours to be absolutely brilliant in that state until my neurotransmitters, dopamine, cortisol, and countless other support systems give out - but in those few hours I'd have completed weeks of work. This presents a problem that I'm looking to overcome; how can I reach that state within the small slices of time available while keeping the nasty recovery effects to a minimum?

I'm working to solve that now with biofeedback in much the same way as I learned to control my sympathetic and parasympathetic systems, weight management, and sleep cycle. I believe that if I'm successful I can work much more efficiently without any noticeable recovery time between sessions.