You can see the freshly uploaded playlist here!
Monday, August 31, 2015
Sunday, August 23, 2015
We wrapped up Camp Smalltalk PDX tonight. The Saturday barbeque with fresh Oregon food and the Flat Nines jazz band was really nice! Thank you Instantiations, FAST, and others who contributed to make it such a great experience --- including the cooks Paul DeBruicker and Dave Caster. The CTRL-H hackerspace was a welcoming venue. Thank you CTRL-H! We had room and amenities, they lent us their backyard for the barbeque, and we also heard about the hackerspace's member projects. And we even got Camp Smalltalk shirts courtesy of Dave Caster.
Of course, there was a lot of Smalltalk. I heard of people working on VA Smalltalk, Monticello, Squeak, Cuis, web frameworks, GemStone, and so on. Personally, I had a lot of fun hacking some VM stuff until a while ago. And it's not just the work itself --- it's also the people you meet, the connections you make, and the passion you can share.
Photos will become available I am sure --- such as here. In the mean time, enjoy this preview :).
Posted by Andrés at 23:37
Tuesday, August 18, 2015
Sunday, July 26, 2015
During ESUG's Show Us Your Projects, I gave a demo of a really fast reference finder I had written in Cuis a number of years ago. During ESUG, Jan Vrany and I wrote an enhancement to the reference finder: a so-called weight tracer. What this tracer does is tell you which objects only "hang" from a given object. That is, if the given object goes away, the weight tracer shows what other objects would be collected as well.
Initially, the weight tracer required about two minutes per scan. I managed to cut that in half at ESUG with some less than ideal hackery. But today I really understood what was going on. After deleting the unnecessary hackery, and with just a few tiny changes, the weight tracer runs just as quickly as the reference finder: a couple tenths of a second.
And it's tidy code, too :).
Posted by Andrés at 13:54
Saturday, July 18, 2015
My paper on Linked Weak Reference Arrays was awarded a prize as the second best paper at IWST 2015. I would like to thank the IWST 2015 chairs for the opportunity to submit and present my paper, as well as to LAM Research for sponsoring IWST.
In a nutshell, the paper asserts the following. Whereas regular weak arrays tombstone slots ideally tombstone with the small integer zero, linked weak arrays tombstone with a linked list of small integers. Each small integer tombstone points to the next tombstoned indexed slot. The small integer zero indicates the end of the linked list. The root of the linked list is stored in the linked weak array's first instance variable. Data races are avoided by adopting the ephemeron finalization convention: when a linked weak array is queued for finalization, the VM turns it into a regular strong array. When the linked weak array finishes mourning, it makes itself weak again.
This functionality requires a memory manager supporting dynamic slot reference strength. There are examples of this type of memory manager in the wild. Most of the complexity appears in the presence of an incremental garbage collector. Changing weakness (as well as doing a become:, or a oneWayBecome:, or changing classes, etc) can easily invalidate the incremental garbage collector's working assumptions. A number of years ago, I got HPS to handle this complexity for regular weak arrays and ephemerons. GemStone/S has been using the improved HPS functionality in production for quite some time. To date, I know of no problems with the implementation.
The benefit of this different approach to weak array finalization is that the image no longer has to reconstruct information the garbage collector knew. That is, when a linked weak array mourns, it does not have to perform linear search to find where the garbage collector "hid" the tombstones. Even better, measurements indicate the linked weak array mourning overhead is lower than that of a regular weak array. Linked weak array mourning does not have to send the message #size, and does not need a #to:do: loop. The baseline speed improvement, when every slot is tombstoned, is about 30% (Cuis on Cog r3164).
Regarding the second volume of my Fundamentals book, the next chapter to write is on weak references. How convenient!
See you next year :).
Posted by Andrés at 00:50
Monday, June 29, 2015
Camp Smalltalk Portland 2015 in beautiful Oregon is go for August 21st through the 23rd! (and if you arrive earlier on the 20th that's cool too) Please register for the event here --- help us by filling in the questions so you can get your event shirt. And also see that we're having a BBQ with live music on Saturday. You can't miss it!
Posted by Andrés at 23:57
Wednesday, May 06, 2015
Dear artful programming enthusiasts,
The Pacific Northwest Smalltalk crew would like to invite you to Camp Smalltalk PDX this summer. Come join us August 21-23 in beautiful Portland, Oregon!
We all know coding is a lot of fun, and that the best coding is done with the delete key. Accordingly, Camp Smalltalk PDX will be at Portland’s CTRL-H hackerspace, http://www.ctrlh.org.
There is no set schedule, but of course we all have strong interests. Some of the areas that will surely be covered include:
* Smalltalk on small devices, such as Scratch on Raspberry PI
* Web frameworks such as Seaside
* Virtual machine implementations
* Data processing applications
* Language design, Smalltalk and beyond
If you are curious about Smalltalk, feel free to drop by and give Smalltalk a try.
And yes, there are also the well known regulars --- we all know who you are :). It’s time to catch up and plot inventing our future.
Feel free to contact us directly if you have questions regarding travel or accommodations. Also, if you know you will be coming and you haven’t completed our survey yet, doing so will help us coordinate the infrastructure around the event: http://goo.gl/forms/XVLOLRe8OF. For event information, see here: http://www.pdx.st/. As the dates get closer, additional organization information may become available here: http://wiki.squeak.org/squeak/811.
See you in Portland!
Posted by Andrés at 22:24
Saturday, May 02, 2015
Remember the days of Windows 95? After 49.7 days of continued operation, the system would crash. That was before the Y2K bug, when nobody knew or even expected that a counter would overflow. We should have learned our lesson by now: even seriously defective software can hang around for a very long time.
Unfortunately, we can't quite start feeling warm and fuzzy yet. Recently, it was discovered that a Boeing 787's electrical system will shut down after 248 days of continued operation. The result? Among other things, the cockpit controls no longer work. And with fly by wire, that means pilots can become irrelevant at any time.
In other words, please make sure you periodically reboot the 787 until that software bug is fixed. If the problem is ever fixed.
At least this is a bit of technology we all understand. That is, rebooting makes flaky programs appear to work for a bit longer. The underlying assumption is deeply problematic. The message is that this is the extent to which we are supposed to participate in our technological adventure. You yearn of concerning yourself with whether the maintenance crew hit ctrl-alt-del before take off, don't you? Wait, why isn't the expert doing that in the first place? Or even better: how is it that a simple counter overflow can completely disable a modern airplane? How are these machines being designed such that these failure modes are even possible?
But forget wondering what other 787 bugs could exist when that kind of defect went undetected. What's next? Cars that drive themselves (except when they don't)? Smart electric meters, traffic lights, and gasoline pumps connected to the internet securely (except when security isn't --- really --- there)? Everything will be just fine, right?
Seriously, these are not toys or apps. Please demand reliable software.
Posted by Andrés at 17:50
Thursday, April 02, 2015
Wow, it's been such a long time since I posted updates. Surely a lot of stuff has been going on since December 2012, but still!
I found a new editor and the teamwork is great. Since none of volume 2's text had been edited, the first order of business was to review the ~200 extant pages. This took a while, but I'm really happy because we ended up deleting roughly 15 pages --- and that's the net effect, because I added some extra material as I went through the text too.
Not long ago we started reviewing chapter 7, and a few weeks ago we finally got to the tip of the written text. And now, all the text for chapter 7 ("On Threading") is basically done. The exercises include real gems. But there are "only" 27 of them right now, so who knows... I might add more over time :).
Chapter 8, "On Recursion", is next. Reviewing my notes for the chapter was exciting, there is a lot of new material I haven't talked about yet!
The draft is at 204 pages.
Posted by Andrés at 04:00