Planet Smalltalk

September 28, 2016

Pharo Weekly - Pharo Mooc in Numbers

September 26, 2016

Torsten Bergmann - Pharo the Immersive Programming Experience

Torsten Bergmann - Amber Release 0.16.0 is out

Torsten Bergmann - Another Pharo success story

is online on the webpage. This time Sorabito with ALLSTOCKER - Asia's largest online marketplace for industrial machinery.

Torsten Bergmann - Theming your Pharo

Pharo is YOURS - so you can adopt it in any way. Even creating an own UI theme in Pharo is easy - as Luke Gorrie from Snabb demonstrates with his simple theme.

September 24, 2016

Pharo Weekly - Pharo libclang FFI

hi all,

Just announcing that I'm writing a series of posts on using FFI in
Pharo 5 to interface to libclang, the interface library for the LLVM C
compiler.

http://blog.openinworld.com/2016/09/pharo-libclang-ffi-part-1-preamble/

I'm writing this from the perspective of a FFI newbie progressively
learning the system.  I've left in a few mis-steps since I think it
can be useful seeing what didn't work.

cheers -ben

Pharo Weekly - Continuous improvements

60238
18987 Extract asClass and friends in a separate package and deprecate
https://pharo.fogbugz.com/f/cases/18987

19128 Deprecation: The method Object>>name called from KMRepository>>#addCategory: has been deprecated.
https://pharo.fogbugz.com/f/cases/19128

19117 Another stab at iconNamed: cleaning…
https://pharo.fogbugz.com/f/cases/19117

60237

This is:

– case 19032
– testLocalMethodsOfTheClassShouldNotBeRepeatedInItsTraits was failing due to #isLastInOwner
– add manifest wit preUnload action in GTDebugger

But:

=> 19032 seems to be not fixed. (there is still a sender if #ifNotNilDo:)

=> the gt problem with testLocalMethodsOfTheClassShouldNotBeRepeatedInItsTraits was fixed, but in the meantime
we got more problems (from epicea). This is a nice example how not fixing a trivial bug leads to more decay fast
that we do not even know about. “yes, that test fails and I know why. Will be fixed when we merge”.
What happens instead is that this “known failure” will fail soon due to many more other reasons… that nobody is
even aware of.

Trivial is not trivial.. that is why one needs to fix them as soon as possible and *never* think that batching trivialities is
a good idea…

60236
19039 Optional source code annotation pane Nautilus
https://pharo.fogbugz.com/f/cases/19039

18482 Typing a large number into a playground freezes the image
https://pharo.fogbugz.com/f/cases/18482

19124 enhance Deprecation to log sending method
https://pharo.fogbugz.com/f/cases/19124

19122 Remove category from Opal
https://pharo.fogbugz.com/f/cases/19122

18788 TxTextStyler do not work
https://pharo.fogbugz.com/f/cases/18788

60235
19023 debug menu in GTDebugger
https://pharo.fogbugz.com/f/cases/19023

19101 Unload CubeHelix
https://pharo.fogbugz.com/f/cases/19101

19116 FTRootItem>>expandAll sends deprecated #name message
https://pharo.fogbugz.com/f/cases/19116

60234
19115 formatter should not modify symbol formatting in literal arrays
https://pharo.fogbugz.com/f/cases/19115

19119 Integrate Epicea 8.0.2
https://pharo.fogbugz.com/f/cases/19119

60233
18327 SystemWindow reset his borderWidth on #themeChanged
https://pharo.fogbugz.com/f/cases/18327

18825 The current Pharo Fuel platform is still FLPharo5Platform and cannot be reset
https://pharo.fogbugz.com/f/cases/18825

18731 NeoUUIDGenerator should not rely on Network-Kernel package
https://pharo.fogbugz.com/f/cases/18731

18933 unload Collections-Grid and Collections-Grid-Test
https://pharo.fogbugz.com/f/cases/18933

60232
18963 DANode>>#browseClass: sends unimplemented fullOnClass:
https://pharo.fogbugz.com/f/cases/18963

19113 Problem with selection in rubric (select from line beginning)
https://pharo.fogbugz.com/f/cases/19113

18594 Remove references to Smalltalk evaluate: from Fuel
https://pharo.fogbugz.com/f/cases/18594
60231
19110 DNU on menu counter
https://pharo.fogbugz.com/f/cases/19110

19091 Problem adding breakpoint through suggestions
https://pharo.fogbugz.com/f/cases/19091

19108 Logging error stack should not hang image and prevent opening debugger
https://pharo.fogbugz.com/f/cases/19108
60230
19104 Typo in SizeMismatch error message
https://pharo.fogbugz.com/f/cases/19104

19051 Do not reinit selector table on startup (takes too long)
https://pharo.fogbugz.com/f/cases/19051
60229
19096 String selection behaviour in code editor is not logical
https://pharo.fogbugz.com/f/cases/19096

19035 Default time limit for tests should be small
https://pharo.fogbugz.com/f/cases/19035

60228
19102 Another clean iconNamed: phase…
https://pharo.fogbugz.com/f/cases/19102
60227
16877 another endless debugger loop
https://pharo.fogbugz.com/f/cases/16877

19097 Move to instance side refactoring of class method in the sender list is mispelled
https://pharo.fogbugz.com/f/cases/19097

19098 FuelOutStackDebugAction uses incorrect debugger API
https://pharo.fogbugz.com/f/cases/19098

60226
19094 cleaning iconNamed:
https://pharo.fogbugz.com/f/cases/19094

60225
19093 WeakSet anyOne is not work correctly when only nil there
https://pharo.fogbugz.com/f/cases/19093

19089 About dialog: add a space to Pharo6.0…
https://pharo.fogbugz.com/f/cases/19089

17881 loading package which add extension method to trait from external package makes loadable package dirty
https://pharo.fogbugz.com/f/cases/17881

19077 extend ClassDescription>>printSubclassesOn:level: to have a filter
https://pharo.fogbugz.com/f/cases/19077
60224
19092 TestExecutionEnvironment should clean all intercepted processes collections when test completes
https://pharo.fogbugz.com/f/cases/19092

19088 simplify newAnonymousSubclass in MetaClass
https://pharo.fogbugz.com/f/cases/19088

60223
19083 Introduction of FullBlockClosures (as an option)
https://pharo.fogbugz.com/f/cases/19083

60222
19085 Integrate Epicea 8
https://pharo.fogbugz.com/f/cases/19085

Change log:

– Pass on UI + search more consistent names (e.g. session -> log).

– Replace “Session Browser” by “Log Set” from EpiceaHiedra experimental package.

– Add EpMonitorModel, to manipulate EpMonitor via UI.

– Rename: apply/revert instead of redo/undo.

– Fix 18946: package does not exist when a category removal is announced.

– Fixes for Dark theme.

– Avoid using #name in some cases.

– Make EpLogBrowser composable (it needs to be correctly initialized when created with #new).

– Optimization: reuse entryReader with an instance variable.

– Encapsulate morph creation to a new class: EpMorphFactory.

– Delete Trait issue (case 19045): Avoid sending #name to nil.

– Add EpMonitor>>debug setting

– Ombu writing entries: Do not catch all Error but FileException.

– Ombu: Move writing error handling to EpMonitor.
60221
19087 Tracking of processes during test run should not keep processes strongly.
https://pharo.fogbugz.com/f/cases/19087

18755 Variable-button raises “SubscriptOutOfBounds: 1” when a Trait is selected
https://pharo.fogbugz.com/f/cases/18755

17543 VM crash in Windows when compiling many symbols
https://pharo.fogbugz.com/f/cases/17543
60220
19086 do not allow expressions as pragma arguments
https://pharo.fogbugz.com/f/cases/19086
60219
17857 newAnonymousSubclass should works for Metaclass
https://pharo.fogbugz.com/f/cases/17857

19082 The tool to do updates is broken due to space in SystemVersion
https://pharo.fogbugz.com/f/cases/19082
60218
19079 CriticBrowser can not show result for transformation rules anymore (DNU)
https://pharo.fogbugz.com/f/cases/19079

19071 FuelOutStackDebugAction should not hide error
https://pharo.fogbugz.com/f/cases/19071

60217
18463 ReleaseTest>>#testMethodsWithUnboundGlobals is failing
https://pharo.fogbugz.com/f/cases/18463

19057 Failing test: SHParserST80Test.testNumberHierarchy
https://pharo.fogbugz.com/f/cases/19057
60216
19049 Unify Dictionary APIs
https://pharo.fogbugz.com/f/cases/19049

60215
19074 comment all RBRefactoryChange classes
https://pharo.fogbugz.com/f/cases/19074

19069 SUnit test suites should be run on singe TestExecutionEnvironment
https://pharo.fogbugz.com/f/cases/19069

60214
19073 Image snapshot should be forcible executed un DefaultExecutionEnvironment
https://pharo.fogbugz.com/f/cases/19073

60213
19076 New assert extension to compare floats by closeTo
https://pharo.fogbugz.com/f/cases/19076

19068 SUnit failed tests during command line or monkey run
https://pharo.fogbugz.com/f/cases/19068


September 23, 2016

Pharo Weekly - Material Design Lite for Seaside

Hi everyone!

I am happy to announce the version 1 of Material Design Lite for seaside.

This version contains all components from V1.2.1 of Google's Material
Design Lite (https://github.com/google/material-design-lite,
http://getmdl.io)

This version also contains some widget build in top of MDL as:

    Pagination widget
    Sorted Paginated Table
    Select Widget
    Poll Widget
    Calendar Widget
    Nested List with dynamic loading and search function

Thanks to Kévin Lanvin, Olivier Auverlot, Thomas Heniart, Merwan Ouddane
and Guillaume Larcheveque who helped to release this version.

Thanks to Sabine Mana for the feedback she gave.

You can find the project on:

https://github.com/DuneSt/MaterialDesignLite

There is some documentation of the README.

If you find a bug you can open an issue on the repository.
If you have some question I will be happy to answer.

Torsten Bergmann - MaterialDesignLite for Seaside

The project MaterialDesignLite to provide MDL for Seaside reached first milestone 1.0.0. A demo can be seen here.

Torsten Bergmann - Railway modeling in Smalltalk

Railway modeling in MetaEdit - a tool written in Smalltalk. Reminds me of RUT-K from german railway, a large Smalltalk project for train schedule planning that I helped shaping

September 22, 2016

Benoit St-Jean - A Small Contribution

It’s official, they’re gonna add my Trie implementation into Pharo 6.0!!!  Funny enough, I had forgotten about that code.  I’ll have to check if that old version has bugs or performance problems and fix it if it’s the case!


Classé dans:Pharo, Smalltalk Tagged: Pharo, Smalltalk, trie

September 21, 2016

Travis Griggs - Two Years Later...

So nearly two years later, I've stuck with it. I am not a Swift expert, but I no longer use Objective-C. I have written a small app in Swift. And rewrote my much larger app in 100% Swift. Plus also written a few small test/demo apps.

Here's a recap on my original observations:

Out of Date Information - This remains an issue. But seems to burn me less lately. I've learned to always look in the newly integrated doc viewer first. Some, but not all, StackOverflow posts get updated to match Swift3. The mailing list is always current. I make sure if I ask a question on SO, that I make it clear I'm doing Swift3.

Replacing one Legacy with Another - Apple's aggressive integration makes this a lot less than I expected. The fact that most APIs follow the Swift naming conventions instead of being obviously converted from keyword style naming makes it seem less legacy already. The aggressive attitude of replacing oft used types with bridged variants also makes it seem legacy (e.g. Date replacing NSDate). My apps need no @objc qualifiers, so the need to have legacy rubbed in my face is obviously disappearing quickly.

Head Turning Paradigm - The human brain can adapt to some things pretty quickly. This appears to have been one. In fact, I actually prefer the "type post cedes" rather than "type precedes" pattern. I still do quite a bit of C, so it's not just me moving on. I have to do both approaches regularly, and I actually like this. I've even begun to use the optional typing in Python which follows the same notation.

:, :, and : - This has turned out to not bother me much. I don't really notice it in fact. The dictionary thing never shows up much. The tools quickly correct me if I get a dictionary/array mismatched. The other two uses just seem natural now. It still can seem a lot of typing (especially now that default first arguments have been deprecated), but the auto completer keeps me from noticing how much I spell things out.

Wrap, Unwrap, Ugh - Doesn't bother me at all anymore. Especially once I figured out how to extend Optional with ifNil and ifNotNil methods. Sometimes I get a bit tired of nested if let... statements.

Refactoring - Still miss this a lot. But lets face it, I don't have much refactoring support in my C or Python stuff.

At two years in, I like Swift. As an older more polyglotted developer, I don't love it like I did other systems in my younger more idealistic years, but it works for me. I often think "this is like a C++ that I can handle." I still detest C++. If I have to choose between Java and Swift, I'd take Swift in a heartbeat. In fact, I even have a slight preference for Swift over Python.






Pharo Weekly - Trie and Grid…

We get now a trie implementation (developed by Benoit St-Jean) and Grid as part of a slow growing project called Container for collection outside of the image.

MCHttpRepository
location: ‘http://smalltalkhub.com/mc/StephaneDucasse/Containers/main’
user: ”
password: ”

There are now available in the catalog browser for Pharo 60.

If you have new collections that you want to add to the project just ask.

More to (slowly) come….

S.


Smalltalk Jobs - Smalltalk Jobs – 9/21/16

Job in Lille France at Synectique.

Synectique provides comprehensive and sophisticated analysis tools to
improve the quality of software, reduce maintenance costs, and thus enable
easier software evolution.

The company was created in 2013 and already got some renowned customers.
To sustain our growth we are looking for a full-time Smalltalk (Pharo)
developer with some additional non Smalltalk skills.
2+ years OO programming experience or equivalent, with strong skills in OO
design, front-end JavaScript and back-end Seaside/Pharo.

The ideal candidate should be comfortable with meta-model approaches,
client-side web technologies (HTML, CSS, JavaScript), be familiar with
code parsing and master different languages (Java, C++, C#, ADA,
Smalltalk).

The job is based in Lille, which is centrally located with good
connections by train to everywhere (one hour from Paris, 1h20 from
London, 35 min from Brussels).

Duration: Permanent (CDI)
Starting date: September 2016
Salary: depending on skill set/experience
Ready to travel if needed.

Additional Skills:
Object-oriented design/programming
Agile Methodologies
Fluent in French and/or English
Please send your applications to philippe.valenza@synectique.eu.


Filed under: Employment

Pharo Weekly - Synectique is recruiting

Synectique http://www.synectique.eu provides comprehensive and sophisticated analysis tools to improve the quality of software, reduce maintenance costs, and thus enable
easier software evolution.

The company was created in 2013 and already got some renowned customers.
To sustain our growth we are looking for a full-time Smalltalk (Pharo)
developer with some additional non Smalltalk skills.
2+ years OO programming experience or equivalent, with strong skills in OO
design, front-end JavaScript and back-end Seaside/Pharo.

The ideal candidate should be comfortable with meta-model approaches,
client-side web technologies (HTML, CSS, JavaScript), be familiar with
code parsing and master different languages (Java, C++, C#, ADA,
Smalltalk).

The job is based in Lille, which is centrally located with good connections by train to everywhere (one hour from Paris, 1h20 from London, 35 min from Brussels).

Duration: Permanent (CDI)
Starting date: September 2016
Salary: depending on skill set/experience
Ready to travel if needed.

Additional Skills:
Object-oriented design/programming
Agile Methodologies
Fluent in French and/or English
Please send your applications to philippe.valenza@synectique.eu


Cincom Smalltalk - Smalltalk Digest: September Edition

The September Edition of the Cincom Smalltalk Digest.

The post Smalltalk Digest: September Edition appeared first on Cincom Smalltalk.

September 20, 2016

Pharo Weekly - Pharo 50 Little Testimony

Hello all,

Thanks thanks thanks for Pharo 5.

Each year, from September to November, my students are learning Pharo with the last release.
And as you know, beginners and naive users are very good at stressing a software🙂
Previous years I faced issues due to Pharo bugs (especially because of Nautilus but not only).
Since 2 weeks, no issue at all regarding Pharo, a real pleasure.
So this mail is just to thank all of you who made this cool release.

Cheers
Alain


Torsten Bergmann - UK Smalltalk User Group Meeting - Monday, September 26th

ESUG news - UK Smalltalk User Group Meeting - Monday, Sept 26th

The next meeting of the UK Smalltalk User Group Meeting will be on Monday, September 26th.

We'll meet at our usual venue The Counting House at 7pm.

If you'd like to join us, you can just show up at the pub. You can also sign up in advance at the meeting's Meetup page: *https://www.meetup.com/UKSTUG/events/233567686/*.

UK Smalltalk - UK Smalltalk User Group Meeting - Monday, September 26th

The next meeting of the UK Smalltalk User Group will be on Monday, September 26th.

We'll meet at our usual venue, the Counting House, from 7pm onwards.

If you'd like to join us, you can show up at the pub. You can also sign up in advance on the meeting's Meetup page.

Torsten Bergmann - Smalltalk Reflections episode 15: distributed live computing

Torsten Bergmann - CogMethod’s Maps

CogMethod’s Maps explained by Clément Béra

Torsten Bergmann - PoliteSmalltalk to interact with EV3 Robots

A Polite Solution to Interact with EV3 Robots. Using Pharo, Phratch and JetStormForPhratch

Read the summary and the PDF.

September 19, 2016

Torsten Bergmann - Smalltalk is dead, long live Smalltalk

Robert C. Martin (from Object Mentor, Inc, also known as "Uncle Bob") once did a presentation in 2009 on RailsConf with the provocative topic "What Killed Smalltalk Could Kill Ruby, Too".

The way this talk was presented was nice and funny - but by declaring Smalltalk dead he showed me that he never really followed this technology and all its offsprings close enough.

If Smalltalk would be dead how would I have been able to fill my blog with news about it over so many years? If it would be dead why do new things like Agile VisualizationsSoftware Analysis platforms or cloud platforms like www.pharocloud.com pop up? Why is it used to lively program robots or help solving scientific computations when it is dead? How could it help fighting Ebola or disaster and climate change when Uncle Bob says it is dead? How could a dead technology coordinate so many containers shipping around in this world, or how could it be used in one of the largest financial projects? How could it be given to so many people around the world as a visual programming tool? Looks like nobody cared that Mr. Martin declared it as dead already in 2009 ...

For sure Smalltalk is not as widespread as Java, C++ or C# and it will never be on top of the TIOBE index (since this is the most stupid metric to rank programming languages ever invented). But it is in use, a productive and efficient environment to solve daily problems that would be hard to solve in other technologies.

And all this in times where people (without having a deeper understanding) quickly decide for new technologies as the better ones "automagically" - because they think "newer means better". But often we see that new technologies just reinvent the wheel or provide an improvement only in a single aspect.

Smalltalk is around now since 1972, lifted and commercialized in 1980, stable and mature, used in big and small projects and processes. Because of this age it is not the first time it was declared legacy or dead. But due its virtual machine and its dynamic nature it was and still is adopted to new platforms, new requirements or new hardware. Some Smalltalks can even run 1:1 in the webbrowser or on the Pi.

So in the tradition of "The king is dead, long live the king!" Smalltalk is still alive and kicking. Primarily in the open source scene with PharoSqueak, Cuis, Amber there are many new success stories or books.

Now in 2016 even "Uncle Bob" - based on the old Type wars discussions (static vs. dynamic typing) - needs to admit in a blog post that:

"The Smalltalkers will, eventually, win. So says this old C++ programmer."

But there is no competition, so there is no need to have a winner.

Smalltalk is alive and still about new ideas - about new ways of computing and modeling our world to form something better.

Clément Béra - CogMethod’s Maps

Hi everyone,

Today I am going to discuss the little map at end of cog methods. This map is used by the VM to get information about the machine code during various operations such as send’s site relinking and garbage collection.

Cog methods

In Cog, a cog method is the machine code version of a Smalltalk (bytecoded) compiled method. It is located at the different place than the bytecode version, as the machine code needs to be in an executable memory zone. On the contrary, the bytecode version needs only to be in readable, and potentially writable, memory zone. In addition, the cog method requires specific care by the garbage collector (GC) as the GC cannot scan the machine code as it would scan objects.

A cog Method looks like this:

screen-shot-2016-09-08-at-4-06-02-pm

The cog method header contains metadata related to the cog method. One information stored here, for example, is the size of the cog method. The size is used to be able to iterate over all the cog methods in the machine code zone. Another information is the machine instruction address for the stack overflow check, which is one of the first machine instruction of the machine code of the method.

At the end of the cog method, a small map is present. This map is used by the garbage collector, the machine code zone compactor and various other utilities such as relinking inline caches. The map contains annotations of the machine code.

Machine code annotations

While generating the machine code version of a bytecoded method, cogit (cogit is Cog’s JIT compiler) annotates different machine instructions. We will divide the annotations of the machine code in 5 main categories:

  • Object references: When an object is directly referred from machine code, its address is written as a full machine word and is annotated as an object reference. This annotation is used typically for references to the method literals: on some machine back-ends such as x86, literals are inlined in the machine code and their addresses are annotated as object references. This annotation is used by the GC: if one of the literals is moved in memory by the GC, the GC uses the annotation to know the location of the literal’s address in the machine code and update it to its new address.
  • Absolute PC references: This annotation is used exclusively for cog method references. In the stack frame creation code, at the beginning of the machine code of frameful methods, there is machine code which upon execution writes down in the active stack frame the address of the cog method. This address is an absolute address in the machine code zone. It needs to be annotated because when the machine code zone compactor compacts the machine code zone, it moves cog methods and therefore needs to update their addresses.
  • Relative calls: As for absolute addresses, relative calls needs to be updated when the machine code zone is compacted. In most architecture, relative calls are used to call trampolines.
  • Bytecode PCs: At each interrupt point, the VM needs to be able to recreate the interpreter version of the frame for the programmer to debug the code. This annotation is therefore used for each interrupt point, except sends which are implicitly mapped with the send call annotation (explained just below).
  • Send calls: Each send’s site needs to be annotated for the inline cache logic to be able to link and unlink the send and to have a bytecode pc annotation. There are different kinds of sends (normal, super send, directed super send, newspeak sends, etc.), and each of them has a specific annotation.

Encoding

The challenge is to encode the annotations in a very compact way. To do so, the annotation are encoded as an annotation type and the distance in the machine code from the previous annotation. There is no additional information (no annotation metadata or anything like that).

The annotation scheme used in Cog method maps is as follow:

normalannot

Each annotation is encoded in a byte. In each byte, 3 bits are used to precise the annotation type and 5 bits are used to encode the distance from the previous annotation.

The annotation types described in the previous sections are encoded as follow (type – annotation name):

  • 2: Object reference
  • 3: Absolute PC reference
  • 4: Relative Call
  • 5: Bytecode PC
  • 6: Newspeak send
  • 7: Normal send

The encoded values 0 and 1 are used to extend the other annotations:

  • 0: Displacement. If the distance from the previous annotation is greater than 31 (depending on machine architectures, 31 bytes or 31 words), this annotation is used to extend the distance.
  • 1: Annotation extension. This annotation is used as a prefix to extend the normal sends (type 7). This allows the VM to support more types than 7. The additional types, from 8 to 255, can be used to encode uncommon sends. Using an extra byte only for uncommon send allows not to waste too many space. The following figure details the extended byte encoding.

extendannot

Thanks to the annotation extension, 5 other kind of sends are implemented:

  • 08: Super send
  • 09: Directed super send
  • 10: Newspeak self send
  • 11: Newspeak dynamic super send
  • 12: Newspeak implicit receiver send

Reading the annotations

The GC only needs to read object references while the machine code zone compactor only needs to read relative calls and absolute PC references. This is relatively easy: the first annotation is always the stack overflow check, which address is known by the Cog method header. From the first instruction, the VM can iterate over the annotations, computing at each step the new machine instruction address. Each instruction can be patched this way. I won’t go into details on how this happens as this is back-end specific.

Reading the bytecode PC annotations to map the machine code instruction pointer to the bytecode program counter is slightly more complicated. The VM needs to iterate at the same time both over the machine code, computing at each step the machine instruction address, and the bytecode of the method, computing at each step the bytecode PC of the current mapped instruction. While iterating over the bytecode, the VM stops at each instruction which is mapped from bcpc (bytecode PC) to mcpc (machine code PC). When iterating over the nth annotation mapped to a PC in machine code, the VM also knows the nth annotated bytecode as well as its bytecode PC. This way, the bytecode PC annotation does not even need to encode the bytecode PC, it is found out each time by iterating over both versions of the method.

I hope you enjoyed the post.


September 18, 2016

Smalltalk Jobs - Smalltalk Jobs – 9/18/16

Three different jobs!  The first 2 are in Germany, one in Bonn and one in Berlin.

In Bonn they want a 10 week contract for PCV Server and Visual Age Smalltalk.  They would like you to start tomorrow, the 19th, of Sept. You need to be fluent in German.

In Berlin there are 4 positions and they want 5 years of Smalltalk and at least German reading ability. It looks to be a long term contract of at least 2 years, and, might be permanent.

Finally in Amsterdam there is a position for Smalltalk in Banking.    You must speak Dutch and you will lead a team.

 


Filed under: Employment

September 17, 2016

Joachim Tuchel - Zürich Smalltalk Meetup, Nov. 8, 2016?

It’s been almost a year since the Zürich Smalltalk users met. What a pity. So I’d like to get the ball rolling to gather interested Smalltalkers to meet on Tuesday, November 8, 2016. If you are interested, drop me a note or mail and I’ll keep everybody updated on the exact time and place. Where […]

September 16, 2016

Cincom Smalltalk - Zürich Smalltalkers Meeting

Since the Zürich Smalltalkers had so much fun the last few times they’ve gotten together, they have decided that it would be a shame to miss an opportunity to reconvene.

The post Zürich Smalltalkers Meeting appeared first on Cincom Smalltalk.

September 14, 2016

Adriaan van Os - Photos from the 2016 ESUG Conference in Prague

The now complete set of photos from the 2016 ESUG Conference in Prague is here.

24th ESUG Conference, Prague, 2016

September 13, 2016

Torsten Bergmann - Moldable Tools Book

A book about Moldable tools (in Pharo) is available from Lulu.