A Sunday at Camp Smalltalk before #esug2012 – neat!

A rainy trip to a shiny place

Today, I went to Camp Smalltalk and it was a great experience. The place was the offices of http://www.yesplan.be. Lots of desks, power chords, coffee that didn't suck. And a ton of wonderful people that do know their trade. Thanks to Estaban for putting up with my never ending questions on how to get things working with Pharo on the iPad (now things do work) and to Igor for helping me out with a PNG loading that just fails (this still under the microscope). Got a neat talk with Johan Fabry and Ben gave me a quick session on how Spec works. I'll invest more time in that, I promise. Got a chat with Sean, very interesting as well.

Launching images with Pharo Launcher

I got a tweet from HwaJong Oh and asked him about how Pharo Launcher worked. We got it from the App Store and I got a walkthrough of the features. Nice tool, especially when it searches for all images on your box, including into Pharo One-Clicks.

A quest for food

Getting food proven to be somewhat of a journey. At the end I got a kebab with Guillermo and Estaban near a bridge. This is kind of a welcome change as far as I am concerned. But kebabs are better in Brussels!

A look at presenty

I also had a look at presenty, showcased by Dionisiy. Interesting stuff in there, especially for creating stories to be played on an iPad. Some ideas of usage:
  • Business games
  • Kids storylines
  • Game screen sequences

Debuggging iStackVM on iPad

Well, I got my debugging lesson with Igor. I learned interesting little tricks, including the Cmd-D on iTerm2 to split the screen. Also, I am more motivated than ever to put some keybindings for the bluetooth keyboard since that double-touch gesture from hell is really a usability liability. Good thing to remember for the debugger, using arrays to capture several calls. Like in:
  {stream next. stream next. stream next.}
ExploreIt or printIt and things are nice.

Parting Ways

Time flies! So, the day was over. I discussed with Johan the possibility to do a Pharo on iPad thing in my offices, like in November. I can host about 12 people over here. Interested ones, please drop me a line. Also, I'd like to see how we can harness Pharo with CUDA and NativeBoost and Opal. That could be a killer combo. So, thanks for all and see you on wednesday (no other available slot for me, what a shame).

Basic Things to Help Improve Performance

Advanced stuff is overhyped

There is no use for advanced techniques if the basics aren't in place. Still, I do see a lot of people buying book after book about improving things in their lives, only to not apply even a single idea in them. And going to seminars that do not change anything in their future trajectory. It seems to me that they do search for a magic bullet that will solve all their woes. Truth be told, such a thing doesn't exists. Even remotely.

Happiness is a way of life, not a goal

So, focusing on basic things that work is really the key to, dare I to say it, happiness. Adding "things" is not going make one happy. It just adds, and adds, and like addiction, you need more to feel the same satisfaction. That's a death spiral. It exhausts the person, make it a shadow. So, this led me to consider that happiness is not something to be "had," it is a way of behaving. A way of life.

Being in the moment is key

Once you let go of that "goal" and "thing to be had" spirit, only then can you truly enjoy being there and appreciate the moment. Being "in the moment" is really a great gift to oneself. Stay in the past, and you'll stay stuck. Project yourself all the time in the future, and you'll be as stuck. Because not taking care of the present is what leads to trouble. Only being in the present leads to change that is not "by default" as decided by other people. It is so because it allows you to be really connected to who you are.

Top performance requires to be really you

Going back to performance, one needs to be aligned with what really matters on a deep personal basis. If you do perform for external recognition, money, or whatever stick someone waves at you, forget about sustained top performance. You'll cut it once or twice but one day, you'll see the abyss of nonsense under your feet. Why take the chance? Truly be who you are deep inside. That's all that will matter in the end.

Moving to Markdown

I've been seeing markdown used more and more and decided to give it a try. (Ok this thing exists since 2004, it is about time I move!)
Markdown’s syntax is intended for one purpose: to be used as a format for writing for the web.
I do like wiki syntax and markdown is quite good enough for a lot my uses. Also, it is much easier than SGML-style or XML style DocBook (which I still like a lot) when it comes to teaching people on how to use them (I've seen people freaking out.) Give it a shot. It will improve your speed when it comes to write for the web in no time. Okay, one hour max. Also, check the WP-Markdown plugin. Install, Settings, Enable. Done. Don't forget the toolbar.

NVidia #CUDA deviceQuery on 13″ Macbook Pro Mid 2009: 16 cores

Just in case you wondered, here is what CUDA can give you on a 13 inch MBP from 2009. I am interested in your results PhilMac:release philippeback$ ./deviceQuery [deviceQuery] starting... ./deviceQuery Starting... CUDA Device Query (Runtime API) version (CUDART static linking) Found 1 CUDA Capable device(s) Device 0: "GeForce 9400M" CUDA Driver Version / Runtime Version 4.2 / 4.2 CUDA Capability Major/Minor version number: 1.1 Total amount of global memory: 254 MBytes (265945088 bytes) ( 2) Multiprocessors x ( 8) CUDA Cores/MP: 16 CUDA Cores GPU Clock rate: 1100 MHz (1.10 GHz) Memory Clock rate: 1064 Mhz Memory Bus Width: 128-bit Max Texture Dimension Size (x,y,z) 1D=(8192), 2D=(65536,32768), 3D=(2048,2048,2048) Max Layered Texture Size (dim) x layers 1D=(8192) x 512, 2D=(8192,8192) x 512 Total amount of constant memory: 65536 bytes Total amount of shared memory per block: 16384 bytes Total number of registers available per block: 8192 Warp size: 32 Maximum number of threads per multiprocessor: 768 Maximum number of threads per block: 512 Maximum sizes of each dimension of a block: 512 x 512 x 64 Maximum sizes of each dimension of a grid: 65535 x 65535 x 1 Maximum memory pitch: 2147483647 bytes Texture alignment: 256 bytes Concurrent copy and execution: No with 0 copy engine(s) Run time limit on kernels: Yes Integrated GPU sharing Host Memory: Yes Support host page-locked memory mapping: Yes Concurrent kernel execution: No Alignment requirement for Surfaces: Yes Device has ECC support enabled: No Device is using TCC driver mode: No Device supports Unified Addressing (UVA): No Device PCI Bus ID / PCI location ID: 2 / 0 Compute Mode: < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) > deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 4.2, CUDA Runtime Version = 4.2, NumDevs = 1, Device = GeForce 9400M [deviceQuery] test results... PASSED > exiting in 3 seconds: 3...2...1...done! While we are at it, here is the bandwidth test.   PhilMac:release philippeback$ ./bandwidthTest [bandwidthTest] starting... ./bandwidthTest Starting... Running on... Device 0: GeForce 9400M Quick Mode Host to Device Bandwidth, 1 Device(s), Paged memory Transfer Size (Bytes) Bandwidth(MB/s) 33554432 1563.6 Device to Host Bandwidth, 1 Device(s), Paged memory Transfer Size (Bytes) Bandwidth(MB/s) 33554432 1391.7 Device to Device Bandwidth, 1 Device(s) Transfer Size (Bytes) Bandwidth(MB/s) 33554432 5061.8 [bandwidthTest] test results... PASSED > exiting in 3 seconds: 3...2...1...done!  

Featured in SPaMCAST 198: Culture and Organizational Change

I've been interviewed by Thomas Cagley (@tcagley on Twitter) about culture and organizational change. Have a go at listening to the interview over here