TulipeMoutarde.be

Programming & Living 
Filed under

pharo

 

Send email from Pharo with Postmark

I recently needed to send emails from a Pharo image. There is a SMTP client integrated in the standard libray but I wanted to wrap the excellent Postmark REST API.

You can load it from SqueakSource 3:

Gofer it
     url: 'http://ss3.gemstone.com/ss/postmark';
     package: 'ConfigurationOfPostMark';
     load.

(Smalltalk at: #ConfigurationOfPostMark) project stableVersion load.

And you can use it like:

| email interface |
email := PMEmail new
  from: 'francois@wapict.be';
  to: 'francois@yopmail.com';
  subject: 'Test Application';
  textBody: 'Yeah baby';
  yourself.

interface := PMInterface new.
interface apiKey: 'blopblop'.

interface send: email.

The implementation is really basic and does not handle attachments at the moment. I use it on a staging application that will probably be in production in January. I will see how it behaves under small load and improve it if needed.

edit: you can now attach files to your emails !

Filed under  //   library   pharo   postmark   smalltalk  

Comments [0]

The Pharo Smalltalk ecosystem

This post is intented to developers who’ve heard that Smalltalk is hot and sexy. A fraction of them have tried to download a One-Click version of Pharo and played a bit with the language by following a tutorial or two.

So now they have a taste of Smalltalk but they do not get the entire picture, how the environment work, how people actually build and deploy software with it. If you are one of them, you’ll probably want to take some time to read this :)

Images and VMs

If you’ve downloaded a One-Click image, you haven’t experimented with the notion of image and VM in Smalltalk. Actually you have but not in an explicit way, you’ve simply clicked on an icon and got your environment. You’ve maybe ‘Quit and Save’ and when reopening the application you had the same state than when you left. Easy.

In pratice, Pharo works with an image running on top of a virtual machine. If you come from another scripting language, it certainly offers a REPL (e.g., IRB for Ruby). Think of the image as a dump of that REPL at a given moment.

A Pharo image contains everything: your code, the tools and the libraries. You can load code into it, you can save it and restart it at any moment. This image is closed. That’s why you cannot use your text editor to edit Pharo code (actually you could but you certainly would not want that).

The VM is usually something you should not care about. My advice is to use the one given by the Pharo website, it is tested by a Jenkins server and is the one people use the most.

In a nutshell: download a VM and an image from the official website. At this moment, the stable version is Pharo 1.3 and the image is CogVM-13307. I personnaly put the VM in the /Applications folder on my Mac. The image comes with a .changes and .sources files. Keep them in the same directory than your image.

Beware that the evolutions of the image and the VM are not tight. It is possible that a Pharo 1.3 image will run on a new VM version in two years.

To start an image, double-click on it. If your OS does not get it, you can drag the image icon on the VM icon. That should work.

Version numbers

When you download the image, you can see the exact version you are downloading: Pharo-1.3-13315.zip. It means that it is the 315th revision of Pharo 1.3. The 13xxx part is redundant with the Pharo-1.3.

The VM has currently the name CogVM-Mac-13307.zip. Which means it was frozen with the 307th revision of the Pharo image.

Source version control

Your code is in the image. You don’t even have a full text view of your nice classes. How do you persist it? So far, you’ve probably save your image and re-open it later. That’s the best way to lose everything if your image crashes (and that happens). It’s also not really handy if you’re not alone on the project.

Monticello comes to the rescue. It is a version control system like Git, Subversion or Mercurial. The only difference is that it does not version files but classes and methods. That’s pretty great for an object-oriented language, isn’t it?

Historically, Squeaksource is the GitHub of Smalltalk. It is old, ugly and slow but it works. A more modern alternative is SqueakSource3, which brings Squeaksource to the latest frameworks. There are less projects than in the original Squeaksource but you should use it for your new projects.

SmalltalkHub is on its way. It is not stable enough to be used in production but we are all waiting for it :)

James Robertson has made two (very short screencasts to help you get up and running. You won’t need more than 4 minutes to watch them.

  • Smalltalk For You, episode 48, you’ll see how to save a package in a Monticello repository. Gives you all the basic information you need to know to use Monticello. Three minutes. That’s it.
  • Smalltalk For You, episode 49, this screencast will show you how reload the code you saved in the previous screencast in a fresh image. A little more than one minute.

Load external libraries

Loading code in your image is pretty easy. Open a Monticello Browser and add the repository from which you want to load code. Et voilà, done.

The problem is that sometimes, a package has dependencies. So you end up losing 4 hours only to track the dependencies of the package and to figure out a load order. Metacello was designed to help you.

A project can provide a “Metacello Configuration”. This configuration describes the dependencies and the load order of the project. Of course a configuration can load an other one. You can also tag versions of your project.

When you want to use a project, the first thing to do is to find its MetacelloConfiguration. As of today, the lookup to find a configuration is:

  1. Check if the project exists in http://www.squeaksource.com/MetacelloRepository.html. This repo is a goldmine.
  2. If it is not there, check in the project repository if you find a ConfigurationOfTheProject.
  3. Ask the Pharo-users mailing list.

If your project is not trivial, you should write a ConfigurationOfYourProject. You can get inspiration from other configurations. I personnaly like the ConfigurationOfFuel.

Once again, James Robertson has already covered the subject in his Smalltalk For You screencast series. Episode 82 shows you how to load GlorpDBX (an object-relational mapping package for Smalltalk) in a fresh image using Metacello Configuration in a little more than two minutes.

Good practices

Ok, so now you know the tools that are used by Pharo developers. Let’s move on to the next critical point: Good habits.

New image everyday

As you save your image and reopen it 16 hours later in exactly the same state, you are probably tempted to keep it forever and do all your development in it. So convenient.

In theory only. With time, you experiment and create a bunch of stuff you won’t need. You have loaded many external packages and you don’t know anymore which are your dependencies. Your image becomes bloated, it may eventually crash.

The best way to avoid rotten images is to get a new one everyday. Download a stock Pharo image (or keep one somewhere locally) and load your MetacelloConfiguration. This will have two benefits:

  • Your image is always clean and not bloated.
  • You know that your code load and works. This way you are sure that your co-workers can load your code and deployment is smooth.

Keep your images organized

I’m sure you’ve already think about it but try to keep your different images organized. it is not hard to end up with dozens of Pharo images scattered across your hard drive. Try to keep things simple. For example, I keep a directory with all my stock images (Pharo 1.2, 1.3, the preversion of 1.4, Squeak, One-Clicks, etc).

Choose a convention and stick to it.

Syntax conventions & micro decisions

Follow the conventions used by many Smalltalkers. Naming conventions as well as indentation. A very good read is Smalltalk Best Practices Patterns by Kent Beck. Follow this style your code will follow Smalltalk idioms. Actually, the patterns discussed are also valid for Ruby. So go and grab your copy.

Conclusion

I wanted to write this guide for a long time now. This article for Python convinced me to post it.

I hope it will be useful for some folks who want to try Smalltalk (and its Pharo implementation). Feel free to email me or to comment if you have any question or suggestion. If you are a Ruby developer wanting to learn Smalltalk, please drop me an email, I need your help for future posts !

Filed under  //   metacello   monticello   pharo   smalltalk  

Comments [4]

Pharo development

I sometimes wonder why Pharo has such difficulties to get a stable version. Even when a release comes out, it is not that rock solid.

When building an image, you get code from various locations. Integrating everything together seems hard. For example, a package will use a syntax highlighting mechanism, which will be different that the one used in another package. Different shape, different quality, different patterns, it is hard to get the same foundation for everything when you cover many areas: gui, drawing, threads, locks, filesystem, etc.

Smalltalk acts as a whole operating system, it is one of its strength but also one of its weakness. It sounds wrong when you are used to the Unix philosophy where one tools equals one function. Smalltalk breaks that and want to do everything by itself. It becomes nice when you want to do something that crosses different layers (delayed_job would be almost useless in Smalltalk); you start your image and everything runs inside it. You stop it, everything stops. Easy. The drawback is obvious: Smalltalk environments tend to reinvent the wheel all the time.

When you consider this, you start to realize the tremendous amount of work done by the developers. They proceed by baby steps but they are going very far… And I can’t wait to use Pharo for system scripting

Filed under  //   pharo   smalltalk  

Comments [2]

Metacello configurations readability

I’m polishing a very small package to interact with ogone, a payment platform, from a Seaside application. So it’s time to write a Metacello configuration to share it easily.

I always have hard time to read Metacello configurations and wonder if a vertical alignment wouldn’t help. Basically, I find this:

baseline10: spec
  spec for: #common do: [
    spec blessing: #baseline.      
    spec
      repository: 'http://www.squeaksource.com/ogone';
      package: 'Ogone-Core';
      package: 'Ogone-Seaside-Example' with: [spec requires: 'Ogone-Core'];
      package: 'Ogone-Tests'           with: [spec requires: 'Ogone-Core'].

    spec
      group: 'default'         with: #('Core' 'Seaside-Example' 'Test');
      group: 'Core'            with: #('Ogone-Core');
      group: 'Seaside-Example' with: #('Ogone-Core' 'Ogone-Seaside-Example');
      group: 'Tests'           with: #('Ogone-Core' 'Ogone-Test')
  ].

More readable than this:

baseline10: spec
  spec for: #common do: [
    spec blessing: #baseline.      
    spec
      repository: 'http://www.squeaksource.com/ogone';
      package: 'Ogone-Core';
      package: 'Ogone-Seaside-Example' with: [spec requires: 'Ogone-Core'];
      package: 'Ogone-Tests' with: [spec requires: 'Ogone-Core'].

    spec
      group: 'default' with: #('Core' 'Seaside-Example' 'Test');
      group: 'Core' with: #('Ogone-Core');
      group: 'Seaside-Example' with: #('Ogone-Core' 'Ogone-Seaside-Example');
      group: 'Tests' with: #('Ogone-Core' 'Ogone-Test')
  ].

Am I the only one ?

Filed under  //   metacello   pharo   seaside   smalltalk  

Comments [0]

Pharo mailing list weekly summary #5

Once again, the week was very busy in the Pharo mailing list. It seems that Pharo 1.2 release is imminent. I skipped a massive amount of threads in this summary. If I removed something important for you, just shout and I’ll edit this post.

Next week, the Pharo mailing list weekly summary will move to the official Pharo website. Yeah !

Events

  • Deep into Smalltalk took place this week, about 45 people attended. It seems that Mariano enjoyed it very much! Presentation slides are available and courses were recorded. Videos are not there yet but I’ll update this post as soon as they are.

Announcements

  • Doru announced the Glamorous Tool Project. The goald is to build a set of Smalltalk development tools based on Glamour. Is this the future of Pharo development tools ? full thread.

  • There is now an issue tracker for Cog. full thread

  • Esteban released a new Cocoa VM: 5.7.4.1. This is a non Cog VM. This release adds no feature but small steps are better than big jumps. full thread

  • Umezawa-san told us that SIXX now works on Pharo 1.2 and Squeak 4.2. full thread

  • InterpretorSimulator is now working with the latest images. Pavel warned us that it is far from perfect that it should work with small headless images. full thread

  • Benjamin built a new Morphic widget: “SwitchableTreeWidget”. It should works fine on Pharo 1.2 (expect problems with 1.3). Load it and tell him what you think. full thread

Discussions

  • There are some discussions about using the SqueakSSL plugin with Pharo. That would help to use HTTPS. At the moment, stunnel is a possible solution. full thread

  • There are plans to bring Pharo in the Apple Store. The discussion moved to Apple vs the rest of the world and the future of computing and licensing questions. full thread

  • Hilaire asked how to get bigger cursor in Pharo. Apparently Torsten has worked on this. full threads here and there

  • Laurent is doing TDD for GUI development. There are no special tools for this and Laurent struggled a bit with #visible which always returns true. Ben showed the trick to detect if a window is closed. full thread

  • Stef tried to install OSProcess in his image and ran into trouble. Beware that you need a VM with the OSProcess plugin. full thread

  • Alexandre explained different solution on how to run Smalltalk in a web browser.full thread

  • Hilaire ran into trouble when installing DejaVuBitmapFonts on Pharo core 1.3. Fernando shared the snippet he uses. full thread

  • Problems with the integration process and the Hudson server for 1.2. The Great and Perfect Release Cycle is not an easy goal. full thread

That’s all folks, see you next week !

Filed under  //   mailing list   pharo   summary   weekly update  

Comments [0]

Pharo mailing list weekly summary #4

Here is the weekly summary of the Pharo project mailing list. If I missed something or say something wrong, please shout at me in the comments.

My hightlights of the week: at least three different project are in the tracks for a squeaksource replacement. Pharo 1.2 is almost out but everybody feels the need for a better infrastructure/process. If you want to get involved on this side and if you have enough time, do not hesitate to send your ideas and contributions.

Events

  • Pharo Sprint in Lille. Saturday 12th March. Tell if you plan to go ;) full thread

  • The sprint in Bern went very well. You can get an overview of what happened during the sprint on Twitter. To keep it short, Camillo worked on KeyMappings (see this thread for more info), Lukas playing WeakAnnouncements and OB. Adrian, Jorge and Toon started a debugger based on Glamour. They worked hard to decouple the model from the GUI. Mircea built a new widget for searching multiple categories of items in the same time. All in all, Glamour becomes more and more important in Pharo. full thread

  • Stephan and Diego participated in Eindhoven startup weekend. They got the innovation price. I could not find more information on the event website :/ full thread.

Releases

  • New release of Dr Geo II: 11.03. full thread

  • Olivier released a LDAP package and a tutorial. It is known to work on Pharo 1.2rc. full threads here and there)

  • Pharo 1.2 should be released. The infrastructure should be improved. At the moment time is lost in Metacello configurations for external packages. Stef reminds us this fact and want to see 1.2 final soon. One solution pushed by Doru would be to set a hard deadline one month before the release. Packages that do not work are removed from the distributon. Laurent pointed that the Linux process could also be a goot candidate. full thread

  • Alexandre reminds us about the existence of SilverSmalltalk. full thread

Users

  • More information about Squeaksource 3 on a thread. Nobody have heard about it before. As we have seen last week, the future looks promising. full thread

  • There are some discussions about the state of OpenCroquet (now known as OpenCobalt). (full thread)

  • Good thread on TDD. How many time should spend on tests?. Laurent gave a nice reference to Dave Astels book. If you dont know TDD or find it difficult to apply in practice, read the full thread

  • Good question from Edouard. He pointed a stupid method: 2 days vs. 2 day. The latter evaluates to the duration of 1 day. full thread

  • Dennis asked if it is possible to use russian fonts with the CogVM. full thread

  • nullPointer experiences a very slow package loading on Windows. Mariano reminds that antivirus could be the root of the problem. full thread

  • Alexandre asked what Coral is about. Documentation is lacking but according the authors it should work. The only tutorial you will find about it is written in french and does not go very deep. full thread

  • Stef explained to Miguel how to get a diff between to versions on Monticello. It is the kind of thing you will obviously need one day. Bookmark this post ;) full thread

  • Laurent discovered that SSL is not supported on Pharo out of the box. Sven mentioned SqueakSSL but it does not seem to work on Pharo (MacOS and Linux seem problematic as well). Esteban proposed to use stunnel to create an SSL tunneling proxy. Not very elegant and straightforward but it works. full thread

  • Olivier asked if there are any documents on how to create GUIs in Pharo. Pharocasts were mentioned and Bill explained briefly the born of Morphic and Polymorph. full thread

  • Stef struggled to load Magritte without Seaside. He gave the snippet:

    Gofer it
      renggli: 'magritte2';
      package: 'ConfigurationOfMagritte2';
      load.
    
    (ConfigurationOfMagritte2 project version: '2.0.6') load: #('Core')

Internal and discussions

  • Dale did a solo sprint to fix the failing tests in Metacello and released a new version. full threads here and there.

  • Stef introduced RPackage, a rewrite of PackageInfo. full thread. More discussion about it in this other thread.

  • Stef continues his war against uncommented classes. It is sometimes very difficult to use a class/package/framework when you do not know where to start. full thread

  • Discussion about the Azul Pauseless garbage collector. If you are into the VM things, you could be interested with how it compare with the VisualWorks garbge collector. full thread

  • Marcus have some news from the Hudson front. They now have a Mac (so mac VMs will probably soon get the benefits of the continuous integration server). The Cog Unix VMs are also continuously built. And there is a new build for Project Sista. full thread

  • Eliot wrote a blog post about JIT. full thread

  • Stef warned the community about XXX. He seems to approach people with (crazy) business plans. He sent proposals to VCs where he mentioned virtual key team members who are in fact not related with him. German did not have bad experience with XXX. Anyway, be careful if you’re approached by a suspicious VC.

  • Pavel opened a ticket to get pangrams for various language. full thread

  • Hilaire wants to get Locale works with a CogVM (to use it with the underpowered XO laptop). If you want to play with GDB and to dig into the VM the thread should interest you. full thread

  • SqueakDBX will get slots for SummerTalk. Three mentors, three students. Very good news for this project. full thread

  • The state of Smalltalk on tablets and mobile in this thread.

  • Benjamin announced that he (with Igor) managed to get a new Smalltalk kernel based on Pharo which is 2.2Mb and includes 230 classes. Impressive. This is very important to reach one the Pharo’s goal: have a minimal kernel from which needed packages are loaded. full thread

As usual, a lots of bugs were fixed and technical details were discussed both in the mailing list and in the bug tracking system.

Filed under  //   pharo   smalltalk   summary   weekly update  

Comments [0]

Pharo mailing list weekly summary #3

End of week, time for the weekly Pharo digest. Following Ken Brown’s suggestion, I’ve renamed it weekly summary to avoid the confusion with the digest you automatically get from mailing list servers.

As I was on holidays, the summary will be short this week. If I missed something really important, let me know, I’ll edit this post.

Events

  • Pharo sprint organised in Bern this Saturday (26th October). The taks of the day is to discuss and improve the Pharo IDE. Anyone can join (Smalltalk newcomers are welcome).

Announces

  • Moose is available in version 4.3. Moose is a platform for software and data analysis. (the announcement)

  • Miguel updated the configuration of OSProcess. The confifuration takes the symbolic versions into account. OSProcess provides access to operating system functions (full thread)

  • Benjamin wrote a Messenger application to run inside Pharo. Hopefully that could help the developers to communicate when working on Pharo. (full thread).

  • Laurent wrote a simple XML browser. Very handy ! (full thread)

  • Alexandre announced MetacelloBrowser. This tool seems to be the best friend of Metacello. (full thread)

User

  • Adrien asked how to load OmniBrowser in PharoCore 1.3. Guillermo gave the magic command ;) (full thread)

  • Hilaire asked how to change the default font size (he is working on the XO laptop). It is always the kind of tips you eventually need. (full thread)

  • He also got some problems with the Cog VM and the locale plugin. (full thread)

  • Stef asked how people reify XML and objects. Using XMLParser is always the same the same boring work. full thread

  • Olivier asked how to change the Pharo logo in the IDE. This is also the kind of simple question that you will probably ask one day. (full thread)

Pharo

  • Mariano is back after 25 days of holidays without internet. I guess I’ll have much more work for my weekly summaries now ;)

  • Stef continues to comment FileSystem and asked the opinion of the community on some point. (full thread)

  • The virtual sprint for Pharo 1.2 was a bit hard to organise because of timezones (doodle). I have no idea if it was successful though.

  • Squeaksource is down more and more often these days. As usual, people talked about possible replacements. There will be at least one alternative (Esteban has something, The Iliad guys and Esug are working and I’ve heard about a possible Squeaksource 3). Read the (full thread) if you’re interested. Another thread can also be a good read in you are in the version control thing. With the success of Github, it is crucial from a community perspective to have a nice place to host our beloved source code.

  • Another consulting company said:

Smalltalk or FoxPro should be junked or moved to a new system immediately as a result of non-support and no further development of the environments.

You can imagine the reactions in the mailing list ;) full thread

  • State of Magma in Pharo by Miguel. Magma is an object-oriented database. thread

Thanks for reading !

Filed under  //   pharo   smalltalk   weekly update  

Comments [2]

Pharo mailing list weekly digest #2

End of the week, time for the Pharo weekly digest. This week was quite busy on the mailing list, if I overlooked something important, please comment this post.

At some point, this digest will probably be hosted on the main Pharo website. If you want to help, you are more welcome !

I’ll be absent until Wednesday (Italy!), so I’ll probably miss some threads for the next digest :/

Pharo promotion

  • The Pharo board calls for Pharo support in the industry. It wants to create a legal infrastructure to collect funds to perform engineering tasks. The end goal is to streghten Pharo. The consortium is not limited to research groups and companies; individuals are welcome! If you are interested in Pharo, download the letter, sign it and send it back. It is crucial to get a stronger open source Smalltalk. Beware that there are two versions of the letter, be sure to get the latest one. See the thread

  • Stef created a LinkedIn group for Pharo. It is quite successful (76 members so far).

Events

  • Laurent proposed to do some virtual sprint next week from monday to wednesday (evening – France timezone). Check the Doodle if you want to join. (full thread)

Misc

  • Discussion about the new GUI visual designer developed in HPI. This GUI designer targets Squeak but could be porter to Pharo. If I understood correctly, the authors use Signal while Pharo has an explicit preference for Announcements. The discussion moved to the old debate about GUI construction (should we use something like XML to describe a user interface ?), on the topic of how to integrate a big framework into Pharo and how to serialize smalltalk code. If you have followed the thread and if I missed something, please comment ! (full thread)

  • There was a doubt that the introduction of the Hudson build server was putting too much stress on Squeaksource (which is clearly unstable). Stéphane mentions a new cool server. I once heard about a SqueakSource-like project written in iliad and running on top of (GNU Smalltalk)[http://smalltalk.gnu.org/]. Is there a correlation ? (full thread)

  • Janko announces a new version of Aida: Aida/web 6.2 Spring edition is out. Aida is a web framework written in Smalltalk. Janko uses it in production for years now. It is good to see that things are also moving outside the Seaside sphere. (full thread

  • A recurring question on the Seaside mailing-list is how to make a multilanguage (I18n) application in Seaside (or Smalltalk in general). Sebastian wrote a blog post some time ago to explain his approach. There is a dedicated chapter in the collaborative Pharo book as well. If I remember well, some others do not follow the same approach. Please comment if you do.

  • A very important issue was reported and closed.

  • Two new success story were added on the website: a workflow platform called Issys Tracking and DrGeo, a scriptable tool used to teach geometry and mathematics in high school. More info on the Pharo Website.

  • The Cog Unix VM is now built with Hudson. The RMoD Team in Lille will soon get a Mac Mini to build the Mac VMs. (full thread)

  • A good reminder of how to call an external executable from an image. (full thread)

  • Dale explained how to load the latest Seaside in Pharo 1.2. Very nice and clear post. (full thread)

  • RPackage is now built on the Hudson server. According to ticket 3609, RPackage wants to replace PackageInfo.

  • Awesome news from the Cloudfork project: OpenID and OAuth support in Smalltalk. More info on a dedicated blog post. This project will help a lot when it comes to integrate external APIs.

  • The state of WeakAnnouncements was discussed in this thread.

  • Huge¨ thread could we agree to remove caseOf: and caseOf:otherwise:. I reckon that I didn’t follow the whole stuff but the conversation seems interesting for those enlightened enough to understand. The discussion covers the new compiler Opal. (full thread)

  • Olivier tries to use the LDAPlayer in Pharo. He needs to send requests to an LDAP server for a Seaside application. (full thread)

  • German gave us a state of the XMLRPC Project which is funded by ESUG. He will focus on Pharo 1.1.1 and 1.2. It is broken in Squeak 4.2 at the momend.

  • Levente proposed a fix for the UUID plugin problem. That will surely cures the headaches of some people.

  • Nicolas pointed some stuff in the String API and possible replacements to make it more smalltalkish. (full thread)

  • HwaJong Oh works on a COLLADA file parser and wants to render it with AlienOpenGL. Fernando said that he has stopped to maintain the AlienOpenGL package but that it should be complete and stable enough to perform the task (full thread)

  • Guillermo updates us about the state of Pharo 1.2. Hopefully we’ll see the official release quite soon ;) (full thread)

  • Fernando likes the PragmaMenuBuilder. You should look at it if you haven’t yet. The discussion moved to the local and global searches for pragmas. (full thread)

See you next week !

Filed under  //   digest   pharo   smalltalk   weekly update  

Comments [3]

This week in the Pharo-Project mailing list

In the following weeks, I will try to provide a weekly digest of the activity going in the pharo-developer mailing list (and sometimes some bits from the Seaside mailing list).

This digest will be biased by my own priorities and usage of Pharo. There are chances that the commit you are waiting for ages that fix this broken hidden property in Pharo will not be part of my digest. Do not hesitate to comment if I forgot something important.

  • Laurent launched a new game last week: Comment of the Day Contest. The principle is simple: every day a class without comment is randomly chosen. Mailing list participants propose a comment and at the end of the day, the best comment is integrated. It has generated some nice discussions so far.

  • The Hudson server now builds a Seaside and runs all the tests in the Pharo 1.2 build. Continuous integration is definitely the big new thing in the Pharo community.

  • Esteban wrote a new article about the Reef framework. Simply put, Reef is a framework on top of Seaside that let you build dynamic components.

  • Joachim announced the release of JNIPort 2.0. This library allows you invoke Java code from Smalltalk. The big change of this version is the port to Squeak/Pharo (previous versions were only running with VisualWorks).

  • Tony published a great tool to manage external files with Monticello. When writing web applications you often have javascript/CSS/png files hanging around. It can be a mess to deal with Monticello on one side and Git/SVN on the other. TFFiler puts everything into Monticello. Very handy.

  • New COG VMs are available: SimpleStackBasedCogit and StackToRegisterMappingCogit. The latter one is faster but SimpleStackBasedCogit still exists just in case people find bugs with the StackToRegisterMappingCogit that are not in SimpleStackBasedCogit. SimpleStackBasedCogit is “mature”. See the whole thread for more technical details. Those VMs are no longer one-way street. With previous releases, once you had saved an image with a Cog VM you could not open it in a regular VM anymore. This is no longer the case.

  • Guillermo shared a nice trick to push and load all versions to/from Squeaksource with Gofer.

  • Oscar posted a link to a draft chapter about the Settings Framework. It will be included in Pharo By Example 2. Comments are welcome.

  • There was a discussion about syntax highlighting for Smalltalk code in HTML pages. Laurent uses highlight.js on the PharoCast website, Max Leske wrote a a brush for Syntaxhighlighter and Nick pointed that Pygments supports Smalltalk syntax.

  • Stephane announced that the talk of the Deep into Smalltalk school will probably be recorded. Deep into Smalltalk is five days of lectures about advanced Smalltalk topics given by a great selection of speaker. Make sure you attend if you’re interested by VMs, sockets, FFI or C-Smalltalk interactions.

  • Stephane decided to bring FileSystem into Pharo for real and posted a roadmap of what would be cool to have this package.

  • PharoConf in Annecy. Lots of tickets were processed. Congrats !

  • Marcus gave the state of the Hudson build server for Pharo and related project.

Of course, there were a lot of bug fixes and improvements.

See you next week !

Filed under  //   pharo   smalltalk   weekly update  

Comments [2]