You are here: Blogsphere Longtail

Rails BlogSphere

BlogSphere

Keep up to date with your favourite Rails bloggers in context.

Read more about how it works


schema

by Steven Ness | over 2 years ago | Read more




JSON Schema Proposal



Wwr_profile Watch > Robotagger: GML +...

by Greg Leuch | over 2 years ago | Read more



Watch > Robotagger: GML + ABB4400 http://mag.ma/greg/343068

Rolling your own

by Rafe Colburn | over 2 years ago | Read more

RedMonk analyst Stephen O’Grady took off from my Do you want to be in the software business? post and discussed why we’re seeing so many Web businesses roll their own platform components rather than building on the standard LAMP or Java/J2EE/RDBMS stacks that have dominated in the past. Great stuff: Until the last few [...]

goat

by Steven Ness | over 2 years ago | Read more




I'm in ur chromiumz, teleporten ur goatz.



Levifig "Don’t confuse legibility with communication. Just because something’s legible,..."

by Levi Figueira | over 2 years ago | Read more

“Don’t confuse legibility with communication. Just because something’s legible, doesn’t mean it communicates.”

- David Carson (in “Helvetica”)

adamlogic: @AdamWinter Make that Danny's, although I imagine you're eating by now.

by Adam McCrea | over 2 years ago | Read more

adamlogic: @AdamWinter Make that Danny's, although I imagine you're eating by now.

Www Hidden Treasures when staying in Lake District Cottages

by Submit Articles SEO | over 2 years ago | Read more

Nestling in southern Cumbria – the Lake District are the hidden treasures of Cark-in-Cartmel and Allithwaite. Both locations providing access to the Lake District fells and Morecambe Bay. Cark-in-Cartmel and Allithwaite are both located at the southern end of the Cartmel Valley and are classic ‘working’ Lakeland villages. This area is beautifully quiet without being remote [...]

Www Maple Tree Funding – Your Source for Home Loan Solutions & Best Options For Your Mortgage

by Submit Articles SEO | over 2 years ago | Read more

Established September 17th 2003 Maple Tree Funding is committed to helping you find the right mortgage product for your needs. We understand that every borrower is different, and we offer a variety of products to meet your individual requirements. We make the process of securing or refinancing your mortgage simple and straightforward. Whether you are [...]

Www Home Buying Both Supports and Takes Advantage of the Current Economy

by Submit Articles SEO | over 2 years ago | Read more

While the economy still has a long way to go to recover, we are currently at an ideal time to buy real estate. It is true that there are a great many home owners who have underwater mortgages right now and a swelling on the horizon that is an indication of [...]

15e1ad779efb8622fce3c7fd7232636a Twitter Updates for 2010-01-13

by Ian Fieldhouse | over 2 years ago | Read more

Taking a chance that the side roads are going to be clear-ish of snow and cycling to the kids school/work today. #

adamlogic: @AdamWinter We ended up going to meijer first. Now headed to Manny's up th road if you care to join.

by Adam McCrea | over 2 years ago | Read more

adamlogic: @AdamWinter We ended up going to meijer first. Now headed to Manny's up th road if you care to join.

In_the_office_profile Watwet from Apie [13/01/2010 01:47]

by Waheed Barghouthi | over 2 years ago | Read more

Scientist for Sale - Richard Doll Secretly Paid by Monsanto and others for 20 Years http://watwet.com/u/50dc34

Karl Official Google Blog: A new approach to China

by Rick Bradley | over 2 years ago | Read more

Official Google Blog: A new approach to China:

(posted by RIMBoy)

2010 – Novas promessas

by Felipe de Campos Lopes | over 2 years ago | Read more

Para variar, como todo bom começo de ano promessas e mais promessas são feitas e eu não poderia deixar passar e ser o único diferente , portanto vou falar o que pretendo para minha vida e para este blog para o ano de 2010. 1. Escrever com mais frequência, pois pequei muito neste aspecto durante [...]

Levifig "That’s why I use grids. For me it’s a tool for creating order. And creating order is..."

by Levi Figueira | over 2 years ago | Read more

“That’s why I use grids. For me it’s a tool for creating order. And creating order is typography.”

- Wim Crouwel (in “Helvetica”)

In_the_office_profile Watwet from Apie [13/01/2010 01:17]

by Waheed Barghouthi | over 2 years ago | Read more

Today, Sir-Mix-A-Lot, you will be revered as a prophet. http://watwet.com/u/cff56c

Wwr_profile laughingsquid: I’m With Coco

by Greg Leuch | over 2 years ago | Read more



laughingsquid:

I’m With Coco

223207905_e469a0d18d_m hello, lover…

by Anoop Ranganath | over 2 years ago | Read more

Akitaonrails Criando um Chat com Reactor e WebSockets

by Fabio Akita | over 2 years ago | Read more

Obs: Este artigo tem a ver com a prova-de-conceito Cramp Chat Demo disponível no Github.

Existe um caso de uso de aplicações web que é o envio frequente de conteúdo adicional. Por exemplo uma conversa de chat, ou um livestream de feeds, ou até mesmo APIs públicas muito acessadas. O padrão de solução costuma ser um javascript que, em intervalos regulares, faz requisições Ajax a um servidor que retorna o conteúdo adicional a ser acrescentado na página. Isso é um polling.

Outro padrão é manter uma conexão HTTP aberta, recebendo conteúdo continuamente num stream. Para isso temos termos/técnicas guarda-chuva como Comet, Ajax Push, Reverse Ajax, HTTP server push, etc.

As técnicas no cliente variam bastante. Mas os backends não variam muito. Por exemplo, uma aplicação Rails é limitada ao número de conexões simultâneas (ativas exatamente ao mesmo tempo) pelo número de processos carregados. Se tivermos 10 processos Rails de pé, só podemos ter 10 conexões simultâneas. Essa característica é mais importante se o tempo de resposta por conexão for muito alto (e é por isso que sempre falamos em fazer o mínimo possível numa requisição e deferir processamentos mais pesados para tarefas em background, usando tecnologias simples como Delayed Job, Resque, ou se a coisa for mais complexa, servidores de fila e mensagens como RabbitMQ).

Se possível, alguns trechos da aplicação que são carregados o tempo todo, por exemplo, por causa do efeito de polling de clientes fazendo requisições muito frequentes, é importante que seja possível maximizar o uso de um processo diminuindo o tempo de resposta. Para isso existem soluções como Rails Metal, Sinatra ou algo ainda mais leve usando Rack puro. A aplicação Campfire da 37signals, por exemplo, tinha um componente feito em C++ que depois foi migrado para outro que eles escreveram em Erlang, para possibilitar alta concorrência junto com alta performance.

O problema a que nos referimos é o que, há 10 anos, chamamos de Problema C10K ou, literalmente, como suportar 10 mil conexões simultâneas ou mais? Assim como Rails, PHP, ASP, Perl tem o mesmo problema: cada conexão é um processo. Começa a ficar bastante difícil administrar uma quantidade tão massiva de processos abertos simultaneamente.

Alguns podem imaginar que o problema é a simples falta de multi-thread nativo (Ruby, Python, tem green-threads, ou lightweight threads). Portanto servidores Java (Tomcat, JBoss, Glassfish) ou .NET (Application Pool de IIS) seriam melhores. De fato, são melhores, mas não são “a” solução para o problema C10K.

O real problema é I/O bloqueante. Independente se é um processo ou um thread, se ele precisar gravar um arquivo, fazer uma query num banco de dados, esse processo precisa esperar o processamento de I/O terminar para prosseguir. Isso “pendura” esse processo ou thread, desde o cliente até a base de dados, por exemplo. A única diferença é que um servidor multi-thread vai aguentar mais tempo, mas o problema é o mesmo.

Portanto, uma solução é unir o modelo multi-processo/multi-thread com I/O assíncrono ou não-bloqueante, mais do que isso, mudar o paradigma procedural por um que é baseado em eventos. Existe um pattern para isso, chamado Reactor.

O mundo Java começou isso antes, com a implementação de NIO a partir do JDK 1.4.2. Sobre ela surgiram servidores de aplicação/frameworks como Grizzly, Apache Mina ou JBoss Netty. No mundo Python existe o framework Twisted e, felizmente para nós rubistas, temos o EventMachine.

Esse tipo de tecnologia, aliado a coisas como o driver assíncrono MySQLPlus para MySQL, permite uma quantidade absurda de conexões simultâneas não-bloqueantes por processo Ruby. Um processo de EventMachine poderia lidar com milhares ao mesmo tempo.

Daí vem o novo framework web Cramp, desenvolvido pelo Pratik Naik, do Rails Core Team, como um mini-framework de aplicações web assíncronas. Minha prova de conceito é justamente um chat – que demandaria muitas conexões simultâneas – e poderia facilmente ser transformado em livestream (que não deixa de ser um chat read-only, a grosso modo).

Eu implementei duas versões: a primeira é o jeito clássico onde o browser faz conexões Ajax em um intervalo regular. Aliado ao Cramp/EventMachine isso já ajuda porque ele suportaria várias conexões simultâneas.

Mas a segunda versão é mais interessante, porque usa uma tecnologia que está disponível no HTML 5, chamado WebSocket. Assim como o XmlHttpRequest, será um componente acessível por Javascript disponível em todo browser que implementar HTML 5. Já existe no Google Chrome 4.x, no Safari/WebKit e no Firefox 3.7.

Com o WebSocket é possível abrir uma conexão HTTP, mantê-la aberta, “escutar” seu stream por novas mensagens e reagir a elas via javascript e inclusive enviar novos dados (como uma nova mensagem), tudo na mesma conexão, sem precisar passar pelo peso da rotina de abrir conexão, enviar/receber dados, fechar conexão e repetir daqui a alguns segundos. Ou seja, a vantagem é diminuir a quantidade enorme de conexões batendo no servidor para uma ordem de grandeza menos.

Obviamente vai demorar um bom tempo para aparecer no IE, mas não temam, existe uma alternativa muito interessante chamada Web-Socket.js e que eu implemento no meu demo. Ela simula a mesma API do WebSocket padrão (e no Chrome ela nem se ativa), mas usa um pequeno Flash como ponte para criar a conexão HTTP permanente, com os mesmos eventos.

A imagem que você vê acima é justamente de Firefox 3.5, Safari 4 e Chrome 4 conversando simultaneamente com 3 conexões permanentes ao servidor baseado em Cramp. O WebSocket tem um handshake próprio para iniciar uma conversa, que precisa ser implementado do lado do servidor, depois disso é HTTP normal. No meu caso, eu trafego dados em formato JSON.

Como era uma prova de conceito, eu armazeno as mensagens num banco de dados MySQL, mas possivelmente eu teria implementado uma fila de mensagens usando um RabbitMQ ou coisa parecida. Outra coisa, obviamente ele não tem diversas funcionalidades básicas como controle de sessões e outras perfumarias.

Somando as tecnologias de WebSocket, servidor web baseado em Reactor, drivers de banco assíncronos e I/O assíncrono em geral, estamos caminhando para um paradigma levemente diferente do atual para escrever aplicações Web de alta demanda. Vale a pena entender essas tecnologias, especialmente para os casos que citei no começo: chat, livestream, apis e tudo mais que demanda alto nível de concorrência.

A prova de conceito do chat está disponível no Github e imagino que o README que deixei seja suficiente para vocês conseguirem duplicar o mesmo ambiente para rodar a aplicação. E, como sempre, pull requests são bem vindos :-)


Head%20shot links for 2010-01-12

by Coty Rosenblath | over 2 years ago | Read more

Puzzlepieces – Comparing NLP APIs for Entity Extraction (January 2, 2010) (tags: nlp entityextraction machinelearning)

Has your website gone mobile?

by Lyle Mullican | over 2 years ago | Read more

In case you haven't noticed, a lot of people are beginning to browse the Internet using their mobile phones. You may be one of them. Have you thought about the experience of using your site on a mobile phone? Here are some tips and ideas for delivering mobile Web content. Many sites offer a separate mobile [...]

adamlogic: @alycit of course! ;-)

by Adam McCrea | over 2 years ago | Read more

adamlogic: @alycit of course! ;-)

Redme Easy Testing MongoMapper models

by Nicolas Mérouze | over 2 years ago | Read more

There's a bunch of libraries to write tests easily for your app. factory_girl and Machinist for the fixtures. Remarkable for the macros.

There's no core support for MongoMapper in any of these solutions but Machinist and Remarkable are agnostic so it's easy to add a MongoMapper support. That's what I did a few months ago with machinist_mongo and remarkable_mongo.

I'm refactoring them to add Mongoid support in a near future and I think it's time to have a bit of docs on these 2 gems. Let's see how to use them in a Rails project with RSpec.

Machinist for MongoMapper

First we load the gem:

Then it's like any other Machinist adapter. We create the blueprint:

We require the blueprints.rb file into spec_helper.rb:

We write the specs:

And finally the related model:

Like Machinist for ActiveRecord you have the 3 following methods: Model.make, Model.make_unsaved, Model.plan. And there's a preliminary support for embedded documents.

Remarkable for MongoMapper

The first step is the same that Machinist, requiring the gems:

Let's add the specs. Say we want to check the existence of title and body keys and the title presence validation:

Finally we modify the model to pass the specs:

Remarkable for MongoMapper is not feature complete (as of v0.1.2). Here's the list of macros but they don't support all the options of the related MongoMapper methods.

  • belong_to
  • have_many
  • have_key/have_keys
  • validate_presence_of
  • validate_confirmation_of
  • validate_length_of (bugged)
  • allow_values_for

If you want to add features, fork the repo.

Conclusion

If you've already used Machinist and/or Remarkable you won't have problems. For the other ones it is an easy solution to write your tests quickly.

adamlogic: Dinner, anyone? #codemash

by Adam McCrea | over 2 years ago | Read more

adamlogic: Dinner, anyone? #codemash

dambalah’s api-throttling

by Édouard Brière | over 2 years ago | Read more

dambalah’s api-throttling:

Rack Middleware to impose a rate limit on a web service. Blog post.

adamlogic: Thanks @surfacedamage for stocking our fridge at #codemash (of course we cracked them open first thing) http://yfrog.com/3lkezj

by Adam McCrea | over 2 years ago | Read more

adamlogic: Thanks @surfacedamage for stocking our fridge at #codemash (of course we cracked them open first thing) http://yfrog.com/3lkezj

In_the_office_profile Watwet from Apie [13/01/2010 00:47]

by Waheed Barghouthi | over 2 years ago | Read more

Smoker ? Drink green tea - Study says non-smokers who don't drink it, 5 times more likely to get lung cancer t... http://watwet.com/u/686de4

In_the_office_profile Watwet from George [13/01/2010 00:47]

by Waheed Barghouthi | over 2 years ago | Read more

@Boogieman Thanks for the song man :)

In_the_office_profile Watwet from George [13/01/2010 00:46]

by Waheed Barghouthi | over 2 years ago | Read more

RW @ammannet: الجمارك الأردنية تعفي 2500 صنف إسرائيلي من الرسوم والضرائب منذ مطلع العام الحالي

In_the_office_profile Watwet from George [13/01/2010 00:43]

by Waheed Barghouthi | over 2 years ago | Read more

@razano i'll buy ur htc touch pro when u get the iphone

Karl Giant Spider Species Discovered in Middle Eastern Sand Dunes | Wired Science | Wired.com

by Rick Bradley | over 2 years ago | Read more

Giant Spider Species Discovered in Middle Eastern Sand Dunes | Wired Science | Wired.com:

(posted by RIMBoy)

Photo_5 Scary Ruby

by Michael Kohl | over 2 years ago | Read more

We all know that Ruby’s a flexible beast, but just how much you can bend it is almost scary. How about inheriting from a class randomly chosen at runtime? Sure, no problem:

I dare you to find a use case for this ;-)

And in case random isn’t good enough for you, why not have the user choose the superclass for you?

Small Business Accounting Software

by Steve Madsen | over 2 years ago | Read more

I made a New Year’s resolution for 2010 back on October 1st: stop using the awful shovelware produced by Intuit (QuickBooks) and move to something else. I first wrote “something by a company that cares more about the Mac,” but let’s be realistic. Large companies seem to lose a sense for quality products and good [...]

Me Bye bye mac

by Elise Huard | over 2 years ago | Read more

For about 2 years I’ve worked on a Macbook Pro. It’s been a mostly pleasant experience – smooth graphical interface, more than adequate hardware – it took a while getting used to, but it worked out OK. Still, I find myself turning back to Linux for development. First reason: I’m not the most organized person [...]

769f0b312d64290f1c6c5e73039c582b?s=80 my improvements on latest i18n gem

by Krzysztof Knapik | over 2 years ago | Read more

In recent weeks I spent a lot of time on i18n stuff in project I currently working on, so I was really happy, after I read José Valim’s article about new i18n gem, which has been very improved and introduces new features (Thanks José for great article and benchmarks).

Unfortunately, after few days of using it I noticed few issues (which I reported on http://github.com/svenfuchs/i18n/issues. They were related to I18n::Backend::Fallbacks, which handled only translation method, and does not localize, pluralize and :default option, also I18n:Backend::Fast threw an exception when there were no translations for locale or one of locale fallbacks. Because I need all these 3 backends, they blocked using new i18n :(

To not wait until they will be fixed, I forked i18n http://github.com/knapo/i18n and fixed them by myself. So, I installed it as a plugin (using braid to easily upgrade its in future):
$ braid add -p git@github.com:knapo/i18n.git
And there’s a trick (which i18n’s README hopefully says about) – to use i18n as a plugin I had to add to my initializers/i18n.rb reload_i18n! method which replaces bundled i18n gem with plugin:
def reload_i18n!
  $:.grep(/i18n/).each { |path| $:.delete(path) }
  I18n::Backend.send :remove_const, "Simple" 
  $: << Rails.root.join('vendor/plugins/i18n/lib').to_s
end

reload_i18n!
and created my own backend (I preffer that than including all modules to I18::Backend::Simple)
module I18n
  module Backend
    class Knapo < Simple
      include I18n::Backend::Pluralization
      include I18n::Backend::Fallbacks
      include I18n::Backend::Fast
      include I18n::Backend::InterpolationCompiler
    end
  end
I18n.backend = I18n::Backend::Knapo.new
The only disadvantage of having i18n as a plugin is resetting I18n.load_path, so all default translations loaded by Rails are being removed, I mean:
actionpack-2.3.5/lib/action_view/locale/en.yml
activesupport-2.3.5/lib/active_support/locale/en.yml
activerecord-2.3.5/lib/active_record/locale/en.yml

But actually it might be a feature for some devs (e.g. me:) ), I copied them into my locales dir to active_support, active_record and action_view subdirs, and have all translations file in one place, and it’s better to have default (en) Rails ones there to easily compare other locale files with them, and/or edit them.

I also added extra extensions for I18n:
  • I18n::LoadPath which makes I18n.load_path more handy:
        I18n.load_path = I18n::LoadPath.new(I18n.load_path)
        I18n.load_path << Rails.root.join('locales/pl.yml') # loads single translation file
        I18n.load_path << Rails.root.join('locales') # loads all translation data files in specific directory
        I18n.load_path << Rails.root.join('locales/*.{yml,rb}') # loads all translation data files  by given pattern
      
  • I18n.wih_locale which executes block in given locale set
         I18n.with_locale("pl-PL") do
            # This code are being executed with pl-PL locale
         end
      
  • Making MissingTranslation message thrown by I18n.localize method complete, as previously when translation was missing it returned partial message e.g. for I18n.l Time.now, :format => :missing I was getting: translation missing: en, long_ordinal, what was misleading and now I’ve got: translation missing: en, time, formats, long_ordinal

The only thing I really don’t like in new i18n is forcing I18n.locale to Symbol – why? it should absolutely be a String

Anyway, thanks to Rails i18n team for great improvements on i18n, and looking forward for fixed issues in next gem version (and Rails3, of course).

Robbazinet 2010 - The Year Ahead

by Rob Bazinet | over 2 years ago | Read more

2009 was a very interesting year, a year of some realization and a year which helped lay the foundation for the year ahead and hopefully the future.

I decided to document here a bit of what I have on my mind for 2010, not New Years Resolutions, I hate those and never do them. I have gained a fair following of loyal readers over the years and think of you as family, so I thought I would share with my blog family.

Freelancing

As I said in my previous post, I have been freelancing for many years and in 2009 I realized the ability and desire to continue with freelancing as a full-time endeavor was difficult. I will not be pursuing freelancing full-time in 2010 and as the year progresses I see the time spent freelancing to be less and less.

I will continue to work with selected clients as I have a vested interest in their success. In time I imagine their need for my services will be less and less.

I will be open for consulting opportunities with the possibility of part-ownership in a product and/ or for projects that need help figuring out difficult problems in areas I have expertise in but not limited to .NET to Rails migrations as well as scalable ecommerce systems.

Products

Even before I was in college I have always wanted to have an idea for a product, develop it, successfully market it and support it. I have been involved in a product company in the past but not my own individual ideas. I am sure this sounds self-serving, and it is, but there comes a time when we need to decide what is important and do it.

So, my goal is to primarily be a product company by the end of 2010. The company is Still River Software Company, LLC, which has been the umbrella I have been providing freelance services for the past 3.5 years.

Things are progressing nicely in a couple of exciting areas, so new product announcements will be coming soon. Very soon, but not just yet.

Blogging

I have not blogged a lot lately, been too busy with the business side of life. I will be blogging here, mainly about technology trends and my usual odd opinions about some aspects of technology and may begin to add some business writing as well which covers certain aspects of running a software company.

I will also be opening up a new blog for Still River Software which will discuss very company-specific information, including product releases and such. I will announce it here when it's ready, please check it out.

Conferences

I have not attended as many conferences as I hoped to in 2009, the ones I did attend were developer-related, mainly Ruby. In 2010 I intend to attend more conferences but probably more in line with running a business or software company more specifically. I hope to see you there.

So, I hope the ride is nice and I hope I can report back great success at the end of the year, I certainly expect it.

Technorati Tags: Freelancing,Business

In_the_office_profile Watwet from Apie [13/01/2010 00:17]

by Waheed Barghouthi | over 2 years ago | Read more

Longer breastfeeding good for kids' mental health http://watwet.com/u/8ffc70

In_the_office_profile Watwet from Apie [13/01/2010 00:17]

by Waheed Barghouthi | over 2 years ago | Read more

A large scale genetic analysis shows most African Americans are just that, 82% African and 18% European. (orig... http://watwet.com/u/6e7584

In_the_office_profile Watwet from Apie [13/01/2010 00:17]

by Waheed Barghouthi | over 2 years ago | Read more

Geophysicist Henry Pollack, author of 'A World Without Ice,' on why ice matters, and how humans are upsetting ... http://watwet.com/u/4953d6

2283263665_0150e310e7_b What are the Advantages of Scrum for the Client?

by Matthew Ford | over 2 years ago | Read more

Scrum provides many benefits for developers, but what are the advantages of Scrum for the client and other stakeholders? This is a question I faced yesterday in a client meeting.

To answer that I need to define what is Scrum. In layman terms, it is a project management technique that is used with agile development projects.

Benefits for the client:

First of all, Scrum facilitates changing customer requirements. It provides a flexible framework where addition of new features or re-prioritization can take place without negatively affecting the project flow and team's morale.

Secondly, it encourages regular feedback by having short development cycles (sprints), where at the end of each sprint a review takes place. The review provides opportunity for the entire team to reflect on the last sprint and improve.

Thirdly, by defining roles for team members it promotes collaboration as well as clear and open lines of communication between developers, the client and other stakeholders.

Finally, Scrum provides a framework for work estimation, where features are estimated using points. Each point represents a relative amount of effort required. The technique is flexible enough to allow for changes in requirements as well as changes in development teams velocity.


However, Scrum is not always suitable and does not always work:

It does not work with traditional software development methodologies such as Waterfall.

It cannot be fully adopted if a team is too small or too big - ideal team would be 4 to 6 developers.

It cannot work effectively if it does not have full management/client support.

It requires a Scrum Master who understands the Scrum practices and is able to apply them.

Permalink | Leave a comment  »

My120_135 RE: Для ознакомления с другими проектами

by Ruslan Voloshin | over 2 years ago | Read more

хе-хе.. или распилить один из этих проектов под свои нужды..

71699377_fc54d72417 Plagiarism today

by Joe Goldberg | over 2 years ago | Read more

I just had a strange thought, when translating an email written in Italian...

Let's say you're in high school French class and you're reading L'Étranger. You get an assignment to write a book report on it, in French. This isn't so farfetched, I had this exact assignment.

Back in my day, you could cheat by finding a book report in English (say, Cliffs Notes on The Stranger) and look up one word at a time in a French-English dictionary, and with a very basic knowledge of French, cobble together a report in French. Not very efficient.

Today, in about 30 seconds, you could go to the same source online, copy/paste the text into Google Translator, and have a passable French paper. It's certainly cheating one's self out of an education, and almost definitely plagiarism (i.e. the representation of the thoughts of another author as one's own), but it sure would be tempting to do.

Does anyone who teaches have to deal with 21st century plagiarism?

My120_135 Для ознакомления с другими проектами

by Ruslan Voloshin | over 2 years ago | Read more

Иногда захожу на этот ресурс http://www.opensourcerails.com/
опенсорсные рельсовые проекты кишки которых можно посмотреть или сделать свой клон.

Www SSI Racing Announces 10 Year, 100 Percent Guaranteed Automotive Battery and Limited Edition Full Custom Electric Vehicle

by Submit Articles SEO | over 2 years ago | Read more

(1888PressRelease) SSI Racing is announcing its first two limited mass market products a lightweight automotive battery with a 10 year full replacement guarantee and a limited edition custom version of the world record holding electric car 2.S.S.I.C. Read more on SSI Racing Announces 10 Year, 100 Percent Guaranteed Automotive Battery and Limited Edition Full Custom Electric [...]

Www Tips on “Green” Travel

by Submit Articles SEO | over 2 years ago | Read more

With an increase in environmental consciousness over recent years, many environmentalists have been drawing attention to the affects of travel on the environment. Air travel, for instance, is now regarded as one of the most environmentally harmful activities, as it releases significant amounts of carbon dioxide into the atmosphere. However, with increasing attention on the [...]

Www How to Hire a Limo for Your Prom?

by Submit Articles SEO | over 2 years ago | Read more

Are you preparing for your prom night? Then, I am sure you want to have everything just perfect. Prom is the most exceptional night in every school student’s life, since it marks the fact that they have finally finished schooling. It is also a somewhat emotional occasion for some people since it might be the [...]

Karl Clint Dempsey’s Early Submission For Prem Goal Of 2010 - - The Offside - Soccer News and Opinion from leagues around the world

by Rick Bradley | over 2 years ago | Read more

Clint Dempsey’s Early Submission For Prem Goal Of 2010 - - The Offside - Soccer News and Opinion from leagues around the world:

(posted by arafatm)

33fc971128e39fa2f532880e28c11fa3 The year I tried really hard

by Aaron Quint | over 2 years ago | Read more

I realize its already half way through the month, but I needed to get the obligatory year in review out. I had to bother. Why? Because last year was BIG. I ended 2008 leaving my former job to pursue greater things. My big goal for the year was to do awesome work, start building a [...]

Hitler’s letterhead….

by Paul Watson | over 2 years ago | Read more

Hitler’s letterhead.

Karl (posted by arafatm) zoom

by Rick Bradley | over 2 years ago | Read more



(posted by arafatm) zoom



Tell us what you think of the new BlogSphere feature. We are continually looking to improve and update the functionality based on your feedback.

Job Board

Job Boards
Find your next Ruby on Rails project or job.
Exclusive content, regularly updated - onsite and tele-working positions listed.

View the opportunities

Latest from the Weblog

Bartłomiej Danek:

I have a great pleasure to cooperate with bartek on various projects during and i find him very bright individual with invaluable knowledge and great attitude.

- Sbubble B.K, Poland