Tuesday, March 22, 2011

GO: Google Launches Its Own Programming Language

One of the core philosophies of Google, and one of the reasons it has been so successful, is efficiency. It’s about both being as efficient as possible when serving search results and processing data and creating product that push the limits of efficiency for the user (as an example, Google’s trying to make communication more efficient with Google Wave).
Maybe that’s why we’re not surprised that Google is finally looking to tackle the underpinning code that runs the web. Today the search giant released Go, an open-source development language that Google believes will combine performance with speed, and one that the company probably hopes will reshape the development and software industries in its favor.
Go is based on the C programming family, one of the most widely used programming language trees in the world. However, the twist is that incorporates elements of Python (a preferred development language within Google) and the Pascal/Modula/Oberon family to make faster and more dynamic programs.

Why Did Google Make Its Own Language?


In its Go FAQ, Google explains the main motivations behind the project:
“No major systems language has emerged in over a decade, but over that time the computing landscape has changed tremendously. There are several trends:
- Computers are enormously quicker but software development is not faster.
- Dependency management is a big part of software development today but the “header files” of languages in the C tradition are antithetical to clean dependency analysis—and fast compilation.
- There is a growing rebellion against cumbersome type systems like those of Java and C++, pushing people towards dynamically typed languages such as Python and JavaScript.
- Some fundamental concepts such as garbage collection and parallel computation are not well supported by popular systems languages.
- The emergence of multicore computers has generated worry and confusion.”
Summary: Google believes that the web and computing have changed dramatically in the last ten years, but the languages powering that computing have not. But when you get down to it, Google could benefit a great deal from not only having a more efficient programming language, but having one it designed being used in thousands web and software apps.

Programming Languages You Should Learn Right Now

Among thousands, 10 programming languages stand out for their job marketability and wide use. If you're looking to boost your career or learn something new, start here.

 

Knowing a handful of programming languages is seen by many as a harbor in a job market storm, solid skills that will be marketable as long as the languages are.
Yet, there is beauty in numbers. While there may be developers who have had riches heaped on them by knowing the right programming language at the right time in the right place, most longtime coders will tell you that periodically learning a new language is an essential part of being a good and successful Web developer.
"One of my mentors once told me that a programming language is just a programming language. It doesnt matter if youre a good programmer, its the syntax that matters," Tim Huckaby, CEO of San Diego-based software engineering company CEO Interknowlogy.com, told eWEEK.
However, Huckaby said that while his company is "swimming" in work, hes having a nearly impossible time finding recruits, even on the entry level, that know specific programming languages.
"Were hiring like crazy, but were not having an easy time. Were just looking for attitude and aptitude, kids right out of school that know .Net, or even Java, because with that we can train them on .Net," said Huckaby.
"Dont get fixated on one or two languages. When I started in 1969, FORTRAN, COBOL and S/360 Assembler were the big tickets. Today, Java, C and Visual Basic are. In 10 years time, some new set of languages will be the in thing. …At last count, I knew/have learned over 24 different languages in over 30 years," Wayne Duqaine, director of Software Development at Grandview Systems, of Sebastopol, Calif., told eWEEK.
By picking the brains of Web developers and IT recruiters, eWEEK selected 10 programming languages that are a bonus for developers to add to their resumes. Even better, theyre great jumping-off points, with loads of job opportunities for younger recruits.
1. PHP

  • What it is: An open-source, interpretive, server-side, cross-platform, HTML scripting language, especially well-suited for Web development as it can be embedded into HTML pages.

  • Why you should learn it: Its particularly widely used. "High-speed scripting with caching, augmented with compiled code plug-ins (such as can be done with Perl and PHP) is where the future is. Building Web apps from scratch using C or COBOL is going the way of the dinosaur," said Duquaine.

  • Job availabilities: 1,152*

  • 2. C#
  • What it is: A general-purpose, compiled, object-oriented programming language developed by Microsoft as part of its .NET initiative, it evolved from C and C++

  • Why you should learn it: Its an essential part of the .Net framework. "Learning C#, which is just Java with a different name plate, is critical if you heavily use Microsoft," said Duquaine.

  • Job availabilities: 5,111

  • 3. AJAX (Asynchronous JavaScript and XML)
  • What it is: Though technically not a programming language, AJAX uses XHTML or HTML, JavaScript and XML to create interactive Web applications.

  • Why you should learn it: Ever since Google Maps put AJAX, well, on the map, the requests for AJAX-knowledgeable pros went through the roof. "The demand for AJAX knowledge is huge because its so damned hard to learn," said Huckaby. Of note, Microsoft announced recently plans to release a tool named Atlas that will make AJAX easier to implement. "If Microsofts Atlas tool is successful, it would bring the extreme complexity and annoyance of AJAX to the average worker," said Huckaby.

  • Job availabilities : 1,106

  • 4. JavaScript
  • What it is: Not to be confused with Java, JavaScript is a an object-oriented, scripting programming language that runs in the Web browser on the client side. Its smaller than Java, with a simplified set of commands, easier to code and doesnt have to be compiled.

  • Why you should learn it: Embedded into HTML, its used in millions of Web pages to validate forms, create cookies, detect browsers and improve the design. With its simplicity to learn as well as wide use, its considered a great bang for your educational buck.

  • Job availabilities: 4,406

  • 5. Perl
  • What it is: Perl is an open-source, cross-platform, server-side interpretive programming language used extensively to process text through CGI programs.

  • Why you should learn it: Perls power in processing of piles of text has made it very popular and widely used to write Web server programs for a range of tasks. "Learning some form of scripting language, such as Perl or PHP is critical if you are doing Web apps," said Duquaine.

  • Job availabilities: 4,810

  • 6. C
  • What it is: A standardized, general-purpose programming language, its one of the most pervasive languages and the basis for several others (such as C++).

  • Why you should learn it: "Learning C is crucial. Once you learn C, making the jump to Java or C# is fairly easy, because a lot of the syntax is common. Also, a lot of C syntax is used in scripting languages," said Duquaine.

  • Job availabilities: 6,164, including all derivatives

  • 7. Ruby and Ruby on Rails
  • What they are: Ruby is a dynamic, object-oriented, open-source programming language; Ruby on Rails is an open-source Web application framework written in Ruby that closely follows the MVC (Model-View-Controller) architecture.

  • Why you should learn it: With a focus on simplicity, productivity and letting the computers do the work, in a few years, its usage has spread quickly. As a bonus, many find it easy to learn.

  • Job availabilities : 210 and 54, respectively

  • 8. Java
  • What it is: An object-oriented programming language developed by James Gosling and colleagues at Sun Microsystems in the early 1990s.

  • Why you should learn it: Hailed by many developers as a "beautiful" language, it is central to the non-.Net programming experience. "Learning Java is critical if you are non-Microsoft," said Duquaine.

  • Job availabilities: 14,408

  • 9. Python
  • What it is: An interpreted, dynamically object-oriented, open-source programming language that utilizes automatic memory management.

  • Why you should learn it: Designed to be a highly readable, minimalist language, many say it has a sense of humor (spam and eggs, rather than foo and bar), Python is used extensively by Google as well as in academia because of its syntactic simplicity.

  • Job availabilities: 811

  • 10. VB.Net (Visual Basic .Net)
  • What it is: An object-oriented language implemented on Microsofts .Net framework.

  • Why you should learn it: Most argue that VB.Net is currently more popular than ever and one of the only "must-learns." "It is currently dominating in adoption and that is where all the work is," said Huckaby.

  • Job availabilities: 2,090

  •  

    Monday, March 21, 2011

    Ruby On Rails Job Trends


    .NET MVC vs Ruby on Rails (Microsoft vs OPEN SOURCE)

    It seems oddly regressive to be going from the polished world of Ruby and Rails to the rough hewn newborn lump of .NET MVC, but well, needs must. I’ve just finished a project in .NET MVC (RC1) and have the following thoughts that may come in handy if you are thinking of using .NET MVC instead of Rails, or are a Rails dev being forced to use .NET MVC:
    1. Learn C#. The most straightforward book I found was the Apress C# book Pro C# 2008 and the .NET 3.5 Platform. You’ll only need the first half of the book.
    2. .NET MVC is easy to grasp if you have any prior MVC web framework experience such as Rails. Do a couple of video’s of the .NET website.
    3. .NET MVC is actually .NET VC. It is an attempt to replicate the Actionpack components of Rails. There is nothing included aside from a folder labeled “Models” to help you with your persistence later and domain modeling. As others have mentioned, there are other ORM tools out there, but bear in mind these are not integrated into the framework as with Rails. There are good and bad points to this, but it does mean you’ll be writing more boilerplate code and setup for your model layer than you are used to with any of the Ruby ORMs.
    4. The community is comparatively extremely anemic, both in terms of plugins/modules and blog posts/tutorials. After the well developed ecosystem of Rails (500+ people in IRC, loads of blogs/tutorials/newsgroups, rubygems, github etc), don’t expect to be able to rely on much else other than the .NET libraries, core MVC and Contrib packages and a handful of blogs. It is still early days for the framework, but the lack of community resources will come as a culture shock.  That said, a good resource for tips is stackoverflow.com, developed using MVC .NET. From a code point of view, you will often find yourself writing model wrappers around normal .NET components, such as the Membership API, in addition to doing more setup XML pushups than you are used to.
    5. The official documentation is rudimentary. Even within the framework code, comments for methods are often non-existent. The DocRails and Rails Guides projects are good examples of how to get the community documenting the codebase and building a range of real world explanations. Unfortuanatly there is nothing like this for .NET MVC as yet, the framework is also not documented on MSDN at this stage.
    6. The API feels un-unified with different argument requirements for very similar methods. Programming to an API which is undocumented and un-unified can be quite vexing even with intellisense code completion doing the hand holding.
    7. .NET MVC is now NOT open source. Next step in joining the OSS community is accepting contributions.
    8. The routing will appear very verbose in comparison to the simple rails routing structure. That said, it does work and is round trip.
    9. C# is too verbose for most web work. This point really should not be underestimated. Edit: not really a fair point in this discussion
    10. All Ajax is done by hand (not such a problem, as it includes the jQuery library).
    11. Passing variables to the view can be extremely laborious. There is the ability to automatically pass objects of 1 type to the view using strongly typed views. Outside of that, you have to package/box up your variables into an array which gets sent to the view. In the view, you have to unpack/unbox the variables from the array and cast them to their original type before use. As you can imagine, this gets old, fast. This also leads to old .NET hands just coding everything in the view in a codebehind to “get the job done”. Edit: Another way round this from the comments is to make a custom composite object and pass this through to a strongly typed view. I’m not entirely sure how this reduces the effort required, but it is certainly true that the methodology advised in most of the Docs is to use the ViewData collection to pass variables to the view using a “package and pass” approach.
    12. It’s hard to convert ASP.NET developers to use .NET MVC as it is basically less immediately productive, and can feel like a step-backwards in their approach to webdev.
    13. As the MVC project is very much a reactionary response to staunch the outflow of devs to other MVC frameworks, there is a worry that MS will drop the project if forced to make a cost cutting decision (see licensing comment 6). They are certainly not going to drop normal ASP.NET. If MVC .NET is properly open sourced, this is less of an issue.

    Less is more for Ruby on Rails, inventor says

    The goal is to keep Ruby on Rails fast, lightweight and easy to use, characteristics that have helped it become a trendy alternative to Sun Microsystems Inc.'s Java and Microsoft Corp.'s .Net, and led to a raft of companies offering Rails development services for businesses.
    "We're going to pull out a fair number of elements, features that aren't a good fit for what people want to do most of the time, and make them plug-ins instead," Heinemeier Hansson said in an interview. "If your application absolutely depends on them you won't be stranded, you'll be able to get the plug-ins easily."
    Among the elements to go will be Action Web Service, for creating Web service APIs using SOAP (Simple Object Access Protocol), Hansson said. It's a way of steering developers towards using REST (Representational State Transfer), his preferred method for linking applications in Rails.
    "We don't want to turn into Java -- this pack rat that just holds onto any possession. We're not afraid to take out stuff that's not relevant or that we plain don't like," he said.
    There will be some additions -- the Rails team has some "pent up stuff" in the repository that it's keen to push out, he said. But the focus of Rails 2.0 is to "consolidate and sharpen" what's already there.
    Keeping the framework light and simple comes at a price, however, and many companies are jumping in to offer Ruby on Rails packages that bundle tools and plug-ins to make the framework more suitable for demanding business needs. Many of those products will be on show at RailsConf 2007 in Berlin in two weeks.
    Borland Software Corp.'s CodeGear division is expected to release its Ruby on Rails Java IDE at the show, Heinemeier Hansson said. The product is based on the Eclipse platform and has been in beta since May. Sun Microsystems Inc. will likely give an update on JRuby, an implementation of Ruby for Java environments.
    The vendor support helps quell jitters among corporate users that Ruby on Rails is not backed by a large company. If the prominent support of Oracle Corp. and IBM Corp. helped get Linux in the door at big enterprises, the support from Sun and IBM for Rails could do the same.
    Java and .Net have become "bloatware" as vendors add features for every possible business need, causing companies to look at alternatives, according to Cyndi Mitchell, managing director for ThoughtWorks Studios, which offers software and services for Rails development.
    The rise of Rails is as much a matter of timing as anything, she said. "This bloatware stuff has just ground to a halt and the alpha geeks are veering away from anything they don't need to get their work done. At the same time the IT business cycle is picking up and people are willing to invest again in new things," she said.
    Her clients are telecom, media and finance companies looking for a fast turnaround for new applications. Most are deploying in native Ruby environments, but it helps that Sun is supporting JRuby, she said, which lets companies deploy Rails applications on existing Java servers.
    Jonathan Siegel, founder of Rails consulting company ELC Technologies, said applications that would take eight to 10 months to develop in .Net can be up and running in four to six months using Ruby on Rails.
    Still, at three years old Rails is a young platform and has limitations. One high-profile user, the Twitter social networking site, caused a stink earlier this year by complaining that Rails didn't scale well across multiple databases, and that the underlying Ruby language is slow. The open-source community responded by developing a plug-in to address the scaling issue.
    Some also say that both Ruby and Ruby on Rails need a stronger hand to steer them, to prevent multiple implementations leading to compatibility issues. "The major risk for the future and longevity of Ruby, and by association Rails, is whether or not the platform gets splintered," Mitchell said.
    Siegel said: "I believe Ruby on Rails will overcome a key milestone when the deployment teams at larger organizations feel at home with the deployment side of a Rails application. In my view that's having a deployment procedure that's as easy to maintain and monitor as for a .Net or a J2EE application."
    Heinemeier Hansson is nonchalant about the demands. He developed Rails for his own use and not to make money, he says, and if enterprises want to use his framework it is they who should adjust, not he.
    "We're not trying to bend Ruby on Rails to fit the enterprise, we're encouraging enterprises to bend to Ruby on Rails," he said. "Come if you like it, stay away if you don't."

    10 Reasons why – Ruby on Rails

    Your development team has been frustrating you, projects start and four weeks later the development team is still developing the framework, your budget is running out. You want productivity but just don’t know how to get it. Is there an answer? One of your developers keeps mentioning this great framework called ‘Ruby on Rails’. Is this the answer? This article discusses the positives and the negatives in moving to this new technology. 

    1. Ruby on Rails provides a consistent approach to building web applications with an out of the box architecture. Traditionally starting a new web application is a fairly heavy weight process, you typically need to survey and choose your various software components to solve the common architectural problems of persistence, logging, build scripts, application configuration, web tier components and workflow. With the Rails framework these decisions are already made for you, so you can get on to understanding the business problem and quickly build a working system. You become productive in minutes not weeks or months. 

    2. In a Rails application, a pragmatic philosophy of convention over configuration is taken, this is apparent in all layers of the architecture with the highest productivity gains noticeable in the relationship between the model and the database. Once the developer understands the rules and constraints, Rails magically connects your view to your controller and model, and your model to the database. You don’t need generators or specialised tools to manage this, it all just works. 

    3. Unlike other productive web scripting languages, Ruby is a fully featured object-oriented language. Ruby also adds additional power with mix-ins modules which contain independent code to inject into your classes, blocks and closures simplifying client code behaviour. Its dynamic nature gives it power beyond static languages such as .NET and java, and the benefits are apparent by how the Rails framework has been put together itself.

    4. Unlike other web templating technologies, the templating technology built into Rails can be used to generate web pages, emails, xml documents or any text document that requires dynamic content.

    5. Rails includes a well thought out object relationship mapping tool, ActiveRecord, which provides your answer to database persistence. Your model is seamlessly persisted to the database. Transactions, inheritance models, validation, and caching have all been thought out and are production ready. With Rails you become a lot closer to the structure of the database than traditional object-oriented development methodologies. This is a good thing as over time as the database will no doubt end up being your project’s most valuable asset.

    6. Rails includes support for a variety of web technologies. Every web application needs email integration at some point and Rails provides an out of the box smart solution, and as with other Rails technologies it gives you the complete package down to configuration in development, test and production environments. Ruby on Rails also supports web services, the integration with Rails due to the dynamic nature of Ruby is simply, clean and seamless. If you are moving into the Web 2.0 space, Rails provides a rich abstracted interface to implementing AJAX operations.

    7. Generally software projects do not mature if at all to the point of having a solid foundation to perform database migrations and rollbacks between environments and across development systems. However with the Rails framework you will be delighted with the implementation of database migrations for applying and rolling back database changes. You enter your update and rollback scripts in Ruby, Rails understands the current version and can move forwards or backwards to any database version. 

    8. For development productivity, the shorter the gap between the change and test cycle the better. In Rails, changes are reflexed immediately within the runtime environment so developers can quickly iterate between fix and test cycles without any expensive redeploys. Ruby code is also easily testable. Methods and objects can be replaced at runtime so software components can easily be tested without resorting to external tools or generators.

    9. Getting started with Rails is easy as generators will propel you along. An experienced Rails developer will also become aware of numerous idioms available within the Rails framework that shared the amount of code a developer need write. Overall less code to write means lower complexity, higher productivity and less bugs.
    10. Ruby has been around for a long time, the Rails framework which has deservedly propelled Ruby into the spotlight has hit version 2.3 and is not only production ready but now well supported in the community and a stack of resource available on the web. Ruby and the Rails framework is open source and well supported by a clever team of contributors.

    *So what are some of the cons?*
    1. If you take time to follow the Ruby examples and tutorials it may give you a false sense of productivity. They typically follow the formula of creating a database model, configuring a connection to the database and joining it up to the model controller and view by use of the generators. This is all very simple involving a dozen or so lines of code. In the real world however you will be working at higher level of complexity and will need to understand multiple facets of Ruby and the Rails framework to be productive in churning out business functionality. You will need to invest in getting up to speed with the language and framework. As Ruby is a dynamic language, more automated testing is required. Your developers will need to become more disciplined and rigorous in creating unit tests as part of their development process. 

    2. If the type of development you are doing is glueing together existing systems or building back end systems, be aware that Rails is optimized for building web applications, your host system or enterprise database may not have the integration module you require for Ruby UPDATE (2010) – however JRuby is now maturing and can plug the gap by leveraging legacy java libraries and provide a lower cost to more enjoyable path to legacy integration. DSL’s can be engineered to remove the laborious code java developers are use to writing.
    After considering the pros and cons, my advice would be that if your business or application has tight timelines, you want a more powerful web application for your buck with alone with inbuilt tools which remove the pain and setup cost of an IT project to seriously suggest considering investment into the Ruby on Rails framework.

    Sunday, March 20, 2011

    Ruby on Rails - CMS (POPULAR)


    When you look at the open source content management systems out there today, you'll find a ton written in PHP, some written in Perl and Java, and a small collection written in Python.
    There is also another small OS CMS market — those written in Ruby on Rails (RoR).

    Mephisto

    Mephisto is currently on version 0.8.2 and is described as a "blog engine with some simple CMS-ish concepts (sections, pages), a very flexible templating system, and an aggressive caching scheme."
    The project appears to be working toward a .9 release with RoR 2.3 support, and is released under a custom license.
    Features include:
    • CMS concepts such as sections and pages that you can apply within your blog
    • A custom templating system
    • ATOM feeds
    • Support for multiple markup languages
    • Independent layout and customization for each section

    Radiant CMS

    Radiant CMS is currently on version is 0.7.1 and is described as a "no-fluff, open source content management system designed for small teams." This is one of the more active Ruby on Rails open source CMS projects, and is released under the MIT license.
    Features include:
    • Flexible site structure, arrange your pages according to any hierarchy
    • A macro language for building templates
    • Custom text filters for markup languages
    • Intelligent page caching
    • Layouts that can be applied to page sub-components
    • Snippets of text that can be used in multiple places throughout your content

    Seymore

    Seymore is currently on Revision 35 and is described as "a very easy to use content management system that handles multiple revisions and revision publishing."
    Features include:
    • Contextual content management
    • Page revision tracking
    • Workflow
    • Rollbacks
    • Drag and drop page re-ordering
    The current project leader, Thomas Mango, says that he has no problems fixing bugs or working on new features, but that he hasn't added new features to Seymore as the system does exactly what his clients need. This project is released under a custom license.

    Typo

    Typo is currently on version 5.3 for Ruby on Rails 2.2 and is described as "the oldest and most powerful Ruby on Rails blogware, providing custom templates, powerful drag and drop plugins API, advanced SEO capabilities, XMLRPC API and many more."
    This appears to be one of the more active RoR open source CMS projects. Its features include:
    • Customizable SEO interface
    • Individual user dashboards
    • Two types of content, articles and pages
    • Category support
    • Tag manager
    • Customizable themes
    Typo is released under the MIT License.

    Ruby Rocks?

    All in all, most of the Ruby on Rails open source CMS offerings are still in an immature stage, built to scratch the itch of one or a few developers. Still, these are all in use on production sites.
    Perhaps the biggest barrier for people interested in trying these content management solutions is getting used to working with Ruby on Rails. Installation for each is documented in at least a basic fashion. The communities around these tools are small, so finding help may not be as easy as with other open source CMSs. But for those interested in this specific technology, these options may be exactly what you're looking for.

    Ruby on Rails Real World Applications (Examples)



    Basecamp
    Basecamp:
    The original Rails app.
    Twitter
    Twitter:
    Stay connected.

    Yellow
    Pages
    : Find it locally.
    Github
    Github:
    Git repo hosting.

    Sortfolio:
    Find a web designer.

    Hulu:
    Stream TV & Movies.

    Geni:
    Find your ancestors.

    Backpack:
    Personal organization.

    43things:
    Your goals in life.

    Justin
    TV
    : Live video.

    iLike:
    Find more music.

    Streeteasy:
    Find a place in NYC.

    Bumper
    Sticker
    : Facebook app.

    Inkling
    Markets
    : Trade the future.

    Revolution
    Health
    : Get healthy.

    New
    York Jets
    : Play ball!

    VitalSource:
    Shopping for books.

    Blinksale:
    Easy online invoicing.

    Blurb:
    Print your own book.

    Tobi:
    1-1 shopping.

    Lumosity:
    Train your brain.

    Lacoctelera:
    Spanish blogs.

    Urban
    Baby
    : Hey junior!

    Metrotwin:
    London meets NY.

    43places:
    Go somewhere.

    Iconbuffet:
    Shop royalty-free icons.

    Get
    Satisfaction
    : Customer service.

    Penny
    Arcade
    : Comics for gamers.

    Blingee:
    Fun photos.

    Bleacher
    Report
    : Keep score.


    Campfire:
    Group chat.

    Zendesk:
    Customer support

    Odeo:
    Find. Play. Enjoy.

    Pragmatic
    Bookshelf
    : Learn more.

    Soundcloud:
    Move music.

    Xing
    Marketplace
    : Reach pros.


    Qype:
    Guide to the UK.

    Moviepilot:
    German movie DB.

    pkw.de:
    Find a car.

    AboutUs:
    Website guides.

    Rate
    My Area
    : Best local stuff.

    Emptees:
    T-shirt art.

    Jango:
    Free internet radio.

    Urban
    Dictionary
    : Define your slag.

    Kongregate:
    Play free games.

    Shopify:
    E-commerce made easy.
    Lighthouse
    Lighthouse:
    Simple bug tracking.
    Groupon
    Groupon:
    Daily deals.

    Ravelry:
    Knitting community.

    Scribd:
    Books, presentations, more.

    Chow:
    Food, drink, fun.

    A
    List Apart
    : 'zine for web devs.

    Mingle2:
    Get a date.

    Cookpad:
    Japanese dishes.

    Spock:
    Search for people.

    A
    Better Tomorrow
    : T to the shirt.

    Oracle
    Mix
    : Shape the DB.

    Highrise:
    Prepare for business.

    Tadalist:
    Share simple todo lists.

    43people:
    Meet someone.

    Insider
    Pages
    : Find local businesses.

    Seeking
    Alpha
    : Stock market site.

    iseekgolf:
    AU's #1 golf site.

    Freckle:
    Time tracking.

    SUSE
    Studio
    : Build your distro.

    Smart.fm:
    Language learning.

    DaWanda:
    Designer goods.

    Writeboard:
    Write, revise, compare.