Bank of Headlines

Bank of headlines - Unpublished pages to work on:

Blog entries to make:

Why does the editor look so much better on myborden.com than for the Amdocs Pier? Tried adding the library PREditorScripts, no success.

Puzzles - https://www.redblobgames.com/pathfinding/a-star/introduction.html May want to update the puzzle page with this progress bar package


Add this to my research on metacello: Dependency browser

Add a post for updating the timeout - Something like the length of a session and the impact of what one chooses.

Add a review of Master Algorithm- ref:

Similar to Pier Search - Any of my extensions caused other problems - check Pier-Model:

PRFullTextSearch>>visitStructure:
PRTable>>accept:
PRViewRenderer>>visitPierTable:
PRVisitor>>visitPierTable:

Anything that can be found in http://rjlipton.wordpress.com/2014/10/18/a-new-provable-factoring-algorithm/?


Attempted to create a conditional description - if the time is 11:59, then display it as a date, if it is any other, display the date and time:

descriptionDue
	<magritteDescription>
	^ self due asTime = (Time hour: 23 minute: 59 second: 0)
		ifTrue: [
			^ MADateDescription new
				accessor: #due;
				priority: 300;
				label: 'Due Date';
				beEditable;
				beRequired;
				yourself ]
		ifFalse: [
			MATimeStampDescription new
				accessor: #due;
				priority: 300;
				comment: 'When this task must be done by.';
				label: 'Due Date';
				beEditable;
				beRequired;
				yourself ]

This didn't work out as I had expected - For new entries (which have the date defaulted to 11:59, they may display correctly as only the date, but sometimes it would not (and change the time to 12:00). Seems this may not be an option.

Are 3D printers a good idea?

Books to read

Advice for my kids:

  • My girls are worth fighting for
  • For your first job, look at what you can learn the most from, not where you can earn the most
  • start a business when you are young - when you have few responsibilities

Running Pier on Pharo 4

Either create a page in the pier section, or a blog post. Changes:

  • Replace TimeStamp with DateAndTime
DateAndTime tomorrow 2015-04-03T00:00:00-05:00The method TimeStamp class>>now has been deprecated.
use DateAndTime
The method DateAndTime>>asTimeStamp has been deprecated.
use #asDateAndTime

Pillar-Tests-Model-Document has failing tests - need to make sure my version is up-to-date.

Similar had to change the #asTimeStamp to #asDateAndTime in the pier todo code

  • Need to test this code on a Pharo 3 image
  • Need to create a contributing to Pier page for changing the contribution.
  • Also need to backup code on this wiki onto a desktop image on the iMac

2015-Apr-26 - Ran into error with 3.1 image in both 4.0 and 3.0 Pharo - when bringing up http://localhost:8080/pier, this error came up:

MessageNotUnderstood: PRInternalLink>>parameterAt:ifPresent:
Your request could not be completed. An exception occurred.

This is coming from this - the description param-name is search-button:

WAComponent>>initializeAttribute: description with: aValue overridWith: anInternalLink

Added PRInternalLink>>parameterAt:ifPresent:, next error was MessageNotUnderstood: PRSearchView>>refresh

parameterAt: aName ifPresent: aBlock
	Transcript
		show: 'This should not be called - ';
		show: thisContext sender printString;
		cr.
	self parameters at: aName ifAbsent: [ ^ nil ].
	^ aBlock value

2015-Sep-25 - Problems with Pier - Seems like the Jenkins job for this has been shut down. For Pier3, the pier image opens but has the error in the browser:

MessageNotUnderstood: PRInternalLink>>isEmbedded
Your request could not be completed. An exception occurred.

2015-Oct-15 - Looking at an older image, it looks like the method was:

PRLink>>isEmbedded
	^ self embedded

The variable embedded is defined in defined in this class.

TimeStamp issues again

2015-May-10 - Downloaded Build #716 from Pier3Addons 40,release3.1, opened it and went to login - it failed with the error:

Deprecation: The method TimeStamp class>>now has been deprecated. use DateAndTime
Your request could not be completed. An exception occurred.

Changing GRPharoPlatform>>magritteTimeStampClass to return DateAndTime instead of TImeStamp resolves the problem - it is being called from PRCommand>>execute. Not sure why Magritte-Pharo3-Model-JohnCBorden.4 wasn't loaded with this image, but it seems that I should create a Pharo4 version of this package.


Re-writing Code

2015-Apr-28 - In the process of upgrading Pier from Pharo 3 to Pharo 4, I ran into an issue where TimeStamp was replaced by DateAndTime. Previously I had dealt with this sort of replacement by filing out code and using Vim to do text replacement, however in this case that would have updated things like this blog post that contain the word, and not dealt with the class Timestamp being different than the word found in a string.

Example:

RBParseTreeRewriter new
	replace: '``@object deprecated: ``@arg1 '
	with: '``@object deprecated: ``@arg1 on:(''', dateString,  ''') in:(''Pharo', versionNumber asString, ''')'.

Questions:

  • How do I limit it only to the class PRKernelCreatorForPier?

The paper on this or the chapter may help. Interesting to see how the c2nim program works.

Maybe just update the source, and then less conversion is required:

PRToDoTask allInstances do: [ :task | task due: (DateAndTime date: task due asDate time: task due asTime)].
PBPost allInstances do: [:e | e publication class = TimeStamp ifTrue: [e publication: (DateAndTime date: e publication asDate time: e publication asTime)]].

Seems best to update Pier 3.0 to Pier 3.1.

PRKernel instances size = 1 ifTrue: [ PRKernel instances anyOne name: 'pier_old'].
PRKernelCreatorForPier new createKernel.

Another solution - replace all of the TimeStamps in the currently running wiki with DateAndTimes - then the problem disappears.

Replace TimeStamp with DateAndTime in the running wiki

Add to the Pier 3 to 3.1 conversion page:

  • It would be good to list the versions where the issues are fixed
  • Loaded the latest code in the PharoCloud image, it stopped serving the web pages due to DNU and other issues.

Create a blog post for backing up the Pier on pharocloud:

  • create an automated task for running ... to create the version code and save it in Monticello
  • import the new version into an image on my local machine
  • rely on FS backup to take care of the rest

Dealing with DST - Delete and re-create:

  • Find all of the tasks that are automated
    • One problem with the task description is the task title, which is not necessarily unique

TimeZones

Philippe Back posted this TZ code:

| localTimeZoneToRestore time |
localTimeZoneToRestore := DateAndTime localTimeZone.
DateAndTime localTimeZone: (TimeZone abbreviated: 'UTC').
time := DateAndTime midnight.
DateAndTime localTimeZone: TimeZone default.
time.

After running the above, when I check the time with either of the below, it is 5 hours ahead (Since I'm in CST):

DateAndTime now asTime.
Time now.

How would one display the ToDo list in local time?


Different Hosting

Could also host under Digital Ocean - it looks a lot like Pharocloud. More notes from the Zinc HTTP Components:

"Starting with http://zn.stfx.eu/zn/build-and-deploy-1st-webapp/
Start up the server:"
ZnServer startDefaultOn: 8080.
ZnClient new get: 'http://localhost:8080/random'.
ZnClient new get: 'http://localhost:8080/help'.
ZnServer default logToTranscript.
ZnServer default debugMode: true; inspect.
ZnServer stopDefault.

=

ZnServer startDefaultOn: 8080.
ZnServer default delegate map: #image to: MyFirstWebApp new.

MyFirstWebApp allInstances.

MyFirstWebApp new form asMorph openInWindow.

ConfigurationOfMyFirstWebApp load.

Need to create a wiki page under Pier for how to install Pier on Squeak - started on Pier on Squeak.


Automate Backup - Setup work

2015-May-31 - It would be great if I could setup an automate way of installing my favorite packages, running Productive Programmer code like the below.

Personalized Configuration

After working in Pharo for a while, one may wish to have their prefered packages and settings loaded into an image and setup before they start working. This way each morning they have a new fresh image complete with customizations.

For example, when I login each morning, I have a cron command setup to run a script which downloads the latest

PRKernel instances size = 1 ifTrue: [ PRKernel instances anyOne name: 'pier_old'].
PRKernelCreatorForPier new createKernel.

There are some tips at: https://smalltalkzen.wordpress.com/tag/pharo/ and http://sleepycoders.blogspot.ch/2013/10/dead-simple-intro-to-metacello.html.

Figure out what to do with scheduled tasks - For this I don't think I want them automated to run, but there may be other situations:"

ScheduledTask allInstances size = 0.
TaskScheduler allInstances size = 0.

Not sure how to specify more than one repository in the baseline method - seems this is normally done with Gofer (see 8.4 of PBE).

How would I know when new versions change?

Latest Copy - profile:

# http://pharobooks.gforge.inria.fr/PharoByExampleTwo-Eng/latest/ZeroConf.pdf
alias cdp='cd $HOME/Smalltalk/Pharo'
alias getp='cdp; mkdir -p old; mv pharo-vm old/pharo-vm.$RANDOM; curl get.pharo.org/40+vm | bash && curl https://ci.inria.fr/pharo-contribution/job/Pier3Addons/PHARO=40,VERSION=release3.1,VM=vm/lastSuccessfulBuild/artifact/Pier3Addons.zip > Pier3Addons.zip && unzip Pier3Addons.zip && ./pharo-ui Pier3Addons.image'
alias timer25='date; echo "========================="; for i in {1..25}; do sleep 60; echo -n "+"; done; echo; echo DONE'

Pharo Workspace:

World
    bindKeyCombination: 29 command
    toAction: [ SystemWindow sendTopWindowToBack ].
Transcript open.
TestRunner open.

Gofer new
	smalltalkhubUser: 'JohnCBorden' project: 'ClassicPier';
	package: 'Pier-SW2-Sw1Features';
	load.
Gofer new
	smalltalkhubUser: 'JohnCBorden' project: 'PierToDo';
	package: 'Pier-ToDo';
	package: 'Pier-Tests-Todo';
	load.
Gofer new
	smalltalkhubUser: 'JohnCBorden' project: 'PierWorkout';
	package: 'Pier-Workout';
	package: 'Pier-Test-Workout';
	load.
Gofer new
	url: 'http://smalltalkhub.com/mc/JohnCBorden/miscellaneous/main' username: 'JohnCBorden' password: (UIManager default request: 'Password for jborden:');
	package: 'Pier-Exported-Code';
	load.

PRKernel instances size = 1 ifTrue: [ PRKernel instances anyOne name: 'pier_old'].
PRKernelCreatorForPier new createKernel.

WAAdmin applicationDefaults.
WAConfiguration allInstances size = 0.
WAAdmin defaultDispatcher defaultName: 'pier'.
"Find out how to set the libraries - This order allows the ToDo display to be an accordion:
  PRBlueprintlibrary PRJavaScriptSupport PRWysiwygFileLibrary JQUiDeploymentLibrary JQUiDevelopmentLibrary PRYUIEditorDeploymentLibrary PRYUIEditorDevelopmentLibrary JQOvercastTheme JQWidgetBoxDeploymentLibrary  
The Kernel is Pier (replace pier_old)
This is set to default
For adding libraries, it seems like I need to get the app from WAAdmin, and send #addLibrary: JQuery..."

"Seems the Seaside Control Panel can be opened from World -> Tools. Remove unnecessary tools:"

WAAdmin defaultDispatcher unregister: (WAAdmin defaultDispatcher handlerAt: 'tools').
WAAdmin defaultDispatcher unregister: (WAAdmin defaultDispatcher handlerAt: 'examples').
WAAdmin defaultDispatcher unregister: (WAAdmin defaultDispatcher handlerAt: 'status').
WAAdmin defaultDispatcher unregister: (WAAdmin defaultDispatcher handlerAt: 'tests').
WAAdmin defaultDispatcher unregister: (WAAdmin defaultDispatcher handlerAt: 'javascript').
WAAdmin defaultDispatcher unregister: (WAAdmin defaultDispatcher handlerAt: 'bootstrap').
WAAdmin defaultDispatcher unregister: (WAAdmin defaultDispatcher handlerAt: 'welcome').
WAAdmin defaultDispatcher unregister: (WAAdmin defaultDispatcher handlerAt: 'piersetup').
WAAdmin defaultDispatcher unregister: (WAAdmin defaultDispatcher handlerAt: 'browse').
"Following step - Automate taking a weekly backup of the wiki - p137 (Working with Remote Servers) of DIP may help with Gofer writing."
#('Find Broken Links' 'Add a History Report' 'Update Overdue Repeating Tasks' 'Automate Backup of Pier to Code') do:
	[ :title |
		(PRPathLookup start: (PRKernel instanceNamed: 'Pier') root path: ('/John Borden/Todo/', title)) automate ].

Follow the steps for the dev tools. Don't automate the code if this version isn't going to the prod server. If it is, then also update the tasks to have the correct time (this adds 5 hours):

PRToDoTask allInstancesDo: [ :e | e due: (e due midnight + 299 minutes) ].

Check the tasks:

TaskScheduler allInstances size = 1 ifTrue: [ TaskScheduler allInstances anyOne inspect ].

It would help a lot to get the CSS updated - one thing that may help is removing:

(PRPathLookup start: (PRKernel instanceNamed: 'Pier') root path: '/Template/Style.css') remove.
(PRPathLookup start: (PRKernel instanceNamed: 'Pier') root path: '/Template/pier.png') remove.

Another thing to fix - Pier-SW2-Sw1Features updates PRTable>>accept: to send visitPierTable: instead of visitTable:, this could cause issues in the future if I modify any of the Pillar code.

2017-Mar-4 - Need to convert several pages:

PRKernelCreatorForPier>>systemtemplatesmetaenvironment:
PRKernelCreatorForPier>>systemcomponentsheader:
PRKernelCreatorForPier>>systemcomponentsfooter:
PRKernelCreatorForPier>>systemcomponentsloggedinuser:
PRKernelCreatorForPier>>systemcomponentsmenu:
PRKernelCreatorForPier>>systemtemplatesblogenvironment:
PRKernelCreatorForPier>>systemcomponentscommands:

2018-Feb-8 - Update the workout based on PierWorkout, and copy the data from the text files:

% tab=$(print "\t"); file=2018-Feb-24.txt
% sed 's/\(^[^0-9]\)/| \1/; s/^/| /; s/'$tab'/ | /g' $file | pbcopy

Get the object in Pharo:

(PRWorkoutLog allInstances size = 1 and: [ PRWorkoutLog allInstances anyOne workouts isArray ]) ifTrue: [ PRWorkoutLog allInstances anyOne workouts: OrderedCollection new; inspect ].

Having difficulties getting the CSS to show up correctly. Tried uploading the file as style.css.txt (so it would answer true to #isText (see PRStructure>>descriptionStyleSheet)), however it still wasn't formatted correctly. 2018-Mar-2 - Found the easiest way to resolve this is to replace the existing CSS with the same file again (the file is being stored in the MAExternalFileModel with the full path. 2020-Apr-14 - Ported the wiki yesterday and added the workout, but didn't realize that it had an exercise selected, so it was out-of-order, fixed with:

(PRWorkoutLog allInstances size = 1) ifTrue: [ PRWorkoutLog allInstances anyOne workouts: (PRWorkoutLog allInstances anyOne workouts sorted: [ :a :b | a date < b date ]) ].

2019-Dec-5 - Copying the Pharo image to linux causes it to bring up a walkback on MacStorage, running it on the ubuntu account on Fedora is easier, but I forgot to copy the workout log. Need the file:

2019-Aug-22 - The following no longer works from the command line:
 cat 2018-Feb-8.txt| sed 's/\(^[^0-9]\)/| \1/; s/^/| /; s/'$tab'/ | /g' | pbcopyCopy the file:
 cp 2019-Aug-22.txt pipe.txt
 vim pipe.txt
  :%s/\(^[^0-9]\)/| \1/
  :%s/^/| /
  :%s/ / | /g
 cat pipe.txt | pbcopy

2018-Mar-7 - Noticed that if a line only has an equal-sign and a space, then in the import it only has the equal sign, so the page had random paragraphs with equals separating them. Seems that the code export was missing an update - Preparing Pier Conversion Mistakes. 2018-Mar-11 - Check for this with:

| line lastLine count |
count := 0.
FileSystem disk workingDirectory / 'new.st'
	readStreamDo: [ :stream |
		[ stream atEnd ]
			whileFalse: [ line := stream nextLine.
				(line size = 1 and: [ line first = $= ]) ifTrue: [ count := count + 1.
					lastLine size = 1 ifFalse: [ Transcript show: lastLine; cr ]].
				lastLine := line ]].
count.

2018-Mar-24 - Problems with the default CSS, seems easiest to replace it with an empty file and re-create it in the browser:

(PRPathLookup start: (PRKernel instanceNamed: 'Pier') root path: '/System/Components/DefaultCss') file: nil.

Next time I can automatically open the file-in for checking:

FileList openOn: FileSystem workingDirectory titled: 'Check Filein for Pier in: '.

Pier Broken

First thing on accessing http://localhost:8080/pier

MessageNotUnderstood: GRSmallDictionary>>inject:into:

This is coming from PRReferenceRenderer(PRLinkRenderer)>>attributesFor: - Not sure why this is breaking now since PRLinkRenderer is from Pier-Seaside 553 (by me!) from April, and GRSmallDictionary is part of grease core that has not recently changed either, seems it was a change in how links are created.

This seems similar to the changes in Pier 3.1 Changes, checking with:

PRInternalLink allInstances anyOne parameters class = GRSmallDictionary

This was changed in PRReference - part of Pillar-Model-Document.

Write a blog post on development:

  • What needs to be loaded to get it working?
  • Setting up automation to get an image that works - add to the workspace code
  • Setup automation to let me know when the package bypass isn't needed

Preparing a Post - 2015-Jul-17 - Looking into getting the tests to work in Pier. A recent image has 32 failures - for example:

PRValueLinkTest debug: #testParseAliased

The errors generally are:

PRCocoonConfiguration class>>configurationName nil MNU #writerName

This seems to be coming from a DNU from PROutputStream>>newLine

self configuration newline

Another error is a DNU from the configuration for headingLevelOffset from

PRPillarWriter>>visitHeader:

This was found from:

PRDocumentDescriptionTest(MAElementDescriptionTest)>>#testFromString

On a similar vein, downloading a fresh image and editing a page brings up:

MessageNotUnderstood: receiver of "writerName" is nil

Opened an image from a week previously, and the tests are green. Careful loading of older version found that this is sufficient to get the tests working:

Gofer new
        url: 'http://smalltalkhub.com/mc/Pier/Pillar/main';
        version: 'Pillar-Model-CyrilFerlicot.202';
        version: 'Pillar-Tests-Model-CyrilFerlicot.157';
        version: 'Pillar-ExporterCore-MartinDias.197';
        load.

2015-Jul-27 - When loading the code the pier_old works fine, however with the Pier from this wiki, it fails with:

MessageNotUnderstood: GRSmallDictionary>>collect:

This is coming from:

PRInternalLink(PRReference)>>postCopy
  	super postCopy.
	self parameters: (self parameters
		collect: [ :each | each copy ])

My first instinct is to change this to use #deepCopy. The next failure is:

MessageNotUnderstood: GRSmallDictionary>>asDictionary

Which is coming from:

PRInternalLink(PRReference)>>parameters:
  	parameters := aCollection asDictionary

One idea is to remove the asDictionary, but this makes all of the tests fail.

Also, opening a Pillar image, and all of the test pass.

2015-Sep-28 - Bring Pier back to life

Sent an email to the the Pier mailing list asking what could be done to re-enable Jenkins Build, Stephan Eggermont re-enabled it, but the Pharo 5 3.0 build was broken, as is the Pharo 3 Pier 3.1 build. Attempted to build the image from a Pharo 5 image:

ConfigurationOfPier3AddOns project bleedingEdge load.

This failed with an encoding error, next tried:

Gofer new
    url:'http://smalltalkhub.com/mc/Pier/Pier3Addons/main';
    package: 'ConfigurationOfPier3AddOns';
    load.
((Smalltalk at: #ConfigurationOfPier3AddOns) project version: #stable) load.

This also failed.

2015-Sep-30 - Looking at Pier 3 - the same builds are failing there. Downloaded a Pharo3 image and unsuccessfully loaded the latest version:

Gofer new
    url: 'http://smalltalkhub.com/mc/Pier/Pier3/main';
    package: 'ConfigurationOfPier3';
    load.
((Smalltalk at: #ConfigurationOfPier3) project version: #bleedingEdge) load.

This failed with:

This package depends on the following classes:
  MAVisitor
  MAElementDescription
You must resolve these dependencies before you will be able to load these definitions:
  visitPathDescription:
  PRMagritteDictionaryReader
  writeDictionary:for:
  checkRequired:with:
  class:
  interpretAsBoolean:with:
  interpretAsNumber:with:
  raiseWarningIfTooManyParameters
  sortDescriptions
  tryToAddFrom:withInterpretation:

Tried the stable version - this was successful:

Gofer new
    url: 'http://smalltalkhub.com/mc/Pier/Pier3/main';
    package: 'ConfigurationOfPier3';
    load.
((Smalltalk at: #ConfigurationOfPier3) project version: #stable) load.

Incidentally the bleeding edge version can be loaded on top of this, if one ignores the warnings. There's a nice GUI under:

World / Tools / Versioner

Created Pier3 Configuration Fails with UTF8InvalidText

2015-Oct-15 - Problems with Pharo3 development version - Try loading the Pier 3 dev into a Pharo 3 image:

Gofer new
    url: 'http://smalltalkhub.com/mc/Pier/Pier3/main';
    package: 'ConfigurationOfPier3';
    load.
(Smalltalk at: #ConfigurationOfPier3) project bleedingEdge load.

This is failing due to these not being defined - MAVisitor (Magritte-Model-Visitor) and MAElementDescription (Magritte-Model-Description). If the below is ran first, then this loads successfully:

Gofer new
    url: 'http://smalltalkhub.com/mc/Magritte/Magritte3/main';
    package: 'ConfigurationOfMagritte3';
    load.
(Smalltalk at: #ConfigurationOfMagritte3) project bleedingEdge load.

Unfortunately when the image opens, going to http://localhost:8080/pier brings up an error for links (so does the latest version). Loading Pillar also raises errors, but different than the Pier3 ones.

2015-Oct-18 - The below investigates links:

PRReference allSubclasses collect: [ :c | c allInstances collect: [ :e | e parameters ]].

Next problem - Bringing up http://localhost:8080/pier gives a page with:

	Title
	SearchChildrenSidebarContentsFooter

Nothing is displayed correctly. Tests like PRVisitorTests>>testOutgoingReferencesEmbedded are also failing - Is it because when it was created, or is there code missing? Since it is a test with the setup, it seems unlikely that it is a timing/setup issue. By loading ConfigurationOfPillar-DamienCassou.164 with:

((Smalltalk at: #ConfigurationOfPillar) project version: #stable) load.

I'm able to get the tests green, but loading the wiki gives the error:

MessageNotUnderstood: receiver of "and:" is nil

This goes back to my previous problem - it is being sent from PROutgoingReferences>>embeddedComponents - in this case each is a PRInternalLink, embedded is set to nil. Tried older version, prior to v1.0 (155) the tests start to fail. It seems best to go with the newest version of Pillar where the tests still pass.

2015-Oct-23

Gofer new
    url: 'http://smalltalkhub.com/mc/Pier/Pier3/main';
    package: 'ConfigurationOfPier3';
    load.
((Smalltalk at: #ConfigurationOfPier3) project version: #development) load.

Tried modifying the ConfigurationOfPier3 using the browser, but didn't get the version number right. Tried with the version tool - created ConfigurationofPier3-53. Screenshots of this would be helpful.

2015-Oct-26 - Successfully loaded the Borden wiki extract and viewed the pages. Embedded links also worked correctly.

Alternatives are to update the code that references #embedded, #embedded: and #isEmbedded and change it to deal with it as a property or something similar (need to dedide between it being a parameters (defined in PRReference) or as one of the properties (defined in PRObject)).

How to Update Pier's Stable CI

From November 28th, when one clicks on Edit on http://localhost:8080/pier, it has the message:

MessageNotUnderstood: JQTabs>>onSelect:

From the notes on Pier Editor, changed:

ConfigurationOfPier3AddOns>>version304:

to have:

  package: 'Pier-Wysiwyg' with: 'Pier-Wysiwyg-JohnCBorden.90';

This should resolve it, but I'll need to determine why the title is listed as "Not Found". 2015-Nov-30 - It would also be good to know why the Pier3Addon hasn't built since Nov-28th (it was even successful!)

More Failures - 2016-Jul-8 - Pier3AddOns Build. 2018-Apr-7 - Published MyBorden Upgraded to Pier 3.2

ssh and Telnet

Searching http://forum.world.st/ for ssh may have been a good idea - http://forum.world.st/SSH-td67386.html#a67392

Starting a post on TelnetProtocolClient - Telnet and ftp are older protocols that is generally not used due to security concerns (it passes credentials in plaintext). For internal tools, it may be acceptable, but should never be used for anything that faces the internet.

My webserver was running on a Windows server, so OSProcess wasn't an option.

Using TelnetProtocolClient - inspect this:

(TelnetProtocolClient openOnHostNamed: 'hpitan4') loginUser: 'nxcurrv' password: 'unix11'.

Sent #close when done. Took this from PRScheduledTaskExamples>>ftpFileToReport:pass:host:file:reportOnPageAt:

2015-Aug-13 - Working on TelnetMachine.15 & a file from 2006-Feb-18 - problems:

  • Missing TcpService for creating the TelnetService - maybe need to move the methods and re-created from object - these are originally in KomServices
  • Update anything the has the telnet port as 22 - change to 23
  • Remove anything that has Transcript new
  • Also missing SWTable - should probably just remove that asDictionary method.

2015-Aug-24 - I was able to open a telnet session, send a command, and create a file. The first attempt locked up, the second was successful. For the test cases, they are failing due to DynamicBindings not being defined (these are used in ApplicationService>>initializeBindings - the method #checkRequiredBindings in this class uses returns false if there are self requiredBindings missing from this, however this collection is always empty in what I have). So far I haven't seen anything that adds to DynamicBindings. Next I need a replaced #newProcessWithBindings: with #newProcess in ApplicationService>>start. Problem is TcpListener is needed in TcpService>>runWhile:

Maybe I should just look into loading KomServices from someone else's work - http://magaloma.seasidehosting.st/KomServices. This Gofer example lists KomHttpServer explicitly. Maybe the ConnectionQueue project is more alive (and already loaded).


Amber Smalltalk

Started with a gentle introduction. Assuming that one needs to create the ** after installing:

% mkdir -p ~/npm/bin
% . ~/.profile
% npm config set prefix=~/npm
% npm install -g amber-cli

Can this be combined with ionic - see this magazine

Logging for Pier

Would it be useful to have a logging framework like nagare-logger in Pier - install with:

Gofer it
    squeaksource3: 'Nagare';
    package: 'ConfigurationOfNagare';
    load.
(Smalltalk at: #ConfigurationOfNagare) perform: #load.

Visual Works

Seems that the latest PUL for Cincom VW is less-than-ideal for usibility - windows don't seen to update without some action, the TestRunner won't let you unselect a class, etc. Need to look through the tutorials before I complain.


Reading

Add to Reading

Mindset

Similar to this is imposter syndrome


Pier Upgrade - Pier 3.0 to Pier 3.1

Next Steps:
# Get all of the history
# Change recommended pages (and the interesting line above)
# Export to Code
# Run the above modifications
# File in the output
# Start and test
# Turnoff debug code
# Start automated processes (ftp files) - copy automate commands from old live
# Run as a service
"

Another Workspace:

"Tasks:
- Make the enhanced editor work
-- Value seems low - maybe using the non-enhanced editor for a while will be OK
-- Seems to need some Seaside 3.2 work
- Make Google Analytics work - 2017-Apr-4 - updated code based on the first book.
-- Adds a record to how much traffic my site gets
-- Can be a lot of non-Smalltalk work
- Track what searches are being done
- Google Gadget may need a replacement - https://en.wikipedia.org/wiki/Google_Gadgets
- Add a document for the google verification file.

Not sure how an HTML canvas would paint something in the head instead of the body.

"
{ PRGoogleAnalyticsWidget allInstances size = 5.
 PRGoogleGadget allInstances size = 0 }.

2019-Nov-9 - Problems exporting Pier, started with an image from a RHEL server, couldn't find a working copy of MobaXterm to allow me to open a GUI, so I started it on Windows instead (didn't have the sources file, so I just ignored the error). When it got to the part of exporting the users, it had a talkback based on compiling code (more than 64 temporary variables, my wiki has around 130 users) in PRKernelCreatorForPier>>addUsersToKernel:. An initial thought was to modify PRKernelCodeExporter>>addKernelUsers:to: and writeUser:on: so it worked over an array of users, but this would have portability issues. Tested another idea - just find the sources file. Created Link Labels in Pier3 for this.


Improve yourself with Curiosity

2017-Jun-27 - Yesterday morning, I realized that maps was able to find my location on an iPad with WiFi only access. It seems to work well when near buildings and in the city rather than on an open road, implying it is getting some data from attempted WiFi connections. This could have greatly helped with finding my hotel Sunday night. How can I be open to more discoveries like this? Something similar - be more curious.


Run Your Own Webserver

2018-Jun-19 - While working through a Willow tutorial on Medium, I copied text to my Pharo image:

Metacello new
  baseline: 'Willow';
  repository: 'github://ba-st/Willow:master/source';
  load.
Metacello new
  baseline: 'WillowBootstrap';
  repository: 'github://ba-st/Willow-Bootstrap:master/source';
  load.
Metacello new
  baseline: 'WillowJQueryUI';
  repository: 'github://ba-st/Willow-JQueryUI:master/source';
  load.
Metacello new
  baseline: 'WillowPlayground';
  repository: 'github://ba-st/Willow-Playground:master/source';
  load.
Smalltalks2017Presentation start.
"Afterwards go to localhost:8080/willow101, localhost:8080/live-docs or localhost:8080/test-runner-bootstrap3
to check if they are running.

Copying text from tutorials isn't a huge amount of work, however when using a platform like Medium, there isn't a option to force it to use ascii quotes instead of the the curly quotes. If you are running Pier, then you do have that option.

A work-around may be using shared workspaces.

2018-Aug-16 - More notes on Willow: Starting from:

Metacello new
  baseline: 'Willow';
  repository: 'github://ba-st/Willow:master/source';
  load.
Metacello new
  baseline: 'WillowBootstrap';
  repository: 'github://ba-st/Willow-Bootstrap:master/source';
  load.
Metacello new
  baseline: 'WillowJQueryUI';
  repository: 'github://ba-st/Willow-JQueryUI:master/source';
  load.
Metacello new
  baseline: 'WillowPlayground';
  repository: 'github://ba-st/Willow-Playground:master/source';
  load.
Smalltalks2017Presentation start.

Afterwards go to http://localhost:8080/willow101, http://localhost:8080/live-docs or http://localhost:8080/test-runner-bootstrap3 to check them running. Next step: https://medium.com/mercap-tech-blog/your-first-willow-application-da24fff3f531

(ZnZincServerAdaptor port: 8080) start.
ToDoApplication registerAsDevelopmentApplication.

http://localhost:8080/to-do - This may be an excellent place to look into how to create baselines!


Installing Pier 3.2 on Pharo 6.1 in RH Linux:

[jborden@localhost Pharo]$ ./pier_build_script.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11324  100 11324    0     0   9810      0  0:00:01  0:00:01 --:--:--  9812
Downloading the latest 61 Image:
    http://files.pharo.org/get-files/61/pharo64.zip
Pharo.image
Downloading the latest pharoVM:
	http://files.pharo.org/get-files/61/pharo64-linux-stable.zip
pharo-vm/pharo
Downloading PharoV61.sources:
	http://files.pharo.org/get-files/61/sources.zip
Creating starter scripts pharo and pharo-ui
pthread_setschedparam failed: Operation not permitted
This VM uses a separate heartbeat thread to update its internal clock
and handle events. For best operation, this thread should run at a
higher priority, however the VM was unable to change the priority. The
effect is that heavily loaded systems may experience some latency
issues. If this occurs, please create the appropriate configuration
file in /etc/security/limits.d/ as shown below:

cat <<END | sudo tee /etc/security/limits.d/pharo.conf
*      hard    rtprio  2
*      soft    rtprio  2
END

and report to the pharo mailing list whether this improves behaviour.

You will need to log out and log back in for the limits to take effect.
For more information please see
https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/r3732#linux
pthread_setschedparam failed: Operation not permitted
This VM uses a separate heartbeat thread to update its internal clock
and handle events. For best operation, this thread should run at a
higher priority, however the VM was unable to change the priority. The
effect is that heavily loaded systems may experience some latency
issues. If this occurs, please create the appropriate configuration
file in /etc/security/limits.d/ as shown below:

cat <<END | sudo tee /etc/security/limits.d/pharo.conf
*      hard    rtprio  2
*      soft    rtprio  2
END

and report to the pharo mailing list whether this improves behaviour.

You will need to log out and log back in for the limits to take effect.
For more information please see
https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/r3732#linux
pthread_setschedparam failed: Operation not permitted
This VM uses a separate heartbeat thread to update its internal clock
and handle events. For best operation, this thread should run at a
higher priority, however the VM was unable to change the priority. The
effect is that heavily loaded systems may experience some latency
issues. If this occurs, please create the appropriate configuration
file in /etc/security/limits.d/ as shown below:

cat <<END | sudo tee /etc/security/limits.d/pharo.conf
*      hard    rtprio  2
*      soft    rtprio  2
END

and report to the pharo mailing list whether this improves behaviour.

You will need to log out and log back in for the limits to take effect.
For more information please see
https://github.com/OpenSmalltalk/opensmalltalk-vm/releases/tag/r3732#linux
'Installing ConfigurationOfPier3AddOns release3.2'

Loading 3.2.0 of ConfigurationOfPier3AddOns...
Fetched -> ConfigurationOfSeaside3-topa.337 --- http://smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main/ --- http://smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main/
Loaded -> ConfigurationOfSeaside3-topa.337 --- http://smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main/ --- http://smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main/
Fetched -> ConfigurationOfPillar-StephaneDucasse.277 --- http://smalltalkhub.com/mc/Pier/Pillar/main/ --- http://smalltalkhub.com/mc/Pier/Pillar/main/
Loaded -> ConfigurationOfPillar-StephaneDucasse.277 --- http://smalltalkhub.com/mc/Pier/Pillar/main/ --- http://smalltalkhub.com/mc/Pier/Pillar/main/
Fetched -> ConfigurationOfPier3-JohnCBorden.84 --- http://smalltalkhub.com/mc/Pier/Pier3/main/ --- http://smalltalkhub.com/mc/Pier/Pier3/main/
ConfigurationOfPier3>>startSeasideAndRegisterPier (ZnZincServerAdaptor is Undeclared) 
...
Loading 3.2.0 of ConfigurationOfPier3AddOns...
Project: Pillar Book bleedingEdge [0.32-baseline]
Project: Cocoon stable [1.33]
Project: Ston 0.18 [0.23]
Project: Magritte3 3.5.0
Project: Grease release1.2 [1.2.7]
Project: Seaside3 release3.1MetacelloProjectSpecLoadError: No version found for #'release3.1' of ConfigurationOfSeaside3 because: The symbolic version #'release3.1' is EXPLICITLY not defined in ConfigurationOfSeaside3 for the current platform (i.e., symbolic version defined as #notDefined).
[ :ex |
^ (MetacelloProjectSpecLoadError projectSpec: self)
	versionDoesNotExistException: ex;
	signal:
		'No version found for ' , self versionString printString , ' of '
			, self className asString , ' because: ' , ex description ] in MetacelloMCNamelessProjectSpec(MetacelloMCProjectSpec)>>loadVersion: in Block: [ :ex | ...
BlockClosure>>cull:
Context>>evaluateSignal:
Context>>handleSignal:
MetacelloSymbolicVersionNotDefinedError(Exception)>>signal
MetacelloSymbolicVersionNotDefinedError(MetacelloVersionDoesNotExistError)>>signal
MetacelloMCProject(MetacelloProject)>>version:
MetacelloMCNamelessProjectSpec(MetacelloMCProjectSpec)>>version
[ vrsn := self version ] in MetacelloMCNamelessProjectSpec(MetacelloMCProjectSpec)>>loadVersion: in Block: [ vrsn := self version ]

2018-Sep-4 - The above is also found on the Loading PierAddons in Pharo 6 page, however proceeding does not seem to work. Next plan is to test loading Pier 3.2 using a workspace with:

Gofer new
    url:'http://smalltalkhub.com/mc/Pier/Pier3Addons/main';
    package: 'ConfigurationOfPier3AddOns';
    load.
((Smalltalk at: #ConfigurationOfPier3AddOns) project version: #'release3.2') load: 'Tests'.

This may be a little extreme, try this if it isn't successful:

Gofer new
    url:'http://smalltalkhub.com/mc/Pier/Pier3Addons/main';
    package: 'ConfigurationOfPier3AddOns';
    load.
((Smalltalk at: #ConfigurationOfPier3AddOns) project version: #'release3.2') load: 'Pier-Blog'.
((Smalltalk at: #ConfigurationOfPier3AddOns) project version: #'release3.2') load: 'Pier-EditorEnh'.

Another option is to just load Pier without the add-ons - sh script:

export PHARO_VERSION=${1:-60}
export VERSION=release3.2
# export VERSION=release3.1
# export JOB_NAME=`dirname $PWD`
export JOB_NAME=$PWD/pier
../MacOS/Pharo Pharo6.1-64.image save $JOB_NAME
# ../MacOS/Pharo Pharo.image save $JOB_NAME --delete-old
# ../MacOS/Pharo $JOB_NAME.image --version > version.txt

REPO=http://smalltalkhub.com/mc/Magritte/Magritte3/main
../MacOS/Pharo $JOB_NAME.image config $REPO ConfigurationOfMagritte3 --install=release3.5 --group='Magritte-Model'

REPO=http://smalltalkhub.com/mc/Pier/Pier3/main
../MacOS/Pharo $JOB_NAME.image config $REPO ConfigurationOfPier3 --install=$VERSION --group='default'
# Load the tests
../MacOS/Pharo $JOB_NAME.image config $REPO ConfigurationOfPier3 --install=$VERSION --group='Tests'

Teapot Docs

2020-Feb-18 - Try running it on Windows. Starting with the enterprise pharo link above.

Tasks and updates:

  • What is the Github equivalant for smalltalkhubUser:project: 'Teapot'?
  • How to stop Teapot - Teapot stopAll
  • Seems a little more detail on how the :8080/books example display would really help

2020-Mar-18 - Working on the tutorial on the Mac now, when saving to smalltalkhub, the Pharo 8 image has the error:

Instance of MCSaveVersionDialog did not understand #selectedClassOrMetaClass

Walkback starts with CompletionEngine. By clicking through the menus really fast, it allowed me to write the code.

2020-Mar-19 - Created Teapot Tutorial.

Posted by John Borden link