Monthly Archives: October 2015

Pi with a touch screen and Pharo

I wrote a (really nice -changed from the editor) article on Medium on how to setup the Pi with a touch screen and Pharo:

https://medium.com/@astares/pharo-pi-9eef257b6a21#.gw72pe7uy

Hope one or the other might be interested.

Have fun
T.
Advertisements

CalipeL: a benchmarking tool for Smalltalk/X and Pharo

Hi there,

After more than 2 years of (time-to-time) development and about 
that much time of use, I'd like to announce CalipeL, a tool for
benchmarking and monitoring performance regressions.

The basic ideas that drove the development:

* Benchmarking and (especially) interpreting benchmark results 
  is always a monkey business. The tool should produce raw numbers,
  letting the user to use whichever statistics she need to make up
  (desired) results.
* Benchmark results should be kept and managed at a single place so
  one can view and retrieve all past benchmark results pretty much 
  the same way as one can view and retrieve past versions of 
  the software from a source code management tool.

Features:

- simple - creating a benchmark is as simple as writing a method 
  in a class
- flexible - a special set-up and/or warm-up routines could be
  specified at benchmark-level as well as set of parameters 
  to allow fine-grained measurements under different conditions
- batch runner - contains a batch runner allowing one to run 
  benchmarks from a command line or at CI servers such as Jenkins.
- web - comes with simple web interface to gather and process 
  benchmark results. However, the web application would deserve
  some more work.

Repository: 

  https://bitbucket.org/janvrany/jv-calipel

  http://smalltalkhub.com/#!/~JanVrany/CalipeL-S (read-only export
  from the above and Pharo-specific code)

More information: 

  https://bitbucket.org/janvrany/jv-calipel/wiki/Home

I have been using CalipeL for benchmarking and keeping track of 
performance of Smalltalk/X VM, STX:LIBJAVA, a PetitParser compiler 
and other code I was working over the time.

Finally, I'd like to thank to Marcel Hlopko for his work on the 
web application and Jan Kurs for his comments.

I hope some of you may find it useful. If you have any comments 
or questions, do not hesitate and let me know!

Regards, Jan


Another pack of great improvements

50394
16786 Code formatter moves comments to wrong place
https://pharo.fogbugz.com/f/cases/16786

16815 DNU RBAndEnvironment>>packageNames while producing html report bootstrap architecture rule
https://pharo.fogbugz.com/f/cases/16815

16817 like 16798 #sourceInterval should work for every RBNode – RBLiteralNode too
https://pharo.fogbugz.com/f/cases/16817

16711 FileDialogWindow should fail silently on DirectoryDoesNotExist: when clicking on Junctions (Windows)
https://pharo.fogbugz.com/f/cases/16711

16807 SystemWindow refactoring (Events, activation ++)
https://pharo.fogbugz.com/f/cases/16807
50393
16816 Storing System Settings produces error when preference directory does not exist
https://pharo.fogbugz.com/f/cases/16816

16809 Sort the variables from each class in the variables-menu alphabetically
https://pharo.fogbugz.com/f/cases/16809

16810 Floating editor size too large for Nautilus package pane
https://pharo.fogbugz.com/f/cases/16810

50392
15184 Systembrowser package navigation inconsistent behavior
https://pharo.fogbugz.com/f/cases/15184

16799 RBParser assigns comments to wrong node
https://pharo.fogbugz.com/f/cases/16799

16798 #sourceInterval should work for every RBNode
https://pharo.fogbugz.com/f/cases/16798

16476 dropping an MCZ file on the world does not propose a browse anymore
https://pharo.fogbugz.com/f/cases/16476

50391
16795 The package Random includes tests
https://pharo.fogbugz.com/f/cases/16795

16800 ask a SpecWindow for #isDisplayed always returns true
https://pharo.fogbugz.com/f/cases/16800

16803 Renaming method category with floating editor: size of editing rectangle
https://pharo.fogbugz.com/f/cases/16803
50390
ConfigurationOfRubric
50389
16790 RBUnpackagedCodeRule crashes if entity has nil package
https://pharo.fogbugz.com/f/cases/16790

16772 Renaming method category with floating editor
https://pharo.fogbugz.com/f/cases/16772

50388
15460 UITheme>>#backgroundColor packaged in Glamour-Morphic-Theme
https://pharo.fogbugz.com/f/cases/15460

16681 Storing System Settings using STON
https://pharo.fogbugz.com/f/cases/16681
50387
16793 Minor protocol cleanup in SystemWindow for taskbar related items
https://pharo.fogbugz.com/f/cases/16793

16777 Querying block with many temps fails
https://pharo.fogbugz.com/f/cases/16777
50386
16789 RBUnaryAccessingMethodWithoutReturnRule refers to #nodes instead of #statements
https://pharo.fogbugz.com/f/cases/16789

16758 Unify SystemWindow announcing with Morph announcing
https://pharo.fogbugz.com/f/cases/16758

16653 Add an architectural rule for the bootstrap layer
https://pharo.fogbugz.com/f/cases/16653

50385
16770 Create a basic version of checking methods in LintRules
https://pharo.fogbugz.com/f/cases/16770

16785 Replace the usages of #smalltalkCode in OpalTools
https://pharo.fogbugz.com/f/cases/16785

16525 Nautilus leaking SystemAnnouncements
https://pharo.fogbugz.com/f/cases/16525
50384
16759 update comment for #ifNotEmpty:
https://pharo.fogbugz.com/f/cases/16759

16779 Reflectivity: fix to be able to invalidate all method of package Kernel
https://pharo.fogbugz.com/f/cases/16779

16778 Entering a number then $ in the Playground throws a SubscriptOutOfBounds: error
https://pharo.fogbugz.com/f/cases/16778

16763 Add #isUsed to Manifest classes
https://pharo.fogbugz.com/f/cases/16763

16764 Lost argument names in Rubric, resized example
https://pharo.fogbugz.com/f/cases/16764

50381
16761 Method source should not contain linefeeds in Kernel
https://pharo.fogbugz.com/f/cases/16761

16577 Random should be in its own package
https://pharo.fogbugz.com/f/cases/16577
50380
16752 problems with new search function in FastTable
https://pharo.fogbugz.com/f/cases/16752

16753 Invalidate ProtoObject
https://pharo.fogbugz.com/f/cases/16753

15713 CommandLineUIManager>>#merge:informing: is not doing anything
https://pharo.fogbugz.com/f/cases/15713
50378
16751 link invalidation: install cm directly for primitives and optionCompileOnLinkInstallation
https://pharo.fogbugz.com/f/cases/16751

16729 Removing PluggableTextField from FT
https://pharo.fogbugz.com/f/cases/16729

50377
16689 FileList: remove some usage of deprecated classes (StandardFileStream)
https://pharo.fogbugz.com/f/cases/16689

16733 Canvas>>#reset calls two methods, neither of them exists
https://pharo.fogbugz.com/f/cases/16733

16748 inline installation code for restoring the original CM
https://pharo.fogbugz.com/f/cases/16748
50376
16729 Removing PluggableTextField from FT
https://pharo.fogbugz.com/f/cases/16729

16748 inline installation code for restoring the original CM
https://pharo.fogbugz.com/f/cases/16748

16747 updated Configuration
https://pharo.fogbugz.com/f/cases/16747
50375
16542 FTSelectionStrategy>>toggleRowIndex: logic duplication
https://pharo.fogbugz.com/f/cases/16542

16744 ReflectiveMethod: make sure to not use DNU forwarding on invalidate
https://pharo.fogbugz.com/f/cases/16744

16741 remove addModelMenuItemsTo:forMorph:hand:
https://pharo.fogbugz.com/f/cases/16741

50374
16741 remove addModelMenuItemsTo:forMorph:hand:
https://pharo.fogbugz.com/f/cases/16741

16729 Removing PluggableTextField from FT
https://pharo.fogbugz.com/f/cases/16729

16744 ReflectiveMethod: make sure to not use DNU forwarding on invalidate
https://pharo.fogbugz.com/f/cases/16744

50373
16628 RBBrowseEnvironment doesnt respect the Set Theory
https://pharo.fogbugz.com/f/cases/16628

16739 Senders and implementors do not work when one parameter is a selector in the form “with:do” (no space)
https://pharo.fogbugz.com/f/cases/16739

16745 ReflectiveMethod: do not get class from AST
https://pharo.fogbugz.com/f/cases/16745
50372
16737 fix all users of NautilusUI
https://pharo.fogbugz.com/f/cases/16737

12354 includesSubstring: should return true when the argument is empty
https://pharo.fogbugz.com/f/cases/12354

16738 Reflectivity: do not wrap primitives if there is no link
https://pharo.fogbugz.com/f/cases/16738

16418 ScriptLoader>>diffServerRootString with Pharo 3 repo for Pharo 5?
https://pharo.fogbugz.com/f/cases/16418

50371
16577 Random should be in its own package
https://pharo.fogbugz.com/f/cases/16577

50370
16726 move Reflectivity-Styling to a separate package
https://pharo.fogbugz.com/f/cases/16726

16732 DNU when cancel fetch on retrieve icon sets
https://pharo.fogbugz.com/f/cases/16732
50369
16732 DNU when cancel fetch on retrieve icon sets
https://pharo.fogbugz.com/f/cases/16732

16577 Random should be in its own package
https://pharo.fogbugz.com/f/cases/16577

16726 move Reflectivity-Styling to a separate package
https://pharo.fogbugz.com/f/cases/16726

50368
16651 remove old ThemeIcons structure
https://pharo.fogbugz.com/f/cases/16651

50367
16713 Update FastTable (See description for more info)
https://pharo.fogbugz.com/f/cases/16713

16568 STCommandLineHandler class >>#isResponsibleFor: and >>#activate are not consistent
https://pharo.fogbugz.com/f/cases/16568

16692 Simplification of Author>>#checkAndSetFullNameWith:
https://pharo.fogbugz.com/f/cases/16692
50366
16262 Use Rubric in Transcript
https://pharo.fogbugz.com/f/cases/16262

50365
16722 Fixing RubScrolledText and removing some users of RubPluggableTextMorph
https://pharo.fogbugz.com/f/cases/16722

15162 #asLegalSelector: bad name and wrong for selectors with args
https://pharo.fogbugz.com/f/cases/15162
50364
16719 Extract Tick and Tabs from Polymorph
https://pharo.fogbugz.com/f/cases/16719

16634 Rename layout to classLayout (step 2 use new accessors in the tests)
https://pharo.fogbugz.com/f/cases/16634

16718 Added Help topic on importing resources in the Pharo image
https://pharo.fogbugz.com/f/cases/16718
50363
16278 Viewing the hierarchy from Object or ProtoObject is sloow
https://pharo.fogbugz.com/f/cases/16278

16716 fix testClassRespectsPolymorphismWithTrait
https://pharo.fogbugz.com/f/cases/16716

16721 Comment of BlockClosure>>sourceNode is unclear
https://pharo.fogbugz.com/f/cases/16721

50362
16715 options defined by classes or methods need to have overlay semantics
https://pharo.fogbugz.com/f/cases/16715

16714 Remove Tool-DependencyAnalyser-Checker package
https://pharo.fogbugz.com/f/cases/16714

16704 no helptext for playground buttons
https://pharo.fogbugz.com/f/cases/16704

50361
Tool-DependencyAnalyser-Checker

50360
16695 allow classes to force meta link options: #metaLinkOptions
https://pharo.fogbugz.com/f/cases/16695

16699 remove ThemeIcons references in Versionner
https://pharo.fogbugz.com/f/cases/16699

New Brick Preview

Hi
A small technical Brick preview 🙂
What is new:
 – Refactored and improved layouts. Now they also work with views
 – Text editor widget
 – List performance improvements
 – Many new examples

– Rewrote tests.

      They are visual and displayed as examples in browser.

 – Improved example browser.
      Examples are categorised in expandable tree list.
      Added example hints.
 – Many small improvements and bug fixes
Gofer it
smalltalkhubUser: ‘Pharo’ project: ‘Brick’;
configurationOf: ‘Brick’;
loadDevelopment.
Please note, it is impossible to load brick in Pharo for a moment because of upcoming integration of GT. (Brick uses new GT stuff which is not in pharo yet). Please use Moose 6.
I also added brick examples entry to world menu.
Screen Shot 2015-10-15 at 22.02.01
Aliaksei Syrel

HTTPS proxying using HTTP CONNECT

Hi,

Yesterday I did a first implementation of HTTPS proxying using HTTP CONNECT tunneling for Zn+Zdc, this should now be tested by a wider audience. With this new feature it should now be possible to access HTTPS Urls from behind an HTTP proxy. This is for all OS platforms. Thanks Nicolai for finding the spec reference and Torsten for the push.

In Zn #bleedingEdge

===
Name: Zinc-HTTP-SvenVanCaekenberghe.437
Author: SvenVanCaekenberghe
Time: 6 October 2015, 9:57:35.790306 pm
UUID: 96b9026b-561e-4d6f-88b7-46389b163e99
Ancestors: Zinc-HTTP-SvenVanCaekenberghe.436

Implementation of HTTPS proxying using HTTP CONNECT tunneling

https://en.wikipedia.org/wiki/HTTP_tunnel#HTTP_CONNECT_tunneling
http://www.ietf.org/rfc/rfc2817.txt (section 5)

Rewrite ZnClient>>#newConnectionTo: with delegate to newly added ZnClient>>#setupTLSTo: which implements the mechanism described in the links above

Change ZnClient>>#readResponse: not to expect a body with a CONNECT request

Change ZnHeaders>>#request: to use #authorityWithPort for the Host header

Add ZnNetworkingUtils [class]>>#secureSocketStreamOn:

Change ZnRequestLine>>#writeOn: to write the correct Request-URI portion of the Request-Line in case of CONNECT and/or plain HTTP(S) proxying

Tested with Squid 3 as proxy
===
Name: Zinc-Resource-Meta-Core-SvenVanCaekenberghe.54
Author: SvenVanCaekenberghe
Time: 6 October 2015, 9:58:39.204572 pm
UUID: 134e875c-d2dd-4970-9697-b9d56833d77d
Ancestors: Zinc-Resource-Meta-Core-SvenVanCaekenberghe.53

Add ZnUrl>>#authorityWithPort and ZnUrl>>#hasSecureScheme
===
Name: Zinc-Tests-SvenVanCaekenberghe.234
Author: SvenVanCaekenberghe
Time: 6 October 2015, 9:59:59.387302 pm
UUID: d2831cd8-fa01-4f44-8533-f5045dabbd7d
Ancestors: Zinc-Tests-SvenVanCaekenberghe.233

Modify ZnClientTests>>#testIfFailNonExistingHost because of different behavior when a proxy is involved
===

On my machine all Zn+Zdc tests succeed with a proxy set (squid 3). Let's hope it works for others too. I did not yet test proxy authorization but I think it should work like before.

An HTTP Proxy can be set in World > System > Settings

Here is some code to do a simple test

ZnClient new get: 'https://s3-eu-west-1.amazonaws.com/public-stfx-eu/test-2050.txt'.

ZnClient new get: 'https://s3-eu-west-1.amazonaws.com/public-stfx-eu/small.html'.

ZnClient new get: 'http://stfx.eu/small.html'.

ZnNetworkingUtils default isProxySet.

ZnNetworkingUtils shouldProxyUrl: 'https://s3-eu-west-1.amazonaws.com/public-stfx-eu/small.html' asUrl.

Regards,

Sven  

A warm testimony

Hello Offray,

My apologies for the delay in reply. I have been on holiday.

Thanks for the suggestions. I am pretty much wanting to stick with Pharo solutions. I want to use and contribute to the Pharo ecosystem.

I believe the more we use our own tools and contribute toward the ecosystem the better our tools and the ecosystem will be. In Pharo I can possibly offer an occasional bug fix, contribute to documentation or tests.

And yes, the other solutions do offer that as well as they are open source. But the bar is much higher. I now have to understand their ecosystems, languages, and development cultures of a variety of tools.

In Pharo I have Pharo/Smalltalk. Even a simple user can often contribute in simple ways. Even as a simple user of a Pharo tool. I can submit issues, fix simple issues, improve method or class comments, etc. As I learn the Pharo tools and ecosystem I continually improve my ability to take care of myself and also contribute to the community. I think Pharo is the most user empowering environment I have found. Sure I can find lots and lots of other quality tools in other languages. But each is their own island. And depending on how broadly I spread the net. Different languages, different cultures, different licenses, all independent of each other.

I much prefer the Pharo ecosystem and culture. It is home.
I know others who like the other tools, and multiplicity of choice. And they feel comfortable there.

Choice is nice. Pharo is mine.

Thanks again for suggestions and for a view on how others approach problems and their solutions. That is always available as inspiration even within Pharo. I take a look at your stuff.

Jimmie

Steady progress is Pharo rythm

50359
16696 Execution Demo with Reflectivity
https://pharo.fogbugz.com/f/cases/16696

16694 optionMetalevel and some cleanups
https://pharo.fogbugz.com/f/cases/16694

16697 NautliusPluginManager context menu broken
https://pharo.fogbugz.com/f/cases/16697
50358
16685 remove ThemeIcons references in GTools
https://pharo.fogbugz.com/f/cases/16685

16702 remove ThemeIcons references in GTInspector
https://pharo.fogbugz.com/f/cases/16702

16701 remove ThemeIcons references in Catalog
https://pharo.fogbugz.com/f/cases/16701

16700 remove ThemeIcons references in GTSpotter
https://pharo.fogbugz.com/f/cases/16700
50356
16680 remove direct references to icontheme classes
https://pharo.fogbugz.com/f/cases/16680
50355
16602 Only get a basic command line handler in the bootstrap (avoid startup preferences)
https://pharo.fogbugz.com/f/cases/16602
50354
16686 remove ThemeIcons references in ShoreLine
https://pharo.fogbugz.com/f/cases/16686

16673 Senders of… highlights wrong code segment
https://pharo.fogbugz.com/f/cases/16673
50353
16691 MouseFocus and triggering modal dialogs from mouse event dispatcher
https://pharo.fogbugz.com/f/cases/16691

16690 Spec WidgetBuilt is send with an Adapter but it should be a widget (Morph)
https://pharo.fogbugz.com/f/cases/16690

16068 Debugger is losing the source code changes on method context change
https://pharo.fogbugz.com/f/cases/16068

16688 Coverage Demo with Reflectivity
https://pharo.fogbugz.com/f/cases/16688

16490 MorphSlot
https://pharo.fogbugz.com/f/cases/16490

50352
16682 Syntax Error when recompiling the image
https://pharo.fogbugz.com/f/cases/16682

50351
16679 links on Slots: add all reifications
https://pharo.fogbugz.com/f/cases/16679

16645 RBParser should not accept # <whitespace> and # <number>
https://pharo.fogbugz.com/f/cases/16645

16655 Menu stay up icon isnt removed
https://pharo.fogbugz.com/f/cases/16655
50350
16674 Navigate from Variables to AST Node accessing that variable
https://pharo.fogbugz.com/f/cases/16674

16677 #after on Globals and Slots
https://pharo.fogbugz.com/f/cases/16677

16676 Desktop Logo hidden behind Background image
https://pharo.fogbugz.com/f/cases/16676

16660 improve #isUsed for Behaviours
https://pharo.fogbugz.com/f/cases/16660

50349
16669 MetaLinks on Slots
https://pharo.fogbugz.com/f/cases/16669

16670 optionInlineCondition: do not inline condition
https://pharo.fogbugz.com/f/cases/16670

16668 Variables button throws KeynotFound when a variable is selected
https://pharo.fogbugz.com/f/cases/16668
50348
16663 Minor tweaks to the Nautilus variable menu
https://pharo.fogbugz.com/f/cases/16663

16667 do not inline meta link: #optionInlineMetaObject
https://pharo.fogbugz.com/f/cases/16667

14618 Add a comment describing RBFileBlocksRule
https://pharo.fogbugz.com/f/cases/14618

50347
16654 test for #optionOneShot and accessors for pre-defined options
https://pharo.fogbugz.com/f/cases/16654

16662 SlotClassBuilderError –> tClassBuilderError
https://pharo.fogbugz.com/f/cases/16662

16658 Reflectivity: crash on Morph Invalidate
https://pharo.fogbugz.com/f/cases/16658
50346
16661 compatibility check when putting links on variables
https://pharo.fogbugz.com/f/cases/16661

10219 Completion: enter on accept awkwardness
https://pharo.fogbugz.com/f/cases/10219

16659 add #entity reification
https://pharo.fogbugz.com/f/cases/16659
50345
16652 Menues now have a very strange reddish color
https://pharo.fogbugz.com/f/cases/16652

16631 Move integration rules to a PharoCriticRules class
https://pharo.fogbugz.com/f/cases/16631
50344
16647 Nautilus Variable Menu Improvement
https://pharo.fogbugz.com/f/cases/16647

16648 ThemeSettings protocol cleanup
https://pharo.fogbugz.com/f/cases/16648

16649 Links of Globals and Class Vars: implement all reifications + extend for Globals
https://pharo.fogbugz.com/f/cases/16649
50343
16646 test + fix: #after mit access to temp in method
https://pharo.fogbugz.com/f/cases/16646

16642 availableReifications: return the list of supported reifications for an entity
https://pharo.fogbugz.com/f/cases/16642

16632 RBParser should reject – space literal
https://pharo.fogbugz.com/f/cases/16632

50342
16640 Reflectivity: add support for reifications #name and #value for Class Variables
https://pharo.fogbugz.com/f/cases/16640
50341
16591 #findVariable:ifNone: methods needs to go back to Opal
https://pharo.fogbugz.com/f/cases/16591

16633 Rename layout to classLayout (step 1 add accessor)
https://pharo.fogbugz.com/f/cases/16633

16639 fix non common smalltalk syntax in PointTest
https://pharo.fogbugz.com/f/cases/16639

50339
16620 Add a category “Pharo integration rules” to the critics browser
https://pharo.fogbugz.com/f/cases/16620

50338
15858 review rule RBAbstractClassRule
https://pharo.fogbugz.com/f/cases/15858

16402 Diff view partly broken (Refactorgin ChangesBrowser)
https://pharo.fogbugz.com/f/cases/16402

16600 System-Changes should not depend on system-FileRegistry
https://pharo.fogbugz.com/f/cases/16600

50337
16616 “Eliminate guarding clauses” critic is named wrong and maybe should be removed
https://pharo.fogbugz.com/f/cases/16616

16624 SimpleBorder borderStyle should initialize its width to a number
https://pharo.fogbugz.com/f/cases/16624

16622 Merge latest rubric fixes
https://pharo.fogbugz.com/f/cases/16622

50336
16603 System-Hashing should not depend on Graphics Primitives
https://pharo.fogbugz.com/f/cases/16603

16615 Improve ContributingToTheCatalogHelp
https://pharo.fogbugz.com/f/cases/16615

16614 To use at:ifPresent:ifAbsent:, ifPresent block argument should not be mandatory
https://pharo.fogbugz.com/f/cases/16614
50334
16597 DNU RBParseErrorNode>>statements: when | is placed before a .
https://pharo.fogbugz.com/f/cases/16597

16599 Compression should not depend on Graphics-Display Object (leftover)
https://pharo.fogbugz.com/f/cases/16599

16610 test: block body vs block
https://pharo.fogbugz.com/f/cases/16610
50333
16606 remove bubble like ballon tooltip from menus
https://pharo.fogbugz.com/f/cases/16606

16605 senders/implementors window shows unrelated content
https://pharo.fogbugz.com/f/cases/16605

16598 Cannot save the contents of the standard workspace to disk
https://pharo.fogbugz.com/f/cases/16598

16596 #before for Class Variable
https://pharo.fogbugz.com/f/cases/16596
50332
16595 Get rid of UnicodeInitialization in the bootstrap
https://pharo.fogbugz.com/f/cases/16595

50331
16594 System-Changes should not depend on Text-Core
https://pharo.fogbugz.com/f/cases/16594
50330
16523 Nautilus Regex Search Box borken
https://pharo.fogbugz.com/f/cases/16523

16587 Deprecate SmalltalkImage>>#logChange:
https://pharo.fogbugz.com/f/cases/16587

16573 Monticello should not depend on System-FileRegistry
https://pharo.fogbugz.com/f/cases/16573
50329
16589 #instead for block sequence
https://pharo.fogbugz.com/f/cases/16589

16588 Integrate Catalog 0.9
https://pharo.fogbugz.com/f/cases/16588

16586 Load latest version of CodeImporter
https://pharo.fogbugz.com/f/cases/16586

50328
16581 one-shot links
https://pharo.fogbugz.com/f/cases/16581

16582 Reflectivity: #instead for sequence nodes
https://pharo.fogbugz.com/f/cases/16582

15260 WriteStream on new string
https://pharo.fogbugz.com/f/cases/15260

16578 Add an id to Session
https://pharo.fogbugz.com/f/cases/16578