. .

st4u

ST 4U 207: Using log4s in VA Smalltalk

March 16, 2012 9:41:29.250

Today's Smalltalk 4 You continues our examination fo log4s, setting up a new logging channel (called an appender in the framework). 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:

Logging.

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 add a new logging stream (called an appender in the framework) using log4s. The same information gets logged to all streams for a given logger; we'll look at how to add new loggers in another screencast. First, recall how we specified the root level logger in the VA ini file:


[log4s]
debugEnabled=true
quietMode=false
globalLevel=All
dailyRollingFileAppender =(fileAppender, root, vaLog.log, false, Info, EsPatternLayout,
 'ڴe{ISO8601}: [%level] %message', true, topOfDay )


Now, if we send a logging event, as we do below, it drops out to our specified log file:


"simple log event"
EsLogManager warn: 'This is a warning, beware!'

What if we wanted another stream, on the Transcript? We could specify that in the ini file, or in code - as follows:


"Add a transcript appender programmatically"
level := EsLogManager getLevel: 'All'.
pattern := EsPatternLayout new: 'ڴe{ISO8601}: [%level] %message'.
transcriptAppender := EsTranscriptAppender level: level layout:  pattern.
logger addAppender: transcriptAppender.

Now, if we send that logging event again, it'll not only go to the file, but also to the Transcript:

Logging

We'll get into setting up new loggers in a future screencast

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:
[st4u207-iPhone.m4v ( Size: 3645789 )]

 Share Tweet This

games

On Mass Effect 3

March 16, 2012 17:03:28.061

I'm not going to give away any spoilers in this post - I'll link to this, which explains in very good detail what's wrong with the ending. Which is too bad, really - the rest of ME3 is quite good.

Here's what BioWare should do: release DLC that gives players the kinds of ending choices discussed in the linked article.

Technorati Tags: ,

 Share Tweet This

podcast

IM 70: Component Studio at ESUG 2011, Part 2

March 18, 2012 1:52:31.293

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

This week we have the conclusion to last week's ESUG 2011 presentation - here's the abstract on the talk from Georg Heeg - this is part 2, which you can watch here if you would rather see the video. You can listen to part 1 here

Georg Heeg AG purchased assets of CS Component Studio GmbH including the software and rights of CS Component Set. CS Component set is a toolbox of ERP components for small and mid-size companies. It has been developed over more than a decade and is in daily use in successful companies throughout Germany. The basic idea has been to have an ERP system which has many standard components for any business and is adaptable to specific needs of special businesses and individual companies. Georg Heeg AG plans to fully support existing customers and to bring the software to an up-to-date level and to implement new and innovative applications.

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:
[im70.mp3 ( Size: 3246270 )]

 Share Tweet This

podcastAAC

IM 70: Component Studio at ESUG 2011, Part 2 (AAC)

March 18, 2012 1:53:11.783

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

This week we have the conclusion to last week's ESUG 2011 presentation - here's the abstract on the talk from Georg Heeg - this is part 2, which you can watch here if you would rather see the video. You can listen to part 1 here

Georg Heeg AG purchased assets of CS Component Studio GmbH including the software and rights of CS Component Set. CS Component set is a toolbox of ERP components for small and mid-size companies. It has been developed over more than a decade and is in daily use in successful companies throughout Germany. The basic idea has been to have an ERP system which has many standard components for any business and is adaptable to specific needs of special businesses and individual companies. Georg Heeg AG plans to fully support existing customers and to bring the software to an up-to-date level and to implement new and innovative applications.

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:
[im70.m4a ( Size: 4677622 )]

 Share Tweet This

smalltalk

GSOC And Pharo

March 18, 2012 18:35:21.000

If you're a student interested in Smalltalk and want to get involved in the Google Summer of Code this year, then check out the projects page.

Technorati Tags: ,

 Share Tweet This

st4u

ST 4U 208: Pastell - XPath Type Capabilities in Pharo

March 19, 2012 8:21:40.446

Today's Smalltalk 4 You looks at using Pastell (for XML) in Pharo Smalltalk. 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:

XML

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:
[st4u208-iPhone.m4v ( Size: 2318891 )]

 Share Tweet This

stic12

STIC Conference Begins

March 19, 2012 10:29:47.819

After Georg kicked things off with an explanation of the name change, Chris Thorgrimsson - talking about their use of Cairo in their wafer fab software. The explanation of how they did graphics prior to using Cairo is interesting - lots of primitive "stop motion" stuff with CompositePart. They are still on VW 7.4, for reasons that sound very familiar to me - large organizations often have a whole set of constraints on them that aren't related to simple tech issues. Here's a link to the abstract.

They've integrated Cairo right into the VW GUI framework, with views (and eventually, controllers) that slot into the standard VW way of doing things. That included work to bring them into the GUI builder, making them easier to get started with. The layout (transform) editor for these components looks very nice - once the videos for the conference start hitting the web, you should have a look. On that subject, the conference has professional video work this year, so the audio quality should be a whole lot better than it has been in the past.

It's funny that Chris has to defend the use of Cairo, due to nervousness about external linking - people tend to blame any crash on Cairo. I say amusing because there was a perception where I work that any crash (an unhandled exception that brings the app down) meant a blue screen of death at the Windows level.

Technorati Tags: ,

 Share Tweet This

stic12

ObjectStudio Demo at STIC 2012

March 19, 2012 11:13:23.745

Arden Thomas (Cincom's product manager) is giving a live demo of ObjectStudio with Dirk Verleysen (one of their engineers) - this is another talk that will play far better on video (once those hit the web) than it will in text :) Basically, it's a quick demo of a simple app for a presumed client (a health/fitness club).

One interesting thing I've run into (doing a screencast, but also in theory looking at our database at work) - the database mapping (old to new) presumes a relatively clean database where all tables either have a primary key, or have some set of columns that can be used as a primary key. I've now seen that in the real world, that assumption doesn't always hold :)

Having said that, the demo itself is pretty slick. Read the datamodel, map it, and then create simple GUI application from all of that. Additionally, a simple web interface got created using AidaWeb, and that looks pretty nice.

Technorati Tags: ,

 Share Tweet This

stic12

Dart at STIC 2012

March 19, 2012 12:37:49.509

First keynote of the conference - Eric Clayberg talking about Google's Dart. Eric is deep into Dart at Google. Eric is working on a Dart editor (Eclipse) which we may get to. Why Dart? Building large web applications is hard - Javascript just isn't up to the task. Dart is supposed to bring structured programming to the web, along with good tools. Right now, Dart is really "alpha" stage software.

One of the biggest changes is isolates, inspired by Erlang. One of the large non-changes is the syntax, which looks a lot like Javascript. That's for obvious reasons; you need to sell it to world developers. Another design goal - Dart is intended to be used at the client (browser) and server level, rather than the common split that exists now.

As with the previous talk, a fair amount of this one will only come across in video - Eric's doing a bunch of Dart demos, from simple to more complex.

Technorati Tags: ,

 Share Tweet This

stic12

Amber at STIC 2012

March 19, 2012 15:04:18.199

Post lunch at STIC 2012 - time for Amber. John Thornton is giving the talk:

Amber is an implementation of the Smalltalk-80 language that runs on top of the JavaScript runtime. With Amber, client-side web development finally gets the power and productivity that has existed for decades in other Smalltalk dialects.

John started out in Ruby (Rails), and came across Smalltalk in 2009. The path was through a mobile game he was writing, SubWars.

Amber is a full browser based Smalltalk, with a full object model, core libraries, access to the web canvas, and a full featured IDE. Like most Smalltalks, it's largely written in itself.

Amber simplifies the workflow - edit everything (HTML, CSS, Javascript, Smalltalk) in the browser, and keep your "mental context" focused. This is another talk you'll want to watch the video for - John is doing live demos in an Amber driven presentation.

Technorati Tags: ,

 Share Tweet This

stic12

Log4s at STIC 2012

March 19, 2012 15:59:55.719

Don MacQueen is presenting log4s - a port of log4j to VA Smalltalk. I've been doing screencasts on this, so I'm interested :)

To set all of this stuff up, you'll want to look at the VA docs. Other than a few naming discrepancies, those docs are pretty good. And, they (Instantiations) eat their own dogfood - they are using log4s internally, and are talking about using it more extensively.

Technorati Tags: ,

 Share Tweet This

stic12

Security Reloaded at STIC 2012

March 19, 2012 17:15:07.411

Over the last year or so, there's been a lot of confusion surrounding the security (encryption) libraries in Cincom Smalltalk - an ugly confluence of US government regulation confusion and lawyers :)

The good news? The kerfuffle (apparently settled now) led their engineering group to add bindings to external encryption libraries. That means that now developers have two paths through CST - use the Smalltalk libraries (always there), or use the faster platform libraries (if they are installed).

What libs? CNG/Bcrypt on Windows (Vista or higher), and libcrypto (openSSL) elsewhere.

There are a few API changes that come along with these changes - in PKCS8, X509, and SSL/TLS. The SSL/TLS implementation has been completely redone, with support for SSL3.0 (TLS 1.0 - 1.2).

Technorati Tags: , ,

 Share Tweet This

js4u

JS 4U 141: Time and Date in Javascript

March 20, 2012 8:29:26.068

Javascript 4 U

Today's Javascript 4 You takes a brief look at the Date object in Javascript. 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:

Date

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:

Enclosures:
[js4u141-iPhone.m4v ( Size: 1268934 )]

 Share Tweet This

stic12

Day 2 Begins

March 20, 2012 9:39:14.007

Mike Taylor kicked off day 2 by reminding everyone here about the drawing for a Kindle Fire at 5 PM - and the odds of winning that are way better than the odds of winning at one of the slot machines downstairs :)

 Share Tweet This

stic12

Code Completion in VA Smalltalk

March 20, 2012 10:19:04.202

Seth Berman - who's relatively new to the VA team at Instantiations - built the new code completion facilities for the tool. I've done a screencast on that - and Set looked at various other implementations (VW, Pharo, non-Smalltalk tools) before calling his work done.

Lots of new stuff in 8.5.1 - when I did my screencast, it was in 8.5. Sounds like I need to go back and have another look. It sounds like you can configure the way this works a lot more than you could with the first release of it.

Here's the abstract:

Code Completion allows for developers to type less by predicting how to complete what is being typed and offering these predictions to the developer to select from. Code Completion was first introduced in VA Smalltalk 8.5, but development didn’t stop there. Many additional features have since been added and it has continued to improve in usability and configurability. This presentation will show Code Completion in action by providing a thorough demonstration of its capabilities in the browsers, debuggers and workspaces. Furthermore, an overview of its extensive set of configuration options will be given to show how one can create a completely customized experience.

There's more coming for this, too - tighter integration with the existing code assist features being the biggest. As with many of these talks, you'll want to see the video (when STIC releases it) for the demo.

Ok, this is cool. The CamelCase matching is really quite nice. If you type in RWS, it knows that you mean "match by camel case", and offers "ReadWriteStream". This is the kind of intelligent help that experienced Smalltalkers could make great use of, and it makes long descriptive names easier to use. Works for methods, too: #add:afterIndex: comes up if you type aai - each character after the : gets treated (for matching purposes) as if it were a capital in camel case.

Also:


x := OrderedCollection new.
y := x
z := y.

Doing code completion on z (or x or y) offers methods from OrderedCollection. There's a setting option to filter out all of the inherited from Object stuff too. In general, the completer uses static analysis/type reconstruction to help it decide what to offer.

Technorati Tags: ,

 Share Tweet This

stic12

Gemstone Futures

March 20, 2012 10:59:32.362

Norm Green is explaining what's going on with Gemstone - 2.4.5.1 is the next (minor) release, with all of the big stuff happening in the 3.x version stream (which is where all future work is happening). It has a JIT, an FFI interface (obviating the need to hook in at a low C level). Martin McClure presented that at last year's ESUG. I'd provide a link, but I can't find it in the playlist.

Gemstone is now multi-threaded, and each thread (OS thread) uses a GS session. You get a fair bit of control over how aggressive you want that to be.

Smalltalk changes - arrays are constructed (runtime) with curly braces, in line with Pharo (and VW with extensions). ANSI exceptions now standard, old stuff deprecated.

There's a few metaclass level changes due to MagLev work - should be transparent. The upgrade should be easier than the last few, but Smalltalk code does need to be filed in (there are byte code changes).

The next major release - 3.1 - should ship mid June, 2012

Technorati Tags: ,

 Share Tweet This

stic12

Build Talk Done

March 20, 2012 15:22:15.303

I think my talk was pretty well received - it went well, and my slides will be posted on the site soon. I'd do it now, but the slides are over on my work laptop :)

Technorati Tags:

 Share Tweet This

stic12

VA Smalltalk Update

March 20, 2012 16:13:18.520

After a bit of a fight between John O'Keefe's laptop and the projector, we're on to a VA Smalltalk update. Lots of news on the website - new forum, and a videos/podcasts page.

Version 8.5.1 just came out this month - and based on Seth's earlier talk, there's some really cool stuff in it. The highlights of the new stuff:

  • Code Completion
  • SUnit update - support for "expected failures"
  • Log4s (Logging Framework based on Log4j) (updated with asymch support)
  • Updated to a new preference setting framework. They plan to move most or all things to that over time - uses a standard .ini file format (key/value pairs)
  • Marking code as deprecated via a new exception - you get the error, but you can handle it
  • Support for mapping logical names of external libraries to real names via an external ini file - allows non-Smalltalk changes in platform to be migrated to easily
  • Updated VA to support the latest Windows updates to the progress bar control
  • Added support for date/time controls
  • Support for HTTP chunked transfer encoding
  • Improvements in support for SST, GLORP, and validate on Fedora Core, OpenSUSE, and Ubuntu 11
  • Lots of bug fixes

Still doing two releases a year - next one planned for 3rd quarter 2012

Possible futures - full unicode, Seaside 3.x, continuations, multipart form support, WS* updates, validating XML parsing, GTK+ 2.x on Linux, more Windows controls, better icon support, more dev tool work. They have a Monticello importer done.

Technorati Tags: ,

 Share Tweet This

stic12

Smalltalk, GLORP, and Legacy Apps

March 20, 2012 17:06:35.256

Mark Grinnell and Andreas Hiltner (Cincom) are giving something of a continuation of the talk Arden gave yesterday - how to get a new web application up and running when what you have is a set of older legacy applications.

The legacy domain is medical data - and the baseline idea is that the legacy systems are from a bunch of different labs, and can't be updated/retired - they need to keep running as is. Any new system is additive, not a replacement. The goal is to create a web app that creates a unified view over the top of the disparate ones from the multiple labs (for instance: different IDs for patients in each system).

The next bit is demo - you'll really have to wait for the video to see that. The demo is using the same glorp mapping approach Arden talked about, just in front of a larger problem.

Technorati Tags: ,

 Share Tweet This

stic12

Cincom Smalltalk Memory Management

March 20, 2012 18:07:14.082

Last talk of the day - memory management in Cincom Smalltalk. There have been changes in this area over the last couple of releases, which is good - I learned a fair bit about the old stuff (caveat: having said that, I only ever scratched the surface), and the new stuff makes it a bit more accessible. Andres Valloud is giving the talk - he's starting with some basic background on memory management in CST (eden, survivor spaces, all of that stuff - I'll refer you to the docs for a broad discussion of that).

What's been fixed since VW 7.7?

  • The way IGC (incremental garbage collector) handles aborted state - properly now.
  • Adjusted the default setting for the Growth Regime Bound (was 32 MB, now more sensible). Having that default led to much thrashing
  • Also moved the emergency threshold back from the raw upper bound, to allow for actual emergency handling
  • Changed growth increment default from old (1 MB) to something more reasonable
  • FixedSpace allocation has been fixed
  • Improved weak/ephemeron support
  • IGC improved - including the ability to turn IGC on and off
  • some protection for stack overflow
  • new switches for the VM on the command line - so you don't need to adjust the numbers and resave the image

The development team at Cincom has created a test suite for all of this stuff, which has already been a big help. They've added a tuner that will make suggestions for optimization.

Technorati Tags: , ,

 Share Tweet This

gadgets

Massive Storage

March 20, 2012 21:33:41.000

This is amazing:

The technology used to achieve the benchmark, which Seagate said it would introduce in products later this decade, will also lead to the production of 3.5-inch hard drives with up to 60TB of capacity.

I'm trying to figure out how cloud based backup (heck, any backup) strategy works with that. With that much space, I'd never worry about how much space a VM took up again....

 Share Tweet This

st4u

ST 4U 209: Creating a new Logger with log4s

March 21, 2012 7:53:08.913

Today's Smalltalk 4 You delves deeper into log4s, looking at how to create a new logger in code (as opposed to in the ini file). 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:

log4s.

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 create a new logger in VA Smalltalk, programmatically. Recall that the way we set up the standard (root) logger to write to a file was via the ini file for the VA image:


[log4s]
debugEnabled=true
quietMode=false
globalLevel=All
dailyRollingFileAppender =(fileAppender, root, vaLog.log, false, Info, EsPatternLayout,
 'ڴe{ISO8601}: [%level] %message', true, topOfDay )


What we need to do today is create a brand new logger:


"create a new logger using the Transcript"
myLogger := EsLogManager createLogger: 'myLogger'.
level := EsLogManager getLevel: 'All'.
pattern := EsPatternLayout new: 'ڴe{ISO8601}: [%level] %message'.
transcriptAppender := EsTranscriptAppender level: level layout: pattern.
myLogger addAppender: transcriptAppender.

That creates a brand new logger using the name 'myLogger' - to use it, we now need to specify that specifically (without being specific, we get the root logger):


"use the root logger"
EsLogManager warn: 'This is a warning!'.

"use the new logger"
(EsLogManager getLogger: 'myLogger') warn: 'This is another warning!'.


The first warning goes to the file logger set up on root; the second one goes to the Transcript using the new logger.

We'll delve more into the settings and filtering options for log4s in a future screencast

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:
[st4u209-iPhone.m4v ( Size: 4192505 )]

 Share Tweet This

smalltalk

The Pharo Vision

March 21, 2012 10:03:59.862

The Pharo project has moved forward on their vision -

We worked a lot with INRIA lawyers and tried a lot of different scenarios. We arrived to a setup that make sense now we would like to get your input. Please have a look at the following powerpoint presentation and feel free to comment!

You can grab the PDF version of the vision document here.

Technorati Tags:

 Share Tweet This

stic12

New Smalltalk Projects

March 21, 2012 10:14:25.182

First talk of the day: Georg Heeg is talking about doing new projects in Smalltalk.

Some of this has to to with improving CRM systems (intelligent guidance as opposed to classic UI design) - Heeg has been helping with product development on that. The main message of the talk is that Heeg's company is involved in new project development using Smalltalk.

Technorati Tags: ,

 Share Tweet This

stic12

Cloud Foundry

March 21, 2012 10:36:34.252

James Foster is expaining CloudFoundry - a service VMWare is building out for public and private cloud services. Part of this presentation is an audience participation demo using CloudFoundry - I'd talk about that more, but we had issues getting the necessary parts installed on my Mac :) It looks cool, but it looks like the setup requires more than the handful of minutes I was able to devote to it.

The next bit you can follow along on the video once that's released - or contact James Foster, who I'm sure will be more than happy to talk you through it.

There are some interesting issues with getting Smalltalk into this kind of service - it's a monolithic image, as opposed to a small runtime that you muck with via small text files. Additionally, that image needs to run continuously, as opposed to running on demand only. Interestingly, the solution here looks a lot like what I do to run this blog (with the caveat that what I do is way less formalized).

  • Push new code to service
  • launch Smalltalk, load code, save image
  • launch saved image
  • Start HTTP Server on specified port

The result of all this some baseline support for a Gemstone service in the cloud - which is pretty cool.

Technorati Tags: , ,

 Share Tweet This

stic12

Cincom Smalltalk Update

March 21, 2012 12:12:17.714

Instantiations updated us on VA yesterday - today it's Arden's turn with Cincom Smalltalk.

New releases of VW and OS are coming by June of this year - 4 major releases over the last 2 years, plus minor ones. New stuff recently:

  • Unicode VM
  • Store revamped (Glorp underpinnings)
  • Atomic Loading from Store
  • Updated Delays (uses OS clock)
  • Improvements to the Mac VM
  • New Pre-req engine for Store
  • 64 bit support has improved vastly
  • Store browsers now (finally :) ) using the RB
  • Merge tools updated
  • Seaside support is up to date with each release

Coming soon:

  • External encryption (as documented by Martin)
  • Speed improvements in Store
  • Configuration Management
  • ipv6

ObjectStudio - Arden points out that the modeling and mapping tools are OS specific, but the outputs can be used in VW as well (the GLORP mappings). See this talk and this talk for more on that.

Tools for GLORP - use ObjectStudio, publish the results to Store, use in VW or OS. OS has better integration with the Runtime Pacakager tool as well. One of the main new things on the OS roadmap (other than continued DB modeling/mapping support) is 64 bit support.

New stuff in VW: COM updates, internationalization improvements, better look (icons). What's Notable?

  • Project Launcher
  • Polycephaly (supports multiple cores/cpus)
  • GC improvements (see Andres' talk)
  • Xtreams

The new work looks like it's moving the stuff listed above forward - but there's also some interesting UI work (Skins) that Travis will be talking about next. Once that's posted, scroll up :) Also on the radar - dllcc improvements, Windows 8 support (metro?), code completion, WebSockets, font improvements. Kind of the summary statement - a lot of the product changes are driven by customer feedback and needs.

Release Cycle: Annual major releases, maintenance releases (actually maintenance :) ) in between.

Technorati Tags: ,

 Share Tweet This

stic12

Skins in the VW UI

March 21, 2012 12:59:46.954

Travis has mentioned the Skins (UI) work on his blog before - and today he's going to talk about it at STIC.

The VW widget set is an emulate done - the problem with moving it forward has to do with how fast UIs evolve in the host OS, and the limited manpower available to keep up with that. On the other hand, lots of legacy code relies on this stuff. Another issue - in the VW MVC model, the view and controller are really, really tightly coupled. The model tends to be more coupled than we'd like as well.

Over time, this got more complex with the addition of layout wrappers which again got more tightly coupled with the views than maybe they should have been. Then there are state wrappers (enablement) - and from there the wrapper party just grew like weed, and trackers just made things more complex. Then you add in all of the subclasses for views, controllers, and trackers....

Skinny goals:

  • Offload drawing to external resources
  • incremental on/off
  • grow in place replacement (not a big bang)
  • avoid a massive rewrite of platform interfaces
  • address some of the issues in the VW widget set
  • play the subclass card differently

Widgets will be simpler - manage own state, use models when they make sense. Layouts are being punted for now, the existing stuff is still in play, with some small mods. Controllers are out. State is being handled in a properties dictionary, and VisualPart already had that. Drawing - that's where things are offloaded to a strategy/policy pattern. The Skin api tend sto be a large, flat collection of methods, with a generic DNU handler for methods that follow the conventions.

The rest of the presentation is a demo - as with many of the other talks, you'll really need to wait for the video to see what happened here :) What he showed was a skinned Windows (XP in a Mac VM) and a skinned OS X Lion. Linux (GTK) is still being investigated, but using Cairo he got something pretty nice out (KDE Look) in a day.

This is in 7.9 builds, but not enabled. It can be turned on. There's still work to do on the more involved widgets, but it's taking shape. It is a a work in progress, but can be played with now.

Technorati Tags: , ,

 Share Tweet This

stic12

Dave Buck on Fluid Positioning in VisualWorks

March 21, 2012 15:15:49.732

Dave Buck is presenting some interesting work he's been doing - fluid positioning. We've talked about this some on the podcast, but it's a topic well worth exploring in more depth. There's also a video Dave put out last summer. The basic idea: allow widgets in a VW window to be laid out relative to each other, and seamlessly reposition themselves (in the GUI builder) as you move things around.

The baseline goal - make it all easy to work with in the UI. In casting about for other work on this subject, Dave needed something that worked the way he needed it to work - Aukland was something he had to push off. He's now on his second iteration of the work, because his first stab "almost" worked. Almost just wasn't good enough :)

At this point, you'll have to wait for the video to see the first iteration - it's a demo.

Issues? Undo doesn't work right with groups. Heck, undoing a group loses properties s-is :)

in algorithm two, he's not dealing with groups or oriented composites. Instead, he's modeling the layout explicitly. His new take on this looks much cleaner, and doesn't force groups on the UI (which lets the developer add them for their own purposes later). In this demo, it's clear that there's still work to do - widgets sometimes get oddd sizes based on his layout calculations.

Still work to do on save/restore, dealing with existing specs, and the one layout issue. One big lesson: tests help, but they aren't enough here - some it relies on the "mark one eyeball" :)

 Share Tweet This

stic12

Practical Git for Smalltalk

March 21, 2012 15:52:29.622

Last main talk of the conference - Dale Henrich's on using Git with Smalltalk. Caveats:

  • Git can be used well with Smalltalk
  • It's not practical to expect all dialects to switch wholesale off whatever they use now
  • It can be used to share code across dialects

What about the stock stuff, like ENVY, Store, and Monticello? High cost of porting the tools between dialects, and they tend to be tightly coupled with their "home" toolsets. The implementation as it exists now is called FileTree. The basic implementation is based on Monticello - but the disk structure does not rely on Monticello artifacts, and works in Pharo, Squeak (and thus GLASS).

The FileTree package structure is SCM neutral, so it could be used with any standard SCM toolset. What's a Package in this context? an object or algorithm that defines the contents of a Snapshot. A Snapshot is the state of a Package at a given point in time. In an image, a Snapshot is represented as a collection of class and method definitions. On disk, it's class and method chunks in a collection of .st files.

By saving packages this way, it leverages what Git can do from a "what changed over time" standpoint. Status? This comes from work that has been ongoing for a bit in the Pharo world, so it's actually being used "in the real world". Right now, it's suitable for anyone using Monticello. There's work to be done to accommodate this to all dialects (in terms of file format alone).

Dale says that Envy and Store were better options in the mid 90's, but Git/GitHub is better now. Right now, GST, Redline, and Amber are all using GitHub. Using Git is an upgrade from Monticello, but for Store/Envy it's more of a way to share code. It's an addition, not a replacement.

Technorati Tags: , ,

 Share Tweet This

stic12

STIC 2012 Wraps

March 21, 2012 17:40:09.865

After a lot of short (5 minute) lightning talks, we've reached the end of STIC 2012. I'm told that the videos (which I've been referring to in this series of posts) will be posted soon - check the STIC website for details.

STIC 2013 has just been announced: June 2013 in Arizona. The dates aren't nailed down yet, but there it is! Want a discount on registration? Send Suzanne (you know her email address if you're a Smalltalker) an email with "STIC 2013" in the subject line. The call for research papers for next year is also out already - check stic.st for details.

Technorati Tags:

 Share Tweet This

js4u

JS 4U 142: Timestamps in JQuery

March 22, 2012 8:47:27.006

Javascript 4 U

Today's Javascript 4 You looks at using Timestamps in JQuery for simple profiling of functions. 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:

profiling

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:
[js4u142-iPhone.m4v ( Size: 1856144 )]

 Share Tweet This

smalltalk

Pharo and Oracle

March 22, 2012 21:27:38.824

I'll have to check this page out (I'm future posting this from a plane at the moment) - Pharo and Oracle help. The last time I tried to get those two to talk, I had issues :)

Technorati Tags: ,

 Share Tweet This

stic12

Smalltalk Research

March 23, 2012 7:24:45.220

The call for papers for the next STIC came out on the ESUG mailing list, from Georg Heeg:

In June 2013 we will also have Smalltalk Directions 2013 organized by Smalltalk Academic Advisory Board STAAC. The formal call for papers will go out soon. But you can start planning to submit your research results today. The topics will probably be along the lines of this year’s call for papers. The papers will get reviewed and published and in the presentation you will get into contact with co-researchers and industrial Smalltalk users from all over the world.

Technorati Tags: ,

 Share Tweet This

smalltalk

Pharo in the Spring

March 23, 2012 9:28:07.000

 Share Tweet This

st4u

ST 4U 210: Filtering Logs by Level

March 23, 2012 9:33:19.442

Today's Smalltalk 4 You looks at filtering logging events in log4s using logging levels. 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:

Logging.

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 closer look at logging levels in log4s. To quote the documentation in VA Smalltalk:

The concept of levels is central to log4s. A loggingEvent will be logged by an Appender if the level of the loggingEvent is greater than or equal to the level of the Appender. Both LoggingEvents and Appenders have levels. Log4s has seven predefined levels which are implemented as EsLevel class variables.

There are 7 levels to logging - in order from the lowest (everything gets logged) to the highest (nothing gets logged), they are: All, Debug, Info, Warn, Error, Fatal, Off. So if you set the level for an appender to "Error", and then send a "Warn" level message, it will not appear in that appender's stream. For example - recall that we've set up the root logger with a file appender:


[log4s]
debugEnabled=true
quietMode=false
globalLevel=All
dailyRollingFileAppender =(fileAppender, root, vaLog.log, false, Info, EsPatternLayout,
 'ڴe{ISO8601}: [%level] %message', true, topOfDay )


That will log everything to a file. Let's set up a new appender to the Transcript, but set it up at the "Error" level - meaning, it will ignore all logging events under that:


"Add a transcript appender programmatically, but set at a higher level"
level := EsLogManager getLevel: 'Error'.
pattern := EsPatternLayout new: 'ڴe{ISO8601}: [%level] %message'.
transcriptAppender := EsTranscriptAppender level: level layout:  pattern.
logger addAppender: transcriptAppender.

Now we have two appenders for the default logger - the file appender will get every logging event, while the Transcript will only see things at level "Error" and above. To demonstrate, let's send a warning event:


EsLogManager warn: 'This is a warning!'.


The File log has that, while the Transcript is blank:

Logging

Now let's send an error level event, and look again:


EsLogManager error: 'This is an Error!'.

Logging

Notice that this time, the event hit both logs - the file appender gets everything, while the Transcript appender got the higher level event only. Next time, we'll get into filtering and the print format.

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:
[st4u210-iPhone.m4v ( Size: 5721668 )]

 Share Tweet This

games

A Modest Proposal for ME3

March 23, 2012 22:17:17.625

I've finished the game on the PC, and I'm playing through a second time on my XBox. In that second game, I've just gotten through the end of the Geth/Qurian confrontation. Here's my proposal:

The people who wrote that part of the game? They're awesome. The moron who wrote the end? He needs to be removed from the Mass Effect franchise, post haste. Having done that, have the people who wrote the second act give us an ending that makes sense. That doesn't mean a "happy" ending, btw - it would be entirely reasonable for the ending to be sad.

But it should make sense.

Technorati Tags: ,

 Share Tweet This