Pharo-users
By thread
pharo-users@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
January 2018
- 82 participants
- 456 messages
Re: [Pharo-users] [Moose-dev] [ann] gt connector
by Sven Van Caekenberghe
> On 14 Jan 2018, at 22:54, Tudor Girba <tudor(a)tudorgirba.com> wrote:
>
> Hi,
>
> Towards the end of last year we worked on GT Connector, a new kind of interface that allows us to exercise and test the limits (or the lack thereof) of Bloc.
>
> It looks like this:
> <connector2.jpeg>
>
> You can see it in action here:
> https://twitter.com/feenkcom/status/936109463462965248
Incredible stuff !
Keep on pushing the boundaries.
> In the current implementation, the Connector allows us to navigate and connect example methods. The focus is not on examples, but on the connections. We used examples because the engine was already around and offered us a nice use case. We want to extend it in the near future to other kinds of objects.
>
> There are a couple of things that are worth noting:
> ⢠The editor works live, and the connection points appear and disappear as you type.
> ⢠The layout of the editor elements is based on a tree-based graph layout that only works with constrains (no actual visible edges between the editor elements).
> ⢠The editor works live, so adding new elements to the scene properly rearranges the scene.
> ⢠But, perhaps, the most exciting part is the fact that the lines connect an element from inside the text editor element with another that lives outside of the editor element.
>
> All these validate the architecture of Bloc of having exactly one rendering tree. It was not an obvious goal a couple of years ago, but we are really happy that it works.
>
> To put it in perspective, let's compare this with the html world. Text is text is rendered through the DOM tree. If you want graphics you might use something like SVG which comes with its own tree. However, these are two distinct worlds, and you cannot go from one to another, or at least not easily. This is the case in most engines we looked at.
>
> Why is this important? One thing we learn in the Smalltalk world is that covering the same space with less concepts opens up a whole dimension of creativity that is simply not possible outside of it.
>
> The goal with Bloc is to enable new kinds of user interfaces. As we are late to the game of modern interfaces, even though the field was invented in Smalltalk, our only chance to take the lead again is to rethink the model.
>
> Let's look at the Connector again. In most user interfaces we have panes on the outside, and visuals confined within the boundaries of those panes. Interestingly, we can trace this pattern to the very first Smalltalk interfaces. In the Connector interface we have no boundaries with text and visualization being intertwined to form a new kind of workflow.
>
> Talking about workflows, we now have two distinct and novel ways to explore examples: one is Connector, and the other one is the expandable code editor. For example, the scene from above looks like this in the example expanding editor:
>
> <editor.jpg>
>
>
> Both of these interfaces are not found in other infrastructures, and yet they were both inexpensive to implement in Bloc.
>
> We believe this will have a deep impact for all sorts of interfaces, and especially for the IDE. If you are interested in more details related to the IDE, take a look at the following paper from 2015:
> http://scg.unibe.ch/archive/papers/Girb15b-PervasiveSoftwareVisualizations.…
>
> Please let us know what you think.
>
> Cheers,
> The feenk team
>
>
> --
> www.tudorgirba.com
> www.feenk.com
>
> "What is more important: To be happy, or to make happy?"
>
> _______________________________________________
> Moose-dev mailing list
> Moose-dev(a)list.inf.unibe.ch
> https://www.list.inf.unibe.ch/listinfo/moose-dev
Jan. 15, 2018
Re: [Pharo-users] Databases
by Sven Van Caekenberghe
Benoît,
Yes, of course databases are important and I know many users ask for them, but on the other hand, the low development activity can only mean that there is not enough interest (or some existing solutions work well enough).
There are many SQL and non-SQL databases out there, as well as many, incompatible Smalltalk implementations. I do not believe that there can be one magic solution to fix all problems everywhere.
Remember that setting up a database is often a challenge by itself.
I do not think the current situation is bad, it is just confusing. Making a good meta overview (i.e. documentation writing) and testing solutions would already help many people.
To add to your list, I recently wrote a new PostgreSQL client, P3, that is using only TCP networking (no native library mess). It supports most recent Pharo distributions.
https://github.com/svenvc/P3
P3 can be used under Glorp. Glorp in still being maintained and in active use, but could use some love in the promotion department.
Here is some documentation
http://files.pharo.org/books-pdfs/booklet-Glorp/2017-05-02-Glorp-Spiral.pdf
https://medium.com/concerning-pharo/reddit-st-in-10-cool-pharo-classes-1b53…
https://github.com/SquareBracketAssociates/Booklet-Reddit (updated version of the former)
https://bintray.com/squarebracketassociates/wip/download_file?file_path=red…
Actually, few languages have as nice an Object Relational Mapper as Glorp.
There is also Voyage that seems quite popular.
Sven
> On 15 Jan 2018, at 10:13, Benoit St-Jean via Pharo-users <pharo-users(a)lists.pharo.org> wrote:
>
>
> From: Benoit St-Jean <bstjean(a)yahoo.com>
> Subject: Databases
> Date: 15 January 2018 at 10:13:10 GMT+1
> To: "pharo-users(a)lists.pharo.org" <pharo-users(a)lists.pharo.org>, "squeak-dev(a)lists.squeakfoundation.org" <squeak-dev(a)lists.squeakfoundation.org>
> Reply-To: Benoit St-Jean <bstjean(a)yahoo.com>
>
>
> Bear with me for a moment...
>
> First and foremost, this post is *not intended in any way* to criticize the work of anyone who could have worked on those packages/projects/frameworks.
>
> Now, I'll tell you a story to make my point.
>
> Often times, in public or in private, I help newcomers on Quora, IRC, the mailing list(s) or elsewhere with various Smalltalk environments. Often times, I try to be helpful getting them started on Squeak or Pharo. Often times, they are just amazed by how powerful Smalltalk is...
>
> Now, the sad part. Everything goes well until they just want to "code something" to experiment and they ask me about databases...
>
> -How can I connect to a MySQL (or insert your favorite database here) with Squeak/Pharo ?
>
>
> As far as I can remember, the database connectivity with Squeak/Pharo has always been an area where, as a Squeak/Pharo community, we suck big time. I don't recall the last time I loaded a package, ran the tests and everything was fine. There is almost ALWAYS something broken with the databases packages. Understandibly, Squeak and Pharo were for a long time moving targets. Whether it was VM changes (FFI, NativeBoost, uFFI, 32 vs 64 bit, OS differences/problems, differences between Squeak and Pharo, etc), code refactoring (cryptography class name changes), the DateAndTime/Timestamp/TimeStamp/Date(Magnitude)/Date(Timespan) were used from one version to the other in the driver, code that was removed by some cleanup, compiler changes/problems/incompatibilities, etc. In other words, database connectivity needs some love.
>
> Unfortunately, it looks like there doesn't seem to be a consensus or a shared desire to fix things *together*. There is duplicate effort all over the place. Just as an example, I listed the various implementations of MySQL packages that exists (I did not list the 8-9 of them that had no code but a project listed on one of those sites). So, let's say you are a newcomer and you want to connect to a MySQL database. Here are the choices you are offered (and remember, as a newcomer, you have NO clue which one to pick) :
>
>
> Databases supported : Project name
>
> 1) SqueakSource
>
> MySQL : Automatic Object Storage To MySQL
> OpenDBX
> SqueakDBX
>
>
> 2) SmalltalkHub
>
> DBX/Talk / DBXDatabaseModel
> GlorpDriverMySQL
> PharoExtras / ODBC
> DBXTalk / Garage
> UDBC
> UDBC2
>
> 3) GitHub.io
>
> dbxtalk
>
> 4) GitHub
>
> pharo-rdbms/garage
>
> Now, let's say you picked one package. In some cases, if you are lucky, the code will load without any problem or warning. And then, you run the tests. That is where it almost *always* breaks!
>
> Today, I tried to load *each and everyone of them* in a Pharo 6.1 (Windows) image : none of them worked right out of the box!
>
> In other words, that newcomer I told you about just goes from "WOW!!!" to "WHAT?!?!" in 10 seconds. People are usually not so impressed with a TestRunner that fails a gazillion unit tests...
>
> So, now the nice part...
>
> Database connectivity is, in my humble opinion, a MUST for Pharo and Squeak. I think it's about time we do *something* about the current state of this mess. There are enough brilliant and talented people in the Squeak and Pharo communities to fix this situation. At least, we could start *talking* about it if we want to address the problems. Ideally, we would come up with a will to change things and establish a plan.
>
> In a perfect world, we'd have something like JDBC (or some kind of Smalltalk universal driver) in Smalltalk for native drivers. Plus ODBC connectivity. Plus it would have to work right-out-of-the-box. Plus documentation that has at least an example with Connect/SELECT/UPDATE/DELETE/CREATE/DROP/disconnect simple examples to get newbies started. Plus a solid suite of tests to beat the sh*t out of that code. Plus a compatibility layer for Squeak/Pharo differences. To that regard, Glorp is an example to follow! IMHO, it's about time we share stuff to maximize our efforts!
>
> As I told someone recently, it's about time we do something about databases (RDBMS). And as I told that person, I don't mind writing Smalltalk code and SQL scripts and running tests. Even do performance testing. My MySQL Server currently has close to 1 billion records to torture the MySQL driver if needed. And I can also work on SQLite. And Oracle. And DB/2. And MySQL Server. And I don't mind installing other RDBMS on my machine and test other driver ports. Now, it's just a matter of knowing if we all want to work together.
>
> As for OpenDBX/DBX, I'm not sure. Having another dependency (and C code) that we more or less control doesn't inspire me. I have yet to see how DBX/OpenDBX gives me any advantage over, say, ODBC...
>
> As I said, it's time to discuss!
>
> Anyone interested?
>
> -----------------
> Benoît St-Jean
> Yahoo! Messenger: bstjean
> Twitter: @BenLeChialeux
> Pinterest: benoitstjean
> Instagram: Chef_Benito
> IRC: lamneth
> Blogue: endormitoire.wordpress.com
> "A standpoint is an intellectual horizon of radius zero". (A. Einstein)
>
>
Jan. 15, 2018
Databases
by Benoit St-Jean
Bear with me for a moment...
First and foremost, this post is *not intended in any way* to criticize the work of anyone who could have worked on those packages/projects/frameworks.
Now, I'll tell you a story to make my point.
Often times, in public or in private, I help newcomers on Quora, IRC, the mailing list(s) or elsewhere with various Smalltalk environments. Often times, I try to be helpful getting them started on Squeak or Pharo. Often times, they are just amazed by how powerful Smalltalk is...Â
Now, the sad part. Everything goes well until they just want to "code something" to experiment and they ask me about databases...
-How can I connect to a MySQL (or insert your favorite database here) with Squeak/Pharo ?
As far as I can remember, the database connectivity with Squeak/Pharo has always been an area where, as a Squeak/Pharo community, we suck big time. I don't recall the last time I loaded a package, ran the tests and everything was fine. There is almost ALWAYS something broken with the databases packages. Understandibly, Squeak and Pharo were for a long time moving targets. Whether it was VM changes (FFI, NativeBoost, uFFI, 32 vs 64 bit, OS differences/problems, differences between Squeak and Pharo, etc), code refactoring (cryptography class name changes), the DateAndTime/Timestamp/TimeStamp/Date(Magnitude)/Date(Timespan) were used from one version to the other in the driver, code that was removed by some cleanup, compiler changes/problems/incompatibilities, etc. In other words, database connectivity needs some love.
Unfortunately, it looks like there doesn't seem to be a consensus or a shared desire to fix things *together*. There is duplicate effort all over the place. Just as an example, I listed the various implementations of MySQL packages that exists (I did not list the 8-9 of them that had no code but a project listed on one of those sites). So, let's say you are a newcomer and you want to connect to a MySQL database. Here are the choices you are offered (and remember, as a newcomer, you have NO clue which one to pick) :
Databases supported : Project name
1) SqueakSource
MySQL : Automatic Object Storage To MySQL
OpenDBX
SqueakDBX
2) SmalltalkHub
DBX/Talk / DBXDatabaseModel
GlorpDriverMySQL
PharoExtras / ODBC
DBXTalk / Garage
UDBC
UDBC2
3) GitHub.io
dbxtalk
4) GitHub
pharo-rdbms/garage
Now, let's say you picked one package. In some cases, if you are lucky, the code will load without any problem or warning. And then, you run the tests. That is where it almost *always* breaks!
Today, I tried to load *each and everyone of them* in a Pharo 6.1 (Windows) image : none of them worked right out of the box!
In other words, that newcomer I told you about just goes from "WOW!!!" to "WHAT?!?!" in 10 seconds. People are usually not so impressed with a TestRunner that fails a gazillion unit tests...
So, now the nice part...
Database connectivity is, in my humble opinion, a MUST for Pharo and Squeak. I think it's about time we do *something* about the current state of this mess. There are enough brilliant and talented people in the Squeak and Pharo communities to fix this situation. At least, we could start *talking* about it if we want to address the problems. Ideally, we would come up with a will to change things and establish a plan.
In a perfect world, we'd have something like JDBC (or some kind of Smalltalk universal driver) in Smalltalk for native drivers. Plus ODBC connectivity. Plus it would have to work right-out-of-the-box. Plus documentation that has at least an example with Connect/SELECT/UPDATE/DELETE/CREATE/DROP/disconnect simple examples to get newbies started. Plus a solid suite of tests to beat the sh*t out of that code. Plus a compatibility layer for Squeak/Pharo differences. To that regard, Glorp is an example to follow! IMHO, it's about time we share stuff to maximize our efforts!
As I told someone recently, it's about time we do something about databases (RDBMS). And as I told that person, I don't mind writing Smalltalk code and SQL scripts and running tests. Even do performance testing. My MySQL Server currently has close to 1 billion records to torture the MySQL driver if needed. And I can also work on SQLite. And Oracle. And DB/2. And MySQL Server. And I don't mind installing other RDBMS on my machine and test other driver ports. Now, it's just a matter of knowing if we all want to work together.
As for OpenDBX/DBX, I'm not sure. Having another dependency (and C code) that we more or less control doesn't inspire me. I have yet to see how DBX/OpenDBX gives me any advantage over, say, ODBC...
As I said, it's time to discuss!
Anyone interested? -----------------
Benoît St-Jean
Yahoo! Messenger: bstjean
Twitter: @BenLeChialeux
Pinterest: benoitstjean
Instagram: Chef_Benito
IRC: lamneth
Blogue: endormitoire.wordpress.com
"A standpoint is an intellectual horizon of radius zero". (A. Einstein)
Jan. 15, 2018
Re: [Pharo-users] Iceberg Branching
by Esteban Lorenzano
yes, as Stef says, branching works ok⦠maybe you can describe what you are trying to do, in case is a workflow not yet covered?
Esteban
> On 14 Jan 2018, at 10:23, Stephane Ducasse <stepharo.self(a)gmail.com> wrote:
>
> Hi evan
>
> can you describe what you are doing because branching normally works?
> I know that esteban was working on support to be able load submitted
> pull requests directly from the branch history.
> Guillermo and Pablo are making progress on refactoring the core of iceberg.
> They are arriving to the point where they will start rethinking the UI.
>
> Stef
>
> On Sun, Jan 14, 2018 at 5:36 AM, Evan Donahue <emdonahu(a)gmail.com> wrote:
>> What's the current status of branching? I can create, switch, and commit to
>> branches, but my attempts to load code from other branches throws errors.
>> Since branching isn't thoroughly documented in the readme yet afaict, I just
>> wanted to check whether it was known to be 'under development' and I should
>> leave it alone, or whether I should try to be more proactive about reporting
>> the errors I'm getting.
>>
>> Thanks,
>> Evan
>
Jan. 15, 2018
Re: [Pharo-users] Pharo Lecture at Tunis next week
by Serge Stinckwich
Thank you Stéphane for your continued effort to do Pharo lectures all
around the world.
I try do to the same in Cameroon.
On Sat, Jan 13, 2018 at 1:36 PM, Stephane Ducasse <stepharo.self(a)gmail.com>
wrote:
> Hi guys
>
> just to tell you that next week I will give a lecture at ENIS at tunis.
> 3 full days of Pharo and advanced design.
>
> Stef
>
>
--
Serge Stinckwich
UMI UMMISCO 209 (IRD/UPMC/UY1)
"Programs must be written for people to read, and only incidentally for
machines to execute."http://www.doesnotunderstand.org/
Jan. 15, 2018
Re: [Pharo-users] [ANN] Bittrex API
by Ben Coman
On 15 January 2018 at 14:19, Hernán Morales Durand
<hernan.morales(a)gmail.com> wrote:
> Hi Ben,
>
> Thank you for sharing this, looks really cool.
>
> I have some issues installing the library. In the "Clone repository"
> dialog I had to use
>
> https://github.com/Traadh/bittrex.git
>
Which OS are you on?
For Windows you need to enable Iceberg > Settings > Custom keys
since Iceberg is not playing well there with ssh-agent.
Also, the software for creating ssh keys is not built into Windows. Try...
http://guides.beanstalkapp.com/version-control/git-on-windows.html
Have you previously accessed github via SSH keys from command line?
Check your SSH keys are configured properly...
https://help.github.com/articles/testing-your-ssh-connection/
and if not, get that working first...
https://help.github.com/articles/connecting-to-github-with-ssh/
> The install procedure did not downloaded the libsodium library.
Whoops, missed that. I'll update the procedure.
Also its about time I write my first Baseline.
> I had to install it from loading Nacl.
> Any particular difference with Nacl? From the dll in Nacl I can see
> Bittrex functions are supported but appending a "256" in the function
> prototype, i.e.: crypto_auth_hmacsha512256_keybytes ,
> maybe you can add the functions to the Nacl repository?
> http://www.smalltalkhub.com/#!/~tonyg/Crypto-Nacl
I tried Crpto-Nacl first. This was my first time using Libsodium and
it was difficult to find examples directly on the
HMAC512 function I needed. The sample C code I compiled as a test
didn't match the function names
exported from Crypto-Nacl so this confounded my trials. It was simple
to FFI wrap the one Libsodium function I needed,
so thats what I did.
The Configuration of Crypto-Nacl downloads a pre-compiled libsodium
that exports different symbols to the system libsodium.
So IIUC its not a matter of just adding extra Smalltalk methods to the
Crypto-Nacl.
I don't know enough about Libsodium to understand the difference in
function naming
and I guess replacing it might break existing users ??
> Or you can use the URL's in ConfigurationOfNacl>>platformLibraryUrl to
> download the library for each platform,
> or integrate the download procedure in
> https://github.com/hernanmd/MetacelloFileDownload
good idea. thx for the tip.
cheers -ben
>
> Cheers,
>
> Hernán
>
>
>
>
>
>
> 2018-01-13 16:07 GMT-03:00 Ben Coman <btc(a)openinworld.com>:
>> Thanks everyone who advised on Zinc, REST, NeoJSON, HMAC & Libsodium
>> to help me on my way to implement an interface to the Bittrex bitcoin
>> exchange. I've got to the point where I'm happy to make an initial
>> 0.x release. After all my years having fun hacking around Pharo, this
>> is my first (tiny) product. Hopefully it may grow. :)
>>
>> The implementation is probably closest to a Command pattern
>> with a class per entry-point. All the v1.1 entry points are
>> implemented except a few to deposit & withdraw money from the
>> exchange. These are currently infrequent events for me and left for
>> manual action.
>>
>> I'm optimistic that I'll add a few more exchanges so I created a
>> github org to group them together. Contributions welcome.
>>
>> Please see quick start instructions here...
>> https://github.com/Traadh/bittrex
>>
>> Have fun and take care...
>> https://imgs.xkcd.com/comics/engineer_syllogism.png
>>
>> cheers -ben
>>
>
Jan. 15, 2018
Re: [Pharo-users] [ANN] Bittrex API
by Hernán Morales Durand
Hi Ben,
Thank you for sharing this, looks really cool.
I have some issues installing the library. In the "Clone repository"
dialog I had to use
https://github.com/Traadh/bittrex.git
The install procedure did not downloaded the libsodium library. I had
to install it from loading Nacl.
Any particular difference with Nacl? From the dll in Nacl I can see
Bittrex functions are supported but appending a "256" in the function
prototype, i.e.: crypto_auth_hmacsha512256_keybytes , maybe you can
add the functions to the Nacl repository?
http://www.smalltalkhub.com/#!/~tonyg/Crypto-Nacl
Or you can use the URL's in ConfigurationOfNacl>>platformLibraryUrl to
download the library for each platform,
or integrate the download procedure in
https://github.com/hernanmd/MetacelloFileDownload
Cheers,
Hernán
2018-01-13 16:07 GMT-03:00 Ben Coman <btc(a)openinworld.com>:
> Thanks everyone who advised on Zinc, REST, NeoJSON, HMAC & Libsodium
> to help me on my way to implement an interface to the Bittrex bitcoin
> exchange. I've got to the point where I'm happy to make an initial
> 0.x release. After all my years having fun hacking around Pharo, this
> is my first (tiny) product. Hopefully it may grow. :)
>
> The implementation is probably closest to a Command pattern
> with a class per entry-point. All the v1.1 entry points are
> implemented except a few to deposit & withdraw money from the
> exchange. These are currently infrequent events for me and left for
> manual action.
>
> I'm optimistic that I'll add a few more exchanges so I created a
> github org to group them together. Contributions welcome.
>
> Please see quick start instructions here...
> https://github.com/Traadh/bittrex
>
> Have fun and take care...
> https://imgs.xkcd.com/comics/engineer_syllogism.png
>
> cheers -ben
>
Jan. 15, 2018
Re: [Pharo-users] Trying to test Phantom / aspects in Pharo
by Miguel Campusano
As far as I know, this is a project for an undregard thesis and I believe
it is discontinued. If you contact Johan I will be glad to collaborate on
this for a good cause
On Sat, Jan 13, 2018 at 10:24 AM Stephane Ducasse <stepharo.self(a)gmail.com>
wrote:
> You should ask Johan Fabry.
> Now working at Raincode in belgium.
>
> Stef
>
> On Sat, Jan 13, 2018 at 1:06 PM, Steven Costiou <steven.costiou(a)kloum.io>
> wrote:
> > Hi,
> >
> > i am trying to test PHANtom but so far i can't get it to work.
> >
> > I found an image here https://pleiad.cl/research/software/phantom and i
> made
> > it run on a vm from 2013.
> >
> > But the examples crashes (PhantomDemo), and i cannot make my own examples
> > work either (simple object interception).
> >
> >
> >
> > Which vm should i use ?
> >
> > Is the image available in the link above still ok ?
> >
> > By any chance, is there a version for Pharo 6 ?
> >
> >
> >
> > Steven.
> >
> >
>
>
Jan. 15, 2018
[ann] gt connector
by Tudor Girba
Hi,
Towards the end of last year we worked on GT Connector, a new kind of interface that allows us to exercise and test the limits (or the lack thereof) of Bloc.
It looks like this:
You can see it in action here:
https://twitter.com/feenkcom/status/936109463462965248
In the current implementation, the Connector allows us to navigate and connect example methods. The focus is not on examples, but on the connections. We used examples because the engine was already around and offered us a nice use case. We want to extend it in the near future to other kinds of objects.
There are a couple of things that are worth noting:
⢠The editor works live, and the connection points appear and disappear as you type.
⢠The layout of the editor elements is based on a tree-based graph layout that only works with constrains (no actual visible edges between the editor elements).
⢠The editor works live, so adding new elements to the scene properly rearranges the scene.
⢠But, perhaps, the most exciting part is the fact that the lines connect an element from inside the text editor element with another that lives outside of the editor element.
All these validate the architecture of Bloc of having exactly one rendering tree. It was not an obvious goal a couple of years ago, but we are really happy that it works.
To put it in perspective, let's compare this with the html world. Text is text is rendered through the DOM tree. If you want graphics you might use something like SVG which comes with its own tree. However, these are two distinct worlds, and you cannot go from one to another, or at least not easily. This is the case in most engines we looked at.
Why is this important? One thing we learn in the Smalltalk world is that covering the same space with less concepts opens up a whole dimension of creativity that is simply not possible outside of it.
The goal with Bloc is to enable new kinds of user interfaces. As we are late to the game of modern interfaces, even though the field was invented in Smalltalk, our only chance to take the lead again is to rethink the model.
Let's look at the Connector again. In most user interfaces we have panes on the outside, and visuals confined within the boundaries of those panes. Interestingly, we can trace this pattern to the very first Smalltalk interfaces. In the Connector interface we have no boundaries with text and visualization being intertwined to form a new kind of workflow.
Talking about workflows, we now have two distinct and novel ways to explore examples: one is Connector, and the other one is the expandable code editor. For example, the scene from above looks like this in the example expanding editor:
Both of these interfaces are not found in other infrastructures, and yet they were both inexpensive to implement in Bloc.
We believe this will have a deep impact for all sorts of interfaces, and especially for the IDE. If you are interested in more details related to the IDE, take a look at the following paper from 2015:
http://scg.unibe.ch/archive/papers/Girb15b-PervasiveSoftwareVisualizations.…
Please let us know what you think.
Cheers,
The feenk team
--
www.tudorgirba.com
www.feenk.com
"What is more important: To be happy, or to make happy?"
Jan. 14, 2018
bloc next experiments
by Tudor Girba
Hi,
Happy New Year!
We were asked about the roadmap of Bloc several times. It is a perfectly reasonable request given that Bloc is supposed to offer the UI infrastructure for the future of Pharo.
However, I was reluctant to provide one because we do not really have a classic roadmap. When we develop Bloc and GT we think in terms of experiments and examples that we want to play with to get us to our goal. Features are a consequence of that. This approach allowed us on multiple occasions to stumble across functional possibilities that we would have not been able to think about before seeing the experiments. It also works the other way around: as we move ahead, we sometime discover modeling problems and we sometimes chase them all the way down.
Having said that, we can specify the next examples and experiments that we consider for the next months. Here they are:
⢠Drag and drop that can be customized on an instance basis. In the process, revisit event management and explore making it use Announcements. Use this for the diagramming engine.
⢠Scrollbar for infinite list and the scalable element.
⢠Apply layout once. For example, this would allow us to apply a layout but still be able to drag elements in custom positions without disturbing the others. The first application is in the context of creating diagrams and visualizations.
⢠Apply layout with animation. For example, in Connector, a new example should be spawned and moved to its position through a smooth animation. This will also allow us to play with the concept of animation and MVVM.
⢠Introduce the concept of elevation. This is important for scenes in which we have overlapping elements that are not part of the composition tree. For example, in Connector, the lines connect inner elements inside the text, but they belong to the root. such as a visualization (but not only). For this to work, we need a better element traversing structure.
⢠Experiment with theming. The theming mechanism should be instance specific with per-widget defaults, and the theme values should ideally be injected in the widgets. The CSS implementation from Glenn is one direction. As developing and maintaining themes can be a nightmare in the long run, the theming mechanism to provide debugging tools.
⢠Experiment with delegating animations through the model. Typical MVVM or MVC focus on the behavior of an interaction. We want to get smooth live interfaces and the animation logic should be influence-able by the model. For example, hovering over a button, enlarges the button with extra details about the action.
⢠Basic widgets: list, input box, button, radio button, checkbox, menu, dropdown menu, toggling button, tabs, toolbar.
⢠Table and tree widgets.
⢠Pager interface (similar to the one in the current inspector) with resizable panes.
Have fun,
The feenk team
--
www.tudorgirba.com
www.feenk.com
"Presenting is storytelling."
Jan. 14, 2018