Sunday, December 26, 2010
Friday, December 24, 2010
Rich Hickey explains the ideas behind Clojure 1.2's new polymorphism constructs deftype and protocols. Also: Clojure 1.3 features such as faster arithmetic and future features like Pods.
Friday, December 17, 2010
Clojure expert Stuart Sierra introduces you to new features in Clojure 1.2 that solve the Expression Problem, a classic programming dilemma. Protocols let you extend preexisting types to new methods, and datatypes let you extend preexisting methods to new types — all without changing the existing code. You'll also see how Java™ interfaces and classes can interact with Clojure protocols and datatypes.
Thursday, December 16, 2010
Apps can be distributed via the "ad hoc" method for testing purposes, which means over-the-air, one-click installs for app beta testers.
Wednesday, December 8, 2010
Tuesday, December 7, 2010
Tuesday, November 30, 2010
Saturday, November 27, 2010
Tuesday, November 23, 2010
appengine-magic abstracts away nearly all the boilerplate necessary tohttp://github.com/gcv/appengine-magic
deploy an App Engine application. It also enables interactive
development through the REPL. The new version has full support for
many App Engine services: the datastore, memcache, user Google account
authentication, the blobstore, sending and receiving email, task
queues, and remote URL access.
Thursday, November 18, 2010
ClojureQL 1.0 is has been a long time coming, but I feel confident that the interfaces and primitives of this implementation are whats needed to provide the ultimate SQL integration experience. ClojureQL is similar in intent to Rubys Arel. The current implementation is the refined experience of the previous 2.5 years boiled down into about 700 lines of pure Clojure.
Monday, November 15, 2010
Sunday, November 14, 2010
Friday, November 12, 2010
November 12, 2010—Oracle and Apple® today announced the OpenJDK project for Mac OS® X. Apple will contribute most of the key components, tools and technology required for a Java SE 7 implementation on Mac OS X, including a 32-bit and 64-bit HotSpot-based Java virtual machine, class libraries, a networking stack and the foundation for a new graphical client. OpenJDK will make Apple’s Java technology available to open source developers so they can access and contribute to the effort.
Oracle and Apple on Friday announced a new partnership that will bring the Java SE 7 and future versions of Java for Mac OS X to users directly from Oracle.With the OpenJDK project for Mac OS X, Apple will contribute most of the key components, tools and technology required for a Java SE 7 implementation on Mac OS X, including a 32-bit and 64-bit HotSpot-based Java virtual machine, class libraries, a networking stack and the foundation for a new graphical client. OpenJDK will make Apple's Java technology available to open source developers so they can access and contribute to the effort.
Tuesday, November 9, 2010
Monday, November 8, 2010
Saturday, November 6, 2010
Wednesday, November 3, 2010
Tuesday, November 2, 2010
WindowBuilder Pro is GUI designer for Java http://code.google.com/javadevtools/wbpro/index.html
Once you start using Git, you’ll want to throw everything into it, from full-blown apps to blog post drafts, because it’s so easy and versatile.
This guide covers what you need to know about website wireframes to get started.
Thursday, October 14, 2010
Let me address the fear of someone stealing your idea with the following: Wake the hell up! No one cares about your idea. Not even your mom (I know she said she does, but she was just being nice).
Tuesday, October 12, 2010
Today, IBM took the pragmatic decision to end hostilities over Apache Harmony and move on. This is clearly a good choice for IBM, and probably the best we could hope for Java. It does mean that Apache Harmony is effectively dead.
But frankly, Sun, now Oracle, have got away with murder.
Whether the Apache Software Foundation can stomach staying in the JCP is, I would say, still an open question. Let's hope the deal that was cut is really positive. Because it really is time for the Java industry to move on.
Monday, October 11, 2010
Crane is useful for deploying any kind of service and has many built-in capabilities.The model is simple - use Crane as a library, define functions, and use Crane will call those functions as targets. Use Crane's conf and cred capabilities to get all the configuration and credentials required to write your deploy functions in deploy.clj.
Vintage Victors for a Cure 2010
Carl and Patty
Saturday, October 9, 2010
Browser-based mobile apps clearly have the potential to offer user experience that is on-par with native apps. Of course designing that kind of experience is going to require more than emerging mark-up and style techniques—it’s not going to be enough to just serve a mobile stylesheet for your app. Offering a native-worthy mobile experience requires you to rethink the UI of your app and deliver it within an environment where touch is the rule.
Wednesday, October 6, 2010
Saturday, October 2, 2010
Thursday, September 23, 2010
Tuesday, September 7, 2010
So we’re back to the dilemma: do designers have to do twice the work to create native apps for the iPhone and Android? Based on my recent analysis, I came to this conclusion: the app definition and concept phases would be very similar regardless of platform, but the app refinement and production phases would require adaptions to create full-fledged native apps for each platform.
Friday, September 3, 2010
Thursday, September 2, 2010
Our objective in this post is to explain why ACID is hard to scale. At the same time, we argue that NoSQL/NoACID is the lazy way around these difficulties---it would be better if the particular problems that make ACID hard to scale could be overcome. This is obviously a hard problem, but we have a few new ideas about where to begin.
Tuesday, August 31, 2010
The goal of this tutorial is a simple tasklist written with clojure and compojure
Sunday, August 29, 2010
Thursday, August 26, 2010
For the best Java read performance, there are four things to remember:
- Minimize I/O operations by reading an array at a time, not a byte at a time. An 8Kbyte array is a good size.
- Minimize method calls by getting data an array at a time, not a byte at a time. Use array indexing to get at bytes in the array.
- Minimize thread synchronization locks if you don't need thread safety. Either make fewer method calls to a thread-safe class, or use a non-thread-safe class like
- Minimize data copying between the JVM/OS, internal buffers, and application arrays. Use
FileChannelwith memory mapping, or a direct or wrapped array
Wednesday, August 25, 2010
Sunday, August 22, 2010
Monday, August 16, 2010
In this post, we will build the core fetcher and core workers for a single machine, and introduce a new project for workers in clojure, called work.
clj-httpis a new Clojure HTTP client library inspired by Ring and designed for simplicity, robustness, extensibility, and testability.
Now we come to the biggest question of all: how does this suit affect the Java world, regardless of outcome?Well it's obviously not great to have two Java heavyweights bickering like schoolchildren, and it would be positively devastating if Android were obliterated because of this. But I think the real damage will be in how the developer community perceives Java, rather than in any lasting impact on the platform itself.Let's return to some of our facts. First off, nothing in this suit would apply to any of the three mainstream JVMs that 99% of the world's Java runs on. Hotspot and JRockit are both owned by Oracle, and J9 is subject to the Java specification's patent grant for compliant implementations. The lesson here is that Android is the first Java-like environment since Microsoft's J++ to attempt to unilaterally subset or superset the platform (with the difference in Android's case being that it doesn't claim to be a Java environment, and it may not actually need the patent grant). Other Java implementations that "follow the Rules" are in the clear, and so 99% of the world's use of Java is in the clear. Sorry, Java haters...this isn't your moment.
Thursday, July 29, 2010
>> You can set breakpoints, catch exceptions, examine the stack frame/locals; what makes it unique, (afaik,) is that you can eval arbitrary clojure forms in the lexical scope of a suspended, remote-thread's stack frame.
Wednesday, July 28, 2010
Monday, July 26, 2010
Saturday, July 24, 2010
The post walks through the process of developing and deploying a simple web application in Clojure. After reading this you should be able to build your own app and deploy it to a production server.
Friday, July 23, 2010
Tuesday, July 20, 2010
Saturday, July 17, 2010
Cljr is a Clojure REPL and package manager. It’s designed to complement the project-oriented approach of dependency management systems likeLeiningen and Maven, both of which are my preferred tools for managing traditional-project dependencies. However, much of what I use Clojure for, including Incanter-based data analysis, is not really project-oriented. In these cases, it is more convenient to have access to a REPL (and Swank server) backed by a global package-management system.
Wednesday, July 14, 2010
Tuesday, July 13, 2010
This post explains how to setup a Clojure environment step-by-step, including a working
cljscript (the common name for Clojure’s REPL). For this post I used the
cljscript contained within the Getting Started guide on Wikibooks as a base, but I built on top of it , so as to customize and improve it.
Monday, July 12, 2010
To use App Inventor, you do not need to be a developer. App Inventor requires NO programming knowledge. This is because instead of writing code, you visually design the way the app looks and use blocks to specify the app's behavior.
Thursday, July 8, 2010
aleph is a new ultra-thin wrapper around the popular Netty framework by Zachary Tellman.
In Clojure we don't need to use callbacks. This means for common things like talking to databases, we don't need them to have asynchronous interfaces. That's because we have really fantastic primitives in the language itself for dealing with concurrency. This code runs twice as fast as the Node.js counterpart - probably due to the excellent perf of Clojure coupled with leveraging multiple cores.
Wednesday, July 7, 2010
Thursday, July 1, 2010
Wednesday, June 30, 2010
Tuesday, June 29, 2010
VoltDB: a pure SQL, pure ACID, pure OLTP, shared nothing, sharded, scalable, lockless, open source, in-memory DBMS, purpose-built for running hundreds of thousands of transactions a second. VoltDB claims to be 100 times faster than MySQL, up to 13 times faster than Cassandra, and 45 times faster than Oracle, with near-linear scaling.
Monday, June 28, 2010
Clojure is a beautiful language, but if its community wants more people to appreciate the language, then it may want to consider making the getting started experience beautiful too.
Friday, June 25, 2010
Wednesday, June 23, 2010
@border-radiusand selectors like
@.seven:nth-child(even)without having to resort to forks or hacks.
Monday, June 21, 2010
Friday, June 18, 2010
Thursday, June 17, 2010
Follow the link for a diagram.
It's not often that you can make traffic flow more smoothly and safely without spending significant time and money. But drivers in Springfield, Mo., are the first in the United States to use a new interchange design that transportation officials say is quick, cheap, and safe.
The "diverging diamond" is being put to the test. Fans of the new highway interchange design say it improves traffic flow by eliminating problematic left turns. There's just one catch: It briefly sends all cars over to the left side of the road.
Wednesday, June 16, 2010
>> Contact the makers of these plug-ins for versions that are compatible with Mail 4.3 and Message 4.3. I reported the problem to Plaxo.com. As long as the rest of plaxo works, I'm not too worried, but I'll need to do some more testing before I'm sure it's OK. By the way, Plaxo is a free tool that synchronizes your contacts and calendars among several computers. It mostly works fine.
or relational algebra.
Carte is relational mapping for Clojure. It maps nested immutable data structures to an underlying relational database management system. It is meant only to provide simple access and manipulation of relational data, it is not meant to be a replacement for SQL
Tuesday, June 15, 2010
In Watson’s 1982 U.S. Open win at Pebble Beach, he holed a touchy chip shot from the greenside rough to birdie the 71st hole—arguably one of the greatest pressure shots ever—and then birdied the 18th to top Nicklaus.
Monday, June 14, 2010
Wednesday, June 2, 2010
Tuesday, June 1, 2010
To use the datastore API I need to include a jar that comes with the GAE SDK in my app. I could call the Java API directly, but there are already a few Clojure libraries that provide friendly wrappers around it. One of the first (that I know of) was appengine-clj by John Hume (who was also one of the first to write about using Clojure on GAE).
I decided to go with this fork of appengine-clj by Roman Scherer, which seems to be more complete and actively maintained.
Friday, May 28, 2010
The risk to Apple is not in losing the masses, but in losing the faithful core. In their unchallenged position, Apple made a lot of right decisions, but they also made mistakes, particularly in the form of political moves that limit what developers can distribute on the platform. These restrictions are done in the name of quality control, but anybody who has browsed the App Store knows that all this autonomy has done little to stem the flow of trashy, embarrassing apps.
What they have done is alienated developers, and ultimately deprived users of software they want to see on the platform. My fear is these botched decisions are hurting Apple, but they aren’t feeling it. Pain is a gift: the signal that prevents a burned finger tip from becoming a body engulfed in flames. Apple is numb from success, and I hope the emerging competition from Google and others will re-sensitize them to the threat of failure.
Google’s Android is the best challenge yet to the political and technical decisions made by Apple for its iPhone and related products. I welcome the challenge, and look forward to Apple’s scrappier, revitalized retaliation.
Monday, May 24, 2010
Friday, May 21, 2010
Thursday, May 20, 2010
Tuesday, May 11, 2010
This is all you need to know to write code to access the datastore. If you are new to Clojure (and any other Lisp language), than you might get a feeling why Paul Graham once said: "Lisp's power is multiplied by the fact that your competitors don't get it." Use simple data structures. Create powerful functional abstractions. Write less code. If you want to give our mini-languages a try, you can find the code here. You will find features for :pre-save and :post-load functions on entity level, transactions with automatic retries, query by key, return only keys from a query, automatically resolving parent/child relationships between entities and automatically resolving entities from attributes that contain keys.
Monday, May 10, 2010
> • Eﬀective parallelism uses trees.
> • Associative combining operators are good.
> • MapReduce is good. Catamorphisms are good.
> • There are systematic strategies for parallelizing superﬁcially > sequential code.
> • We must lose the “accumulator” paradigm and emphasize > “divide-and-conquer.” > The Parallel Future
> • We need parallel strategies for problem decomposition, data > structure design, and algorithmic organization:
> The top-down view: Don’t split a problem into “the ﬁrst” and > “the rest.” Instead, split a problem into roughly equal pieces; > recursively solve subproblems, then combine subsolutions.
> The bottom-up view: Don’t create a null solution, then successively > update it; Instead, map inputs independently to singleton solutions, > then merge the subsolutions treewise.
> Combining subsolutions is usually trickier than incremental update > of a single solution.
Friday, May 7, 2010
Monday, May 3, 2010
Thursday, April 29, 2010
to chat together; 'to concert, to settle, to discuss: a low cant word' - Johnson
Practice Round tickets are limited and sold in advance by application only. Applicants are allocated tickets on a random selection basis. 2011 Practice Rounds applications will be mailed in June, after the 2010 Tournament. Those people who applied in 2009 and/or 2010 will automatically receive an application for 2011 tickets. The deadline for 2011 applications is July 15, 2010. Successful applicants will be notified in September. Unsuccessful applicants will not be notified. If you are not on the Practice Rounds mailing list and would like to be added for 2011, please send your name, address, daytime telephone number, email address and last four digits of your social security number no later than May 1, 2010, to: Masters Tournament
PO Box 2047
Augusta, GA 30903-2047
Wednesday, April 28, 2010
Monday, April 26, 2010
CSS 3 introduces a brand new box model in addition of the traditional box model from CSS 1 and 2. The flexible box model determines the way boxes are distributed inside other boxes and the way they share the available space.
Sunday, April 25, 2010
Wednesday, April 21, 2010
SproutCore Touch is the first edition of SproutCore that includes complete support for touch events and hardware acceleration on the iPad and iPhone. It will also eventually work with Android, Palm once we have a chance to work with those platform vendors to tie into their custom features as well.
Tuesday, April 20, 2010
So while iWork is usable on Apple’s new "magical" device, it probably won't cut it for serious users. If you need to make an on-the-fly change to a document or presentation, you might lose some formatting or suffer some other unexpected quirks. What Apple calls file sharing, I call a pain, and the inability to print just magnifies things.
Let's just put this out there: the Droid Incredible is the best Android device that you can purchase in America right now. ... if you're looking for an ultra-fast, extremely capable smartphone that has the guts and gleam to go the distance, the Incredible just might be the Droid you're looking for.