Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Adding missing posts.

  • Loading branch information...
commit 766ae580f270cf1ce3a176736f69ba7a09911bcb 1 parent 2867b1c
@akoprow authored
View
18 blog/opa_0_9_1.adoc
@@ -0,0 +1,18 @@
+[[chapter_opa_0_9_1]]
+New release: Opa 0.9.1
+----------------------
+
+_(New to Opa? Read <<chapter_hello_opa, this>> to learn what it's all about_)
+
+Today we just published a new release: Opa 0.9.1. You're welcome to consult the http://opalang.org/resources/changelog.xmlt[CHANGELOG] for a complete list of changes but the highlights include:
+
+* Improved +opa-translate+ tool for conversion between old & new syntax.
+* Ability to mix db3 and mongo backends in a single Opa program.
+* Feature to automatically download, install and launch a MongoDB instance (+--db-local+).
+* Experimental feature: remote logging (logs send to a remote server).
+* Unification of runtime types (and fixed 'magic' functions).
+* Better handling of Twitter's Bootstrap CSS (included in the app instead of referencing external resource) and updating it to 2.0.
+* Added hooks to register favicons (much the same as custom CSS and JS).
+* Numerous bug fixes.
+
+As usual you can http://opalang.org/get.xmlt[download it], http://forum.opalang.org/[discuss with us], https://github.com/MLstate/opalang/issues[report problems] and https://github.com/MLstate/opalang/pulls[provide contributions]. Happy Opa hacking!
View
22 blog/opa_0_9_23.adoc
@@ -0,0 +1,22 @@
+[[chapter_opa_0_9_23]]
+New release: Opa 0.9.3
+----------------------
+
+_(New to Opa? Read <<chapter_hello_opa, this>> to learn what it's all about_)
+
+A new version of Opa has just been released, Opa 0.9.3. Since in the rush we missed the announcement for Opa 0.9.2 let me summarize major changes since 0.9.1:
+
+* *New platforms: Windows* (thanks https://github.com/shadinger[shadinger]) and FreeBSD (thanks Jeremy Messenger),
+* *MongoDB* officially becomes the *default database* backend in Opa,
+* Lots of improvements to *HTML5-compliance*,
+* Initial Opa plugin for https://github.com/OpaOnWindowsNow/OpaSublimeText/downloads[Sublime Text 2],
+* Sub-paths, projections, +ifexists+, +exists+ and more extensions in database queries,
+* Bootstrap and http://doc.opalang.org/package/stdlib.widgets.bootstrap[Bootstrap widgets] updated to 2.0.3,
+* 4 first chapters of the manual translated to Chinese (thanks Li Wenbo),
+* PUT/DELETE methods handled by the HTTP server,
+* IMAP/SMTP clients,
+* New package http://doc.opalang.org/package/stdlib.core.concurrency[stdlib.core.concurrency] providing server-side concurrency primitives,
+* Scheduling policy updated to improve level of concurrency,
+* and numerous bug fixes.
+
+Lots of stuff happening! And that was just a rough summary; you're welcome to consult the http://opalang.org/resources/changelog.xmlt[CHANGELOG] for a more complete list of changes. Also, as usual, you can http://opalang.org/get.xmlt[download Opa], http://forum.opalang.org/[discuss it with us], https://github.com/MLstate/opalang/issues[report problems] and https://github.com/MLstate/opalang/pulls[provide contributions].
View
47 blog/ux_experience.adoc
@@ -0,0 +1,47 @@
+Programming tools UX: How we made MongoDB even easier to use with Opa
+---------------------------------------------------------------------
+
+Most developers nowadays rave about ``User Experience'' or UX, i.e. designing software that pleases the users. Most of the time, UX involves GUI concepts and design, but not always. When we added support for the MongoDB database to the Opa programming language, we tried to make things as easy as possible for the developers. But a second look at the actual programming workflow showed room for improvement -- and improvement we did.
+
+Little background first. Opa is a web programming platform. It unifies the approach to web development by providing a single, uniform programming language for both front- and back-end coding. Under the hood the program gets automatically divided into the server and the client part, with the former compiled to native code and the latter to JavaScript and all the communication between the two taken care of by the compiler. Opa also nicely integrates database functionality, including extensive support for MongoDB, parts of which I’ll talk more about in this article. If interested in the language http://opalang.org[Opa's website] is a great place to start.
+
+A typical support for a database in any programming language consists of a driver for that particular database that provides connectivity with the DB and an API that allows the program to communicate with it. Opa goes few steps further. From the start the database was very tightly integrated into the language allowing one to very easily persist and query arbitrary data in one’s program. Opa was using its own DBMS to accomplish that.
+
+That worked perfectly but our users wanted to have more freedom and to be able to use existing DBMSs. We quickly provided a driver -- in the usual sense of this word -- for MongoDB. But then we realized that a traditional driver comes with traditional problems: communication between the program and the database, going mostly via uninterpreted strings, is essentially untyped and unsafe. This flew in the face Opa’s principles, as it aims to provide a single, uniform language that is safe and secure to use and where type-safety is a given.
+
+Our response to that was to provide an intelligent interface layer between Opa and MongoDB that ensures type-safety for all DB operations. On top of that we made the interface consistent with Opa’s internal database so that now one can very easily switch back and forth between those two different backends. The usage scenario for Mongo was to first start its instance (after installing it on the given machine) and then, once it was running, the Opa application using it, so it went something like this (output slightly simplified for brevity):
+
+[source,log]
+------------------------
+koper@thistle:~/test$ mkdir -p ~/mongodata/opa
+koper@thistle:~/test$ ${INSTALL_DIR}/mongod --noprealloc --dbpath ~/mongodata/opa > ~/mongodata/opa/log.txt 2>&1
+koper@thistle:~/test$ ./test.exe --db-local ~/mongodata/opa
+Opening database at ~/mongodata/opa
+Test (OPA/1488) serving on http://thistle:8080
+------------------------
+
+this first creates directory +\~/mongodata/opa+ for database data, then runs MongoDB server storing logs at +\~/mongodata/opa/log.txt+ and finally launches the Opa application which will use that database server instance.
+
+At the same time we also improved the query language in Opa. Just to give you an idea of how it works think how would you retrieve _all American or French movies with rating between 7 and 10, released after year 2000, sorted by the number of ratings they received and limited to the first 50 results?_. In Opa the query is actually shorter than this sentence:
+
+[source,opa]
+------------------------
+movies = /movies/all[rating >= 7 and rating <= 10, country == "France" or country == "USA", release_year >= 2000; order +ratings_no; limit 50]
+------------------------
+
+If you want to learn more about this cool, concise syntax check the http://doc.opalang.org/manual/Hello--database[relevant chapter] in Opa manual.
+
+That was cool. And we were quite pleased. Until one day we realized one fact: Opa’s approach tightly integrating persistence in the language, essentially meant that our users didn’t have to know first thing about MongoDB to be able to take advantage of this great, state-of-the-art database! They could just take a previous Opa program and now switch the database backend to Mongo. Except, for one thing. They of course had to be able to install and run it separately from the application itself, as illustrated above.
+
+We could improve this by providing some installation hints... But why not going one step further and actually performing the installation and run an instance of MongoDB for the user? With this improvement in place the above scenario became this (again output slightly simplified):
+
+[source,log]
+------------------------
+koper@thistle:~/test$ ./test.exe
+Opening database at ~/.opa/test.exe/db
+MongoDB does not seem to be installed in ‘~/.opa/test.exe/db’; sit back, relax (or grab a cup of coffee) and I'll install it for you
+Launching MongoDB...
+Test (OPA/1488) serving on http://thistle:8080
+------------------------
+
+The change just meant one day of work of one of the Opa developers (thanks Quentin) but the results is lots of love from our users. Thank you for your support, we love to make you happy!
Please sign in to comment.
Something went wrong with that request. Please try again.