Planet Smalltalk

August 26, 2014

Nicolas Petton - iSearch thing

Wouldn’t it be awesome if when using iSearch, I could search for the symbol under the cursor, or the active region if any?

Unfortunately, AFAIK iSearch can search for the next word (with C-w), but not the symbol at point or the region contents. This small snippet fixes the problem!

Note: it overrides C-t in isearch-mode, but as I never use it, I do not mind :)

(defun symbol-name-at-point ()
    (let ((symbol (symbol-at-point)))
    (if symbol
    (symbol-name symbol)
    "")))

    (defun current-thing ()
    "Return the current \"thing\":
    - if the region is active, return the region's text and deactivate the mark
    - else return the symbol at point or the empty string."
    (let ((thing (if (region-active-p)
    (buffer-substring (region-beginning) (region-end))
    (symbol-name-at-point))))
    (deactivate-mark)
    thing))

    (defun isearch-thing ()
    "Search for the current \"thing\":
    - if the region is active, return the region's text and deactivate the mark
    - else return the symbol at point or the empty string."
    (interactive)
    (isearch-yank-string (current-thing)))

    (define-key isearch-mode-map (kbd "C-t") #'isearch-thing)
    

Comments

August 25, 2014

Torsten Bergmann - Teapot - another way for Pharo to serve the web

There are various options to write web applications in Pharo. You can use Seaside or Aida web framework or play with the new Tide framework connecting Amber with Pharo.

If you want to quickly write something you can use the plain Zn framework as this nice tutorial from Sven describes.

And now there is something inbetween that allow you to quickly write an application that serves static or dynamic content from Pharo. It is called Teapot and with a few lines of code you can provide JSON to the outside world or other REST based functionality. It also includes support for the Pharo port of Mustache (the templating engine).

The basic concept of Teapot is to define one or many URL Route(s) - either direct or as pattern (for instance with a Regexpression) and return an appropriate response from the Smalltalk side. Simple, lightweight and easy to use.

Torsten Bergmann - Woden - 3D graphics engine for Pharo

Woden is a multi-media graphics engine written in Pharo. This graphic engine is being designed for video-game development and data visualization.


Read more here.

Torsten Bergmann - TaskIt Version 1

The first version of TaskIT - a Task management library for the Pharo Language - is released. Read the announcement.

Also read the chapter for the upcoming Pharo for the Enterprise book.

Pharo Weekly - Teapot: a micro web framework for Pharo

Hello,

I'd like to announce a new micro web framework called Teapot. It follows a
similar philosophy than other lightweight frameworks like
Sinatra/Bottle/Flask/Spark. Teapot is built on top of the Zn HTTP
components, and less than 500 lines long.

More info:

http://smalltalkhub.com/#!/~zeroflag/Teapot
Gofer it
  smalltalkhubUser: 'zeroflag' project: 'Teapot';
  configuration;
  loadStable.

Attila

Yoshiki Ohshima - [仕事] ESUG 2014とロンドン観劇

European Smalltalk Users Group Conference に10年ぶりに参加してきました。フレンドリーで、かつ激しい議論を戦わせるだけでの共通認識があるので、楽しい会議である事には違いないです。新しいVMがぽろぽろ出てきていたり、ベンダーも多数来てプロダクトのアップデートをしたり、学生達が発表したりと活気もあります。 帰り道ロンドンで一晩空きがあったので、Gielgud Theatreでやっていた”The Curious Incident of the Dog in the ...

August 24, 2014

Pharo Weekly - Another weekly iteration: The power of doing at work

40181
13898 RBBlockNode>>#equalTo:withMapping: uses #to:do: instead of #with:do: (Coding Idiom Violation)
https://pharo.fogbugz.com/f/cases/13898

13901 move DoubleLinkedListTests, LRUCacheTests and TTLCacheTests from Tests
https://pharo.fogbugz.com/f/cases/13901

13896 RBBlockNode>>#= uses #to:do: instead of #with:do: (Coding Idiom Violation)
https://pharo.fogbugz.com/f/cases/13896

13900 move TextDiffBuilderTest to ToolsTest
https://pharo.fogbugz.com/f/cases/13900

13892 Example methods should be runnable in Nautilus
https://pharo.fogbugz.com/f/cases/13892

40180
13899 RBCascadeNode uses #to:do: instead of #with:do: (Coding Idiom Violation)
https://pharo.fogbugz.com/f/cases/13899

13895 #hasReportableSlip should call #containsHalt
https://pharo.fogbugz.com/f/cases/13895

13271 inconsistent behaviour when debugging
https://pharo.fogbugz.com/f/cases/13271

13893 Lint rule for checking block argument assignment.
https://pharo.fogbugz.com/f/cases/13893

40176
13878 Better comment in Date(class)>>fromString: and test
https://pharo.fogbugz.com/f/cases/13878

13870 Spotlight: small enhancement for resolving symbols
https://pharo.fogbugz.com/f/cases/13870

13862 Merge OCompletion into Ecompletion
https://pharo.fogbugz.com/f/cases/13862

40175
13877 Clean up Settings related to Code Browsing
https://pharo.fogbugz.com/f/cases/13877

13855 Small critique cleanup of Tool-Base
https://pharo.fogbugz.com/f/cases/13855

40174
13859 replace two uses of OCKeyedSet with Dictionary
https://pharo.fogbugz.com/f/cases/13859

13856 Trivial cleanup in DebuggerModel
https://pharo.fogbugz.com/f/cases/13856

13857 temporary fix old Browser to allow access to class organization protocol
https://pharo.fogbugz.com/f/cases/13857

13819 Remove Check for Slips Preference
https://pharo.fogbugz.com/f/cases/13819

40173
10146 Semantic analysis: TempVars should not have index
https://pharo.fogbugz.com/f/cases/10146

10144 Improve Comments Opal
https://pharo.fogbugz.com/f/cases/10144

13853 GroupWindowMorph does not use themed background color.
https://pharo.fogbugz.com/f/cases/13853

40172
13848 EyePatch for inspectors eye
https://pharo.fogbugz.com/f/cases/13848

13820 Move #useAstColoring setting to the Shout settings group
https://pharo.fogbugz.com/f/cases/13820

13852 MNU on ChangeSorter fileOut
https://pharo.fogbugz.com/f/cases/13852

40171
13526 System Browser Add Class menu item does not offer current class as a superclass
https://pharo.fogbugz.com/f/cases/13526

40168
13825 MNU: receiver of protocolsFor: is nil
https://pharo.fogbugz.com/f/cases/13825

13835 Small cleanup in System-Changes
https://pharo.fogbugz.com/f/cases/13835

13836 Clean up RecentSubmissions more
https://pharo.fogbugz.com/f/cases/13836

13834 Small Completion Cleanup
https://pharo.fogbugz.com/f/cases/13834

40167
13838 Update Zn+Zdc August 2014
https://pharo.fogbugz.com/f/cases/13838

40166
13817 remove setting for showing diffs in change list
https://pharo.fogbugz.com/f/cases/13817

13807 nil protocol and unclassified in ValueLink
https://pharo.fogbugz.com/f/cases/13807

13805 mustBeBooleanMagicIn: can crash the vm
https://pharo.fogbugz.com/f/cases/13805

40165
13773 implement drawOnAthensCanvas on MenuItemMorph and MenuLineMorph
https://pharo.fogbugz.com/f/cases/13773

13754 cleaning strings API
https://pharo.fogbugz.com/f/cases/13754

13815 Finder: remove non-needed preference
https://pharo.fogbugz.com/f/cases/13815

13826 Extended search… fooled by block arguments
https://pharo.fogbugz.com/f/cases/13826

13789 AthensWrapMorph can not paint gradient fill
https://pharo.fogbugz.com/f/cases/13789

13806 Remove ThreadSafeTranscriptPluggableTextMorph
https://pharo.fogbugz.com/f/cases/13806

40164
13787 Implement SequenceableCollection >> reverseWithIndexDo:
https://pharo.fogbugz.com/f/cases/13787

13526 System Browser Add Class menu item doesn t offer current class as a superclass
https://pharo.fogbugz.com/f/cases/13526

13814 DiffMethodReferenceConverter not needed
https://pharo.fogbugz.com/f/cases/13814

13816 Unify default method templates + Shout critique clean
https://pharo.fogbugz.com/f/cases/13816

13813 Nautilus Refactoring 7: rename methods
https://pharo.fogbugz.com/f/cases/13813

40163
13821 Concentrate tools shortcuts in a single class
https://pharo.fogbugz.com/f/cases/13821

13097 Keymapping: Cmd-n Cmd-c gives error message
https://pharo.fogbugz.com/f/cases/13097

13027 KeyCombination pretty printing is broken
https://pharo.fogbugz.com/f/cases/13027

40162
13801 BlockClosureTest failing
https://pharo.fogbugz.com/f/cases/13801

13799 Forward port 4: 13796 DNU ReadWriteStream>>fileIn in SmalltalkEditor>>fileItIn
https://pharo.fogbugz.com/f/cases/13799

13804 #acceptBasic leads to #mustBeBoolean error (which is catcher by an on: Error do:[]]
https://pharo.fogbugz.com/f/cases/13804

13803 Inspecting a Dictionary is broken
https://pharo.fogbugz.com/f/cases/13803

13802 failing test: testLocalMethodsOfTheClassShouldNotBeRepeatedInItsTraits
https://pharo.fogbugz.com/f/cases/13802

40161
13795 Browsing certain classes takes several seconds
https://pharo.fogbugz.com/f/cases/13795

13800 another small SystemNavigation cleanup
https://pharo.fogbugz.com/f/cases/13800

13798 empty package UI can be deleted
https://pharo.fogbugz.com/f/cases/13798

40160
13639 RealEstateAgent
https://pharo.fogbugz.com/f/cases/13639

13797 RecentMessages: remove useAsSet Preference
https://pharo.fogbugz.com/f/cases/13797

40159
13775 Move two methods from SystemNavigation to AbstractTool
https://pharo.fogbugz.com/f/cases/13775

40158
11709 remove old ObjectExplorer
https://pharo.fogbugz.com/f/cases/11709

40157
13770 Restore Menu Item to Add accessors for anInstVar
https://pharo.fogbugz.com/f/cases/13770

13771 User Permission cannot be read from User
https://pharo.fogbugz.com/f/cases/13771

13794 Make Tools-Explorer unloadable
https://pharo.fogbugz.com/f/cases/13794

40156
13793 Enable new Pointer Explorer
https://pharo.fogbugz.com/f/cases/13793

13764 Simplify RecentSubmissions
https://pharo.fogbugz.com/f/cases/13764

40155
13774 EyePointerExplorer
https://pharo.fogbugz.com/f/cases/13774

13792 remove #callers
https://pharo.fogbugz.com/f/cases/13792

13784 Color>>#asColorref ignores blue
https://pharo.fogbugz.com/f/cases/13784

40154
13777 remove empty package Settings-Monticello
https://pharo.fogbugz.com/f/cases/13777

13780 Wrong compilation context in mustBeBooleanInMagic:
https://pharo.fogbugz.com/f/cases/13780

13762 OCInstanceVariable not needed
https://pharo.fogbugz.com/f/cases/13762

13788 Unused method in StringMorph
https://pharo.fogbugz.com/f/cases/13788

13776 EyeSyntaxTreeInspector
https://pharo.fogbugz.com/f/cases/13776

13759 Small Code critique pass over 3 tools packages
https://pharo.fogbugz.com/f/cases/13759

13760 Continue remvoving RGFactory
https://pharo.fogbugz.com/f/cases/13760

40153
13763 SyntaxErrorNotification: errorMessage ivar not needed
https://pharo.fogbugz.com/f/cases/13763

13782 add preference the DEBUG menu entires of Nautilus
https://pharo.fogbugz.com/f/cases/13782

13767 packagetree changes visible selection even if okToChange is false
https://pharo.fogbugz.com/f/cases/13767

13778 Workspace: fix non-declared temp vars
https://pharo.fogbugz.com/f/cases/13778

13781 class Refactor not needed
https://pharo.fogbugz.com/f/cases/13781

40152
13752 4 tests failing on main build due to the decompiler
https://pharo.fogbugz.com/f/cases/13752

13766 DictionaryValueHolder>>#at:ifAbsentPut: always use a caught DNU
https://pharo.fogbugz.com/f/cases/13766

13768 EyeInspector BasicIndexedEyeElement hash is too slow
https://pharo.fogbugz.com/f/cases/13768


Pharo Weekly - SXSoundEx for Pharo

Hi all

As part of a recent project I was asked to create a small soundex thingy.
http://en.wikipedia.org/wiki/Soundex

I told the company that I’d do it but it’d be opensource and I’d give it to the community.
They agreed so here it is!
You can find it here http://www.smalltalkhub.com/#!/~riverdusty/SXSoundEx
Hope it’ll be useful for someone.

Regards

Gareth Cox
IT Manager/Developer
Inspired Org (PTY) Ltd
tell: +27 (0)21 531 5404
cell: +27 (0)78 374 9035

August 23, 2014

Andres Valloud - While at the Seaside Sprint...

Philippe Marschall had an interesting problem to think about... suppose you have a dictionary with string keys, and that you make sure the keys are uppercase.  Alas, when the code receives queries, it gets lowercase keys.  Fixing this requires sending asUppercase, which takes time.  Can you find a way such that both at: and at:put: can be made to work without sending asUppercase?  Can you do it without creating new classes?

I got a proof of concept to run 2x faster.  From what I hear, the improved code will help speed up HTTP requests.

Andres Valloud - About ESUG 2014

What a lovely conference, I'm glad to be back.  I really enjoyed the talks, you should go to the YouTube playlist and take a look.  Some that come to mind are Eliot Miranda's Spur talk, Clement Bera's talks about adaptive optimization, Tim Rowledge's talk on his work on Scratch, and Boris Shingarov's talk about modern problems for the Smalltalk VM in the IWST track, as well as Yuriy Tymchuk's presentation on Smalldromeda and Alexandre Bergel's Roassal presentation.  This is hardly a fair list though, so please excuse my brevity in favor of ESUG's video playlist.

I am also glad my Retrospective presentation was well received.  The results earned compliments from Tudor Girba.  There were plenty of laughs during the talk, and it was a lot of fun :).

More news to come...

Andres Valloud - Exceptions fixed in Squeak, Pharo and Cuis

Martin McClure just integrated the Pharo exceptions fix we worked on during Camp Smalltalk.  I imagine this fix, in 5 slices, should be straightforward to port to Squeak and Cuis.

August 21, 2014

Cincom Smalltalk - Smalltalk Digest: August Edition

The August edition of The Cincom Smalltalk Digest is available now.

Ricardo Moran - Minecraft programable: avanzando en la interacción

¡Hola a todos! Nuevamente les traigo noticias respecto a Minecraft programable.
Habiendo conseguido anteriormente ver información respecto a los objetos del mundo, el siguiente paso era lograr que Minecraft recibiera información modificada por el usuario desde Squeak, que es en lo que estamos trabajando ahora. Les dejo una pequeña muestra de cómo funciona el proyecto por el momento.
Los siguientes pasos involucran convertir la interfaz gráfica de prueba en algo que le permita al usuario escribir código aparte de sencillamente modificar atributos.

Esteban Lorenzano - Voyage by example

The slides of my talk about Tide at ESUG 2014 are now available at slideshare.

EDIT: Now you also can see the full presentation! Here the link:

Part 1: https://www.youtube.com/watch?v=1szVgKQm474

Part 2: https://www.youtube.com/watch?v=vxork8Kckh8

Torsten Bergmann - Roassal contest result

Winners of the Roassal context are announced here. Click on the link and enjoy the videos.

August 20, 2014

Torsten Bergmann - SqueakJS and Smalltalk 78

Bert is progressing with his SqueakJS project. A current version can be found here:

http://bertfreudenberg.github.io/SqueakJS/

He can also run Smalltalk 78 on the Lively Kernel. The nice thing is all the VM code is fully accessible - you can also check the virtual machine while it is running.

If you want to try it yourself just open this page in your webbrowser: http://lively-web.org/users/bert/Smalltalk-78.html

Really interesting are also the details (for instance on GarbageCollection and on how to run one high level language on another high language.

Here are the videos from ESUG 2014 on that:




Torsten Bergmann - QCMagritte

QCMagritte is a framework on top of Seaside to develop applications. Here are the videos from ESUG 2014:



Torsten Bergmann - Fencing with Smalltalk

Anick Fron is talking about Fencing Software at ESUG 2014 (first written in Java, then rewritten in Smalltalk).

The webpage is http://fencingfox.com




August 19, 2014

Torsten Bergmann - ESUG 2014 Videos

The first videos from ESUG 2014 appear on the net. Greetings to Cambridge.

Smalltalk Jobs - Smalltalk Jobs – 8/18/14

  • Alpharetta, GA (near Atlanta, GA) – VisualAge Smalltalk 6 Developer at OpenSpan
      Stephen Beckett, the Chief Scientist, (and the primary contact for this position,) at OpenSpan describes what they are doing in the following way:

      “…Our product injects software into target apps, figures out their object hierarchies, and presents a visual model to users in our IDE. Customers can then build automations between multiple apps on their desktop, such as when a button is pressed in the Smalltalk app, read these data fields and automatically push them into a webpage (or whatever). In a call center environment where Agents to many identical repetitive tasks across a large number of applications, we can take minutes off their calls while dramatically improving accuracy.

      Our challenge is we don’t know Smalltalk at all, and while we have reverse engineered many elements of the Virtual Machine and relating window handles to internal objects and can create the hierarchy of objects, we have not figured out how to handle events. We can’t find any single point to hook, and we have not been able to inject a Smalltalk object that could subscribe to an event. (In Java and .Net, we use our injection to hook in Java/.Net controls that then interact with their respective platforms, which is far easier than using hooks or cracking windows messages.)

      So I’ve using the following, but not necessarily with a lot of luck”:

    • SmallTalk internals (have not found anyone who has done anything with SmallTalk internals – doesn’t seem like a popular domain, compared to Java or .Net)
    • Experience with VM Api
    • Use of Primitive Feature to call code outside of the SmallTalk environment
    • Loading our own “IC” (Image Component) into a target application and having it communicate with the app using SmallTalk
      • Our injection gets us into Smalltalk right after NtDll is loaded, before anything else
      • When we called “LoadFileComponent” to try to load our SmallTalk component, it has failed every time.
    • Additional listings: Staffing Technologies, Pscs-us, Royak Group
Good luck with your job hunting,
James T. Savidge

View James T. Savidge's profile on LinkedIn

This blog’s RSS Feed


Filed under: Employment Tagged: jobs, Smalltalk, Smalltalk jobs

August 18, 2014

Noury Bouraqadi - Talking to Robots with Pharo

Slides of my presentation given at ESUG 2014 conference are available online (see below). It’s about Robot software development using the Pharo dynamic language. It includes a quick overview of PhaROS our bridge to the ROS, as well as BoTest our framework for TDD for robotics applications. The video is also available on Youtube (see… Continue reading

August 17, 2014

Smalltalk Jobs - Smalltalk Jobs – 8/17/14

  • Mumbai, IndiaKapital Financial Developer (Job ID 140078559) at J.P. Morgan
    • Required Skills:
      • MCA/BTech(CS or IT)
      • Should have at least 4-5yrs of development experience in any Object Oriented language
      • Should know Smalltalk and have worked on any IDE VisualWorks/VisualAge/Dolphin etc for at least 2yrs
    • Wanted Skills:
      • Background of Investment banking
Good luck with your job hunting,
James T. Savidge

View James T. Savidge's profile on LinkedIn

This blog’s RSS Feed


Filed under: Employment Tagged: jobs, Smalltalk, Smalltalk jobs

Benoit St-Jean - Bee Smalltalk : la pré-version!

Bee Smalltalk, dont j’avais parlé précédemment, est maintenant disponible en version pre-release et le code source est maintenant accessible à tous ici.


Classé dans:Bee Smalltalk, Smalltalk Tagged: Bee Smalltalk, code source, pré-version, pre-release, Smalltalk

Essence# - New Release Of Essence#: Nīsān (Alpha Build 22)

The Nīsān release introduces full support for ANSI-Standard Dates and Times into Essence#. It also fixes some important bugs.

Nīsān is the name of the first month of the eccelesiastical Hebrew Calendar (the name of the first month of the secular Hebrew Calendar is Tishri.) [We're still using a Biblical naming scheme, because we're still in alpha. However, we're (hopefully) only 2-3 releases away from going to beta, which will happen after we achieve full compliance with the ANSI Standard.]

In addition to what’s required by the ANSI Standard with respect to times, dates and durations of time, convenience methods were added to class Number that enable the creation of Durations by sending messages such as #days, #hours, #minutes, #seconds, #milliseconds and #microseconds to numbers.

As you may or may not be aware, I’m not only the author Essence#, I’m also the author of the Chronos Date/Time Library. In spite of that, I’ve added very little time/date functionality in this release that wasn’t either required by the ANSI Standard or provided by the relevant classes and methods in the .Net Base Class Library.

About 80% of the users of a programming language just don’t need anything more in the way of time/date support beyond what is required by the ANSI Standard. And those who do only need it about 20% of the time. So it doesn’t make good sense to include anything like the Chronos Date/Time Library in the “standard library” for any programming language: It’s overkill for most people, most of the time.

But it does make sense to include the Chronos Date/Time Library as an extension library. But the time for that is not yet.

Download Nīsān (Alpha Build 22)

To download the latest release, navigate to the DOWNLOADS page on CodePlex. There’s a download link in the upper left corner of the DOWNLOADS page, labeled Essence#_Nisan_Setup.exe. Using it will get you a program that will install the Nīsān release of Essence# to any location you choose on your computer. Please see the documentation page on the CodePlex site for more information on how to use Essence#, such as the installation instructions and instructions on how to run scripts written in Essence#.

The Nīsān release includes changes and additions to the Essence# Standard Library–which will be installed by the installer program attached to this release, or which may be obtained separately from GitHub.

One of the utility scripts that aid in developing Essence# code was changed in this release, and a bug in one of the example scripts was fixed. Other that that, there were no other changes to any of of the scripts, and no new scripts were added. For more information on the scripts, please see the documentation.


August 16, 2014

Benoit St-Jean - GT Inspector

On blâme souvent la communauté Smalltalk pour son manque d’imagination et son très mauvais marketing.  Avec un langage de programmation et un environnement de développement aussi puissants, comment se fait-il que Smalltalk peine à être utilisé en entreprise ?

Ce qui manque, bien souvent, c’est une pub sexy !

Comme celle du GT Inspector.  Wow!