11 ms·
Pharo 8.0
- zerr 7y agoPharo always looks cute, but does anyone here use it, even for toy stuff?
- dgellow 7y agoThe website has a "Stories" section: http://pharo.org/success http://pharo.org/success Projects screenshots look way better than I expected.
- armagon 7y ago"The future is already here – it's just not evenly distributed." - William Gibson I did some work in Smalltalk (working on a mod of Scratch 1.4, which was written in Squeak Smalltalk from the turn of the century). Once you got used to it, it was amazing. The environment is lively, and you can debug into everything. The tech is great; it is just that the community of people who know it is relatively small. If you wanted to develop an open-source project in it, you may have a harder time finding other developers to help. On the other hand, if you wanted to make a cross-platform desktop application that doesn't look native (which, given the prevalence of Electron, doesn't seem to matter too much to people), this would be an excellent choice. I wish I could do more development with Pharo. I also think the web framework Seaside would be fun to work with. http://seaside.st/ http://seaside.st/ We just need to go back in time to twenty years or so and take a different fork ...
- fmakunbound 7y agoI also thoroughly enjoy Seaside. There's also https://iliadproject.github.io/ https://iliadproject.github.io/ for another approach.
- lucas_membrane 7y agoIliad says Latest commit 0be1977 on Jul 18, 2017. Seaside says last commit 24 August 2019. Any actively maintained web framework that will work with Pharo 8?
- fmakunbound 7y agoThe mailing list seems active. I think maybe development actually takes place in one of the older version control methods for Pharo.
- blihp 7y agoThat is considered active. The Smalltalk community is far smaller than other languages and web development is a small subset of that community. So you won't see nearly the frequency of commits of projects. Also, the major web frameworks are pretty stable these days so most of the action is in the integration of support for various client-side Javascript libraries. Those are often published as separate projects.
- masukomi 7y agokeep in mind that smalltalk is freaking ancient and like most useful but freaking ancient things in unix, most of the stuff "just works" and doesn't need constant poking. Also, Smalltalk offers a much more transparent development environment. So, you're not writing code that goes into a black box and produces results. You can see what's going on in the box and make sure its doing it correctly. also, the Squeak by example book (i think Pharo by example is a fork of this) very quickly starts showing people how to write tests. So the mentality isn't "oh, yeah, i guess i could add tests" it's "oh hey, tests are part of making smalltalk code" so you've got that going for it too. combine those things with the smaller community, and thus a much more narrowly defined set of "needs" for a web framework and yeah, it doesn't get poked constantly. but that's ok.
- Allower 7y agoSeems fairly dead, the examples certainly don't work or are missing entirely.
- klez 7y ago> On the other hand, if you wanted to make a cross-platform desktop application that doesn't look native (which, given the prevalence of Electron, doesn't seem to matter too much to people), this would be an excellent choice. Yeah, as if people are going to install a whole virtual machine to run a chat application... Wait...
- protomyth 7y agoYep, it still amazes me how a lot of the criticisms of Smalltalk have been become the new, cool solution. Smalltalk on Electron would be an interesting answer.
- armagon 7y agoThat'd be funny. I'm sure you could do it with https://www.amber-lang.net/ https://www.amber-lang.net/ ;-)
- ethagnawl 7y agoI have a short anecdote about Amber, which may or may not be widely known. Amber.js was the original name of Ember.js (so named after the style of beer one of its creators was drinking when they were searching for a name; if memory serves it was also the result of pulling bits and pieces out of SproutCore.js). When it came time to release the project, the authors of A/Ember were notified that they were encroaching on the name of a pre-existing project and changed it.
- masukomi 7y agowhat bewildered me at the time was that they never did a google search for it before publicizing their chosen name. Or that maybe they did and said "screw it. who cares about smalltalk. we'll steal their name"
- rbanffy 7y ago> Yeah, as if people are going to install a whole virtual machine to run a chat application... You can install an application that launches the VM with the desired image and the user will never know the app is running inside a Smalltalk VM.
- e12e 7y ago> if you wanted to make a cross-platform desktop application that doesn't look native I'll just mention that the announcement (which is now down) and the readme mentions spec2: > Spec 2 (preview) - UI building framework with multiple backends The announcement (main hn link) mentioned spec2 and native look together.
- fmakunbound 7y agoYeah, I use it. It is a highly productive development environment. My daily work is Java, C#/.NET, Angular, React, but when I'm in deep in the zone, in Pharo, developing web applications, those other platforms and tools looks like monkeys throwing turds at each other.
- fooblitzky 7y agoI use it, mostly for toy stuff (work is 80% Java). Once you get used to it, Smalltalk is really the most amazing development environment. It's hard to describe how it feels to work with live objects - it's an incredible speed boost, because instead of grepping logs or stepping through code, you just interact with the objects directly, you can examine the state of instance variables, add new methods, or change code while the code is running. The feedback loop is so short, you get amazing productivity. There's a great video floating around somewhere of someone debugging an Asteroids game while the game is running. From what I've read, the downside is that working on larger programs in a team is challenging. It takes a lot more communication to keep the code base consistent and structured.
- coldtea 7y ago>From what I've read, the downside is that working on larger programs in a team is challenging. It takes a lot more communication to keep the code base consistent and structured. I don't think that's an inherent limitation of image based development -- just that the current systems don't offer facilities for syncing etc.
- fmakunbound 7y agoMaybe grandpa already knows, but in Pharo's case, there is Iceberg. It's a Git interface that's included in default Pharo images that understands Pharo's packages, and so on. You can push your stuff to Github etc. and teams can work together that way. I've never worked in a team in a Pharo projects, but I imagine it works well somehow. There's ~75 contributors to the 8.0 release.
- arnsholt 7y agoI worked on a large legacy application (in production since 1996) implemented in Smalltalk for a couple of years. I don't feel we had any particular issues keeping the codebase consistent due to Smalltalk itself (there were some issues due to the Smalltalk system's version control system which was pretty terrible), but Smalltalk enabled us to implement new features in the application very smoothly, and debugging issues was simply a joy compared to other systems I've worked in. Finally, we could also fix bugs in the platform itself, which was quite useful since the vendor stopped supporting this particular Smalltalk compiler around 2000; I did a couple of small but quite important fixes like this while working on the project.
- echelon 7y agoI once interviewed a candidate who decided to use Pharo to solve my technical problem. It was an absolute joy to see not only a good approach, but such an interesting and alien language employed to solve it. He got the job. :)
- shobith 7y agoWas it an on-site interview? I’m curious how he was able to convince you to install the env.
- echelon 7y agoYeah, onsite. Remotes are harder in this respect. We give onsite candidates affordances to install any environment that makes them feel comfortable, or to allow them to bring their own machines. The interview machines get wiped on a regular cadence, so installing packages is no big deal. If candidates send us a list of the software they want beforehand, we usually try to set it up for them in advance. If not, it's fine for the schedule to run over a bit for them to tweak things as they like. Interviews are stressful enough. We want everything working in a candidate's favor so they can do their best.
- shobith 7y agoWhere do you work?? :D
- _pmf_ 7y ago> He got the job. I hope he's now writing CRUD apps in J2EE.
- rbanffy 7y agoWhy would you want that to anyone?
- johnwheeler 7y agoEJB 1.0
- bjoli 7y agoWriting small web services in seaside has been like living in the distant future since something like 2006. JavaScript made a lot of strides towards making seaside less impressive in recent years, but as someone who hates frontend stuff I still vastly prefer it. Playing with it in 2006 was like using magic. Sure, it is not REST, but whenever I show it off to someone used to handling a lot of stuff client side they still have to pinch themselves :)
- seandenigris 7y agoCool perspective! FYI there are also REST add-ons now (as well as other more minimal frameworks) for when REST is desired.
- Zenchess 7y agoI always use smalltalk when the problem would allow for it since I'm much more productive in smalltalk than anything else. It's great for certain random tasks - i.e. Want to set up a websocket server for some reason? Program it in smalltalk, test it interactively (literally debugging on execution errors, fixing and resuming execution until it works). If I'm writing a native windows app I'll go with dolphin smalltalk which imo is much nicer to work with and gives you a native gui. I have to say though pharo is getting better all the time and has an active community.
- nundah 7y agoDolphin Smalltalk. Such an underrated tool. Productivity + Windows-native gui. Nothing else like it. The Pharo Spec/2 pales in comparison.
- rbanffy 7y agoIF you are developing a Windows-only application.
- nundah 7y agoYup, and that is the reason I refused to look at it for so long. And then I went to work for a large corporate where Windows is mandated since forever and will be until eternity. And from my impression most businesses wont touch any other OS for use on desktops. You can of course use Wine/Wineskin and there are guides on how to get this done for Dolphin apps, but I just wont bother for my clients. Not one has ever mentioned compatibility with anything other than Windows 10.
- rbanffy 7y ago> And from my impression most businesses wont touch any other OS for use on desktops. True, but more and more software is delivered using web-based technologies - from desktop apps like Slack to most SaaS offerings.
- eitland 7y agoIt is not Pharo but I work with what is possibly (probably?) the largest group of smalltalk programmers in Norway.
- blihp 7y agoI've been using various Smalltalk dialects (Squeak/Cuis/Pharo) for over a decade. I've gone a bit off the deep end and use it for prototyping pretty much everywhere I can. Pharo would be the one Smalltalk environment I would not use for non-toy stuff because it has historically been so unstable. This is at least somewhat by design since the developers have always stated they didn't want to be constrained by backwards compatibility... and they have never let themselves be. It's a great environment for playing around with ideas, not for developing code you expect to work as is a few years from now without some (potentially serious) work. In fairness, all the Squeak dialects have this issue to varying degrees. It just seems to me that it's more extreme with Pharo.
- seandenigris 7y agoDue to Pharo/Smalltalk being not just a language, but a language/libraries/IDE, I think it's important to distinguish between API instability (which IHMO is better called evolution) vs. bugginess. API evolution is a core part of Pharo's mission. I've personally upgraded projects from Pharo 1.x all the way to Pharo 7 and have been very willing to trade a small amount of effort porting for big increases in productivity.
- alxndr 7y ago> I've personally upgraded projects from Pharo 1.x all the way to Pharo 7 and have been very willing to trade a small amount of effort porting for big increases in productivity. Wow, any chance you've written about the upgrade process?
- seandenigris 7y agoI don't exactly have a playbook. I generally just fix as I go. I try to install the project, fix any errors, run the test, fix the errors, etc. I can say that some version jumps have been almost no work and probably the max time I've spent is an hour to get everything working. It used to be a bit harder, but nowadays Pharo has automatic refactoring for deprecated methods, which helps...
- nundah 7y agoMe. It is my go-to tool to build everything/prototype. It is the most productive tool I know of to get things up and running. There is nothing like it. I also know Python, Lua and various Schemes, but they do not come close. Smalltalk presents the smallest barrier between idea and working code for me. Especially if with the "live in the debugger" type of development where you write a test and get the debugger to tell you the next step. Try it, you might like it.
- m4r35n357 7y agowebsite down?
- the-dude 7y agoSeconded
- 7thaccount 7y agoIt is extremely slow even during non HN events unfortunately.
- lucb1e 7y ago> This page (http://pharo.org/news/pharo8.0-released http://pharo.org/news/pharo8.0-released) is currently offline. However, because the site uses Cloudflare's Always Online™ technology you can continue to surf a snapshot of the site. Except that I see a big error page. Isn't CloudFlare supposed to help with this? The message on top seems to indicate that, but when I (back in the day) tested with CF on my domain it just proxied every request and failed when my server didn't respond, having zero advantage over just using my server directly (in fact, even having the downside that Tor users now couldn't reach my site anymore). Seems like that's still the case.
- Semaphor 7y agoYeah, it’s like that every single time it shows up, I really don’t understand what this is supposed to do.
- singlow 7y agoIt is optional to let CloudFlare cache the content. I believe you can control it from the CloudFlare control panel as well as affect it from your HTTP headers. So I bet they have the feature enabled on the panel but their HTTP headers tell CloudFlare not to cache the page, maybe accidentally.
- drivers99 7y agoIt is caching the static assets (js, css, png, etc) based on default extensions[1]. The page itself is dynamic, likely for the comment feature at the bottom of the page. If they wanted to cache it, they could probably add some caching headers (have to change the responses on the origin) or a Page Rule in cloudflare (and not have to change anything on the server). But that won't be a good idea if people can login to the page to comment (not sure if CloudFlare can tell if someone is not-logged-in and return a cached version; that would be interesting). I see CF-Cache-Status: DYNAMIC header, which is: "The resource content type was not cached by default and your current Cloudflare caching configuration doesn't instruct Cloudflare to cache the resource. Instead, the resource was requested from the origin web server. Use Page Rules to implement custom caching options." [1] https://support.cloudflare.com/hc/en-us/articles/200172516-Understanding-Cloudflare-s-CDN#h_a01982d4-d5b6-4744-bb9b-a71da62c160a https://support.cloudflare.com/hc/en-us/articles/200172516-U...
- atemerev 7y agoSo, still no HiDPI/Retina support. This is probably the most requested feature since at least Pharo 4, and nobody seems to be interested in implementing it.
- badsectoracula 7y agoIf it is the most requested, then perhaps one of those requesting it should try to do it themselves? HiDPI support sounds like a high effort low reward task (according to this[0] HiDPI monitors practically do not exist in the wild and chances are none of the main developers have one), so unless someone who really wants it puts the effort themselves it may take a long time to appear. Generally speaking unless there is a big company behind the scenes that pays the developers for an open source project, it doesn't matter how many people ask for something if the developers themselves aren't interested in working on it and your best bet is to do it the old fashioned way (yourself :-P). [0] https://gs.statcounter.com/screen-resolution-stats/desktop/worldwide https://gs.statcounter.com/screen-resolution-stats/desktop/w...
- atemerev 7y agoEvery Macbook after around 2015 is HiDPI. Windows Surface laptops, too. Hardly "practically do not exist in the wild". I love Smalltalk, but I am not qualified to rewrite the entire Pharo rendering layer, unfortunately. Also, statscounter doesn't account for high resolution displays at all, grouping them all as "other". And these are around 20%.
- zerr 7y agovm doesn't start on Windows - "Unsupported 16-bit Application".
- 7thaccount 7y agoI haven't checked out Pharo 8 yet, but found Pharo 7 to work well on Windows.
- Katuva 7y agoI resolved the issue by navigating to the directory where it downloaded the vm's, deleting the folder and unzipping manually. Seems the launcher corrupts the files when it unzips them.
- elliotlarson 7y agoAs a long time Ruby developer I frequently hear older developers talking fondly about their experiences working with Smalltalk long ago. When I saw this post, I was curious enough to watch a video just now by a respected Ruby dev (who's admittedly new to Smalltalk and using an older version of Pharo): https://www.youtube.com/watch?v=HOuZyOKa91o https://www.youtube.com/watch?v=HOuZyOKa91o. The video is short, but it looks to me like the advantage of developing in this environment is mainly that you can write a test, run it in a kind of debug mode, and when the environment encounters something it doesn't understand it gives you some options for creating something new like an object or a method to solve the problem. This seems kind of cool, but I feel like there must be more to it. Can anyone better explain the selling point, or share a video that highlights how this environment is so cool?
- xkriva11 7y agohttp://pharo.org/features http://pharo.org/features
- gambler 7y agoThere is no single selling point. Here are some surface things that I immediately liked: 1. You can download a single zip file (Pharo Standalone) and it will give you all the tools of a modern IDE without shitting all over your system and with faster startup than Atom, VS Code or even LINQPad. 2. The environment retains all its state across restarts. The editor stuff, the running state of the program - everything. 3. You have the same capabilities as the people who developed the language. You program, the run-time environment and the editor itself can be browsed and edited by the same set of tools, without any extra hoops. There is very little "magic". 4. The syntax of the language is designed so that you can create DSLs without using macros or pre-processors. 5. It's the only environment in my recent memory where I can do stuff without opening the web browser to search for something every 5 minutes. 6. IMO, breaking the system into four-tier structure made the whole thing much more tractable than infinitely nested directories or namespace hierarchies. I also like that there is no need to manage files with code.
- blihp 7y agoThe 'more to it' is the fact that you are always effectively in 'debug mode'. By default, there is no distinction between development and deployment in Smalltalk[1] so when something fails, you typically will get a debugger pop of the method at the exact statement where the problem occurred with the live state as of the moment of the problem. The entire environment is as static or dynamic as you want it to be since it's entirely malleable. Since Ruby was largely inspired by Smalltalk, you'll find similarities in their views of OO and code. Where they fundamentally differ is in the environment since Smalltalk is based on a monolithic persistent image so it can do things like have the debugger, and other GUI tools, built in. All that video was showing was built in stuff from the Pharo image... other dialects have their own takes on the tools. [1] You can create a distinction by removing the development tools and replacing their functionality with non-interactive logging/error handlers for production deployment.
- hliyan 7y agoFive clicks through from the home page and I still can't seem to find a "Getting started" / "Hello World" example.
- analognoise 7y agoPharo's documentation includes 5 FULL BOOKS (http://books.pharo.org/ http://books.pharo.org/) that are open source and free, an ENTIRE MOOC supported by INRIA (which cost ~155k Euro), a world class computer research national lab that is massive in scale and supports some of the finest research in the field. I'm sorry they didn't get to HELLO WORLD in less than 5 clicks though, they must really not care! Glad you took the time to really look for HELLO WORLD in those 5 clicks. Who says Silicon Valley can't solve hard problems?
- z3phyr 7y agoInstall it and try it. It might surprise you.
- seandenigris 7y agoOne click on the "Documentation" tab provides links to several screencasts/tutorials. Are you looking for something specific? "Hello world" doesn't cleanly map to an environment as comprehensive as Pharo because there are so many options. Do you want "hello world" to output to the terminal (Stdio stdout << 'Hello world')? A window? A growl-style popup (UIManager default inform: 'Hello world')? The transcript (Transcript show: 'Hello world')?
- masukomi 7y agoBooks: https://books.pharo.org/ https://books.pharo.org/ Pharo by Example should be a good starting point. Developing in Smalltalk is unlike EVERYTHING else. As noted by seandenigris standard assumptions about things like "hello world" don't apply.
- AtlasBarfed 7y agoGreat. Super. Has it been ported to a "real" VM yet? I'm going off of Wikipedia and the 16-bit windows error below. I can see that the "radical: always-debug, always-on might need a real VM, but it's apparent there isn't enough base for this to produce a true VM. Is it really impossible to port to the JVM, the javascript VMs, or something similar? Otherwise I fear this is doomed to toy status.
- masukomi 7y agotwo things. First though, please google before getting all dismissive. 1) YES smalltalk _has_ been ported to the JVM https://www.redline.st/ https://www.redline.st/ AND you can also run it in the GraalVM https://www.graalvm.org/ https://www.graalvm.org/ 2) I'm pretty sure the initial JVM was a clone / extension of a Smalltalk VM. Having trouble googling the details, but while you may be having trouble getting it to work on your particular Windows install you might want to consider that you're possibly ignorant of the fact that the Smalltalk VM is not only one of the best available but battle tested over decades. I would guess that what you're seeing is a particular windows issue that has nothing to do with the VM itself.
- AtlasBarfed 7y agoI did, yes I know that Smalltalk needed a VM, Pharo == smalltalk, and the like. Wikipedia for Pharo says they have a VM with JIT, etc. I have never heard a peep about the Smalltalk VM in any circumstance as a performant target for any language. Ever. If it's battle tested and great, why isn't it used for anything else than Smalltalk ports? Is there a python, ruby, javascript, java, etc port to the smalltalk VM? If it sounds like I'm being dismissive, that's not the point. The point is the Smalltalk ecosystem, like Lisp derivatives, likes to have its own top-to-bottom stack completely isolated from "real" execution platforms. For Lisp it's so bad that Clojure is rejected by some Lisp purists because it can JVM / JS compile. IMO, for example, Ruby made a strategic error writing their own VM rather than just embracing the JVM as the main VM, although when Ruby was writing their VM invokedynamic hadn't been added to the JVM. Well, and they should have added some optional typing.
- ralphc 7y ago16" MacBook Pro, Catalina, I get "“PharoLauncher.app” can’t be opened because Apple cannot check it for malicious software." "This software needs to be updated."
- ralphc 7y agoFor others coming along later, right click, pick "open". If you don't get an "open" button on the dialog, go to system preferences, security, general. You should see a button that says "Pharo Launcher wouldn't open. Open anyway" or something of that nature. Click. Profit!