356 karma · joined December 31, 2011
And while the new 13" MBP is technically less volume, it's thick the whole length of it. There was something oddly nice about the MBA's shape when holding it in one hand.
That said, the democratic approach has a lot of other issues in the form of cohorts and cliques. A manager might secure just enough votes to stay in power by having quiet conversations with some employees, using power to give them breaks, etc. I'd love to see a frank discussion or proposal about how to dissuade that.
It is the individual's responsibility for their own financial security, and the larger economic scheme of the United States should continue to support and encourage profiting off of moral hazards.
That said, there does seem to be some US consumer backlash, where individuals are basically attempting to stay out of this system altogether. Millennial house buying rates say it all: these rules are unfair, and the next generation don't want to play.
If anyone else is interested in starting a project like this, getting down and dirty, I'd urge you to start with the first part of SICP and then move into Dybvig's dissertation (at http://agl.cs.unm.edu/~williams/cs491/three-imp.pdf), which directly and plainly describes multiple approaches to producing efficient, reliable Scheme implementations.
(Also, why doesn't this link to the Github page instead of the blog?)
Which, incidentally, is advice that the Shadowrun tabletop RPG gives freely as advice to would-be players...
- Syncing an album for offline play is a checkbox.
- I can play music on any device logged into the account from any other device logged into the account
- Robust song discovery
- Massive back-catalog
- HD Playback
It's absurd that iTunes, my phone's native media player, is worse than a third-party app.
When 60% of the workforce is unemployable, either there will be massive unemployment, and the crime, poverty, and starvation associated, or there will be a massive paradigm shift in how we think about employment, money, and scarcity.
I'm hoping we get to the latter before the former.
A programmer may expect < to perform less-than. In J it does, when used as a dyad. Used monadically, it acts as a boxing operator (similar to Scheme's box). That's strange, but livable. The problem, though, is in J, <. means 'lesser of' (min), and <: means 'less than or equal'. Again, this is a potentially livable arrangement. Except that . means determinant (or dot product, depending on monadic or dyadic appearance) and : means either 'explicit' or 'monadic/dyadic', a sort of combinator that accepts a monadic and dyadic operator and yields a new one. That is, in Scheme, dyadic usage of : is akin to a case-lambda that checks if it uses one or two arguments.
If I present to you the program <., what does it do? Well, it certainly does something different from < ., which does something different from < :, which does something different from <:, which does something different from < . :, which again differs from <. :, and so on. This is exacerbated by operations such as 'table', written /, which bleed into other places. For example, </ inserts box, while <:/ inserts a decrement! And < :/ boxes up the result of an 'explicit' being 'inserted', whatever that means. And this syntactic problem plagues the entire vocabulary of the language:
http://www.jsoftware.com/help/dictionary/vocabul.htm
A clear optimization would be to just give these things their real names, use text, and write S-expressions. At least then the programs would be readable!
The largest problem, however, is that for being a functional language, J does little if anything to convey the important idea that have been developed in functional programming: recursion. It simply isn't how things 'are done' in J. So we have a language with bad syntax, good semantics, and a horrible problem from an educational perspective. It has some nice additions above and beyond other APLs, but after that it falls flat. I'd urge anyone who has read this far to learn APL instead of J; it will at least be readable by other APL programmers.
(I didn't mean to go on a rant, but I suffered through Howland's class on J at Trinity, and it wasn't until I had a professor show me Scheme in ~3 hours that I saw why functional programming was truly worthwhile.)
The reason they went with CUDA was to plug into Accelerate's existing framework without redeveloping the entire wheel. As meric mentioned, Accelerate is a pain to do anything with and you can bet dollars to do syntax that this package will generate the hard parts for you.
IIRC, ParFunk also has some nice framework in place for distributed computation (though I'm not certain it's completely in working order yet).