HN user

philippeback

127 karma
Posts7
Comments146
View on HN
Pharo 7.0 released 7 years ago

As a keyboard freak and vim user, I can relate.

As a Pharo contributor, well, there is indeed some clicking involved but not as much as you may think.

Keybindings are okayish at this point but can use some more love indeed. But this is not related to the core of Pharo but to the tooling that can be improved on some aspects (and this is moving forward actually).

If a user is not able to use a mouse, well, maybe the user can have a CI that integrates all of the code written in Tonel format and pushed to a git repo. Can work, Tonel format is pretty readable and usable from a command line.

There are ways to use Pharo as a "normal" language. But then, what's the point.

Pharo 7.0 released 7 years ago

I am using Linux a ton (actually on clusters of boxes) and have a boatload of tools and languages (including low level C and in the past, assembly).

Now, I am also using Pharo to do things on Linux and it is easier and faster to get results out of it, especially when I need to fix a failure.

Pharo is not replacing the OS (even if it may feel like it).

One can deal with a running Pharo remotely (either via VNC directly into Pharo or with Pharo7, using Calypso remote connections).

I am with you on the symbolic aspect but still, having an image that one can inspect is great. I was not understanding its value when I started. Now, I do. And I also find it awesome to have a stacktrace saved to disk on a server so that I can reload it into my desktop box and see exactly where things went south, including variables, values etc. Try that with a core dump.

Now, to each its own and I have a personal little project I should actually deliver, namely being able to expose a fuse filesystem from a Pharo image, so that I can use vim and tmux and those things right from a server. There is no technical issue doing this, just damn code it.

The current Pharo is not an OS inside an OS. UnifiedFFI actually makes it easy to bind with C libraries (heck, I wrapped LibStrophe which is full of callbacks, callbacks that are actually written in Pharo, including full debugging on callbacks, see https://docs.google.com/presentation/d/1HTG3GB3xdwlje8wADZPj...) and the more Pharo evolves (been there since Pharo 2.0) the more it delivers on what I need.

With the new boostrapping, one can actually have images with just the bare minimum (no UI, no devtools) so that it can run.

Also there is lowcode, a way to do really fast stuff in Pharo (actually putting C types in there): https://hal.inria.fr/hal-01353884/document

What is also interesting for me in Pharo is that it actually stood the test of time. I am sick of new languages that pop up all the time, where one is relearning the basics with half baked libraries. Pharo core classes are solid, work well and after working in there for a while, it becomes second nature to do quite advanced stuff that one would not even dream to do in, say, Java.

Pharo is indeed a tool and in my toolbox, it is one the best ones so far. Coupled with Unix tools, it is a beast.

I not care if it is getting popular or not. What I care is that it works, that I can influence its course and change what is not pleasing me (try that with other toolchains).

And also that its community actually owns it, not a commercial organization like Oracle, Google, Microsoft... In that regard, Pharo is pretty much aligned on Linux.

The Pharo community understands the limitations or warts of Pharo, because there are some. But the features are currently delivering a net positive.

And, a little thing that is quite important: I have fun creating and maintaining systems I have done in Pharo.

This really contrasts with other solutions where fighting with accidental complexity takes 50% of the time, if not more.

Anyway, to each its own. I can relate to being angry when engineering. Pharo is lowering the level on my WTF-o-meter, which is actually good.

Linux on Dex 8 years ago

The phone with 4G will not be subjected to stupid corporate firewall rules preventing access to, say, StackOverflow.

Test suites and test cases. Tests are usually written first and drive the development. When encountering a non existing message, the debugger pops up and asks you if you want to create the message.

Usually, this makes one think: "ha, this is not right" and then goes back on the execution stack and either fixes the test and continues or refactors something etc.

But in a dynamic language, tests are required to avoid regressions.

Programming as teaching goes both ways, programmer is teaching Smalltalk, Smalltalk helps in revealing thinking flaws to programmer. Loop continues.

One can save an image. I've done this thing https://github.com/Pharophile/HOImageSaver for example.

Nowadays, an image should not be considered as a long lived artifact, one would have a CI job to create the image. See https://github.com/hpi-swa/smalltalkCI

There is also Metacello with BaselineOf constructs etc.

Advantage is that when you get an exception, you just go back in the stack, fix, and then proceed forward instead of looking at a stacktrace and wondering what happened (yes, pdb is nice but not the same feel at all).

There are a things in it that are not in other Smalltalks (e.g. slots, revamped streams, GToolkit).

The point is to be a system to be improved over time.

Squeak is more conventional I'd say.

The move makes sense. Cloudera has cash on board and Hortonworks has excellent technical chops and associated vision. The offering is not Hadoop only. Druid can be deployed with ease and Superset can hook into it nicely, all with proper metrics captured. Ambari is a wonderful single pane of glass to manage it all nicely. YARN is really good at managing capacity leveraging cgroups. Spark is one thing but far from the only thing. E.g.Flink. Hadoop3 introduces Docker containers right into YARN. It is all driven with JVM components, so security actually works. For all its limitations HDFS also has pretty cool powers. HBase is also a beast for a couple use cases. It is a versatile platform and is evolving well. Of course the learning curve is pretty steep. But payoffs are huge.

Pharo MOOC 8 years ago

In C# you have Winforms, WPF versions x,y, z.... and now UWA stuff.

And with Xamarin, a slew of other ways.

Not that less confusing.

Pharo MOOC 8 years ago

There is room for all kinds indeed.

Yes, I'd like a cookie. But not for libgit, but libstrophe. It was easier (and clean!) to bind with Pharo than with a lot of other technologies. The ability to pin objects is also very usable.

Pharo MOOC 8 years ago

I am busy with serious size Hadoop clusters as well, using a gazillion of technologies (including some Pharo on YARN mind you).

Nobody forces one to use Pharo and I actually find it indeed useful to have an FFI binding to libgit.

Pharo has had git support for years with git filetree. There is no urgent need for a built in tool. Iceberg is an integrated tool which is not even yet released for the version of Pharo it is intended for (7).

The project is useful to test drive UFFI significantly. As such it is a really good test bed for all kinds 7of data structures and callbacks etc. Coupled with the 64 bit VM + image it is even more so.

I am in the Pharo ecosystem as a long play. Expedient solutions are plentiful. But they all lack this QWAN in Pharo that makes it enjoyable to me.

I am interested in understanding how things do work. Pharo allows me to do it in a way that suits me.

Given the count of "me" above, it is clear that I follow my own path and I couldn't care less about popularity.

Truth be told, I find it somewhat useful to have a harder to approach community. It keeps the signal to npise ratio at an acceptable level.

Pharo MOOC 8 years ago

I am also using Tmux and Vi an awful lot.

And working on a fuse thing that exposes my running image as a filesystem so that I can such tools as well.

But saying that the tools are different and you cannot be bothered to use them? Look, Visual Studio is a monster beast, with tons and tons of features, including Azure ones. It takes a serious while to master.

And vim also takes a serious while to use well. Especially when we use a couple of plugins.

An engineer knows the tools. Then a specialist masters them. The master makes them. Or changes them.

Pharo allows one to do that. Without strings attached.

Pharo MOOC 8 years ago

Come on, you are just throwing mud around for some reason I do not even want to know about.

It is hard to lose code with Pharo. I have always recovered everything 99.999% of the time.

You are happy with VW, fine with me. I cannot stand it.

Pharo MOOC 8 years ago

From what I read on your project, it was quite daring to expose you to Bloc and Iceberg and the latest Pharo.

I wouldn't have.

Because these things are still in flux.

These things are interesting and are the way forward. But not ready for end users.

But this has exposed you to the realities of creating new things: it is not as clean as one would want nor are users that cool when facing them. In a unusual environment like Pharo, it gives a kind of blurring effect since a user has a hard time distinguishing between solid ground and treacherous new terrain.

I would advise you to look back at Bloc and Iceberg when Pharo 7 is released.

The occasionnal freeze of the environment is indeed a pain and a new user would cringe more than once. I actually have a REPL server running in my images to restart the UI when such stuff occurs. Not the realm of a newcomer for sure.

Pharo is great for my uses. It is not the best tool for everything, granted. But when dealing with complex domains, I haven't found anything close.