Planet Smalltalk

September 13, 2014

David Buck (Simberon) - Camp Smalltalk in Nanaimo

Everything's booked.  My wife and I are heading to Nanaimo BC on October 3, 2014 to attend Camp Smalltalk.  I'll be demonstrating the mobile Smalltalk I'm developing - it will be a work in progress.  I may also be involved in a "Intro to Smalltalk" presentation there.  I'm heading back to Ottawa on October 6th.

If you're interested in attending, you can check out this link:
VanIsle CampSmalltalk

September 12, 2014

Pharo Weekly - There is no such thing as an unworthy change

Every time we improve the system with a little change, the system gets better. And in Pharo we do it daily. Thank you all for all your changes and enhancements. **You** make Pharo cool.

40224
14000 FilterTest needs to be moved to a Debugger test package

https://pharo.fogbugz.com/f/cases/14000

14004 SpecLayout>>asArray(result is shadowed)

https://pharo.fogbugz.com/f/cases/14004

14001 MethodModified>>newMethod: (newMethod is Undeclared)

https://pharo.fogbugz.com/f/cases/14001

14010 Small code critics clean of Ring

https://pharo.fogbugz.com/f/cases/14010

40223
13924 Adding a new method to a trait triggers a MethodRecategorized announcement for each user

https://pharo.fogbugz.com/f/cases/13924

40222
13971 clean asReactiveVariable -> asValueHolder

https://pharo.fogbugz.com/f/cases/13971

40221
13997 Small code critic clean of Collections-Streams

https://pharo.fogbugz.com/f/cases/13997

13992 NautilusRefactoring stores into method argument

https://pharo.fogbugz.com/f/cases/13992

13994 AJx86AssemblerTests>>testRegistersOf:(asm is shadowed)

https://pharo.fogbugz.com/f/cases/13994

40220
13901 move DoubleLinkedListTests, LRUCacheTests and TTLCacheTests from Tests

https://pharo.fogbugz.com/f/cases/13901

13996 RBSentNotImplementedRule wrong

https://pharo.fogbugz.com/f/cases/13996

40219
13993 remove two undeclared in System-Announcemetns

https://pharo.fogbugz.com/f/cases/13993

13990 RBImplementedNotSentRule slow

https://pharo.fogbugz.com/f/cases/13990

40218
13205 Temporary variable declaration in blocks

https://pharo.fogbugz.com/f/cases/13205

13989 Temporary variables not read and writen in Gofer-Core

https://pharo.fogbugz.com/f/cases/13989

13837 remove TextEditorDialogWindow autoaccept preference

https://pharo.fogbugz.com/f/cases/13837

13987 remove empty package Settings-Tools

https://pharo.fogbugz.com/f/cases/13987

40217
13985 OrderedCollection>>#do: and #reverseDo: are not consistent with the other enumerations

https://pharo.fogbugz.com/f/cases/13985

13986 move DebugSystemSettings to DebuggerModel package

https://pharo.fogbugz.com/f/cases/13986

13981 Nautilus should allow to compare two methods

https://pharo.fogbugz.com/f/cases/13981

40216
13979 PragmaMenuBuilder relies on modifying a collection while iterating over it.

https://pharo.fogbugz.com/f/cases/13979

13983 Temporary variables not read AND written in LinkedList

https://pharo.fogbugz.com/f/cases/13983

13984 Temporary variables not read and written in ByteString class>>#initialize

https://pharo.fogbugz.com/f/cases/13984

40215
13421 Problem in Monticello and the cached packages

https://pharo.fogbugz.com/f/cases/13421

40214
13955 Rewrite Lint rules to use common tools

https://pharo.fogbugz.com/f/cases/13955

40213
13928 Failing test: RBSearchTest>>#testAllSearches

https://pharo.fogbugz.com/f/cases/13928

13865 Cleaning menuMorph

https://pharo.fogbugz.com/f/cases/13865

40212
13977 Temporary variable list is not read nor write in AnnouncementSpy>>#build

https://pharo.fogbugz.com/f/cases/13977

13976 MNU formattedCode on EyeSyntaxTreeInspector showing a RBLiteralNode

https://pharo.fogbugz.com/f/cases/13976

13962 canPerform: same as canUnderstand:

https://pharo.fogbugz.com/f/cases/13962

13943 Nautilus Refactoring 8: rename “showHierarchy”

https://pharo.fogbugz.com/f/cases/13943

40211
13974 creating menus for ListModels is broken

https://pharo.fogbugz.com/default.asp?13974

40210
13888 Clean the use of spec to initialize widget in the morphicAdapter hierarchy

https://pharo.fogbugz.com/f/cases/13888

40208
13964 The examples in class WidgetExamples should be on the class side

https://pharo.fogbugz.com/f/cases/13964

13966 Cleanup MorphicTests package

https://pharo.fogbugz.com/f/cases/13966

13963 Cleanup Morphic-Widgets-Tree package

https://pharo.fogbugz.com/f/cases/13963

13968 Provide clickable examples for Athens

https://pharo.fogbugz.com/f/cases/13968

13970 Fix category typo in ProtoObject

https://pharo.fogbugz.com/f/cases/13970

40207
13937 Unused methods in Slot package

https://pharo.fogbugz.com/f/cases/13937

13961 Job examples should be executable

https://pharo.fogbugz.com/f/cases/13961

13965 Clean method announcements : fix Monticello-Tests bug

https://pharo.fogbugz.com/f/cases/13965

40206
13956 Clean method announcements – step 3

https://pharo.fogbugz.com/f/cases/13956

40205
13954 Clean method announcements – step 2

https://pharo.fogbugz.com/f/cases/13954

40204
13953 Clean method announcements – step 1

https://pharo.fogbugz.com/f/cases/13953

40203
13927 Failing test: #testCurrentPackagesDoesNotContainScriptLoader

https://pharo.fogbugz.com/f/cases/13927

13960 Growl example in comment deprecated

https://pharo.fogbugz.com/f/cases/13960

7591 in 4.0, unskip #testMethodsWithUnboundGlobals

https://pharo.fogbugz.com/f/cases/7591

40202
13849 PointerExplorer item menu needs PointerEyeElement to implement #accessorCode

https://pharo.fogbugz.com/f/cases/13849

12503 unreferenced parameter in SortHierarchically>>buildHierarchyForClasses:fromPackage:

https://pharo.fogbugz.com/f/cases/12503

13861 make NOCController default OController

https://pharo.fogbugz.com/f/cases/13861

40201
13952 Pool access lookup crash

https://pharo.fogbugz.com/f/cases/13952

13811 Improve Pharo Environment Help Text

https://pharo.fogbugz.com/f/cases/13811

13929 RBBasicLintRuleTest class implements protocols

https://pharo.fogbugz.com/f/cases/13929

13930 remove empty packages NOCompiletion and NECompletion-Tests

https://pharo.fogbugz.com/f/cases/13930

40200
13915 Remove apparently unneeded reference to ThreadSafeTranscript

https://pharo.fogbugz.com/f/cases/13915

13951 Small Settings Cleanup

https://pharo.fogbugz.com/f/cases/13951

40197
13938 Opal, custom compilers and class side methods

https://pharo.fogbugz.com/f/cases/13938


Pharo Weekly - Seaside 3.1.3 is released

Seaside one of the most exciting web frameworks http://www.seaside.st got a new release.

Hi Seaside users,

We have released Seaside 3.1.3 [1].

A big thanks to everyone involved for making this release happen!

best regards,
The Seaside Team

[1] https://code.google.com/p/seaside/wiki/Seaside313Changelog

September 11, 2014

Ricardo Moran - Creando a Mendieta

Hola a todos!
Como continuación de la presentación de “Mendieta” (ver aquí), en este post les contaré un poco como se creó y listaré sus componentes por si desean fabricarse una.
Como primera medida construimos una versión acotada de la placa, sin la posibilidad de manerar motores de corriente continua, aunque sí servos. Aunque utilizamos el PIC 18F4550 pensando en la versión definitiva, también podríamos haber recurrido al PIC 18F2550, que posee las mismas características, con la diferencia de tener menos cantidad de pines de entrada/salida, pero de ser mas barato y ocupar menos lugar.
Luego de realizado y probado el prototipo, en una placa preperforada y uniendo los componentes con cables “a mano”, nos centramos en diseñar el circuito, que quedó de la siguiente manera:
Mendieta Mega
Una vez transferido el diseño a la placa de cobre, se hicieron los agujeros correspondientes con mecha de 1mm, y se soldaron estos componentes:
· PIC 18F4550;
· L293D;
· 40-pin socket;
· 16-pin socket;
· 470uF electrolytic capacitor;
· 4.7 uF electrolytic capacitor;
· 22pF ceramic capacitors (2);
· .1 uF ceramic capacitor;
· USB connector type B;
· resistors 1 kilohm (2), 330 ohms (1);
· crystal 20 MHz
· red LED;
· reset button;
· terminal block;
· pin strips;
· Molex 3 pin connector (9)
El resultado, que ya está funcionando perfectamente, quedó así:
20140911_144626

Para terminar este post, les cuento que también diseñamos en Sketch Up una cajita contenedora, a fin de resguardar la electrónica y darle una mejor terminación al trabajo; la misma fue impresa con una impresora 3D. Les dejo una captura de pantalla del diseño 3D:
Diseño 3D

Esperamos sus comentarios y consultas…
Saludos,

Gabriel

Nicolas Petton - Amber has a new maintainer

As you have probably noticed, I’ve been a bit away from Amber for some time.

Herby has been the unofficial maintainer of Amber since then and he has done an amazing job!

So, after some discussions we decided to make it a bit more official, so here it is: Herbert Vojčík is the new maintainer of Amber.

It does not mean that I will totally disappear, I’ll stay around!

Comments

September 10, 2014

Cincom Smalltalk - Plans Are Underway for Vancouver Island Camp Smalltalk

Vancouver Island Camp Smalltalk will be taking place on beautiful Vancouver Island, British Columbia, Canada on October 3-5.

ESUG news - Smalltalks 2014

1. Invitation.

The Fundación Argentina de Smalltalk (FAST) invites you to the 8th International Conference on Smalltalk Technologies (Smalltalks), to be held from November 5th through November 7th at the Universidad Tecnológica Nacional, Facultad Regional Córdoba, located in the city of Córdoba, Argentina. Everyone, including teachers, students, researchers, developers and entrepreneurs, are welcome as speakers or attendees.

This year, we are extremely happy to announce Allen and Rebecca Wirfs-Brock will attend the conference. Allen was instrumental in developing Digitalk's Visual Smalltalk, as well as a leader in modular Smalltalk design. Rebecca created the field of Responsibility Driven Design, which spawned a variety of modern disciplines such as TDD and BDD. Their presence is just a preview of an oustanding presentation program you cannot afford to miss.

2. Registration.

Registration is free and now open at

http://www.fast.org.ar/smalltalks2014.

Please make sure to register early to receive the conference's shirt, as well as to help us plan the conference's social events.

We are accepting donations from participants to help fund the conference's costs. Please see the Donate section at FAST's website,

http://www.fast.org.ar/smalltalks2014/donate.

Contributions are greatly appreciated, and can be received both in pesos for local attendees, as well as via Paypal for those coming from abroad. Please note that donors, including those that have already sent us their contribution (thank you!), will receive a set of thank you gifts as well as the conference's shirt. For those of you that need a receipt, we can provide those on site.

3. Sponsors.

In addition our generous attendee donation contributors, we would like to thank our sponsors. We would not be able to organize the conference without their help.

Platinum sponsors:

Silver sponsors:

Bronze sponsors:

Moreover, this year our official airline carrier is Aerolineas Argentinas. To book plane tickets with Aerolineas Argentinas, please go to

http://www.aerolineas.com.ar/Congresos

and select Smalltalks 2014 from the list of events (available soon).

4. Call for participation.

Talk proposal submission for the Industry Track is now open at our website:

http://www.fast.org.ar/smalltalks2014/technical-session

If you need special arrangements (e.g. because you would like to hold a workshop session), please indicate so in the abstract. The Industry Track's submission deadline is October 13th.

Abstract submitters: please send us a photo and a short bio by answering to this email.

5. Related events.

For more information about related events, such as a Pharo Sprint or talks and presentations around the dates of the conference, please visit

http://www.fast.org.ar/smalltalks2014/events

In particular, we like to invite to you Squeakfest 2014, to be held at the same conference site on from November 3rd through November 4th. This companion event highlights Squeak and Etoys used in the context of education. To register, please go to the SqueakFest page under the related events for Smalltalks 2014.

We will update related event information as we get closer to the conference, so please check for updates.

For any additional questions please reply to this email.

See you in Córdoba!

Torsten Bergmann - Seaside 3.1.3

Torsten Bergmann - PointerDetective

A small tool to find references to an object visually. Code is on SmalltalkHub.

Also on PharoWeekly.

Torsten Bergmann - OSMMaps

OSMMaps is a Pharo package to interact with OpenStreetMap. Read more here.

Pharo Weekly - Pointer Detective

Ben Coman proposed a new pointer analysis tool :)

greetings all, I had an itch to scratch... I find it difficult using the tree list of the standard Pointer Explorer to track down why objects aren't garbage collected. I always fear I'm not going to notice getting caught in a reference loop. So I created a tool presenting an alternative view as a directed graph. The graph incrementally builds out from the target object as you explore it. Nodes are colourised to help manage complexity. The attached snapshot is produced from evaluating the following Workspace script... testObject := 'END5'. ref1 := { testObject. nil }. ref2 := { ref1 }. ref3 := PDTestResource new heldObject: ref2. ref1 at: 2 put: ref3. "note the reference loop this creates" PointerDetective openOn: testObject. Now I expect I'm duplicating something done before, but I couldn't find anything quickly and it was an opportunity for some goal direct learning of Morphic. Thanks to Roassal an option for a spring-force layout is provided. That code was copied rather than create a dependency, and might need to be rationalized later. The code is a bit rough from hacking around learning how to make things work, but its functional, so its time to get it out in the open. For more information please refer to the repository home page... http://smalltalkhub.com/#!/~BenComan/PointerDetective cheers -ben
attachment-0001


September 09, 2014

Torsten Bergmann - New Release of Essence Sharp: Nīsān-2 (Alpha Build 23)

A new Release of Essence Sharp: Nīsān-2 (Alpha Build 23) is available. Read more.

Torsten Bergmann - Invitation to Smalltalks 2014

The Fundación Argentina de Smalltalk (FAST) invites you to the 8th International Conference on Smalltalk Technologies. Read more.

Torsten Bergmann - Kontolino demo vide

Kontolino.de - a Seaside Smalltalk application from germany company Objektfabrik is now also demonstrated in a first video:


Andres Valloud - Smalltalks 2014 invitation

1. Invitation.

The Fundación Argentina de Smalltalk (FAST, http://www.fast.org.ar) invites you to the 8th International Conference on Smalltalk Technologies (Smalltalks), to be held from November 5th through November 7th at the Universidad Tecnológica Nacional, Facultad Regional Córdoba, located in the city of Córdoba, Argentina. Everyone, including teachers, students, researchers, developers and entrepreneurs, are welcome as speakers or attendees.

This year, we are extremely happy to announce Allen and Rebecca Wirfs-Brock will attend the conference. Allen was instrumental in developing Digitalk's Visual Smalltalk, as well as a leader in modular Smalltalk design. Rebecca created the field of Responsibility Driven Design, which spawned a variety of modern disciplines such as TDD and BDD. Their presence is just a preview of an oustanding presentation program you cannot afford to miss.

2. Registration.

Registration is free and now open at

http://www.fast.org.ar/smalltalks2014.

Please make sure to register early to receive the conference's shirt, as well as to help us plan the conference's social events.

We are accepting donations from participants to help fund the conference's costs. Please see the Donate section at FAST's website,

http://www.fast.org.ar/smalltalks2014/donate.

Contributions are greatly appreciated, and can be received both in pesos for local attendees, as well as via Paypal for those coming from abroad. Please note that donors, including those that have already sent us their contribution (thank you!), will receive a set of thank you gifts as well as the conference's shirt. For those of you that need a receipt, we can provide those on site.

3. Sponsors.

In addition our generous attendee donation contributors, we would like to thank our sponsors. We would not be able to organize the conference without their help.

Platinum sponsors:
+ Caesar Systems
+ ESUG
+ GemTalk Systems
+ Instantiations

Silver sponsors:
+ InfOil

Bronze sponsors:
+ 10 Pines
+ Arduino Software
+ Mercap
+ Precision System Design
+ Smallworks

Moreover, this year our official airline carrier is Aerolineas Argentinas. To book plane tickets with Aerolineas Argentinas, please go to

http://www.aerolineas.com.ar/Congresos

and select Smalltalks 2014 from the list of events (available soon).

4. Call for participation.

Talk proposal submission for the Industry Track is now open at our website:

http://www.fast.org.ar/smalltalks2014/technical-session

If you need special arrangements (e.g. because you would like to hold a workshop session), please indicate so in the abstract. The Industry Track's submission deadline is October 13th.

Abstract submitters: please send us a photo and a short bio by answering to this email.

5. Related events.

For more information about related events, such as a Pharo Sprint or talks and presentations around the dates of the conference, please visit

http://www.fast.org.ar/smalltalks2014/events

In particular, we like to invite to you Squeakfest 2014, to be held at the same conference site on from November 3rd through November 4th. This companion event highlights Squeak and Etoys used in the context of education. To register, please go to the SqueakFest page under the related events for Smalltalks 2014.

We will update related event information as we get closer to the conference, so please check for updates.

For any additional questions please reply to this email.

See you in Córdoba!

September 08, 2014

Essence# - New Release of Essence Sharp: Nīsān-2 (Alpha Build 23)

The Nīsān-2 release contains only bug fixes and internal improvements.

Download Nīsān-2 (Alpha Build 23)

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-2_Setup.exe. Using it will get you a program that will install the Nīsān-2 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-2 release makes no changes or additions to the Essence# Standard Library. The Essence# Standard Library will be installed by the installer program attached to this release. It may also be obtained separately fromGitHub.

None of the utility scripts that aid in developing Essence# code were changed in this release. For more information on the scripts, please see the documentation.


September 06, 2014

Smalltalk Jobs - Smalltalk Jobs – 9/6/14

  • Malta, NYSoftware Engineer Equipment Interface at GLOBALFOUNDRIES
    • Required Skills:
      • BS Degree in computer science, engineering
      • Relevant internship experience or 1+ years of experience as an EI engineer automating semiconductor manufacturing equipment
      • Experience developing software for Unix or Linux operating systems
      • Experience and fluency with object oriented development methods and expertise in object oriented programming languages such as Smalltalk, Java or C#
      • In depth understanding of SEMI software standards, operational models and state diagrams
      • Equipment automation experience using the SEMI software standards
      • Excellent verbal and written communication skills
      • Strong interpersonal skills and ability to work effectively in a diverse population and with all members of the organization
      • Proven technical writing skills
      • Excellent organizational and time management skills
      • Proficiency with Microsoft Office software applications
    • Wanted Skills:
      • Experience with SmallTalk programming
      • Experience with supporting infrastructure using MQ, XML, and Corba
      • Experience developing and sustaining software solutions in support of mission-critical systems in a 24×7 operational environment
      • Experience in a 300 mm wafer fab
      • Semiconductor foundry work experience
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

Holger Hans Peter Freyther - Speeding up my SIP/MGCP Smalltalk Parsers

When creating the MGCP and SIP implementation I didn't want to do string splitting/scanning myself but follow the grammar of the two RFCs. I decided to use the PetitParser framework. PetitParser is a parsing
combinator. Which mostly mean you create small parsers and combine them with things like a sequence (parse this, than that and expect the input to be fully consumed).

For a long time this approach was just okay but I recently started to use the code on a under powered ARM system and the performance started to hurt. The MGCP/SIP Parser is created at runtime and then the result will be used.

Measuring

Besides things being too slow it is important to know how slow it is and to see if a change has made a difference or not. GNU Smalltalk has a Time class that provides a monotonic nanosecond clock. The easiest way to benchmark is to use an approach like:

 [ | start | start := Time nanosecondClock. benchmarkCode. start - Time nanosecondClock] value.

This will give me a number. Now with a language like Smalltalk there will be extra runtime code so there will be a noticeable variance.

Improving the PetitParser GNU Smalltalk port

PetitParser needs to use backtracking to go back in the stream when one element of a choice could not be parsed. This means PetitParser will heavily exercise >>#position, >>#position: and >>#atEnd. In Pharo the implementation has a position variable but in GNU Smalltalk the implementation has a pointer that points to the next character. When a method is called in Smalltalk an activation record (stack frame, context) needs to be created. GNU Smalltalk has the optimization to detect methods that simply return a value or instance variable. In the case of >>#position and >>#position: an arithmetic operation will be executed and can not be optimized. I have decided to change the PetitParser code to use >>#pointer and >>#pointer: to avoid the extra activation cost.

Local PetitParser hacks

In my older port of PetitParser.209 the PPRepeatingParser class will store the parsed elements in an OrderedCollection and at the end convert it to an Array. My client code will simply iterate over the
result and I don't need to pay the price of the extra memory collection and copying.

With Smalltalk and open classes I can simply load my own/improved/reduced version of the >>#parseOn:
and benefit for the speed-gain in my implementation.

Speeding up parser construction

In PetitParser one defines the parser in selectors and on creating everything from the >>#start will be turned into the parser. In case some basic parsers are re-used one can create instance variables and the PetitParser baseclass will then cache the result in that variable. In the past I haven't used this mode too much but I had a lot of parts that are used more than once. This was a significant speed-up in parser construction. At least in PetitParser.209 (I think later versions had some improvements) not every caching will make things more quick. It is good to benchmark both number of created parsers and number construction speed.

Simplifying the Grammar

In both MGCP and SIP I have a SIPGrammar/MGCPGrammar class and then a subclass called SIPParser/MGCPParser that creates a structure my client code can work with. When creating the SIPGrammar/MGCPGrammar I followed the RFC BNF but e.g. for matching the possible parameters I had to create a choice parser with many many choices but all of them are in the form of "Key: Value". So instead of checking the valid keys with the Grammar, I should check the structure in the grammar and do the key validation inside the parser class.

Using PetitParser instead of following the Grammar

In the case of SIP there a lot of rules that specify where whitespace can be. This means I created PPSequenceParsers where some elements consume the space that nobody cares about it. The PPParser class already knows the >>#trim selector to deal with such things. It will automatically take away leading and trailing whitespace.

In SIP (e.g. with the challenge BNF) there is one mandatory parameter followed by optional elements separated by comas. PetitParser has a built-in way to express such things. The >>#separatedBy: selector will take a parser (e.g. one that can parse a comma) as parameter and then parse one or more occurrences.

Using PPObjectPredicateParser

In PetitParser one can write #digit asParser / #word asParser and this will either parse a single digit or a single character. In both cases a PPObjectPredicateParser with a PPCharsetPredicate (with an internal look-up table) will be created. I had many of such occurrences and could simplify the code.

Creating a custom parser

In SIP some parameters can be of the nature of key=value or key="VALUE". The later is a quoted-string that permits certain characters and certain escape sequences. The rule to parse this were nested character parsers of choices of choices. The resulting parser was very slow. A simple string to parse a nonce with a quoted-string could take 40ms. I decided to write my own SIPQuotedStringParser.

Summary

The MGCPParser construction time was in the range of 20 seconds, after the change we are in the ballpark of a second or such and the situation was similar for the SIPParser. A testcase to parse a 401 SIP message went from 200ms to 70ms. This is on a slow ARM with the plain interpreter and there should still be some room for improvements.

Outlook

I think PetitParser could have some further optimizations. Instead of the PPCharSetPredicate and the PPObjectPredicateParser there could be a PPCharSetPredicateParser that avoids the call to >>#value:. and one creating two PPCharSetPredicateParsers and joining them with a PPChoiceParser one could simply join the two look-up tables. This would optimize #digit asParser / #blank asParser and save one LookupTable. The next thing would be to create sparse PPCharSetPredicate when one knows that only a subset will be filled.


In terms of GNU Smalltalk we need to port to GNU lightning 2.0 and we would gain JIT support for ARM and can take it from there as well. Another option would be to start having ByteCode to ByteCode optimizations like inlining often called methods (with and without OSR).

Last but not least we could use MrGwen's GNU lightning bindings and JIT a parser from the PetitParser representation.



September 05, 2014

Nicolas Petton - Multi-occur on projects

Update: Damien Cassou tricked me into extracting it in a package. You can get it here: github.com/NicolasPetton/noccur.el.

Occur-mode is one of the awesome modes that come builtin with Emacs.

Sometimes I just want to run multi-occur on all (or a subdirectory) of a project I’m working on. Used with keyboard macros it makes it a snap to perform modifications on many buffers at once.

I wrote a tiny package containing the following functions that does just that:

(require 'projectile)

    (defun noccur-dired (regexp &optional nlines)
    "Perform `multi-occur' with REGEXP in all dired marked files.
    When called with a prefix argument NLINES, display NLINES lines before and after."
    (interactive (occur-read-primary-args))
    (multi-occur (mapcar #'find-file (dired-get-marked-files)) regexp nlines))

    (defun noccur-project (regexp &optional nlines)
    "Perform `multi-occur' in the current project files."
    (interactive (occur-read-primary-args))
    (let* ((directory (read-directory-name "Search in directory: "))
    (files (if (and directory (not (string= directory (projectile-project-root))))
    (projectile-files-in-project-directory directory)
    (projectile-current-project-files)))
    (buffers (mapcar #'find-file 
    (mapcar #'(lambda (file)
    (expand-file-name file (projectile-project-root)))
    files))))
    (multi-occur buffers regexp nlines)))

    (provide 'noccur)
    

It requires projectile for the `noccur-project` function, but `noccur-dired` is very similar and doesn’t require it.

The way I use it is the following:

M-x noccur-project RET foo RET then I can edit the occur buffer’s content with occur-edit-mode (bound to e). To save changes in all modified buffer and go back to occur-mode press C-c C-c.

Comments

Torsten Bergmann - Pyonkee

A Scratch clone running on iPad, read more here.

September 04, 2014

Ricardo Moran - Análisis de imágenes en Etoys – Parte 1

Las imágenes provenientes de una cámara constituyen probablemente uno de las fuentes de datos mas ricas con las que podemos contar.  Nos pueden permitir encontrar objetos, determinar distancias, leer textos o incluso encontrar personas aplicando distintos algoritmos de detección.

Los objetos en Etoys nos proveen a nosotros de herramientas que, de ser utilizadas correctamente, nos permiten obtener información relevante sobre cualquier imagen en la pantalla, y dado a que la cámara es otro objeto en la pantalla podemos obtener información sobre la escena capturada.

En la sección de Pruebas existen dos mosaicos básicos que podemos utilizar para esto

tile2 tile1

 

Estos mosaicos nos permiten evaluar si el objeto Ellipse esta ubicado sobre un color dado, lo cual es suficiente para realizar un análisis sobre cualquier objeto virtual que queramos. Un ejemplo de esto se puede apreciar en el post de manejo de tiempos

El mayor problema que presentan estos mosaicos es que buscan por un color especifico, cosa que no va a estar presente en las imágenes capturadas por una cámara, debido al ruido y a las distorsiones generados por el mundo físico.

En la sección de Observación contamos con tres mosaicos que nos permiten obtener información sobre los colores que se encuentran debajo del objeto, sin considerar específicamente un color.

 

Los mosaicos de Brightness (brillo) y Luminance (luminiscencia) nos permiten medir que tan claro es un color, por lo que es mucho mas adecuado para buscar colores dentro del cuadro de una cámara asumiendo errores de captura.

 

example1example3

example2example4

Podemos observar como utilizar fácilmente el brillo para diferenciar entre un blanco y negro, pero no podemos diferenciar entre blanco y rojo, en cambio la luminiscencia nos permite distinguir entre rojo y  los demás colores, aunque no nos va a permitir diferenciar rojo de otro color como puede ser azul o verde si mantienen la misma intensidad.

En el siguiente vídeo podemos ver el uso de estos mosaicos para controlar a un robot que sigue una linea negra  con solamente dos bloques de código expresando a la velocidad de las ruedas como una función del brillo presente debajo de dos elipses.

 

En la parte 2 de este post voy a expandirme sobre las limitaciones que presentan estas técnicas, y las posibles soluciones que podemos implementar.

ESUG news - Video and Slides ESUG 2014

All collected videos and slides of ESUG 2014 are now online:

September 03, 2014

Noury Bouraqadi - Getting current pose of robot using tf listener

Our coordination framework for multi-robot exploration needs to know the current robot’s pose (position and orientation) within the explored map frame. There are two ways to achieve it: 1 – Using costmap function. bool costmap_2d::Costmap2DROS::getRobotPose(tf::Stamped &global_pose) const 2 – Using tf listener. geometry_msgs::PoseStamped pose_stamped; pose_stamped.header.stamp = ros::Time::now(); pose_stamped.header.frame_id = tf_prefix+"/"+map_frame; pose_stamped.pose.position.x = transform.getOrigin().getX(); pose_stamped.pose.position.y =… Continue reading

Torsten Bergmann - Pharo Seaside : Looking at HTTP Traffic

If you want to easily look at the HTTP traffic in your Pharo based Seaside application then just evaluate:

       ZnLogEvent open

This will open an spy on the Zinc announcements. Then start your server using:

     ZnZinServerAdaptor startOn: 8080.

and use the webbrowser to browse your Seaside application. You will now see any HTTP exchange between the client and the server.

The video demonstrates this:

Torsten Bergmann - IDE4PLC based on Pharo

A free IDE for Programming PLC's (Programmable Logic Controller) based on Pharo Smalltalk written by Eric Nicolás Pernia from the Universidad Nacional de Quilmes.

Read more on the page site or browse the code on GitHub.

Torsten Bergmann - How to run Pharo 3.0 on top of Linux 64 bits

September 02, 2014

Joachim Tuchel - Beautiful little tutorial on how to build a complete Seaside Application with an RDB Backend

Sven just announced the availability of a new tutorial named “Reddit.st — In 10 Cool Pharo Classes“. I am fascinated by how short and clear this piece is. It really explains all you need to know to get started building a Seaside Application using Glorp and Postgres as a database. It is nice to read and really […]

Pharo Weekly - Another week of improvements in PharoLand

40196
13941 [FEATURE]: Configuration Browser: Switch to Any Repository
https://pharo.fogbugz.com/f/cases/13941

13938 Opal, custom compilers and class side methods
https://pharo.fogbugz.com/f/cases/13938

40194
13897 check for argument assignments (block and method argumentts)
https://pharo.fogbugz.com/f/cases/13897

40193
13413 Support string operations in AsmJit
https://pharo.fogbugz.com/f/cases/13413

13926 Assign to args in RBRefactoryTestDataApp>>#demoRenameMethod:PermuteArgs:
https://pharo.fogbugz.com/f/cases/13926

40192
13153 Comment of FreeTypeProvider refers to FileDirectory and it should not
https://pharo.fogbugz.com/f/cases/13153

13726 Forward port Pharo4: 13725 NativeBoost crashes when reading null pointer field in a structure
https://pharo.fogbugz.com/f/cases/13726

13390 Support NB options with non-boolean values
https://pharo.fogbugz.com/f/cases/13390

40191
13911 Metacello test packages not properly unload
https://pharo.fogbugz.com/f/cases/13911

40190
13721 Failing test: RBRenameMethodTes>>#testRenameTestMethod1
https://pharo.fogbugz.com/f/cases/13721

13631 Deprecate method refactoring
https://pharo.fogbugz.com/f/cases/13631

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

40189
13918 RBMessageNode uses #to:do: instead of #with:do: (Coding Idiom Violation)
https://pharo.fogbugz.com/f/cases/13918

40188
13885 Integration report is not showing the changes integrated
https://pharo.fogbugz.com/f/cases/13885

40187
13566 should remove this kind of isKindOf:
https://pharo.fogbugz.com/f/cases/13566

40186
13865 Cleaning menuMorph
https://pharo.fogbugz.com/f/cases/13865

30855
13902 inconsistent behaviour when debugging Pharo3.0
https://pharo.fogbugz.com/f/cases/13902

13858 Backport 3.0 case 13857
https://pharo.fogbugz.com/f/cases/13858

40185
13910 Add return to Magnitude>>compareWith:ifLesser:ifEqual:ifGreater:
https://pharo.fogbugz.com/f/cases/13910

13880 store into method argument: can not recompile standardizeDevVersionString:
https://pharo.fogbugz.com/f/cases/13880

13881 Refactoring to PSMCPatchMorph to allow dispatching
https://pharo.fogbugz.com/f/cases/13881

40182
13908 RBPragmaNode uses #to:do: instead of #with:do: (Coding Idiom Violation)
https://pharo.fogbugz.com/f/cases/13908

13906 Move to class refactoring gives DNU
https://pharo.fogbugz.com/f/cases/13906

13909 Instance variable previous in RBProgramNodeTest is not referenced
https://pharo.fogbugz.com/f/cases/13909

13894 Class side initialize methods should be runnable in Nautilus
https://pharo.fogbugz.com/f/cases/13894

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


Pharo News - Reddit.st — In 10 Cool Pharo Classes

<p>&quot;This is a tutorial showing how to implement a small but non-trivial web application in Pharo using Seaside, Glorp (an ORM) and PostgreSQL.</p> <p>Reddit is a web application where users can post interesting links that get voted up or down. The idea is that the ‘best’ links automatically end up with the most points. Many other websites exist in the area of social bookmarking, like Delicious, Digg and Hacker News.</p> <p>Reddit.st adds persistency in a relational database, unit tests as well as web application components to the mix.&quot;</p> <p><a href="https://medium.com/@svenvc/reddit-st-in-10-cool-pharo-classes-1b5327ca0740">Read more...</a></p>

Pharo News - Reddit.st — In 10 Cool Pharo Classes

<p>&quot;This is a tutorial showing how to implement a small but non-trivial web application in Pharo using Seaside, Glorp (an ORM) and PostgreSQL.</p> <p>Reddit is a web application where users can post interesting links that get voted up or down. The idea is that the ‘best’ links automatically end up with the most points. Many other websites exist in the area of social bookmarking, like Delicious, Digg and Hacker News.</p> <p>Reddit.st adds persistency in a relational database, unit tests as well as web application components to the mix.&quot;</p> <p><a href="https://medium.com/@svenvc/reddit-st-in-10-cool-pharo-classes-1b5327ca0740">Read more...</a></p>