Also: The "tabs on top" on OS X could use some touching-up - right now the tab bar is just swapped with the toolbar, and still below the window's title area. Something more like Chrome (or that Safari beta, for that matter) would be nice.
680 karma · joined July 17, 2008
Also: The "tabs on top" on OS X could use some touching-up - right now the tab bar is just swapped with the toolbar, and still below the window's title area. Something more like Chrome (or that Safari beta, for that matter) would be nice.
Just 1 >> Nothing >> Just 3
=> Nothing
Just 1 >> Just 2 >> Just 3
=> Just 3
To answer your last question, yes. It basically adds short-circuiting.* The documentation is fantastic. Insanely easy to browse around, very well formatted, and interconnected nicely.
* It comprises of multiple languages, and they can all interoperate - r5rs, r6rs, racket, etc. This has always been a major pain point for me when it comes to Scheme dialects - lots of implementations clinging to r5rs and using incompatible module systems.
* PLaneT has a ton of libraries covering many fields, and it's great that it's integrated into the language (requiring something from PLaneT will automatically download it).
* The community seems nice enough.
I also love that the new site immediately shows off the language: http://racket-lang.org/
Any Android app by a competent developer will look great from one resolution to the next. Now the iPhone can do that too, just with some growing pains as developers update their apps to provide higher-definiton resources.
It's great that the iPhone is progressing, but there's no need to adopt this "finally Apple gets it right!" stance and trash their opponents who have been for years doing pretty much the same things you tout as revolutionary and unprecedented.
Other than that, a great overview!
Prelude> :m + Control.Arrow
Prelude Control.Arrow> :t first
first :: (Arrow a) => a b c -> a (b, d) (c, d)
Prelude Control.Arrow> first (2 +) (1, 4)
(3,4)
In this case the Arrow instance is just (->), the function type constructor, so you could read that strange type signature as `first :: (b -> c) -> ((b, d) -> (c, d))`. But I've said too much.Having read Alexis' letter I'd hardly call it "slamming," and undeserving of this melodramatic bullshit.
Overall very nice for a pre-alpha.
That's quite some free advertising.
Do you have any benchmarks or references for Scala and Clojure's speed on Dalvik? I haven't been able to find much. (That's curiosity, not snootiness.)
Re: Interface Builder, I agree, but I don't think anything like that would work well for Android. It targets all kinds of devices and screen sizes; it really has to be flexible and that'd be harder to do with a WYSIWYG UI tool. That being said, someone made one for Android, but I still prefer coding it by hand: http://droiddraw.com/ (it ain't the prettiest thing but it seems to work; you can even load up your own layouts).
I don't question the rest, and I simply don't know enough about the iPhone APIs to compare it to Android, but I will say this: everything certainly works together in the Android APIs. I'm not 100% sure what the purpose of CoreData is - preferences? generic data storage? - but they are both part of Android as well.
Funny that you mentioned everything working together (albeit in a different context); that's the biggest difference I noticed between how iPhone apps work and how Android apps work. See Activities (Android) vs. Apps (iPhone), Content Providers, Intents -- just about everything about Android apps is designed around working together. For example, in every iPhone app I've used that has a browser in it, it's always essentially a WebKit view with some primitive controls, or it says "Halt app and switch to Safari?". In Android most apps open up the native Browser app's main activity, and hitting Back will close it and go right back to where you were. It's not really based on multitasking or switching apps, it just reuses the Browser's Activity to accomplish the same task. Applications are all on the same level, even built-in ones, and can all work together beautifully by simply calling Activities of other apps for performing specific tasks, or controlling them through Intents, etc. iPhone apps tend to be much more isolated.
I've never written an iPhone app, and this is my first Android app, but I find the API and the SDK to be perfectly easy to work with; it was very easy to get started and quickly start prototyping. I'd like to know what parts of the Cocoa APIs you consider delightful though, just out of curiosity.
Here's a token Hello, world! app: http://pastie.org/915727
To get it going all you need to do is edit your build.xml to add a new compile target before the </project> (thanks to technomancy for this):
<target name="compile" depends="-resource-src, -aidl"
description="Compiles project's .duby files into .class files">
<exec executable="dubyc" dir="src">
<env key="CLASSPATH" file="${sdk.dir}/platforms/android-7/android.jar" />
<arg value="-d" />
<arg value="../bin/classes/" />
<arg value="." />
</exec>
</target>
You may want to change android-7 to whatever platform you're on (and make sure sdk.dir is correct, it should be in your local.properties). problem25 := method(digits,
term := 0
n0 := BigNum with(0)
n1 := BigNum with(1)
loop(
n0 = n0 + n1
n1 = n0 - n1
if(n1 asString size >= digits, break)
term = term + 1
)
term
)
problem25(1000) printlnMidori does insta-crash though.
Takes a little bit to get used to using a serif monospace font though.
Membrane keyboards are cheaper to make (because most people don't care) but have less tactile feedback and are less reliable. Mechanical keyboards are more expensive to make, but are much more durable (keys will not wear out) and have quicker key snapback. Lack of n-key rollover could also be considered a defect of inexpensive keyboards, although it's not a common hindrance to casual typers.
More information: http://www.ergocanada.com/ergo/keyboards/mechanical_vs_membr...
* The feel of the mechanical keys is fantastic. There's much more feedback; keystrokes make a nice subdued "schlock" noise. The backspace key sounds like the sound from Mario games where he does that spinning landing thing on a baddie.
* Easily swappable keys; my WASD are swapped for the purple arrow keys they come with, and my Esc key is a nice dangerous-looking red.
* LEDs are built into the keys they're for. Not a killer feature, but pretty slick.
* Flexibility; there are dip switches in the back for various tweaks such as swapping Ctrl and Caps Lock on a hardware level - they even provide keys to switch out so that the new Caps Lock key gets its LED.
For something I'll be typing on for many hours a day it's a worthy investment.