Skip navigation

Monthly Archives: March 2013

Clever creation

Clockwork springs to life

Love realized

timecalcmashin_1600x1200

Advertisements

Soft silence

Sweet kiss in cacophony

A storm stilled

silent_winter_morning_by_passionandthecamera-d5vx4jy

As mechanical engineers learned long ago, there is much we human scientists can glean from nature (and then improve upon) which is applicable to our innovative endeavors. ¬†This is true also for software engineers… to that end, I present the first in a series of nature inspired programming strategies, partly for laughs, mostly serious ūüôā

Digimals::Octopus Oriented Programming := a multi-threaded (at least 8) application design pattern where processing and resource sharing is managed by a single amorphous semaphore
octopus-RAW-IN-THE-OCEANHPC

It’s still early in design and the developers (possibly including me on the Android front) haven’t decided on a definite solution yet, but big changes are coming to robocode¬†in version 2.0. ¬†A major focus will be mobile device support for the simulation, bots, and/or the whole programming environment! ¬†See the robocode-developer’s google group and this thread for details…¬†Image

For JVM/DVM Java memory usage, the Eclipse Memory Analyzer Tool (MAT)

For native memory debugging (allocations in C/C++ etc.), Valgrind is awesome and supports quite a few platforms!

st-george-dragonThe Chivalrous Valgrind Logo!

Owls in general are great, but the miniature saw-whet owl is one of my favorites: saw-whet on owlpages.com

saw-whet-owl-3403-08-07_001

As I understand the issue, there can be multiple causes for this error (not building against the correct machine architecture, permissions set incorrectly, etc.) but for me none of these common issues solved the problem. ¬†I was in a bit of a unique situation you see– I had built an application as a static library to be utilized by a different application, and I wanted to return to development of the original application. ¬†This required rolling its settings back to build as an executable rather than a static library. ¬†I did this by changing the artifact extension from static library (.a) to executable, but I noticed the executable icon in eclipse was still a ‘plugin symbol’ (jigsaw puzzle piece) rather than a ‘go symbol’ (circle with an inscribed arrow pointing right). ¬†After much googling to little effect and executing the program from the terminal to verify that it produced the same error [cannot execute binary file and ‘echo $?’ to see the last exit code yields 126], I took another look at the command string eclipse was generating and saw the odd switch ‘-dynamiclib’ appended after the various ‘-framework x’ linker switches I needed. ¬†Looking deeper into my linker settings I noticed that the ‘Shared’ box was checked under ‘Shared Library Settings’. The solution of course was to uncheck this box, which removed -dynamiclib from the command string.

In sum, the missing step was as follows:

1. Go to project->properties->C/C++ Build->Settings->MacOS X C++ Linker->Shared Library Settings and uncheck the ‘Shared (-dynamiclib)’ box. ¬†I don’t know why that was checked to begin with since I was building static libs before, but whatever the case this fixed the problem and made the program fully executable again.