. .

podcastAAC

IM 63: Go Small or Go Home (AAC)

January 29, 2012 11:29:23.230

Welcome to episode 63 of Independent Misinterpretations - a Smalltalk and dynamic language oriented podcast with James Robertson and David Buck.

David Buck and I talk about Smalltalk and large scale development, using an interview with Joe Armstrong and Ralph Johnson as a stepping off point. To read or listen to that interview, visit the InfoQ site. There's also a good discussion about this topic in an email thread across the vwnc and Squeak mailing lists; you should check those out as well.

You can subscribe to the podcast in iTunes (or any other podcatching software) using this feed directly or in iTunes with this one.

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.

If you like the music we use, please visit Josh Woodward's site. We use the song Troublemaker for our intro/outro music. I'm sure he'd appreciate your support!

If you have feedback, send it to jarober@gmail.com - or visit us on Facebook - you can subscribe in iTunes using this iTunes enabled feed.. If you enjoy the podcast, pass the word - we would love to have more people hear about Smalltalk!

Technorati Tags: , ,

Enclosures:
[im63.m4a ( Size: 17563430 )]

posted by James Robertson

 Share Tweet This

podcast

IM 63: Go Small or Go Home

January 29, 2012 11:28:49.930

Welcome to episode 63 of Independent Misinterpretations - a Smalltalk and dynamic language oriented podcast with James Robertson and David Buck.

David Buck and I talk about Smalltalk and large scale development, using an interview with Joe Armstrong and Ralph Johnson as a stepping off point. To read or listen to that interview, visit the InfoQ site. There's also a good discussion about this topic in an email thread across the vwnc and Squeak mailing lists; you should check those out as well.

You can subscribe to the podcast in iTunes (or any other podcatching software) using this feed directly or in iTunes with this one.

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.

If you like the music we use, please visit Josh Woodward's site. We use the song Troublemaker for our intro/outro music. I'm sure he'd appreciate your support!

If you have feedback, send it to jarober@gmail.com - or visit us on Facebook - you can subscribe in iTunes using this iTunes enabled feed.. If you enjoy the podcast, pass the word - we would love to have more people hear about Smalltalk!

Technorati Tags: , ,

Enclosures:
[im63.mp3 ( Size: 12714278 )]

posted by James Robertson

 Share Tweet This

smalltalk

Smalltalk and Large Projects

January 28, 2012 11:42:02.062

Dave Buck and I were discussing podcast topics, and we came across this InfoQ interview with Ralph Johnson and Joe Armstrong. This is what we decided to talk about:

Because in Smalltalk you have everything in the image. You can't keep track of the versions between the old and the new one - it's a pain in the neck but also now we are going to this distributed computing or parallel programming. People say "We want to have multiple threads inside Smalltalk." No, you don't want to do that! Because you are just getting back to all those problems. What you want to do is have multiple images in sending messages back and forth if you want fault tolerance.
It started years ago more but because we had this way of doing things, we just put everything in one image and there is also the issue of complexity. You build a system, so it gets to the limit of what a few people can do and there Smalltalk doesn't work too well. If it actually took 20 people to build your system, Smalltalk is not very good. If you could build it with 4-5 people, fine. They all sit in the room and Smalltalk is just fabulous and you could build with 4-5 people something that would take 50 people in Java, but what if it would take 200 people in Java?

We'll get into that when we record, but two points:

  • The system I work on now has nearly 5500 classes in it, and it's managed by around 20 developers
  • Any project that has 200 developers (regardless of language) will grow a process that makes forward motion impossible. I've seen that happen, more than once

With that said, wait for episode 63 to come out - this is what we'll be talking about.

posted by James Robertson

 Share Tweet This

st4u

ST 4U 186: Exploring The Smalltalk Process Model

January 27, 2012 14:58:56.387

Today's Smalltalk 4 You looks more deeply at the process model in Smalltalk, using VA Smalltalk as our example. If you have trouble viewing it here in the browser, you can also navigate directly to YouTube. To watch now, click on the image below:

Processes.

If you have trouble viewing that directly, you can click here to download the video directly. If you need the video in a Windows Media format, then download that here.

You can also watch it on YouTube:


Today we'll take a deeper look at processes in VA Smalltalk. We'll be exploring the cooperative process model that VA (and most other Smalltalks) use. First off, we'll set up the following two processes:


"show cooperative processing model"
coll := OrderedCollection new.
cond1 := 1.
proc1 := [[cond1 < 10] 
	whileTrue: [coll add: cond1.
						cond1 := cond1 + 1]].
proc1 fork.


cond2 := 20.
proc2 := [[cond2 < 30] 
	whileTrue: [coll add: cond2.
						cond2 := cond2 + 1]].
proc2 fork.

^coll

When you execute those two, and then inspect the collection, you'll see the following:

Process

Notice that the first process ran to completion before the second one ran. That's because they were both set up at the same priority - unless one of them yields the processor (for IO, or in code purposely), the first will simply run until completion. In the normal Smalltalk process model, only a higher priority process will preempt an existing one. To get a process to yield, use the #yield message, as seen below:


"show cooperative processing model - #yield"
coll2 := OrderedCollection new.
cond3 := 1.
proc3 := [[cond3 < 10] 
	whileTrue: [coll2 add: cond3.
						cond3 := cond3 + 1.
						Processor yield]].
proc3 fork.


cond4 := 20.
proc4 := [[cond4 < 30] 
	whileTrue: [coll2 add: cond4.
						cond4 := cond4 + 1.
						Processor yield]].
proc4 fork.

^coll2

That gives us the following:

Process

With the #yield being used, each process waits for any otter process (at the same or lower priority) to have a shot at the processor. What if one process is at a higher priority?


"show cooperative processing model - higher priority"
coll3 := OrderedCollection new.
cond5 := 1.
proc5 := [[cond5 < 10] 
	whileTrue: [coll3 add: cond5.
						(Delay forSeconds: 1) wait.
						cond5 := cond5 + 1]].
proc5 fork.


cond6 := 20.
proc6 := [[cond6 < 30] 	
	whileTrue: [coll3 add: cond6.
						cond6 := cond6 + 1]].
proc6 forkAt: Processor userInterruptPriority.

^coll3		

The Delay is used in the first process so that it doesn't run to completion before we even start executing the second process. The results are shown below:

Priority Levels

The first process starts running, goes into a wait state (the Delay), and then never gets the processor back so long as the higher priority process runs. That's how the scheduler works in Smalltalk.

Finally, what if you have a long running process that you need to kill? Simple - use #terminate:


"kill a process"
proc7 := [[true] 
	whileTrue: [(Delay forSeconds: 2) wait.
						Transcript show: 'Executing...'; cr]] forkAt: Processor userBackgroundPriority.
						
proc7 terminate.

Need more help? There's a screencast for other topics like this which you may want to watch. Questions? Try the "Chat with James" Google gadget over in the sidebar.

Technorati Tags: , ,

Enclosures:
[st4u186-iPhone.m4v ( Size: 9254001 )]

posted by James Robertson

 Share Tweet This

smalltalk

Pharo Sprints in February

January 27, 2012 11:42:38.769

There will be two Pharo Code prints in February - follow the link for details.

Technorati Tags:

posted by James Robertson

 Share Tweet This

js4u

JS 4U 126: Stopping Event Propagation

January 26, 2012 8:25:43.378

Javascript 4 U

Today's Javascript 4 You looks at using JQuery to stop event propagation. If you have trouble viewing it here in the browser, you can also navigate directly to YouTube.

Join the Facebook Group to discuss the tutorials. You can view the archives here.

To watch now, click on the image below:

stop events

If you have trouble viewing that directly, you can click here to download the video directly. If you need the video in a Windows Media format, then download that here.

You can also watch it on YouTube:

Technorati Tags: , ,

Enclosures:
[js4u126-iPhone.m4v ( Size: 1641286 )]

posted by James Robertson

 Share Tweet This

smalltalk

Smalltalk in London

January 25, 2012 14:32:18.000

The UK Smalltalk Users Group is meeting on January 30th, and the topic will be IDEs:

Building software is a complex business, software that works and stays in production for years. It is a craft that involves engineering, insight and skill. The tools that we use to build that software are vital enablers to our success. Between 1997-2004 the dominance of Java and the main vendors’ tools strategies led to something of a stagnation for IDEs. But since then with the return to language diversity and the broadening of platforms there has been a real opportunity to experiment with what an IDE is and means and to look at how it could evolve. We will look at a range of IDEs including WebVelocity, Cloud9 and Codea and contrast them with more traditional IDEs such as VisualWorks, IntelliJ’s IDEA and Eclipse.

posted by James Robertson

 Share Tweet This

st4u

ST 4U 185: Automating Unit Tests

January 25, 2012 8:36:28.532

Today's Smalltalk 4 You looks at automating unit tests in VisualWorks using SUnitToo. If you have trouble viewing it here in the browser, you can also navigate directly to YouTube. To watch now, click on the image below:

Automating Tests

If you have trouble viewing that directly, you can click here to download the video directly. If you need the video in a Windows Media format, then download that here.

You can also watch it on YouTube:

Technorati Tags: , ,

Enclosures:
[st4u185-iPhone.m4v ( Size: 5513597 )]

posted by James Robertson

 Share Tweet This

smalltalk

Morphic and Physics

January 24, 2012 20:41:20.673

Pharocasts has a nice series on Morphic and Physics

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

js4u

JS 4U 125: Event Results

January 24, 2012 8:38:38.185

Javascript 4 U

Today's Javascript 4 You looks at retrieving results from the last event handler in JQuery. If you have trouble viewing it here in the browser, you can also navigate directly to YouTube.

Join the Facebook Group to discuss the tutorials. You can view the archives here.

To watch now, click on the image below:

event results

If you have trouble viewing that directly, you can click here to download the video directly. If you need the video in a Windows Media format, then download that here.

You can also watch it on YouTube:

Technorati Tags: , ,

Enclosures:
[js4u125-iPhone.m4v ( Size: 1515033 )]

posted by James Robertson

 Share Tweet This

games

We've Added Affiliate Links

January 24, 2012 0:18:57.867

thuumcast

If you have a gaming oriented site that you would like to promote on our Thu'umcast page, let us know - we've added an affiliates area (check it out) to the front page!

Just drop us a line over at the Facebook group, or email me.

posted by James Robertson

 Share Tweet This

st4u

ST 4U 184: Processes in VA Smalltalk

January 23, 2012 8:22:36.626

Today's Smalltalk 4 You looks at processes (and the process model) in Smalltalk, using VA Smalltalk as our example. If you have trouble viewing it here in the browser, you can also navigate directly to YouTube. To watch now, click on the image below:

Processes.

If you have trouble viewing that directly, you can click here to download the video directly. If you need the video in a Windows Media format, then download that here.

You can also watch it on YouTube:


Today we'll look at processes in VA Smalltalk. That will involve looking at two classes: Process and ProcessScheduler. Class Process is displayed below:

Process

Creating a process is pretty simple - you use a Block, which we looked at in a recent tutorial. You can see the code we used to play with processes below:


"create a process"

cond := 1.
block := [[cond < 10] 
	whileTrue: [Transcript show: 'Condition is: ', cond printString; cr.
						cond := cond + 1]].
block fork

cond := 1.
block := [[cond < 10] 
	whileTrue: [Transcript show: 'Condition is: ', cond printString; cr.
						cond := cond + 1]].
block forkAt: Processor userInterruptPriority

		

To create a process, simply encapsulate the desired code in in a block. Then, rather than executing it with #value (et. al.), fork off the process, as you can see above. In VA Smalltalk, there are 8 priority levels (ranging from 1 to 8 as numeric values) - but you should use the named levels, which you'll find in class ProcessorScheduler:

Priority Levels

The reason you should avoid the named levels can be seen in what's happened in other Smalltalk implementations. VisualWorks originally had 8 priorities, ranging from 1 to 8. At some point, the engineering team at Cincom changed that to 100 levels, and remapped the named levels within the new range. Instantiations could do the same with VA; it's best to avoid future problems by using the API.

To see a process execute, try highlighting the code blocks above - you should end up with something like this in the Transcript:

Processes

Another thing to keep in mind - the Smalltalk process model uses green (lightweight) threads. That means that each Smalltalk process exists only within the context of the heavyweight VM process; a Smalltalk process is neither an OS level process nor an OS level thread. Additionally, the model is one of cooperative multi-tasking - processes at the same priority level will not yield to other processes of the same priority.

Need more help? There's a screencast for other topics like this which you may want to watch. Questions? Try the "Chat with James" Google gadget over in the sidebar.

Technorati Tags: , ,

Enclosures:
[st4u184-iPhone.m4v ( Size: 7981008 )]

posted by James Robertson

 Share Tweet This

humor

The Lighter Side of Javascript and Ruby

January 22, 2012 14:09:31.628

This video is hilarious:

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

podcastAAC

IM 62: ESUG 2011 Web Panel (AAC)

January 22, 2012 12:01:02.167

Welcome to episode 62 of Independent Misinterpretations - a Smalltalk and dynamic language oriented podcast with James Robertson and David Buck.

This week I have another session from ESUG 2011: a web panel including Dale Henreichs, Thomas Holzer, Esteban Lorenzano, Janko Mivsek, and Nicholas Petton.

You can subscribe to the podcast in iTunes (or any other podcatching software) using this feed directly or in iTunes with this one.

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.

If you like the music we use, please visit Josh Woodward's site. We use the song Troublemaker for our intro/outro music. I'm sure he'd appreciate your support!

If you have feedback, send it to jarober@gmail.com - or visit us on Facebook - you can subscribe in iTunes using this iTunes enabled feed.. If you enjoy the podcast, pass the word - we would love to have more people hear about Smalltalk!

Technorati Tags: ,

Enclosures:
[im62.m4a ( Size: 11352898 )]

posted by James Robertson

 Share Tweet This

podcast

IM 62: ESUG 2011 Web Panel

January 22, 2012 12:00:30.977

Welcome to episode 62 of Independent Misinterpretations - a Smalltalk and dynamic language oriented podcast with James Robertson and David Buck.

This week I have another session from ESUG 2011: a web panel including Dale Henreichs, Thomas Holzer, Esteban Lorenzano, Janko Mivsek, and Nicholas Petton.

You can subscribe to the podcast in iTunes (or any other podcatching software) using this feed directly or in iTunes with this one.

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.

If you like the music we use, please visit Josh Woodward's site. We use the song Troublemaker for our intro/outro music. I'm sure he'd appreciate your support!

If you have feedback, send it to jarober@gmail.com - or visit us on Facebook - you can subscribe in iTunes using this iTunes enabled feed.. If you enjoy the podcast, pass the word - we would love to have more people hear about Smalltalk!

Technorati Tags: ,

Enclosures:
[im62.mp3 ( Size: 8250416 )]

posted by James Robertson

 Share Tweet This