Due to the COVID-19 crisis, the JRMPC awards ceremony has been postponed till a later date.
It was originally going to be held at Ryerson University, one of our chief sponsors, on April 18th.
In the worst case that the ceremony cannot be held by the start of summer, a virtual awards ceremony will be conducted. This ceremony will be recorded and a special YouTube video will be made for all of you to enjoy.
The Battle of Waterloo from Woodbridge College in Vaughan, Ontario
Bickle Blatwoon from Robert Thirsk High School in Calgary, Alberta
‘Dief’ferent from John G. Diefenbaker High School in Calgary, Alberta
Quad Coders from St. Michaels University School in Victoria, BC
The Sticky Keys from Strathcona High School in Edmonton, Alberta
WCI1 from Waterloo Collegiate Institute in Waterloo, Ontario
Thus, they were the favourites to win. But as Duncan MacLeod from Highlander might say, “There can be only one.”
In Round 5, the prize-winning round, the titanic struggle can be seen in this video:
So, here are the winners:
First Prize of $6,000 goes to team ‘WCI1’ of Waterloo Collegiate Institute in Waterloo, Ontario.
Keenan Gugeler (Captain)
Second Prize of $4,000 goes to Team Dijkstra of Centennial Collegiate Vocational Institute in Guelph, Ontario.
Andrew Dong (Captain)
Third Prize of $3,000 goes to team ‘Bickle Blatwoon’ of Robert Thirsk High School in Calgary, Alberta.
Xinhua Cao (Captain)
Additional recognition: the Honour Roll
The following teams are recognized for their fine efforts. They are awarded $500 each.
The Battle of Waterloo from Woodbridge College in Vaughan, Ontario
Computationalism from St. Michaels University School in Victoria, BC
Quad Coders from St. Michaels University School in Victoria, BC
Congratulations all! These were outstanding performances.
I encourage everyone to learn Smalltalk programming. Smalltalk is a magnificent language, simple, concise, easy-to-learn, purely object-oriented, extremely versatile, most productive, and highly scalable and maintainable. Learn more at smalltalk.tech.blog.
Stay tuned for details about the awards ceremony.
by smalltalkrenaissance at March 08, 2020 04:17 AM
Quuve provides a pro-grade integrated environment for portfolio management and research for securities investors. Professional grade in that it was meant to be licensed out to firms/groups offering research & portfolio management services. It is a virtualized, scaleable, web application developed with Pharo and deployed on GemStone/S. See the Quuve Overview video on YouTube for more information.
Quuve development stopped in the Fall of 2017 due to a lack of funding, however it still has some cutting-edge features for the industry. Because Quuve can function as an institutional level data server, tailored mobile apps could be built as standalone technology – and such an approach could even take advantage of Quuve’s analyst/site model subscription selections.
Using a Glorp-like interface to access data: Quuve has successfully run on Pharo (stand alone for development, backed by Fuel), Gemstone (deployment), and with portions backed using a relational DB – not required nor used at present. Quuve provides DB admin tools including import/export of DB’s in part or full; deleted records access tables, and more. User permission-masks can be granted by DB, table, even patterns in records.
Generic CRUD tables UI allows for rapid class development/usage – see ApplicationContext (stack with preferences style inheritance).
3-tier model (application, site, user) for data and Rules, allows site (group) and user specific overrides, which is important in Finance, where few will agree on how to define “free cash flow” in one accounting system, or one industry, let alone globally.
Processors allow for dynamic code-based answers to data requests; they blur the lines between data and Rules. Any object can be wrapped with a Processor and have data and rules added dynamically. Rules allow data-requests to perform any operation a modern computer can perform, and most often these are simple math operations on series. Rules are organized by “analyst” names (akin to rules’ Classes), the specifications for analysts is user specific, allowing for dynamic-inheritance required for a pro-grade multi-user Finance application pulling in international data (using different source accounting standards). Rules are compiled on demand; all caching is dynamic and user specific. Rules can be defined using wild-card method-names to open up entire remote volumes of data, or data transformations, with a new pattern. Data series are very robust around missing data and math errors. Quuve includes time profiling and debugging method-trace system to understand data missing or debug errors – enabled in user-specific permissions.
Demonstrated integration of learning systems for analysis and portfolio management (“robo-trading”). Data-sampling uses “point in time view” to support accurate backtesting. Portfolios have the unique feature of being able to scroll backwards in time to any date to see the specific holdings there – as models are built from trade-event records.
Access to millions of FREE data series from sites like FRED (St. Louis Federal Reserve Bank – USA), World Bank, etc. – menu selectable in report writer!
NPI (Non-public information) masking tools – important for privacy in professional Finance office.
Script Tool allows for ad hoc testing – most tools like the company report tool also incorporates an ad hoc scripting area.
User-specific configurable DB tables access, window access, etc. User and DB bindings specified in CSV files for bootstrapping.
Programmer documentation in wiki & in-system help-notes. Some ‘company reports’ are training tools.
Software Issues (“opportunities”!):
Quuve development stopped in the Fall of 2017 due to a lack of funding; some dialogs already look a bit out-dated.
Professional grade data must be licensed for individual or larger group – please consult us. Note: we can provide small amounts of CSV data for testing company reports. Perhaps we can form a consortium to license pro-grade data – but we need a Champion to lead the way. CSV data can load on-demand and depends only on the user’s data-source selection via preference or dialog-input specification. Small amounts of data can be sourced from certain sites on an individual basis but not commercially, e.g. yahoo, google, etc.
Data loaded currently into one default currency – defined in data-loaders – the idea was to use “table decorators” model to map data to any currency at current exchange ratio or historical.
Dropbox was used for file-sharing on cloud servers – not required for local Pharo execution.
Quuve configuration has not been updated in 18 months.
In recent years only Apple platforms were used for Pharo development.
Currently there is minimal support for Quuve. We can add users to our existing programmer wiki and slack-threads to pick up where we left off. In adding users we would prefer a few dedicated champions. There are tools that can be harvested for non-Finance applications. We can add a few trusted users to our current demonstration server, but this contains data that cannot be shared, so we must be selective!
Latest working image was Pharo 6.1 32 bits and GemStone 3.4.0
Latest instructions to load code are in our devwiki titled DevelopmentBootstrapping_IAM – only a few dedicated users will be added initially.
Code is in smallhub and should become public, MIT, and possibly moved to Github. This is an immediate need!
GemStone scripts to build new sites, maintenance etc are in gitlab – again, we can start providing access selectively!
Currently copyrighted to Debris Publishing, Inc. – This is changing to MIT License.
Quuve is intended to assist investors manage portfolios and perform research.
Quuve was built and deployed using tools from various sources. The following firms, organizations, communities, and individuals have not endorsed Quuve nor Debris, but we offer due credit whether they are aware of us or not. Many thanks for/to…
Development and deployment environments and platforms
Magritte Magritte provides us a nice and small meta-description framework which allow us to build a fully featured CRUD system. Most of Quuve forms and reports are automatically generated from our CRUD framework build on top of Magritte.
Development tools and frameworks
Fuel Serializer We use Fuel to save and load our development and testing databases when working in Pharo platform
SIXX Serializer SIXX is used to move small databases from GemStone to Pharo or vice-versa or between different GemStone instances
Metacello To manage software dependencies, releases, environment building, deploying, etc. we use Metacello
Blowfish We use Blowfish as part of our encryption and decryption tools.
XMLParser We also need to parse and write XML in many places
JQuery and JQuery-UI Even if small, most of our JS development is using JQuery when possible. In addition, a couple of components like autocompletion, popups, sortable lists, etc are used from JQuery-UI
TinyMCE For nicely editing notes, documents, etc. we use the fully WYSIWYG editor TinyMCE
Datatables To improve or HTML tables and reports we use Datatables. This allow us to have fixed header, fixed columns and many many other features.
CodeMirror For scripting, editing accounting and computation rules, and many other places, we use CodeMirror to color highlight code, autocomplete, etc.
CentOS Linux All our guest/virtual operating systems are CentOS Linux, with latest stable release and security updates.
Nginx Our web server for production purposes is nginx.
Monit We use monit to monitor all processes, being that Quuve ones or the ones we need from the Operating System. Monit will, for example, automatically restart Quuve processes upon crashes.
Fail2ban As part of our security efforts we use fail2ban to protect us from DOS attacks and from malicious user
Firewalld We also use firewalld as out OS firewall
Fifth, they both involve some luck. Having the best mind or AI doesn’t necessarily guarantee a win.
Where they differ is that the main Battlesnake event is a one-day affair at a physical venue in Victoria, BC (though there are options with limited seats for remote participation). JRMPC is a national event, entirely online, and takes place over five weeks; the actual code execution occurs in our air-gapped computer.
Also, JRMPC is only open to high school students across Canada. There is only one level, whereas Battlesnake has Beginner, Intermediate (no longer available), and Expert levels for students and non-students alike.
And, most importantly, JRMPC is all about using Smalltalk, the greatest programming language in the world. Battlesnake supports multiple languages. (Interestingly, an AI snake has been written in Smalltalk which has done well in previous Battlesnake competitions.)
I won’t say Battlesnake inspired me to start JRMPC, but it’s an interesting coincidink that the two are so similar and started roughly at the same time, 2015.
To be honest, I don’t find Battlesnake very interesting but this is a personal opinion. I think the JRMPC competition is far more imaginative. Battlesnake’s grid is dull and boring. JRMPC’s Islands of Qyzmr, Concentric Treasure, and City Quadrant are cool beyond belief.
In some respects, JRMPC is more challenging than Battlesnake. The competition maps (or grids) are quite complex and robot strategies need to be very sophisticated.
Major enterprises like JPMorgan, Desjardins, UBS, Telecom Argentina, Siemens, BMW, Thales, Orient Overseas Container Lines, and Communications Security Establishment (Canada’s national cryptologic agency) have been using Smalltalk for years.
Lam Research is worth mentioning. This company is a vital link in the global supply chain. The electronic components in your smartphones, PCs, laptops, etc. started out as silicon wafers fabricated by Lam machines controlled by Smalltalk. You owe your digital existence to Smalltalk!
Canada has the opportunity to lead the world in software development.
by smalltalkrenaissance at March 03, 2020 06:48 PM
Here’s how the T-shirts look from one of the teams:
The team-based competition involves finding the best strategy in a Pac-Man style game and implementing it in Pharo, a modern variant of Smalltalk. The purpose of the competition is to attract attention to Smalltalk and raise people’s awareness.
I’m a Pharo lover since many years. A huge thanks to all of you, making Pharo possible! As a giving back I would like to open source some of my business projects (Thanks to my supporting customers, too). The first is a web based media assets management called “mediaclue” (Think of it as a image/audio/video/document sharing platform, e.g. for teachers inside a school):
we are happy to announce the release of PolyMath 1.0.2, the
computational framework for Pharo. This release works on Pharo 7.0 and Pharo 8.0. All the 815 tests and the CI are green on MacOs, Windows and Linux
If you’re an entrepreneur, and especially if you’re a digital entrepreneur, one of your greatest concerns is getting to market as quickly and as easily as you can. Your business is highly dependent on computers, whether that’s in the area of web applications or mobile development or machine learning or virtual reality or robotics or whatever.
At the heart of software development is the programming language. Some languages make your job easier; others make your job much harder. We will look at one particular language that makes your job as a software developer much easier and much more productive than with any other language in existence.
But first, let’s look at a few programming languages that are frequently adopted by startups…
Python — widely regarded as easy to learn and extremely versatile because of its numerous third-party libraries
Java — the chief Android programming language and the enterprise standard
C# — most commonly used for Windows/.NET programming
Ruby — best known for its Rails web framework
PHP — the most widely used language for dynamic websites
Python has many peculiarities in its design, especially with respect to object-oriented programming. Its multithreading capability is crippled by the GIL (global interpreter lock). Its lambdas are oddly restricted to single expressions. Its half-open intervals are unintuitive. Its off-side rule syntax is offensive to many programmers.
Java is extremely verbose. It’s more awkward to use than Python. C# is Java on steroids.
Ruby and PHP have seen better days. Both are in decline.
To be clear, all of these languages can be effective for startups. However, there is one language that offers very special benefits, especially for entrepreneurs on a tight deadline. It’s called Smalltalk.
The first major benefit is Smalltalk’s simplicity and ease of use. Smalltalk is much, much easier than even Python. The syntax is ridiculously simple. It can be learned in its entirety within 15 minutes!
The third major benefit is Smalltalk’s purity, clarity, and consistency in its object-oriented model. Smalltalk is the easiest object-oriented language for this reason, far surpassing C++, C#, Java, Python, and Ruby.
Smalltalk’s object-oriented nature makes it supremely maintainable and scalable without the headaches imposed by other object-oriented languages.
The fourth major benefit is Smalltalk’s system image. The image is a snapshot of an application’s total execution environment. It allows you to save the execution state of your program and to resume execution later on at your convenience. This is terribly handy.
Smalltalk’s image also makes software deployment a breeze. You never have to worry about installing and configuring the numerous software components (like libraries and frameworks) that constitute your application in production.
The end result is that a startup can minimize the “time to market” for its product. It can deliver the product months, or even years, ahead of its competitors.
The good news is that Smalltalk is every bit as versatile as languages like Python and Java. For back-end web development, you have Smalltalk web frameworks like Seaside and Teapot. For front-end development, you have transpiled languages like Amber and PharoJS.
Speaking of games, here’s one for mobile devices called HexSolve written entirely in Smalltalk.
Smalltalk is a wonderful secret weapon because it flies under the radar of most entrepreneurs. While startups get distracted by the high profile languages, the smart ones can leverage the tremendous benefits of Smalltalk to get well ahead of competitors.
If you’re interested in checking out this magical language, visit the Resources page at my Smalltalk tech blog.
by smalltalkrenaissance at February 21, 2020 01:45 PM