Monday, April 4, 2011

Microsoft Mathematics 4.0

Microsoft Mathematics provides a graphing calculator that plots in 2D and 3D, step-by-step equation solving, and useful tools to help students with math and science studies.

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9caca722-5235-401c-8d3f-9e242b794c3a

Sunday, April 3, 2011

Understanding CSS3 2D Transforms

What Are Transform(ation)s?

Transformations, in their strictest and broadest mathematical sense, are mathematical operations that map a set of items X onto another set, Y. In geometric terms, this means that we can apply a mathematical operation on a set of objects in space to map them onto a new space geometry.
In layman's terms, we can take an object and apply what we call transformation groups. These are ordered lists of operations (called transforms) that we can use to movescalereflectrotate and skew objects. Sounds simple enough, right?
But before we jump right into the whole business of object manipulation, we need to look into how these transformation groups work, exactly. As mentioned, transformation groups are an ordered set of transformation operations, the implication being that the order of transformations matters and gives different results depending on the ordering of those operations. This is because transformations take into account every object's geometric properties, including its current position.

http://msdn.microsoft.com/en-us/scriptjunkie/gg709742.aspx

Wednesday, March 23, 2011

HTML5 Offline

HTML5 provides two robust offline capabilities already implemented in popular mobile devices, such as the iPhone and Android, and on modern desktop browsers based on the Webkit and Gecko rendering engines.

The easiest way to use Rack::Offline is by using Rails::Offline in a Rails application.
In your router:
match "/application.manifest" => Rails::Offline
This will automatically cache all JavaScript, CSS, and HTML in your public
directory, and will cause the cache to be updated each request in development
mode.
You can fine-tune the behavior of Rack::Offline by using it directly:
offline = Rack::Offline.configure do
  cache "images/masthead.png"

  public_path = Rails.public_path
  Dir[public_path.join("javascripts/*.js")].each do |file|
    cache file.relative_path_from(public_path)
  end

  network "/"
end
https://github.com/wycats/rack-offline

The Lowdown on Routes in Rails 3

In this post, we’ll walk through the underpinnings of Routes in Rails 3. They’ve been rewritten—for good reason—and after we get through the explanation

http://www.engineyard.com/blog/2010/the-lowdown-on-routes-in-rails-3/

Tuesday, March 22, 2011

JRuby 1.6 Released

  • Ruby 1.9.2 API and language features: JRuby 1.6 is the first release where we recommend people start trying 1.9 mode. We’ve put in months of work making sure the new APIs function, we’ve updated the standard library to the current MRI 1.9.2 copy, and we’re actively looking for missing or buggy features to add or fix. If you’ve been waiting for 1.9 support in JRuby, now’s your time to give it a try…pass –1.9 at the command line or put it in the JRUBY_OPTS environment variable and you’re ready to go!
  • Improved Ruby performance: As with every release, there’s tons of incremental perf improvements in JRuby 1.6. We never get as much time to focus on performance as we’d like, but this time there’s been more attention paid to execution performance specifically. Small benchmarks are running 1.5 to 2x faster, and CPU-bound applications should perform better as a result. We’ve also laid groundwork to enable our own optimizing compiler modes and to make it easier for the JVM to optimize things for us. It’s even better now, with enormous potential for JRuby 1.7.
  • RubyGems updates and enhancements: We’ve bumped RubyGems up to version 1.5.1, which greatly improves startup time. We’ve disabled (by popular demand) the generation of ri and rdoc during gem installation. We’ve added support for installing Java libraries directly from Maven as if they’re regular gems. And you get all this in both 1.8 and 1.9 modes.
  • Profiling and debugging: JRuby 1.6 improves the flat profiler from 1.5.6 (–profile or –profile.flat) and adds a graph-based profiler for more detail (–profile.graph). We’ve also resolved release issues for the ruby-debug gems, so you can gem install them from JRuby without hassle.
  • Platform and native: This release marks the first time we’ve called Windows an “officially supported” platform. All that really means is we’ve got a Windows CI server and we’re keeping it green for all the suites we run on Linux and OS X. We’re also previewing experimental support for installing C extensions written to MRI’s C API. Not every extension works, and there’s certainly some caveats…but it’s a hell of a thrill seeing sqlite3_ruby or rubysdl installing and working.
  • JVM and JVM languages: For 1.6, I wired up a lot more Ruby logic to the new “invokedynamic” JVM bytecode, which may enable us to run Ruby code many times faster than we do today. We also included enhancements to make it easier to call from Ruby into Scala libraries, which has enabled the Lift web framework to offer support for Ruby. The JVM is is becoming an amazing polyglot environment, and JRuby’s leading the charge.
  • All-around improvements: JRuby starts up faster, runs faster, uses less memory, and integrates with the JVM and JVM libraries better. It behaves consistently across platforms, runs anywhere the JVM runs (including on Android!), and lets you remain a Rubyist while you take advantage of an amazing VM and solid libraries. It’s the best of both the Ruby and the JVM worlds, together in one package.
http://www.engineyard.com/blog/2011/jruby-1-6-released-now-what/

Ruby & WebSockets: TCP for the Browser

WebSockets are one of the most underappreciated innovations in HTML5. Unlike local storage, canvas, web workers, or even video playback, the benefits of the WebSocket API are not immediately apparent to the end user. In fact, over the course of the past decade we have invented a dozen technologies to solve the problem of asynchronous and bi-directional communication between the browser and the server: AJAX, Comet & HTTP Streaming, BOSH, ReverseHTTP, WebHooks & PubSubHubbub, and Flash sockets amongst many others. Having said that, it does not take much experience with any of the above to realize that each has a weak spot and none solve the fundamental problem: web-browsers of yesterday were not designed for bi-directional communication.
WebSockets in HTML5 change all of that as they were designed from the ground up to be data agnostic (binary or text) with support for full-duplex communication. WebSockets are TCP for the web-browser. Unlike BOSH or equivalents, they require only a single connection, which translates into much better resource utilization for both the server and the client. Likewise, WebSockets are proxy and firewall aware, can operate over SSL and leverage the HTTP channel to accomplish all of the above - your existing load balancers, proxies and routers will work just fine.

http://www.igvita.com/2009/12/22/ruby-websockets-tcp-for-the-browser/

Easy WebSocket

You want to use websockets? You want to broadcast messages to all connected clients? You don't want to worry about browser compatiblity? You don't want to set up a server? Here's all the code you need.

EasyWebSocket is simple websockets broadcasting. It is perfect for a quick prototype.. getting it going quick. 90% this is all you need if you're doing websocket something.
The API is copied on the WebScocket standard API, thus compatible and easy to learn.

Step 1: You connect the socket to a given url
Step 2: What you send() thru this socket is sent to all sockets connected to the same url

Just include this code in your webpage and it works. See it live.
For more information, look at slides of a talk i did about it.
Additionnaly you can look at a little chat demo on top of it or another one which monitor latency in real time.

Features

  • Same API as WebSocket Standard
  • No Server to setup
  • No cross browser issue
  • No cross origin issue
EasyWebSocket is written by Jerome Etienne.
The code is available on github at EasyWebSocket under MIT license.


https://github.com/jeromeetienne/EasyWebsocket