Etoys on the iPad
Bert Freudenberg has Etoys (in Squeak) ported to the iPad. Whether it ever makes it past the app store hurdles in front of it probably depends on what happens with Scratch. I embedded Bert's YouTube video below:
. .
The author of this blog, James Robertson, passed away in April 2014. This blog is being maintained by David Buck (david@simberon.com).
Bert Freudenberg has Etoys (in Squeak) ported to the iPad. Whether it ever makes it past the app store hurdles in front of it probably depends on what happens with Scratch. I embedded Bert's YouTube video below:
I've added a new segment to the Seaside Tutorial - using JQuery for the Ajax calls instead of Scriptaculous. Tomorrow's screencast will add a video covering the same topic.
When I updated the Seaside tutorial, I ran into an interesting change from Seaside 2.8 - the way anchors work when you have an onClick Javacript action. If you don't include an #url: call with some string, you don't get an anchor. In Seaside 2.8, that wasn't the case - look at the code in WAAnchorTag in 2.8:
with: aBlock url isNil ifTrue: [ ((self attributes includesKey: 'href') or: [ self attributes includesKey: 'name' ]) ifFalse: [ self attributes at: 'href' put: 'javascript:void(0)' ] ] ifFalse: [ self attributes at: 'href' put: url ]. super with: aBlock
And now look at the 3.0 version:
with: aBlock url isNil ifFalse: [ self attributes at: 'href' put: url ]. super with: aBlock
There was an explanation (I missed it; I don't track the Seaside mailing list that closely):
We removed that because it was causing unwanted side-effects in some cases. I suggest that you create your own #onClick: method that sets the 'href'.
However, for many applications (most, I daresay), it's simpler to just restore the 2.8 behavior. If you don't, you need to do something like this (note the usage of #url: below):
renderContentOn: html html paragraph: [(html anchor) onClick: ((html jQuery: #count) load html: [:h | h render: (count := count - 1)]); url: '#'; with: '--'. (html span) id: #count; with: count. (html anchor) onClick: ((html jQuery: #count) load html: [:h | h render: (count := count + 1)]); url: '#'; with: '++']
Before you can get the anchor to render. You need to do the same using older Scriptaculous/Prototype code - because the change is in the way anchors render. When I do screencasts on JQuery in seaside, I won't be including this change; I don't want to force people down that path. However, I think it's useful to know. Hat tip to Boris Popov for pointing me in the right direction on this stuff.
Technorati Tags: seaside, jquery, anchor tags
This week's podcast features Juan Vuletich and Jecel Assumpcao, two of the members of the Squeak Oversight Board. This is part 1 of two - we'll be releasing part 2 next week. This is our second talk with member sof the SOB; we plan to do regular updates with them over time.
To listen now, you can either download the mp3 edition, or the AAC edition. The AAC edition comes with chapter markers. You can subscribe to either edition of the podcast directly in iTunes; just search for Smalltalk and look in the Podcast results. You can subscribe to the mp3 edition directly using this feed, or the AAC edition using this feed using any podcatching software. You can also download the podcast in ogg format.
To listen immediately, use the player below:
If you like the music we use, please visit Josh Woodward's site. We use the song Effortless for our intro/outro music. I'm sure he'd appreciate your support!
If you have feedback, send it to smalltalkpodcasts@cincom.com - or visit us on Facebook or Ning - you can vote for the Podcast Alley, and subscribe on iTunes. If you enjoy the podcast, pass the word - we would love to have more people hear about Smalltalk!
Technorati Tags: squeak
|
One of the things that often ensnares new Smalltalkers (and sometimes keeps them ensnared) is the simple power of the language - the things you can do that are either hard or impossible in whatever languages you used before. For me, when I first started using Smalltalk (many years ago now, I'll admit) it was constructed message sends. Consider a simple set of messages you might have in a class: #doThis1, #doThis2, #doThis3 (and so on). The idea is simple - you have a set of messages that have almost the same name, but differ in their prefix or postfix. So... the seemingly elegant solution is something like this: |
executeMyMethodWith: argument
| extension |
extension := argument printString.
message := ('doThis', extension) asSymbol.
self perform: message
Seems simple, right? The code is fairly straightforward, and all execution funnels into that one method. Except... when you come back to the code a few months/years later (or worse, a follow on developer does), and find the method #doThis4 - one of the first things you do is check for senders - and you find none.
I've been bitten by that more than once. It's easy to start blowing away the "unneeded" methods to spruce things up, and then have the application die in a stream of MNUs. After a bit of cursing at the debugger, the problem becomes clear, but a lot of time and energy was wasted in the process.
What that gets to is this: just because you can do something in Smalltalk doesn't mean that you should do it. Cleverly constructed message sends are almost always a mistake (it's a nice thing to be able to use when you need it but - there's almost always a simpler solution). Clever handling of #doesNotUnderstand: is another one. Useful for proxy objects, usually just a bomb waiting to go off for anything else. Likewise, message eating nil code. That tends to work fine right up to the point when it doesn't, and then it's nearly impossible to figure out why things are working badly.
Other languages have their can/should not partterns as well, but Smalltalk seems to have a few that really excite people before they get bitten by them. You kind of need to take the Spiderman thing seriously - "With great power comes great responsibility".
JNIPort is now available for both VisualWorks and Pharo. What's JNIPort?
JNIPort is a Smalltalk library which allows Java code to be invoked from Smalltalk. It acts as a bridge between the world of Smalltalk objects and a Java Virtual Machine (JVM) where Java code is executing.
That makes the (huge) set of Java libraries accessible to Smalltalk developers. It looks like cross dialect Smalltalk works is expanding nicely.
Technorati Tags: java, jni, pharo, visualworks
I'll be at the Camp Smalltalk event in London next month - July 16-18. I'll have the video camera along to record the event - and i intend to pigeonhole a few people for the podcast. See you there!
Technorati Tags: london
Julian Fitzell wil be presenting Seaside at Epicenter on JUne 10th:
Find out why Seaside is driving a new generation of developers to pick up a powerful and productive language called Smalltalk. Long a secret weapon in the finance, manufacturing, and transportation sectors, Smalltalk is now being used by more and more businesses to develop complex applications faster and more cheaply than their competition. Shared Nothing, REST, HTML templates: these all have their place. But leave your conventional wisdom at the door and see if you can't discover a better way to develop your next online application
There's also the evangelist evening, which Julian will be participating in.
The server that runs the Cincom Smalltalk websites is having some kind of issue this morning; I'm exploring that with the IT group. When it comes back to life, I'll post an update.
Technorati Tags: cincom
| Previous | Next | (1107 total) |