Welcome!
This site serves as my playground for software development with tools like Java, PHP and PostgreSQL (not to mention HTML, CSS, and JavaScript). As such, it is continuously under construction, will probably never be 'complete', and should not be considered the best dipiction of my capabilities ;).
I may also feel the need to spout-off about my other interests, including chess, acoustics, and music. So, feel free to drop me a line to tell me how much you think this site sucks!
Some Lite Reading...
- The Hunt For LulzSec's Missing Sixth Member
DavidGilbert99 writes "LulzSec's star burnt brightly in the short period it was active, but things quickly turned sour when its core members began getting arrested. Last week three of the six core members were sentenced in the UK, but this only served to highlight the fact that one member of the group, known as Avunit, has been able to remain unidentified despite the FBI having turned the group's leader Sabu into an informant. Who is Avunit? And does he hold the purse strings of the group's Bitcoin wallet which could have up to $180,000 in it?" As usual, be warned of the horrendous autoplaying video ads surrounding good content at the primary link.
Read more of this story at Slashdot.

- Latvian Police Raid Teacher's Home for Uploading $4.00 Textbook
richlv writes "Latvian police recently raided the home of a history teacher and confiscated his computer. The crime? Scanning a history book and making it available on his website covering various topics on history. The raid was based on a complaint from the publisher (Google Translate to English), which has a near-monopoly on educational materials in Latvia, often linked with shady connections in the Ministry of Education."
Read more of this story at Slashdot.

- EFF Resumes Accepting Bitcoin Donations After Two Year Hiatus
hypnosec writes "The Electronic Frontier Foundation (EFF) has started accepting donations in the form of Bitcoins again after a two year hiatus, stating that the legal uncertainty hovering over the digital currency has all but disappeared. On their blog the EFF noted that a report from U.S. Treasury Department's Financial Crimes Enforcement Network (FinCEN), in addition to their own findings, 'have confirmed that, as a user of Bitcoin or any virtual currency, EFF itself is likely not subject to regulation.'"
Read more of this story at Slashdot.

- Google Drops XMPP Support
Cbs228 writes "During last week's Google I/O conference, the company announced a replacement for its aging Talk instant messenger: Google Hangouts. Hangouts, which is only available for Android, iOS, and Chrome, offers closer integration with Google+. Unfortunately, the new product drops support for the XMPP instant messaging protocol, which has been an integral part of Talk for over ten years. XMPP delivers instant messages to desktop clients, like Pidgin, and enables communication between users on different instant messaging networks. Hangouts users attempting to communicate with contacts on non-Google servers, such as jabber.org, have found that all communications have been suddenly and inexplicably severed. A Google account is now required to communicate with Hangouts users. Google Hangouts joins the ranks of an already-crowded ecosystem of closed, incompatible chat products like Skype." Interesting, because Google Wave was based on XMPP and Google was integral to the creation of the Jingle extension that enabled video chatting over XMPP. Note that no end date has been set for Talk yet, but the end must surely be nigh given Google's recent history of axing products like Reader and CalDAV support from their calendar app without much notice.
Read more of this story at Slashdot.

- Motion To Delay Sanctions Against Prenda Lawyers Denied
rudy_wayne writes with news that the Prenda lawyers recently sanctioned by a federal judge are starting to face consequences. From the article: "On Friday, Paul Hansmeier, a Minnesota attorney who has been pointed to as one of the masterminds of the Prenda copyright-trolling scheme, filed an emergency motion to stay the $81,000 sanctions order while he and his colleagues could mount an appeal. Today the appeals court flatly denied his motion. Two appellate judges signed this order, and it gives Hansmeier the option to make a plea for delay with the district court judge. That would be U.S. District Judge Otis Wright, the judge who sanctioned Hansmeier in the first place. Hansmeier is also getting kicked off a case he was working on that was totally unrelated to Prenda's scheme of making copyright accusations over alleged pornography downloads. On Friday, the 9th Circuit Commissioner ordered Hansmeier, in no uncertain terms, to withdraw a the case involving Groupon since he has been referred to the Minnesota State Bar for investigation. The commissioner has delayed Hansmeier's admission to the 9th Circuit because of Wright's order, which refers to Wright's finding of 'moral turpitude.'"
Read more of this story at Slashdot.

- NSA Data Center the Focus of Tax Controversy
Nerval's Lobster writes "Location is everything when choosing the site of a data center. Firms such as Microsoft and Google and Facebook spend a lot of time looking into the costs of land, power, regulation and taxes before placing their respective data centers in a particular place. Sometimes, that local tax bill comes into play in a big way. Just ask the National Security Agency which learned it faces a multimillion-dollar annual state tax on the power consumed by its new data center in Camp Williams, south of Salt Lake City. The Salt Lake Tribune obtained a series of email exchanges between the feds and the state, with the NSA protesting a $2.4 million tax on its annual power expenditure, pegged at about $40 million. Harvey Davis, director of installations and logistics for the NSA, sent a letter (subsequently quoted by the newspaper) to state officials that made the logistics argument: 'Long-term stability in the utility rates was a major factor in Utah being selected as our site for our $1.5bn construction at Camp Williams. HP325 [the new law] runs counter to what we expected.'" This would be the data center William Binney et al claim is logging almost all domestic communication.
Read more of this story at Slashdot.

- Viruses In Mucus Protect From Infection
ananyo writes "Researchers have discovered that animal mucus — ' whether from humans, fish or corals' — is loaded with bacteria-killing viruses called phages. These protect their hosts from infection by destroying incoming bacteria. In return, the phages are exposed to a steady torrent of microbes in which to reproduce. Mucus mainly consists of huge molecular complexes called mucins, which are made up of thousands of glycan sugars attached to a central protein backbone. The team showed that phages stick to these sugars, reducing the number of bacteria that can attach to mucus by more than 10,000 times."
Read more of this story at Slashdot.

- Reporters Threatened, Labeled Hackers For Finding Security Hole
colinneagle writes "Scripps News reporters discovered 170,000 records online of customers of Lifeline, a government program offering affordable phone service for low-income citizens, that contained everything needed for identity theft . Last year, the FCC 'tightened' the rules for the program by requiring Lifeline phone carriers to document applicants' eligibility, which led to collecting more sensitive information from citizens. A Scripps News investigative team claims it 'Googled' the phone companies TerraCom Inc. and YourTel America Inc. to discover all of the files. A Scripps reporter asked for an on-camera interview with the COO of TerraCom and YourTel after explaining the files were freely available online. That did not happen, but shortly thereafter the customer records disappeared from the internet. Then, the blame-the-messenger hacker accusations and mudslinging began. Although the Scripps reporters videotaped the process showing how they found the documents, attorney Jonathon Lee for both telecoms threatened the 'Scripps Hackers' with violating the Computer Fraud and Abuse Act (CFAA)."
Read more of this story at Slashdot.

- Judges Debate Patents and If New Software Makes a Computer a "New Machine"
First time accepted submitter ectoman writes "A third party steps into a financial transaction to make sure all parties exchange funds at the same time and as expected. Can you patent this process? What if the third party is a computer? Rob Tiller, vice president and general counsel for Red Hat, details a recent court ruling on this very matter—one that has critical implications for the future of software patents, and one that divided the judges involved. Tiller writes that: 'The judges mostly agreed that the idea of managing settlement risk with a third party was abstract such that by itself it could not be patented. They differed, though, on whether using a general purpose computer for managing settlement risk meant that the patents avoided invalidity based on abstraction.' Interestingly, some judges suggested that a computer becomes a 'new machine' every time it loads different software."
Read more of this story at Slashdot.

- Steve Jackson Shows Off the Texas Brick Railroad (Video)
Imagine game designer Steve Jackson and a bunch of friends building Lego trains and tracks and scenery, including buildings and other props. Sounds like fun, doesn't it? The group calls itself the Texas Brick Railroad. A lot of members have children, so their meetings tend to be family affairs. Plus, as they're doing here, they often display their train sets at public events where -- yes -- their trains attract children like crazy. This video shows off both current Lego trains and some of the classic, no-longer-sold Lego trains that members have collected over the years, including the highly-prized monorails. There's a transcript, but face it: This is basically visual material, and worth checking out on a computer or handheld that runs Flash if your normal one doesn't. (We've requested an upgrade from Flash-only video, but don't hold your breath. It might be a good while before we get it.)
Read more of this story at Slashdot.

- Book Review: Locked Down: Information Security For Lawyers
benrothke writes "Had Locked Down: Information Security for Lawyers not been published by the American Bar Association (ABA) and 2 of its 3 authors not been attorneys; one would have thought the book is a reproach against attorneys for their obliviousness towards information security and privacy. In numerous places, the book notes that lawyers are often clueless when it comes to digital security. With that, the book is a long-overdue and valuable information security reference for anyone, not just lawyers." Read below for the rest of Ben's review.
Read more of this story at Slashdot.

- Dell Dumps Its Public Cloud Offerings
itwbennett writes "Last week, Dell said that it would be 'refining' its OpenStack plans. Now we know that 'refining' means 'backing away from'. Although the company wouldn't answer direct questions on the subject, a press release spells it out like this: 'Sales of Dell's current in-house multi-tenant public cloud IaaS will be discontinued in the U.S. in favor of best-in-class partner offerings.' Interestingly, none of Dell's initial partners, including Joyent, ScaleMatrix and ZeroLag, have platforms built on OpenStack."
Read more of this story at Slashdot.

- Narrowing Down When Humans Began Hurling Spears
sciencehabit writes "Archaeologists have long debated when early humans began hurling stone-tipped spears and darts at large prey. By throwing a spear, instead of thrusting it, humans could hunt buffalo and other dangerous game from a safe distance, with less risk of a goring or mauling. But direct evidence of this hunting technique in early sites has been lacking. A new study of impact marks on the bones of ancient prey shows that such sophisticated killing techniques go back at least 90,000 years ago in Africa and offers a new method of determining how prehistoric hunters made their kills."
Read more of this story at Slashdot.

- What Professors Can Learn From "Hard Core" MOOC Students
jyosim writes "Hundreds of people are spending 20 or 30 hours a week just taking free Massive Open Online Courses, or MOOCs. They're not looking for credit, just the challenge of learning. This Chronicle of Higher Ed story looks at whether these MOOC addicts think they're learning as much as they would in a traditional college course. From the article: 'Consider Anna Nachesa, a 42-year-old single mother in a village near Amsterdam who logs on to MOOCs for several hours each night after dinner with her teenage kids. She has always found TV boring, she says, and for her, MOOCs replace reading books. She is a physicist by training, with a degree from Moscow State University, and she works as a software developer. "This stuff is actually addictive," she says. In some ways the lure is like Everest: Some want to climb it to see if they can. "The Dutch have the proverb 'If you never shoot, you already missed,'" she says.'"
Read more of this story at Slashdot.

- FDA To Decide Fate of Triclosan, Commonly Used In Antibacterial Soaps
kkleiner writes "The FDA is finalizing its review of the antibacterial agent triclosan common to many soaps and other health/household products after four decades of use. Recent studies suggest the chemical may be harmful to animals and could interfere with the human immune system along with increasing the proliferation of antibiotic-resistant bacteria. The agency has been slow to cast a verdict, to much criticism considering its widespread use."
Read more of this story at Slashdot.

- Cyber Attack From Inside India Hits Pakistan Government
judgecorp writes "Government institutions are among the targets of an attack on Pakistani bodies, which originates in India, according to reports. The campaign is using vulnerabilities in Microsoft software to install the HangOver malware, according to Norwegian security firm Norman Shark (PDF). From the article: 'In the attacks on Pakistani organizations, spear phishing emails were sent out purporting to contain information on "ongoing conflicts in the region, regional culture and religious matters," according to Norman. Norman could not provide direct attribution to the attacks, but its report did note the following: "The continued targeting of Pakistani interests and origins suggested that the attacker was of Indian origin." Snorre Fagerland, principal security researcher in the Malware Detection Team at Norman, told TechWeekEurope it appeared Pakistani government bodies had been attacked.'"
Read more of this story at Slashdot.

- Jolla Announces First Meego Phone Available By End 2013
x_IamSpartacus_x writes "Jolla, the Finnish company that continued Nokia's work on the MeeGo mobile platform, announced details of its first smartphone on Monday. Availability for the Jolla device is expected by year end and can be pre-ordered now; the phone will be priced at no more than €399 (US $512.26). The Jolla hardware looks similar to that of Nokia's Lumia, with a clean, button-less front face that houses the 4.5-inch touchcscreen. The phone will use a dual-core processor and support 4G LTE in some regions. Internal storage tops out at 16 GB, but can be expanded via microSD card. The phone also includes an 8 megapixel rear camera with auto focus. The phone is also 'Android app compliant' which, in a move similar to that of BlackBerry, can help with available apps at launch."
Read more of this story at Slashdot.

- Over 100 Hours of Video Uploaded To YouTube Every Minute
jones_supa writes "Google's YouTube is celebrating its 8-year birthday, and at the same time they reveal some interesting numbers. 'Today, more than 100 hours of video are uploaded to YouTube every minute. That's more than four days of video uploaded each minute! Every month, more than 1 billion people come to YouTube to access news, answer questions and have a little fun. That's almost one out of every two people on the Internet. Millions of partners are creating content for YouTube and more than 1,000 companies worldwide have mandated a one-hour mid-day break to watch nothing but funny YouTube videos. Well, we made that last stat up, but that would be cool (the other stats are true).'"
Read more of this story at Slashdot.

- Interviews: McAfee Says House Fire Was No Accident
According to reports a bush fire burned down John McAfee's home in Belize on Thursday. The local fire department was unable to to contain the blaze and the the two main buildings were completely destroyed. Property Manager Noel Codd (who was not there at the time) estimated the value of the buildings at $250,000 each. Despite the reported cause of the fire, McAfee says that the destruction of his compound was no accident. We caught up with him to talk about why he thinks the fire was set and what he plans to do now. Read below to see what he had to say.
Read more of this story at Slashdot.

- Yahoo Pinkie-Swears It Won't Ruin Tumblr
Nerval's Lobster writes "Yahoo has agreed to acquire Tumblr for $1.1 billion. As you know, Yahoo is a major corporation with a need to monetize its assets in a way that makes its shareholders happy, leaving open the question of whether it'll alter Tumblr's DNA in order to make the latter more of a significant cash generator. But at least for the moment, Yahoo seems content to leave its new property alone. 'Per the agreement and our promise not to screw it up, Tumblr will be independently operated as a separate business,' read the company's press release. 'The product, service and brand will continue to be defined and developed separately with the same Tumblr irreverence, wit, and commitment to empower creators.' Tumblr CEO David Karp, who has been known to make some very anti-advertising comments in the past, will remain in place. Even so, anyone who likes Tumblr may have some cause for concern, because Yahoo has a history of making high-profile acquisitions that subsequently implode. Back in 1999, for example, it paid over $3 billion for GeoCities, another blogging network that it eventually shut down after years of failing the update the property. In 2005, it acquired popular photo-sharing Website Flickr, which it likewise allowed to languish and die. That same year it bought Delicious, a popular Webpage-bookmarking site, and did exactly nothing with it. So when Yahoo starts off its Tumblr press release with a promise not to screw things up, it's a self-deprecating nod toward all that history. New Yahoo CEO Marissa Mayer has been on a bit of a buying spree of late, snatching up startups such as Summly in an attempt to make her company 'cool' and relevant."
Read more of this story at Slashdot.

- Uptick In Whooping Cough Linked To Subpar Vaccines
sciencehabit writes "Whooping cough, or pertussis, has exploded in the United States in recent years. A new study (abstract) confirms what scientists have suspected for some time: The return of the disease is caused by the introduction of new, safer vaccines 2 decades ago. Although they have far fewer side effects, the new shots don't offer long-lived protection the way older vaccines do."
Read more of this story at Slashdot.

- Dark Matter, WIMPS, and NASA's Alpha Magnetic Spectrometer Data
cylonlover writes "Recently the media has been saturated with overly-hyped reports that NASA's Alpha Magnetic Spectrometer may have detected dark matter. These claims may have some justification if the word 'may' is shouted, but they rest on a number of really major assumptions and guesses, some of which are on weak and shifting soil. So just what was seen in the experiment, and what are the possible explanations?"
Read more of this story at Slashdot.

- Open Source Projects For Beginners
itwbennett writes "Whoever said 'everyone has to start somewhere' has clearly never tried contributing to an open source project — the Linux Kernel development team in particular is known for its savagery. But if you're determined to donate your time and talents, there are some things you can do to get off on the right foot. Of course you should pick something you're interested in and that you use. Check, and double check. You should also research the project, learn about the process for contributing, and do your utmost to avoid asking questions that you can find the answers to. But beyond that there are some hallmarks of beginner-friendly open source projects like Drupal, Python, and LibreOffice — namely, a friendly and active community, training and mentorship programs, and a low barrier to entry."
Read more of this story at Slashdot.

- NWS Announces Big Computer Upgrade
riverat1 writes "After being embarrassed when the Europeans did a better job forecasting Sandy than the National Weather Service Congress allocated $25 million ($23.7 after sequestration) in the Sandy relief bill for upgrades to forecasting and supercomputer resources. The NWS announced that their main forecasting computer will be upgraded from the current 213 TeraFlops to 2,600 TFlops by fiscal year 2015, over a twelve-fold increase. The upgrade is expected to increase the horizontal grid scale by a factor of 3 allowing more precise forecasting of local features of weather. The some of the allocated funds will also be used to hire some contract scientists to improve the forecast model physics and enhance the collection and assimilation of data."
Read more of this story at Slashdot.

- Mageia 3 Released
Freshly Exhumed writes "Forked from Mandriva Linux back in 2010, Mageia Linux has hit a new release milestone. Trish at the Mageia blog announces: 'All grown up and ready to go dancing: Mageia 3's out! We still can't believe how much fun it is to make Mageia together, and we've been doing it for two and a half years. For people who can't wait, get it here; release notes are here. To upgrade from Mageia 2, see here.'" Adds reader hduff: "It offers cutting edge and stable versions of your favorite applications and desktop environments as well as a version of the STEAM gaming software."
Read more of this story at Slashdot.

- This week's sponsor: Igloo Software
If SharePoint and Facebook had a baby, it would look a lot like Igloo (without the recessive balding or oversharing tendencies). Hosted, managed and with a major release every 90 days, Igloo is a whitelabel content platform built for today’s needs. We also have Sandwich Video.
- Matt Mullenweg on Yahoo-Tumblr
» Matt Mullenweg on Yahoo-Tumblr
“We’re at the cusp of understanding the ultimate value of web publishing platforms, particularly ones that work cross-domain.”–Matt Mullenweg of WordPress. - MapBox Develops an Open Source Vector Format for Maps
» MapBox Develops an Open Source Vector Format for Maps
MapBox's new vector-based map tiles are more stable, more scalable, and customizable to an amazing degree. - Paul Irish on Chrome Moving to Blink
I know you’ve been asked this plenty of times already, but: no new vendor prefixes, right? Right?
Nope, none! They’re great in theory but turns out they fail in practice, so we’re joining Mozilla and the W3C CSS WG and moving away them. There’s a few parts to this.
Firstly, we won’t be migrating the existing
-webkit-prefixed properties to a-chrome-or-blink-prefix, that’d just make extra work for everyone. Secondly, we inherited some existing properties that are prefixed. Some, like-webkit-transform, are standards track and we work with the CSS WG to move ahead those standards while we fix any remaining issues in our implementation and we’ll unprefix them when they’re ready. Others, like-webkit-box-reflectare not standards track and we’ll bring them to standards bodies or responsibly deprecate these on a case-by-case basis. Lastly, we’re not introducing any new CSS properties behind a prefix.Pinky swear?
Totes. New stuff will be available to experiment with behind a flag you can turn on in
about:flagscalled “Experimental Web Platform Features”. When the feature is ready, it’ll graduate to Canary, and then follow its ~12 week path down through Dev Channel, Beta to all users at Stable.The Blink prefix policy is documented and, in fact, WebKit just nailed down their prefix policy going forward. If you’re really into prefix drama (and who isn’t!) Chris Wilson and I discussed this a lot more on the Web Ahead podcast [37:20].
How long before we can try Blink out in Chrome?
Blink’s been in Chrome Canary as of the day we announced it. The codebase was 99.9% the same when Blink launched, so no need to rush out and check everything. All your sites should be pretty much the same.
Chrome 27 has the Blink engine, and that’s available on the beta channel for Win, Mac, Linux, ChromeOS and Android. (See the full beta/stable/dev/canary view).
While the internals are apt to be fairly different, will there be any radical changes to the rendering side of things in the near future?
Nothing too alarming, layout and CSS stuff is all staying the same. Grid layout is still in development, though, and our Windows text rendering has been getting a new backend that we can hook up soon, greatly boosting the quality of webfont rendering there.
We’re also interested in better taking advantage of multiple cores on machines, so the more we can move painting, layout (aka reflow), and style recalculation to a separate thread, but the faster everyone’s sites will render. We’re already doing multi-threaded painting on ChromeOS and Android, and looking into doing it on Mac & Windows. If you’re interested in these experimental efforts or watching new feature proposals, take a look at the blink-dev mailing list. A recent proposed experiment is called Oilpan, where we’ll look into the advantages of moving the implementation of Chrome’s DOM into JavaScript.
Will features added to Blink be contributed back to the WebKit project? Short term; long term?
Since Blink launched there’s been a few patches that have been landed in both Blink and WebKit, though this is expected to decline in the long-term, as the code bases will diverge.
When are we likely to start seeing Blink-powered versions of Chrome on Android? Is it even possible on iOS, or is iOS Chrome still stuck with a Safari webview due to Apple’s policies?
Blink is now in the Chrome Beta for Android. Chrome for iOS, due to platform limitations, is based on the WebKit-based WebView that’s provided by iOS.
Part of this move seems to be giving Google the freedom to remove old or disused features that have been collecting dust in WebKit for ages. There must be a few things high on that list—what are some of those things, and how can we be certain their removal won’t lead to the occasional broken website?
A few old ’n crusty things that we’re looking at removing: the isindex attribute, RangeException, and XMLHttpRequestException. Old things that have little use in the wild and just haven’t gotten a spring cleaning from the web platform for ages.
Now, we don’t want to break the web, and that’s something that web browser engineers have always been kept very aware of. We carefully gauge real-world usage of things like CSS and DOM features before deprecating anything. At Google we have a copy of the web that we run queries against, so we have a pretty OK idea of what CSS and JavaScript out there is using.
Blink also has over 32,000 tests in its test suite, and manual confirmation that over 100 sites work great before every release ships. And we’re working closely with the W3C and Adobe to share tests and testing infrastructure across browsers, with the goals of reducing maintenance burden, improving interoperability, and increasing test coverage. Eventually we’d like all new features to ship with shared conformance tests, ensuring interoperability even as we add cutting-edge stuff.
Still, any deprecation has to be done responsibly. There’s now a draft Blink process for deprecating features which includes:
- Anonymous metrics to understand how much any specific feature is used “in the wild”
- ”Intent to deprecate” emails that hit blink-dev months before anything is removed
- Warnings that you’ll find in your DevTools console if you’re using anything deprecated
- Mentions on the Chromium blog like this Chrome 27 wrap-up.
Did part of the decision to branch away from WebKit involve resistance to adding a Dart VM? WebKit’s goals explicitly mention JavaScript, and Apple representatives have been fairly vocal about not seeing a need.
Nope, not at all. The decision was made by the core web platform engineers. Introducing a new VM to a browser introduces considerable maintenance cost (we saw this with V8 and JavaScriptCore both in WebKit) and right now Dart isn’t yet ready to be considered for an integration with Blink. (more on that in a sec). Blink’s got strong principles around compatibility risk and this guides a lot of the decisions around our commitments to potential features as they are proposed. You can hear a more complete answer here from Darin Fisher, one of the Chrome web platform leads.
Have any non-WebKit browsers recently expressed an interest in Dart? A scripting language that only stands to work in one browser sounds a little VBScript-y.
Not yet, but since Dart compiles to JavaScript and runs across the modern web, it’s not gated by other browsers integrating the VM. But it’s still early days, Dart has not yet reached a stable 1.0 milestone and that there are still technical challenges with the Dart VM around performance and memory management. Still, It’s important to point out that Dart is an open source project, with a bunch of external contributors and committers.
Let me take a moment to provide my own perspective on Dart. :) Now, as you know, I’m a JavaScript guy, so early on, I took a side and and considered Dart an enemy. JavaScript should win; Dart is bad! But then I came to realize the Dart guys aren’t just setting out to improve the authoring and scalability of web application development. They also really want the web to win. Now I’ve recently spoke about how The Mobile Web Is In Trouble, and clarified that my priorities are seeing it provide a fantastic user experience to everyone. For me, seeing the mobile web be successful trumps language wars and certainly quibbling over syntax. So I’m happy to see developers embrace the authoring advantages of Coffeescript, the smart subset of JavaScript strict mode, the legendary Emscripten & asm.js combo, the compiler feedback of TypeScript and the performance ambitions of Dart. It’s worth trying out technologies that can leapfrog the current expectations of the user experience that we can deliver. Our web is worth it.
Will Opera be using the Chromium version of Blink wholesale, as far as you know? Are we likely to see some divergence between Opera and Chrome?
As I understand it, Opera Mobile, Opera Desktop, and Opera Mini will all be based on Chromium. This means that they’ll not only share the exact version of Blink that Chrome uses, but also the same graphics stack, JavaScript engine, and networking stack. Already, Opera has contributed some great things to Blink and we’re excited about what’s next.
Why the name “Blink,” anyway?
Haha. Well… it’s a two parter. First, Blink evokes a certain feeling of speed and simplicity—two core principles of Chrome. Then, Chrome has a little tradition of slightly ironic names. Chrome itself is all about minimizing the browser chrome, and the Chromebook Pixel is all about not seeing any pixels at all. So naturally, it fits that Blink will never support the infamous
<blink>tag. ;)<3z
- W3C to Publish Encrypted Media Extensions Specification
» W3C to Publish Encrypted Media Extensions Specification
The W3C announced today that it intends to publish the controversial Encrypted Media Extensions extension specification despite highly outspoken resistance, paving the way for native web DRM. - Research Tips For Designers and Developers
» Research Tips For Designers and Developers
How is the waterfall web design process like the childhood game of "Telephone," and how can we fix it? Bringing designers and developers into the discovery and research phase is a good start, says Happy Cog creative director Chris Cashdollar, who shares stakeholder interviewing tips in this helpful Cognition post. - Rachel Andrew on the Business of Web Dev: You Can’t Do Everything
In any given day I can find myself reading up on a new W3C proposal, fixing an issue with our tax return, coding an add-on for our product, writing a conference presentation, building a server, creating a video tutorial, and doing front end development for one of our sites. Without clients dictating my workload I’m in the enviable position of being able to choose where to focus my efforts. However, I can’t physically do everything.
I’m one half of a two-person web development business—the team behind the little CMS, Perch. I’m also an author and speaker on subjects that range from CSS to technical support, and I enjoy all of it.
When we were a service business, what I was actually working on was largely dictated by the requirements of our clients. Whether they wanted to pay me to build servers, manage projects, or write code didn’t really matter. I was exchanging my time for money, doing a range of things I enjoyed. Now that we’re a product company, my greatest challenge is working out where I am best spending my time, while avoiding falling down a rabbit hole of interesting things I have discovered while performing some other task.
The quote that I opened this column with reflects the dilemma I seem to face daily. I can choose to place my attention anywhere. But if I dart around between tasks, none of them get my full attention. At the very least, progress on everything becomes painfuly slow as I spend an hour on one thing and two on another, inching them all forward. I can’t claim to have the perfect solution to managing this problem, but I have started to develop a process for deciding what needs to be done, and whether I am the best person to be doing it.
First and foremost you need to identify what needs doing. I am a great fan of Getting Things Done and regularly review our business and my personal goals, and the tasks that will go into meeting them. Once I have a list of tasks, I can assess them against the following criteria:
- Am I the only person who can do this?
- Does the business or product benefit from me in particular doing this?
- Is this a task I really enjoy doing?
- Will I learn anything new by doing this?
- What am I not doing if I choose to do this?
Am I the only person who can do this?
Things that fall into group one, the things that only I can do, need investigating. It isn’t ideal for any business to have things that only one person can do. It might be that I need to deal with that task today, but how can I make it so that in the future someone else could? Until the middle of last year, our accounts were a case in point. Although we had an accountant do our end of year tax returns, I was the only person who fully understood the complex processes developed to deal with the many incoming small payments for Perch licenses. Taking on a bookkeeper meant I had to formalize and document all of those processes. As a result I don’t have to do the day-to-day books, but perhaps more importantly the business isn’t reliant on knowledge that is only in my head.
Does the business or product benefit from me in particular doing this?
It can make sense to keep some tasks internal. I wouldn’t completely outsource our technical support, or our social media activity, or even our marketing. The public face of our product is very much about us being a small, friendly business. Our customers get to talk to us, the product developers; we share their frustrations and they help us decide on where to put time into new features. There may well be real reasons to keep certain tasks as a role of the core person or team, even if they would seem straightforward to outsource.
Is this a task I really enjoy doing?
Running a business can involve hard work and long hours. If you feel you have to outsource bits of your job that you love doing because it makes most sense as a business, you may end up pretty miserable. For those of us running small software companies, it’s likely we have ended up here because we like to code. So it’s important to me that I spend some of my time actually writing code—even if it might be more sensible from a business perspective for me to just manage other people who are writing code.
I believe that our products and businesses are better when we love being involved with them. To have a successful business, it’s likely that you will always have important things to do that you find less enjoyable than designing or writing code, however I don’t think we should be beating ourselves over the head. Doing what we love is really what has been behind the success of our product. It is completely ok to hang onto some tasks because you simply enjoy doing them.
Will I learn anything new by doing this?
I might really enjoy a particular project, but I find a helpful way to decide if I should do something or contract it out is to see whether I will learn anything new by doing it myself. For example, I have just sent out a sizeable chunk of front-end development. It is a rebuild of an existing site, and I think there are lots of practical and performance gains to be had by rebuilding it. It would have been nice to have done that work myself, but I wouldn’t have learned anything by doing it. Therefore I made the decision that this would be a good piece of work to outsource to a contractor. I can manage that project and make sure that I’m happy with the end result, but I don’t need to actually write the code.
Our business benefits by us having knowledge and understanding. I’m currently spending quite a lot of time learning about automation (using Puppet) and modern ways of managing systems while rebuilding our infrastructure. I could have brought someone in to do this work for me, and may well do so in future. Yet by updating my systems administration skills, I’m ensuring that within the business we maintain a good level of knowledge about our infrastructure.
What am I not doing if I choose to do this?
As part of a tiny team of two, I’ll always have a number of tasks on the go. Ultimately, choosing to take on one task means not doing something else. It might be another task in the business that gets pushed back. It might be personal things like exercise, or spending time with family and friends. To be able to understand the implications of selecting one thing to work on over another, you need to have a really good overview of all the things that are trying to get your attention.
Having clear business goals and objectives in the first place can make this decision-making so much easier. When you find yourself in the position of being able to do anything, it is so easy to run around picking up tasks and trying to do everything. The trick is to take that step back; to see where you can be more strategic with which tasks you tackle and which you delegate. This approach can help you be far more productive and give you space to enjoy the work you are doing while meeting your business goals.
- Breaking the 1000ms Time to Glass Mobile Barrier
Ilya Grigorik discusses in detail how to construct a mobile website that loads as quickly as possible. A site that not only renders in 1 second, but one that is also visible in 1 second. With hard statistics as evidence to show why this matters, Ilya discusses techniques to deliver a 1000 millisecond experience.
- Karen McGrane on Content: WYSIWTF
Arguing for “separation of content from presentation” implies a neat division between the two. The reality, of course, is that content and form, structure and style, can never be fully separated. Anyone who’s ever written a document and played around to see the impact of different fonts, heading weights, and whitespace on the way the writing flows knows this is true. Anyone who’s ever squinted at HTML code, trying to parse text from tags, knows it too.
On one hand, the division of labor between writing and presentation can be seen at every point in our history. Ancient scribes chiseling stone tablets, medieval monks copying illuminated manuscripts, printers placing movable type—we’ve never assumed that the person who produces the document and the person who comes up with the ideas must be one and the same.
And yet, we know that medium and message are intertwined so tightly, they can’t be easily split apart. Graphic designers rail against the notion that “look and feel” can be painted on at the end of the process, because design influences meaning. The more skilled we are as communicators, the more we realize that the separation of content from presentation is an industrial-age feint, an attempt to standardize and segment tasks that are deeply connected.
Today, we try to enforce the separation of content and form because it’s good for the web. It’s what makes web standards possible. It enables social sharing and flexible reuse of content. It supports accessibility. It’s what will keep us sane as we try to get content onto hundreds of new devices and form factors.
When talking about how best to separate content from presentation, designers and developers tend to focus on front-end code—which makes sense, because that’s what we have the most control over. But, as with so many challenges we have with content on the web, the real issue lies in the tools we give content creators to help them structure, manage, and publish their content. The form that content takes depends as much on CMS as it does on CSS.
How should content management tools guide content creators to focus on meaning and structure? What’s the right amount of control over presentation and styling in the CMS? And how should these tools evolve as we break out of the web page metaphor and publish content flexibly to multiple platforms? Let’s look at three tools that sit at the intersection of content and form.
Preview button
Even the most die-hard structured content editors still like seeing what their work is going to look like. Writers print out documents for editing to give them a different view from what they see on the screen. Bloggers instinctively hit the preview button to look at their work the way a user will see it.
Whoops. Decades of work refining the emulators between desktop publishing programs and laser printers means that writers can feel confident that their document will look virtually identical, regardless of where it’s printed. We’ve carried that assumption over to the web, where it’s categorically untrue. Different browsers render content in their own vexingly special way. Users can change the font size—even add their own custom style sheet. Today, the same document will render differently on desktops, tablets, and mobile devices. The preview button is a lie.
Yet we can’t just throw the baby out with the bathwater. In fact, seeing content in context becomes even more important as our content now lives across devices and platforms. Instead of throwing up our hands and saying “preview is broken,” it’s time to invent a better preview button.
One publishing company I know of has built its own custom preview rendering interface, which shows content producers an example of how each story will appear on the desktop web, the mobile web, and an app. Is it perfect? Far from it. Content will appear in many more contexts than just those three. Is it better than nothing? Absolutely.
WYSIWYG
The desktop publishing revolution ushered in by the Macintosh allowed the user to see a document on screen in a form that closely mirrored the printed version. The toolbar at the top of the screen enabled the user to add formatting—change the font, insert an image, add typographic effects like headings and bullets, and much more.
In an effort to carry over this ease of use to the web, we allow content creators to embed layout and styling information directly into their content. Unfortunately, the code added by content creators can be at odds with the style sheet, and it’s difficult for developers to parse what’s style and what’s substance. When it comes time to put that content on other platforms, we wind up with a muddled mess.
What is the right amount of formatting control to give content creators? That’s a difficult question to answer, because it pierces right to the heart of what’s stylistic and what’s semantic. Even something as simple as adding bold and italic text forces us to ask if we’re really just styling the text, or adding semantic meaning (say, a book title or a warning message.)
Better content modeling can solve some of these problems, encouraging content creators to appropriately “chunk” their text. By banishing blobs of text with formatting embedded and replacing them with chunks of clean, presentation-independent content, we’re building in the distinction between content and form right from the start.
But imagining that each “chunk” of content is a field in the database (with its own input field) rapidly devolves into the absurd. That way lies madness. The real solution isn’t necessarily to “banish blobs,” but to replace the WYSIWYG toolbar with semantic markup. Rather than entering all text into discrete fields, content authors wrap text that describes what it is. Our book title doesn’t need to be a separate field if we can wrap it in the proper tags.
Defining what goes in a field and what goes in a tag requires a tighter collaboration between content authors, CMS architects, and front-end developers. It’s time we started having these conversations.
Inline editing
We’re evolving. Not satisfied to rely just on tools that are vestiges of the desktop publishing era, we’re developing new and innovative ways to mix up content and formatting that are unique to the way the web works. There’s no better example of this than inline editing.
Inline editing allows content creators to directly manipulate content in the interface, with no separation between the editing screen and the display. Medium offers an editing interface that’s identical to the desktop display and in-place editing is being added to Drupal 8 core.
One of the questions I get asked most frequently is “how can I get my content creators to understand why it’s so important to add structure and metadata to their content?” This, I believe, is one of the fundamental challenges we’re facing on the web, particularly as we adapt to a multi-channel future. Inline editing encourages content creators to focus on the visual presentation of the desktop interface. Just at the moment when we need content creators to think about the underlying structure, we’re investing in tools that obscure the “connective tissue.”
Jeff Eaton sums up this problem nicely in a post called Inline Editing and the Cost of Leaky Abstractions:
The editing interfaces we offer to users send them important messages, whether we intend it or not. They are affordances, like knobs on doors and buttons on telephones. If the primary editing interface we present is also the visual design seen by site visitors, we are saying: “This page is what you manage! The things you see on it are the true form of your content.”
The best solution isn’t to build tools that hide that complexity from the user, that make them think that the styling they’re adding to the desktop site is the “real” version of the content. Instead, our goal should be to communicate the appropriate complexity of the interface, and help guide users to add the right structure and styling.
The era of “desktop publishing” is over. Same goes for the era where we privilege the desktop web interface above all others. The tools we create to manage our content are vestiges of the desktop publishing revolution, where we tried to enable as much direct manipulation of content as possible. In a world where we have infinite possible outputs for our content, it’s time to move beyond tools that rely on visual styling to convey semantic meaning. If we want true separation of content from form, it has to start in the CMS.
- Magic Numbers and Progressive Enhancement
Chris Coyier explains Magic Numbers:
Magic numbers in CSS refer to values which “work” under some circumstances but are frail and prone to break when those circumstances change. They are usually always related to fonts.
Many good examples in that post, and in the comments, but the one that stood out for me was Chris’ attempt to flank a heading with horizontal lines:
In a recent post Line-On-Sides Headers, I used a line-height value that was a magic number. Let’s say you used the technique around text with a fancy @font-face font. Let’s say that font doesn’t load or the user overrides it or the page is being viewed in a browser that don’t support @font-face. The fallback font will load, and that fallback font might have drastically different sizing than the custom font. The lines on the outside of the fallback font are now awkwardly placed, not centered like we wanted.
Of course, I don’t need to tell Chris (he was only trying to illustrate a technique and its shortcomings), but it bears mentioning whenever I get the chance: progressive enhancement is part of typography now. First, style text in a generic way (like, without flanking horizontal lines). Then, if the fonts you intend are active, use WebFont Loader (or Typekit font events) to follow up with rules that depend on the presence (and the dimensions) of those fonts.
- Even Better In-Browser Mockups with Node.js
Designing in the browser has all sorts of benefits, like producing more accurate, comprehensive results and removing the extra step of converting from image file to markup and CSS. But even sites designed in a browser still require pasting in content, faking interactions with the server, and creating placeholder JavaScript that isn’t usable on the live site.
Wouldn’t it be nice if we could go from just designing layouts and interactions to designing the whole client side of the application during the same process?
This is where Node comes in.
Node.js is a server-side JavaScript platform. It isn’t a web server, but it allows you to easily create one. It also lets you create utilities that run on web servers, like setup and minification utilities and general-purpose command line tools.
Node started in 2009 and generated considerable interest, probably because it gave JavaScript developers an opportunity to write server-side code even if they lacked a server-side background. It didn’t hurt that Chrome had established a reputation for being solid and fast, and Node used its V8 engine.
Today, it’s possible to run production servers on Node, and many people are doing so successfully. Taking it that far, however, is an investment. The Node project, and all the community-created modules that make it so awesome, is still a moving target. But even if you’re not ready to write and launch entire sites with Node, it’s plenty stable enough to use as a development tool.
It’s JavaScript, so if you can wire up a jQuery event handler, you can write a web server. It’s lightweight, so you can run it on your laptop and keep streaming music in the background. It’s dead simple to download, set up, and build in, so you don’t need the esoteric knowledge of an IT support person to get going with it. And the payoff is that instead of mockups and hard-coded data, you can design a set of client-side assets, page templates, and data schemas that are ready to launch to production.
Getting started
Installing Node locally for the most common environments is a piece of cake. You can download installers that include Node as well as npm, its package manager, from the project’s site. Installing it on a remote server is not quite that easy, but good documentation is available to help you out. After running through the installation process, you should be able to go to your terminal or command line and test it out.
If you don’t tell Node to run a specific file, you get a Read-Eval-Print Loop, or REPL. If you type
nodein your terminal or command prompt, you can begin to execute arbitrary JavaScript. For example, after starting the REPL, typevar a = 9;. The REPL will respond with undefined. Now typea * 3(or any other number) and it will respond with the correct result. You can make things more interesting by defining a function and then calling it:> function sayHello( name ) { return “Hello, “ + name; } undefined > sayHello( “A List Apart” ); ‘Hello, A List Apart’To break out of the REPL, or end any other Node execution (like a running web server), press Ctrl+C. In the case of the REPL, you’ll need to press it twice to confirm.
While it’s nice to know Node can perform basic arithmetic and string concatenation, its value to us as developers is in running programs. You can see an example of one such program, a basic web server, on the project’s homepage. They suggest creating a file called
example.jswith this code:var http = require(’http’); http.createServer(function (req, res) { res.writeHead(200, {’Content-Type’: ‘text/plain’}); res.end(’Hello World\n’); }).listen(1337, ‘127.0.0.1’); console.log(’Server running at http://127.0.0.1:1337/’);This makes use of only one module, the core module
http. As you can probably guess, thehttpmodule contains all the basic stuff you need to serve a site over HTTP. Node contains a tightly edited collection of core modules that provide things like event handlers, file system access, and abstractions for various network protocols. But just as you probably use a JavaScript library or framework to speed up and bulletproof development on the client side, for Node development beyond a simple "Hello World" you generally add other non-core modules using npm.The
httpmodule does contain acreateServerfunction, though, which is all you need to create a bare-bones web server. In the code above, once the server has been created, it listens to port 1337 on your local machine. When it receives a request, it sends back a text response.One thing to note is that the work here is done in event handlers, as are most things in Node. The callback in
createServer()handles a connection event, which occurs every time a new client contacts the server. To start this server, typenode example.jsin your terminal, and then open a browser to http://127.0.0.1:1337. This triggers the connection event, and you should see the message in the callback.To obtain any serious value from a Node server—even one not intended to ever go to production—it’s best to get familiar with the modules in npm. There are thousands available, but those you’d need to create a basic web application are some of the oldest and most stable, so don’t feel obligated to research them all before getting started. One that definitely comes in handy for designing an application is Express, an uncomplicated web application framework.
If you’re accustomed to installing open source projects by cloning a GitHub repository or downloading a zip file, you’ll probably enjoy npm. To install Express with npm, for example, go to your terminal or command line and type
npm install express. As long as you’re online and have permission to write to your machine, this fetches all the code and assets Express needs to run, as well as any modules it has as dependencies. The first time you run npm from your working directory, all these elements will end up in a newnode_modulessubdirectory. Now the module is ready to be used in Node programs the same way we usedhttp, via therequirefunction.Designing applications
The ideal use case for designing your application with Node is a single-page application in which the server mostly provides data, but Node is still useful for a more traditional site. Of course, you want to begin development with requirements defined as precisely as possible, but implementation tends to expose requirements you hadn’t considered, and some of those can have a considerable impact on your timeline. Even in a server-driven application where it may not be possible to reuse data structures and templates as-is, creating client-only versions helps test your assumptions about the data you need and how you’ll use it.
If you’re developing a single-page app, the justification is much easier. You’ll need to think about optimizing your communication with the server to require as few requests as possible, which means knowing how data should be packaged up by each server endpoint and how you’ll cache the data on receipt (if at all).
An advantage of having JavaScript on the server is that templates can be rendered by the same template engine on either the client or server side. This allows you to experiment on both sides and optimize for your situation. It’s also a timesaver to render the templates with JavaScript objects and consider only the way data must eventually be grouped (not how it’s stored in a database). Designing these groupings of data is the bulk of the work we can do with Node toward the end of what we traditionally consider application design.
Piecing together each page from disparate parts from all over the server is messy for an application in any language. Instead, whatever renders a page should have clear dependencies, and the result of each page or data request should combine those dependencies into a cohesive and sensibly organized unit.
If you’ve worked in a server-side framework in which a page or view is tied to a single object or model, and where additional data is imported and exposed in a different way, you probably understand how the alternative gets to be a nuisance. You’re probably also aware that the solution is a good view-model whose data is defined by each view, not the models that feed it. With this exercise, we aim to map out what goes in those view-models.
Using templates
There’s a strong likelihood that your production server does not run JavaScript, so you may end up converting templates you produce in this design phase. You could attempt to mitigate this by choosing a template engine like Mustache with existing parsers for a huge list of languages. Or you might choose one with minimal logic available (I find that the only things I want for a truly flexible template are conditionals, loops, and partials) and the option of changing the delimiters around the template tags to agree with your server template language. I’d argue that the process of getting all the data correctly placed in your HTML is a lot more difficult than doing a find and replace on the end result, so creating a template in JavaScript that you can use easily is time well spent even if it can’t be parsed by your production server.
You could choose to design the UI of your pages using hard-coded mockup data first and add the template tags afterward, or you could start with a template and some mockup data ready to go in your Node server. Even though it’s an extra step, I find the former easier, because the latter tends to require extra shifting of the mockup data. Starting with hard-coded data lets me examine the finished mockup and see what kinds of "objects" are present (e.g., a user, an item for sale, or a status update). That helps me create a flexible object hierarchy in my data more easily. But you may be naturally amazing at creating object hierarchies, so, by all means, do what you feel.
Wherever you begin, hammering out your templates should give you an indication of which parts of each page are dynamic and which data each requires. If subsections of your pages are rendered separately because they’re reused on different parent pages or because they’re also rendered by the client, converting your markup to templates also allows you to find the right balance between never repeating code and having absurdly tiny templates.
Real fake server interactions
If you’ve created high-fidelity wireframes that run in a browser, you know the annoyance of having only parts of a page be interactive, since every click means having to create a new view (even if you have a series of items that share the same behavior when clicked). You also know about copying and pasting the same data into multiple places, and updating each of them separately if the manner of presenting data should change. Designing your app with a server behind it removes those frustrations.
With the support of a server, it’s not a problem if the same data shows up in different displays all over the workflow you’re designing. Since the data lives on your Node server, you can write it once and reuse it as many ways as you like. You still have to consider how you’ll move it from server to client, though. When a user clicks on one of many items in a list, will she be taken to a new page, or will more data appear inline? Is the former the non-JavaScript fallback for the latter? Working that out for your app will tell you which endpoints the server needs, and which parameters need to be sent to it in query strings, form posts, or URLs. It’ll also help define the API for those requests, telling anyone who might work on your production server which keys you expect to correspond to which pieces of data.
Having a server to work with is especially nice if you’re in the business of making asynchronous requests. Obviously, you can get your mockup data, which is excellent, but you can also lazy-load assets like templates or stylesheets to consume that data. Testing the process of getting data and assets to the client validates your assumptions about not only the way you’re packaging them, but how you’re storing and structuring them. And, of course, it means a lot less wasted client-side JavaScript.
A mockup you can use
The end result of all this should be that you’ve moved all the mockup pieces out of your client-side JavaScript and HTML. You have a Node server that might not match your production framework, but does have clear definitions of everything the client side expects to exist—possibly even all viewable in a single file. You have templates and client-side requests that may require substitutions, but also separate your data from everything else and are at minimum easily convertible to whatever format is needed for production.
Could you do the same with any other server under the sun? Absolutely. But if you already know JavaScript and aren’t aiming to become a server-side developer, it makes sense to use the skills you already have. Node makes that pretty easy, while also letting you dig as deeply as you want into more complex servers, should your ambitions change. It’s simple to get going and flexible to extend, making Node an awesome tool for designing applications.
Ready to take your new Node skills for a spin? In “Node at Work: A Walkthrough,” I’ll take you through a live demo, and get specific about how to refine your own mockups.
- Node at Work: A Walkthrough
In my first article, “Even Better In-Browser Mockups with Node.js,” I explained why Node.js makes designing applications easier and more efficient, and how to get started. Now it’s time to see your new design process in action.
Rather than figuring out all your requirements and API schemas just to design your comps with mockup content hard-coded and server interactions faked—only to throw it all away when you go back and implement things “for real”—you can use Node.js to skip the hard-coding and produce client-side code that’s ready for beta at the end of the design stage.
The process looks a lot like good ol’ designing in the browser, but with more JavaScript and an additional layer:
- Design the layout and styling
- Convert the markup to a JavaScript template
- Create an initialization function
- Create a simple Node.js server
- Add a mockup data object to the server
- Add server functions to serve static pages and JSON
- Request and consume the JSON on the client
Sound daunting? Don’t worry. The first step takes approximately a zillion times longer than any of the others. So if you’ve already mastered the design, you’ll find the rest of these steps more than manageable.
In this walkthrough, we’ll build a feature for a mock art store. If you want to follow along at home, you can clone my GitHub repository. (If you need help installing, see the README, or just take a peek at the live demo—I’ll cover all the steps and code below.)
Creating templates
Once you have a solid design and the markup to accompany it, converting it to a template you can use for all examples is more efficient than creating duplicate markup for each one. The hard part’s over; you already thought about where data points would be used in the design when you created it. With those choices fresh in your mind, go back and mark up your HTML with data in whatever template language you prefer.
For my example, I’m using a store selling art prints. Here’s a snippet of my initial markup:
<h2>Two Acrobats with a Dog</h2> <h3>Pablo Picasso</h3> <img src="img/102.jpg" alt="Two Acrobats with a Dog" class="active" /> <ul class="info"> <li>8" x 11"</li> <li>acid-free paper</li> <li>suitable for matting</li> </ul> <span class="price">$49.99</span>Think of your templates as places to define your requirements for both data and its formatting on the client side. If you can also reuse it for client-side rendering, that’s awesome—but that may not be relevant to your application. As long as you have good data, converting from one template language to another is trivial, so don’t agonize over which template engine to use.
You do need a template engine that will work in both the browser and Node.js, however. If you’re unsure, search for your template engine on GitHub and verify that there’s a guide to installing it via npm in the manual, as well as a minified script for use on the client. I prefer doT.js, so here’s that snippet again marked up to add data using doT:
<h2>{{=it.title}}</h2> <h3>{{=it.artist.name}}</h3> <img src="img/{{=it.id}}.jpg" alt="{{=it.title}}" class="active" /> <ul class="info"> {{~it.info :info_item}} <li>{{=info_item}}</li> {{~}} </ul> <span class="price">{{=it.price}}</span>I like to save my templates in their own directory at the same level as my JavaScript directory, so now I store that as
tmpl/detail.dot.Initializing the client
Since we want to be able to use our templates in both Node and the browser, they need to be stored outside of the HTML and loaded and compiled when we open the page. To start, save the minified version of your template engine and add a script tag to your page to include it. Once that’s done, you can fetch the template, compile it, and then continue on with any other initialization work in your main JavaScript file. I’m using jQuery in my example, so my code looks like this:
var detailTmpl; $.when( $.get( "tmpl/detail.dot", function( tmpl ) { detailTmpl = doT.template( tmpl ); }, "text" ) ).then( init );That mysterious
initfunction? That’s where I’ll put any interactivity I want to add to my currently static mockup. For the moment I’m only creating one interaction, so myinitfunction is pretty simple:function init() { $( "div.content" ).on( "click", "div.result", showDetail ); }This code can be made much more elegant using Require.js with its text plugin. That’s beyond the scope of this demo, but I highly encourage it for production.
We’ll handle template rendering in
showDetail(), but we have to add a server and data store before writing that function, since right now we lack any data to render.Creating a server
If I reload my page now and open the browser console, I get a JavaScript error. That’s because I’m trying to load my template via an XMLHttpRequest (XHR) on a page being served from the file system, in violation of the same origin policy. I can’t even check that my template works until the page is served properly (i.e., from a server).
To whip up a simple Node server that allows me to run my XHRs, I do a few things:
- Move all my existing assets into a new subdirectory called
public - Open my terminal or command line to my working directory and run
npm install express - Add a server.js file to the working directory
We could write everything from scratch, of course, but it’s more work than is necessary for a basic server. The Express framework provides a number of abstractions of server and application concepts. For the initial version of the server, the only one we’ll need is its ability to serve static resources. We can use it by adding four lines of code to
server.js:var express = require( "express" ), app = express(); app.use( express.static( __dirname + "/public" ) ); app.listen( 3000 );Once you start your server by typing
node server.jsin your open terminal or command line, you can view your page at http://localhost:3000 (adding a filename if necessary), and the error related to loading the template ought to disappear.Adding server-side data
While it’s certainly nice to be able to use XHRs, we’re creating the Node server to use it as a representation of the real server—and real servers store data. Though it’s not hard to create a data store that works with a Node server, it’s even less difficult to create one big object literal. For a mockup, that’s all we really need. One of the goals here is to define the data objects we need to support in our new design, so the format of this object can be determined by the template we just added. For my example, I need an object structured something like this:
var products = { "102": { id: 102, title: "Two Acrobats with a Dog", artist: { name: "Pablo Picasso" }, price: "$49.99", info: [ "8\" x 11\"", "acid-free paper", "suitable for matting" ] } };Note that
productscould just as easily be an array, but I want to be able to quickly find my products—once I have more than one in my fake data store—by ID. Aside from that little twist, the data look exactly like the content hard-coded in my original HTML. If I want to add more data, including things that might break the layout in unpredictable ways, I can just copy this structure and make substitutions. Well, almost.Returning data from the server
If you’ve dealt with other server-side frameworks, creating endpoints for XHRs might seem intimidating, but Express makes it really easy. We don’t need any special setup to define a server endpoint as a target for asynchronous requests. All we have to do is define the path on the server where we want to accept requests and a callback. The callback receives a request object (for doing things like getting passed-in data) and a response object (for defining what we return to the client). To return the data in my products object, I add a few lines of code at the bottom of server.js:
app.get( "/detail/:id", function( req, res ) { res.send( products[ req.params.id ] ); }); app.listen( 3000 );See? Easy. If I restart my server and go to http://localhost:3000/detail/102, I should see my object data. To break down what’s going on with the ID in the path, we’ve named the data at that position in the path "id" with the
:idbit, and it then becomes available as a property ofreq.params.The names and positions of parameters are up to us, and if our path were super complex, we could also use regular expressions to split out multiple pieces of data. Express also gives us the option of accepting data from the query string or from a POST. Of all the pieces we’re creating, however, the paths are the most likely to change in production, so it’s to our advantage to keep them as readable as possible.
Besides sending pure data to the client, we also want to be able to send rendered HTML, in case a user is linked directly to a product detail or doesn’t have JavaScript available. We might also want HTML for our own consumption via XHR, if we find that client-side rendering is slowing us down. So we add a second endpoint below the one we just created to do that:
app.get( "/product/:id", function( req, res ) { res.render( "detail", products[ req.params.id ] ); });For simplicity’s sake, and because the first path served JSON for an overlay while this provides a full page, I’ve used a different pathname, but kept the same pattern. This time, instead of the response’s send function, I use
render(). Express provides some magic to make template rendering work out of the box, but since I’m using doT instead of Jade (the default template engine of Express), I have to do some additional setup.First I have to go back to the terminal or command line, stop my Node server, and install my template engine using
npm install doTand the consolidate module (which provides Express compatibility for a number of popular template engines) usingnpm install consolidate. Now I’ve got both of those in mynode_modulesdirectory and can use them inserver.js.Since doT (and probably your template engine of choice, as well) is accessed through consolidate, consolidate is the only additional module I need to require at the top of
server.js:var express = require( "express" ), app = express(), cons = require( "consolidate" );I want to continue serving some of my other pages statically, so I add my template configuration stuff below the existing
app.useline in my code:app.use( express.static( _dirname + "/public" ) ); app.engine( "dot", cons.dot ); app.set( "view engine", "dot" ); app.set( "views", _dirname + "/public/tmpl" );Those three new lines set doT (as exposed by consolidate) as the view engine, register files ending in
.dotas templates, and tell Express to look in/public/tmplfor templates to use. So when Node seesres.render( "detail", { ... } ), it knows to expand"detail"to/public/tmpl/detail.dotand render it as a doT template. Now I can restart my server, go to http://localhost:3000/product/102, and see my template rendered statically, without creating a separate server-side file.Fetching dynamic data
Our template now works as a static page, but there’s still one more step to get our mockup populated with the data from the server. Remember the
showDetailfunction from our main client-side script? It’s time to flesh that out.In my simple example, the overlay my template will populate already exists as a hidden
divon the main page, and it appears when the user clicks adivcontaining a summary of the content. This div has a data attribute storing the ID of the product that corresponds to the key and id property in my server-side data object. Once that click event happens andshowDetail()is called, I just need to do this:function showDetail( e ) { var id = $( this ).data( "id" ); $.get( "detail/" + id, function( info ) { $( "div.detail" ).html( detailTmpl( info ) ); $( "div.detail" ).show(); } }The path above is the same one I defined in
server.js. If you chose a different name for yours, use that name here on the client. When I receive the data object from the server, I pass it todetailTmpl(), the compiled version of my template. The result of thedetailTmplfunction is the HTML to populate my overlay.Onward
So there you have it! A mockup that mimics the interactions it will have with its production server precisely on the client, without the need for hard-coded data or temporary workarounds. Despite the simple exercise, the process I’ve outlined accomplishes a good deal of the setup necessary to create other workflows that require server interactions. For instance, I can fill my fake data store with more products and use that to render the initial page that triggers my overlay without having to revisit my mockup data, and my application will show the correct values in any view I add to it.
If you’d like to explore beyond just serving HTML and JSON, consider adding in Socket.io to allow real-time interaction for multiple clients or Require.js to manage your assets on the client. You could also move your CSS into templates and serve different builds of your site for different browsers or devices. Your mockup can be as sophisticated and reflect as many of its production requirements as you choose. At the end, the lion’s share of your client-side code is done and ready to use.
- Principles of Writing Consistent, Idiomatic JavaScript
» Principles of Writing Consistent, Idiomatic JavaScript
If you’re looking for a thorough JavaScript style guide for your team, Rick Waldron’s Principles of Writing Consistent, Idiomatic JavaScript is a great place to start. - Breakpoint: Really Simple, Organized, Media Queries with Sass
» Breakpoint: Really Simple, Organized, Media Queries with Sass
Breakpoint is a Compass extension designed to simplify the creation and management of media queries. - Unheap: A Tidy Repository of jQuery Plugins
» Unheap: A Tidy Repository of jQuery Plugins
A nice-to-look-at, easy-to-use reference library of jQuery plugins.
℅ @candicodeit - The W3C on Web Standards: Digital Publishing and the Web
Electronic books are on the rise everywhere. For some this threatens centuries-old traditions; for others it opens up new possibilities in the way we think about information exchange in general, and about books in particular. Hate it or love it: electronic books are with us to stay.
A press release issued by the Pew Research Center’s Internet & American Life Project in December 2012 describes an upward trend in the consumption of electronic books. The trends are similar in the UK, China, Brazil, Japan, and other countries.
“…the number of Americans over age 16 reading eBooks rose in 2012 from 16 to 23 percent, while those reading printed books fell from 72 percent to 67. …the number of owners of either a tablet computer or e-book reading device such as a Kindle or Nook grew from 18% in late 2011 to 33% in late 2012. …in late 2012 19% of Americans ages 16 and older own e-book reading devices such as Kindles and Nooks, compared with 10% who owned such devices at the same time last year.”
What does this mean for web professionals? Electronic books represent a market that’s powered by core web technologies such as HTML, CSS, and SVG. When you use EPUB, one of the primary standards for electronic books, you are creating a packaged website or application. EPUB3 is at the bleeding edge of current web standards: it is based on HTML5, CSS2.1 with some CSS3 modules, SVG, OpenType, and WOFF. EPUB3’s embrace of scripting is sure to encourage the development of more interactivity, which is sought after in education materials and children’s books.
Recently W3C has been working more closely with digital publishers to find out what else the Open Web Platform must do to meet that industry’s needs.
One comment we’ve heard loud and clear is that people care deeply about centuries-old print traditions. For example, Japanese and Korean users have accepted that many websites display text horizontally, from left to right. While that may be ok for the web, when these users read a novel, they expect traditional layout: characters rendered vertically and from right to left. Japanese readers often find it more tiring to read a long text in any other way. To address these requirements, W3C is looking at the challenges that vertical layout poses for HTML, CSS, and other technologies; see for example CSS Writing Modes Module Level 3.
Requirement of Japanese Text Layout summarizes the typesetting traditions and resulting requirements for Japanese. These traditions should eventually be reproduced on the web as well as in electronic books. In June, W3C will hold a digital publishing workshop in Tokyo on the specific issues surrounding internationalization and electronic books.
We have also heard that the “page” paradigm—including notions of headers, footnotes, indexes, glossaries, and detailed tables of contents—is important when people read books of hundreds or thousands of pages. Web technology will need to reintegrate these UI elements smoothly; see for example the CSS Paged Media Module Level 3 (Joe Clark talked about paged media and the production of ebooks in 2010, and Nellie McKesson gave us an update in 2012). In September in Paris, W3C will hold a workshop on the creation of electronic books using web technologies. Note that both this and the Writing Modes Module are still drafts and need further work. That means now is the right time for the digital publishing community to have its voice heard!
In the realm of metadata, important to publishers, librarians, and archivists, the challenge is to agree on vocabulary (and there are many: Harvard’s reference to metadata standards is only the tip of the iceberg). Pearson Publishing recently launched the Open Linked Education Community Group to examine creating a curated subset of Wikipedia data that can be used for tagging educational content.
Here are a few other places to look for activity and convergence:
- People take notes in books and highlight text. Most ebook readers these days have built-in support for these features, but they are not widely deployed on the web.
- Today search engines tend to ignore electronic books; I expect that will not remain the case for long.
- “Offline mode” in web technology is still difficult to use if you try to access more than a single page of a site. Since an ebook is quite often a packaged website, ebook offline mode will need to improve to support browsing.
- ebooks business models are likely to drive new approaches to monetization, some of which may be found in native mobile environments but not yet on the web.
Although publishing has some specific requirements not common to the web generally, I think that the distinction between a website (or app) and an ebook will disappear with time. As I have written before, both will demand high-quality typography and layout, interactivity, linking, multimedia, offline access, annotations, metadata, and so on. Digital publishers’ interest in the Open Web Platform is a natural progression of their embrace of the early web.
- One Less JPG
» One Less JPG
Before you go worrying about how to minify every last library or shave tests out of Modernizr, try and see if you can remove just one photo from your design. It will make a bigger difference.
℅ @rupl - Scott Berkun Speaking at AEA: The Five Most Dangerous Ideas
In this 60-minute video from An Event Apart Boston, Scott Berkun tackles designer disempowerment. He discusses how power actually works, and why developing salesmanship skills is a must, even if your job isn’t public-facing.
- David Sleight on New-School Publishing: Passing On Our Rights
Last month, a U.S. District Court handed down a decision that’s pretty awful if you care about consumer rights and digital content.
It all started in 2011, when a company called ReDigi launched a service to let folks resell their unwanted iTunes purchases—the digital equivalent of unloading your old vinyl at a swap meet. This annoyed the legal department at Capitol Records enough that they sued ReDigi in federal court to stop it. Unfortunately for consumers, Capitol Records succeeded. This isn’t just bad news for ReDigi though. What’s really troubling is the court’s take on current copyright protections.
The ReDigi case
When it comes to the CDs, DVDs, and paper books you own, U.S. law is clear. A legal concept called the first-sale doctrine establishes your right to sell them to another person, provided you’re handing over the item you originally bought, and that you didn’t make any copies. That’s the idea behind garage sales, swap meets, and Craigslist. As repeated by the court’s own decision in the ReDigi case, first-sale doctrine states:
“The owner of a particular copy or phonorecord lawfully made…, or any person authorized by such owner, is entitled, without the authority of the copyright owner, to sell or otherwise dispose of the possession of that copy or phonorecord.”
That “owner” is you. The “copyright owner” is the record label, movie studio, or publisher. They make it. You buy it. You can sell it to somebody else if you don’t want it anymore. Simple. But according to this court, you don’t have that right if you send that movie, song, or book over an electronic network when you resell it.
Wait a minute. How’d that happen?
In the district court’s view, any transfer that takes place via the internet creates a reproduction of the work on the receiving machine, a new physical object that is “embodied” on the buyer’s hard drive. And that constitutes an illegal copy. In the judge’s own words:
[W]hen a user downloads a digital music file or “digital sequence” to his “hard disk,” the file is “reproduce[d]” on a new phonorecord within the meaning of the Copyright Act. Id.
This understanding is, of course, confirmed by the laws of physics. It is simply impossible that the same “material object” can be transferred over the Internet. Thus, logically,… the Internet transfer of a file results in a material object being “created elsewhere at its finish.”
Yeah, you read that right. According to this decision, electronic transfers generate a new “material object” on the receiving device. In legal terms, that’s a copy, and a violation of copyright law.
Even when products like ReDigi’s take reasonable measures to remove the file from the seller’s hard drive as it’s transferred, the court says it doesn’t count. Because I can’t physically hand you the original item over an electronic network, they say all bets are off.
The implications
This creates a world where we’re barred from ever transferring digital goods we own to another person if we use an electronic network. Insert internet, lose first-sale rights. The jury is still out on whether this interpretation really works from a legal standpoint. The scope of court decisions on copyright are typically papercut-narrow and excruciatingly literal. But the U.S. District Court for the Southern District of New York isn’t really the one causing all the trouble here. The main culprit is the law itself.
The copyright law at play in Capitol Records v ReDigi predates the digital world by decades, and still talks about usage rights strictly in terms of “material objects.” It doesn’t recognize a difference between photocopying a printed book and reconstructing one from a set of bit-flipping instructions. The letter of the law hasn’t caught up with the reality we live in. Right now it’s Zoolander smashing a tangerine iMac, hoping a bunch of paper files spill out.
That might not seem like a big deal now. But outdated laws aren’t just discordant with the times, they’re minefields filled with unintended consequences. Just think about your web browser. Anyone want to chat with the district court about the “material objects” a typical browser cache leaves on your hard drive? Unless you feel like upending some of the basic mechanics of the internet, I’d rather you didn’t.
And what happens as we shift to a future where the majority of our access to content is digital? Will we see the shuttering of all secondary resale markets? Who gains and who loses from that? If I can’t transfer the digital goods I own over the network, what happens when I die? Will my executor have to ship my hard drive to my next of kin because she couldn’t transmit its contents to them without risking legal action?
Fixing this mess
So far we’ve largely ducked these questions by letting content companies push us toward rental/lease models online, where we constantly pay and repay for content without enjoying full rights of ownership. That’s okay for some things. But by ignoring the bigger picture on ownership, we leave ourselves open to even further reductions in the consumer rights we’ve enjoyed for decades on movies, music, and books. We need to avoid a world where the only right we have left is the right of refusal.
Fixing the language of creaky old laws takes legislators, not courts. But we can do better than just petition Congress to drag copyright into the current century. We can set the standard ourselves. As entrepreneurs, developers, and technologists building products around digital content, we can incorporate progressive terms into our services. We can choose to grant users better rights than current law permits by default. We don’t have to sit around waiting for the next ReDigi case to tell us how to treat our customers. We can, and should, do better than that.
The first-sale doctrine needs to be defended in the digital space. We need acceptable, liveable standards for ownership of digital goods, and we can start building them now.
- It’s not a web app. It’s an app you install from the web
» It’s not a web app. It’s an app you install from the web
The makers of Forecast.io struggle to explain the concept of "installing" web apps. (Spoiler: They succeed.)
℅ @paul_irish - Cennydd Bowles on UX & Design: Hellish Other People
Childish, inaccurate, bizarre, and condescending? Perhaps—but you can’t just ignore articles like that. Tomas Chamorro-Premuzic’s Seven Rules for Managing Creative People1 has caused some serious ripples. The article sets lofty standards for missing the point, misrepresenting creative industries to the point of infantilization. At its nadir—“Creatives enjoy making simple things complex, rather than vice versa”—it ranks among the most baffling things ever written about creativity.
Commenters have heaped scorn on poor Chamorro-Premuzic, to the extent that I must almost apologize for adding to the criticism. But I’m intrigued by the views that prop up articles like this. Why do these misconceptions about creative work persist in an era of supposed innovative enlightenment?
The premise that underpins this and many similar articles is that creativity is a binary property: some people are blessed (or cursed) with it, others aren’t. This establishes a subtle, unwelcome construct. Creative types are “The Other”: fundamentally irregular people who don’t quite gel with the rest of society (“The Same”). Indeed, what it means to be Same is usually defined in part by not being Other.
While the language of Otherness is sometimes a deliberate tool of oppression, more often it reflects the unthinking bias of the speaker and era. Chamorro-Premuzic’s framing of creative people as The Other is no doubt unintentional. But the archetype is clear nonetheless.
Never, ever, ever let them call you a “creative”. It’s a way to be disenfranchised. You are a designer. It’s not magic, it’s a trade.
— Mike Monteiro (@Mike_FTW) April 7, 2013On this stage, Chamorro-Premuzic plays the role of ethnographer. Having observed creative people in their natural environments, he uses the article to MBAsplain their aberrant behavior. Rather than recognizing the diverse individuality of creative workers, the author describes them as a homogenous group primarily defined by weakness—a motif that echoes throughout the history of Otherness.
Chamorro-Premuzic’s creative Other is self-centered and unable to play well with peers. He is “moody, erratic, eccentric, and arrogant.” He is unable to properly explain his process. His motivations are bizarre: money doesn’t matter to him, which at least gives you an opportunity to stiff him on pay. His neuroticism and narcissism make him a poor leader: that’s best left to the Sames.
Thankfully, the premise is flawed. Creativity is not a binary ability but a muscle that needs exercise. There is no Same and Other, no us and them; everyone has creative capacity. Personality, environment, and other pressures of life mean that some people do have less creative experience, but with simple tools—a pencil, a guitar, a hobby—it’s not hard to reverse the atrophy.
Modern creative work demands diverse perspectives. To suggest instead that it emanates from the abracadabras of an eccentric elite does a disservice to all parties. The article argues that companies should pass “trivial or meaningless work” to the clock-watchers who lack intrinsic motivation. In other words, some people are best handling the drudgery, while the unmanageables get the rewarding work to keep them quiet.
This situation, dare I say, could use some creative thinking. It can’t be healthy to encourage a cycle of disinterested employees and futile effort. Better to look closely at user needs, explore ideas that address them, and build a team that is inspired by those goals. Then no work should be meaningless.
So how can we counter the assertion that creative workers think and behave the same? By highlighting the diversity of our personalities and methods.
Both Mark Boulton and Chris Coyier have recently written about their introversion and how it affects their creative approaches. These are important, refreshing viewpoints, and no doubt many readers will identify with them. I too have noticed the subtle assumptions some people make about creative workers. Extraversion and arrogance are often presupposed.
Earlier in my career, bosses and peers encouraged me to use collaborative, extravert-friendly tools like design games. I never felt particularly comfortable with them, but persisted, believing them to be techniques that designers were meant to enjoy.
I’ve since realized these aren’t the right tools for me, at least for today. I’m more comfortable working with trusted teammates in managed environments, delving into people’s expectations, and exploring initial concepts alone. It was a relief to free myself from the process expectations of others, and I believe my results testify for my new approach.
After the lashing the article received in the comments, perhaps Chamorro-Premuzic will pause to reflect on his opinions. Perhaps the Harvard Business Review will also look more closely at its editorial policy, and consider whether it fell a little out of step with its audience. But there will be plenty more articles that treat creativity like a disorder, and more executives who brand creative workers as vain and immature.
With diversity issues rightly making headlines in our industry, we should also rejoice in the multitude of personalities and approaches that make up our disciplines. We are, of course, the best placed people of all to counter harmful stereotypes. Only variety can break us out of the Otherness box.
- Look, you're getting very upset, and this is just the first scene.
io9: "After making a mere $84 million at the U.S. box office, Star Trek Into Darkness is considered by some to be a disappointment. Perhaps the problem is that it was a touch confusing. To help our readers better understand it, we've compiled and answered these Frequently Asked Questions about the movie." (Maximum Possible Spoiler Warning)
- The emptiness went on and on. Both feet left the ground.
I know how much can be at stake when a man takes a four-hour walk: Everything. The incomparable Gary Smith relates the tragic tale of 2004 Olympic hopeful Albert Heppner.
Much of Gary Smith's writing is available free in the SI Vault. - Watch Modern Artists Use Ancient Techniques
For the past three months, the Art Institute of Chicago has been putting their Launchpad videos, designed to provide more context of museum-goers at the Institutes, on YouTube. The short videos include modern artists recreating art using ancient, medieval, and newer techniques in mosaics, glassblowing, pottery, painting, silversmithing, marquetry, and coin production plus conservation of art. There are also a few videos focusing on individual pieces in the collection.
- Art. Weird art. Funny art. Just check it out.
- It won't be long now.
"Every teenager out there feels invincible. And they'll never admit it. It's not the kind of invincible like Superman. It's the kind of invincible like - I'll see you in five months." [20-minute YouTube documentary by SoulPancake.]
At age 14, Zach Sobiech (previously) was diagnosed with bone cancer. Given months to live, he turned to music to say goodbye. Zach's song "Clouds" received 3 million hits, and inspired a celebrity cover video featuring dozens of actors and musicians. Zach died today at his home in Minnesota. He was 18. - 'workers who are "flexible"—that is, dispensable'
"Everyone Only Wants Temps" - My stint doing "on demand" grunt work for one of America's hottest growth industries
It's not a pretty formula, but it works. With 600 offices and a workforce of 400,000—more employees than Target or Home Depot—Labor Ready is the undisputed king of the blue-collar temp industry. Specializing in "tough-to-fill, high-turnover positions," the company dispatches people to dig ditches, demolish buildings, remove debris, stock giant fulfillment warehouses—jobs that take their toll on a body.
Part of the Economic Hardship Reporting Project - Back To The Mountain
Dance Of Reality is the first film in twenty-three years by Alejandro Jodorosky, visionary director of surreal masterpieces El Topo and The Holy Mountain, writer of the never-directed Dune film that is the subject of a new new documentary, and comics like Metabarons. Both Dance of Reality and Jodrowosky's Dune have premiered at the Cannes Film Festival. If that's too much, check out Everything Is Terrible's Holy Mountain remake made with dogs.
- ...a better strategy than Tit for Tat emerges: Tit for Two Tats (IYKWIM)
- Not in Kansas Anymore
Several Hours ago a massive tornado hit the town of Moore Oklahoma. The tornado is now being estimated by some sources to be to be an EF-5 on the Enhanced Fujita Scale. This means winds at or over 200 mph as well as a damage area of close to 30 square miles.
Excellent live coverage is being done by NBC channel 4 and the raw network feed is here.
At least two elementary schools were hit and unfortunately numerous fatalities are expected from the schools. Damage and casualties from this tornado are being compared to the disastrous 1999 Oklahoma tornadoes - And Now, A Word From Our Sponsor
- Yahoo Overhauls Flickr
- Break on through to the other side.
Ray Manzarek, keyboardist for The Doors, has died at the age of 74. Not a lot of links. Just a place to share your thoughts, your faves... and to remember.
- The weight is off his shoulders
Anthony Moore, known as Romanthony, has died at age 46.
Romanthony provided legendary vocals for Daft Punk's Discovery. The album opens with his voice, and closes with it. He helped shape the sound of house music in the early nineties and his influence is still heard in electronic music today.
. - Old photographs of Greece, taken between 1903 and 1920
59 marvelous photographs taken between 1903 and 1920 by Frédéric Boissonnas (1858-1946), a franco-Swiss photographer who loved Greece. This is him being hauled up to the Meteora monastery in a net. Boissonnas was also a mountaineer and was the first to scale Mt. Olympus successfully in 1913. During the first 30 years of the 20th century he became the most influential photographer in Greece, between the two World Wars. Traveling extensively, landscapes, everyday people and life in Greece were photographed in detail for the first time.
Captions in English for those who do not have Google page Translate:
1. Athens, Plaka, 1920
2. Parthenon, 1908
3. Sheep under the Acropolis, 1903
4. View of the Acropolis from the thiseio, 1920
5. Street, Athens Athena, 1920
6. Athens, Ermou 1920
7. Kifissia, 1920
8. Andritsena market, 1903
9. Andritsena, interior house, 1903
10. Men in the way of Andritsainas 1903
11. Crete, smooth, 1911
12. Crete, home interior, 1911
13. Crete, the brothers Mandaka village Laki 1911
14. Crete, interior house in village of Lakki, 1911
15. The picking of the olives in Crete Prevelis, 1911
16. Crete, courtyard house, 1919
17. Meteora, Magadha, 1908
18. Meteora, climb FRED BOISSONNAS with basket, 1908
19. Zemeno Corinth family priest 1903
20. Zemeno Corinth, Fred and Daniel clink glasses with the drivers of their animals, 1903
21. Family at Zemeno Corinth, 1903
22. Zemeno Corinth, the family of the priest 1913
23. Extreme, courtyards 1903
24. Dale Arcadia, 1903
25. Athos, the Great Lavra, 1929
26. Athos monastery of Vatopedi, 1929
27. Itinerary to Mount Athos, 1928-1930
28. Itinerary to Mount Athos, 1928-1930
29. Kerkyra on super, 1903
30. Gastoyri Corfu, the source of the Empress Elizabeth, 1903
31. Celebrations in Corfu Gastoyri, 1903
32. Olympus, the "Pantheon", 1914
33. Olympus camp fodder, 1914
34. KOKKINOPOULOU, minor, 1913
35. Shepherds at the top of Parnassus, 1903
36. Amorgos, women, 1911
37. Mill on Maroneia 1911
38. Ios, the grave of Homer 1918
39. Edessa, 1908
40. Musty Kastoria, inside the mansion, 1911
41. Macedonia, winnowing, 1911
42. Macedonia, sentry outpost in 1913
43. Men and dogs in the street Ioannina Preveza, 1913
44. Delvinaki Ioannina notables 1913
45. Kavalari Zagoria, lad, 1913
46. Metsovo, 1913
47. Metsovo, on tap, 1913
48. Baya (Gardens) Zagoria woman 1913
49. Konitsa Mesogefyra, 1913
50. Mesogefyra Konitsas, villagers 1913
51. Ioannina, the lake with the castle, 1913
52. The bridge of Arta, 1913
53. Parga, 1913
54. Paramithia, butchers, 1913
55. Paramithia 1913
56. Paramithia house Riga, 1913
57. Castri Preveza Priest in war-ravaged church, 1913
58. Filiates, country, 1913
59. Filiates, country, 1913
More photographs by Fred Boissonnas in the Corbis archive | in Wikimedia Commons | in Luminous Lint | on Corfu Benitses | VM designblog Global | on FaceBook.
A collection of his work to be viewed in real life can be found at the Photography Museum of Thessaloniki
Not a single car in sight. - Do white people have a future in South Africa?
"In the past inequality in South Africa was largely defined along race lines. It has become increasingly defined by inequality within population groups as the gap between rich and poor within each group has increased substantially." Is this what's led the BBC to report a growing sense of insecurity among poor (chiefly Afrikaans-speaking) whites? Or are they just blatantly misreading the statistics?
The Australian Protectionist Party last year went so far as to call for the ree-stablishment of sanctions against the South African government for the "increasing disadvantage and persecution" of Afrikaans speakers and other white minorities, not only for the color of their skin but for their language - and the perceived persecution of Afrikaans culture and language has been the cause of past violence. - Can I eat this?
- "Screw cardinals."
- Tom Scharpling's Lost Weekend
"YOU SOLD ME OUT AND SHATTERED MY DREAMS TONIGHT; ALL I WAS LOOKING FOR WAS 75 MINUTES OF ONE OF YOUR PEERS' TIME" It started when Tim Heidecker (previously) tried to set up a creative meeting between an old friend—Tom Scharpling (previously)—and an unnamed "high profile player" at the Adult Swim TV upfronts. But then the meeting fell through.
What happened next was a harrowing tale of Hollywood heartbreak; a miserable miniseries of multiple missed connections, refused credit cards, airports, abandonment, and acrimony; of broken friendships and shattered showbiz dreams. Follow the story as it unfolded in this helpful Twitter chronology (first link). - I'm not out for justice, if that's what you're thinking.
George RR Martin created the series, then let it hang around for decades without resolution. In the last couple of years however, there's been renewed interest, new novels and a screen adaption in the works. No, not Game of Thrones: Wild Cards!
Martin tells the story in five parts (5) about how he came to collaborate with authors like Walter Jon Williams, Roger Zelazny, and Pat Cadigan to create a shared world that presaged grimmer superhero stories like the Dark Knight and Watchmen.
Read lots of excerpts from the 00s Novels online.
Bonus: in case you missed role playing as Dr. Tachyon, or Kid Dinosaur, or the beloved Croyd, in the GURPS system from the 90s, a new Wild Cards game was released a few years back. - The Big News of the Week
The Royal Horticultural Society has temporarily lifted a ban on garden gnomes - normally deemed too "tacky" - at the Chelsea Flower Show. Garden historian Twigs Way charts the public's long love-hate relationship with these figurines.
- always twirling, twirling, twirling towards freedom
- What's cooler than [1965 avg. CEO pay]? The [box office sales of Jaws].
Tumblr's $1.1 Billion price-tag instinctively seems very high to most of us, but without context, numbers this huge are often literally unfathomable to the masses. To help readers gain perspective on the huge numbers commonly tossed around by the media, researcher Glen Chiacchieri has created Dictionary of Numbers, a Google Chrome extension that automatically adds context to huge numbers printed in the web pages that you read.
[via the xkcd blag] - Scott Pilgrim never used a Ukulele for a reason
- "There is no question about that."
Late Friday night, a young man named Mark Carson was killed, shot point blank, in Greenwich Village. Carson's death was the 22nd anti-gay hate crime in New York so far this year, and the fifth this month.
Carson was shot on 6th Avenue and 8th St., just blocks from St. Vincent's Hospital, which closed in 2010. He was brought to Beth Israel, about a mile away, where he was pronounced dead on arrival.
The suspect, 33 year old Elliot Morales was caught immediately after the shooting. NYPD now reports that before the shooting, Morales was seen spewing homophobic remarks at Annisa Restaurant staff and threatening to put a bullet through a bartender's forehead if he called cops.
More:
Say his name: a vigil for Mark Carson
A poignant recap of Saturday night's vigil
HuffPo: Equality's Brutal Backlash: The Murder of Mark Carson and the Rise in Violence Against Gays
HuffPo: Mission Not Accomplished: The Anti-Gay Murder of Mark Carson Should Be a Wake-Up Call
Washington Post: Being gay can (still) get you killed - from "proteaform" mass of modern learning to "faustian fustian" of words
Finnegans Wake, Joyce's famously unreadable masterpiece (read it online here), was considerably more readable in one of its earlier drafts. Watch Joyce cross out decipherable words and replace them with less decipherable ones! Watch him end, not with a whimper, but with a slightly less impressive whimper! Sadly, Shem's schoolbook, which in the finished version is a House of Leaves-esque compendium of side columns and footnotes, was not written until much later (according to the footnotes of that section). The introduction to this draft by David Hayman, who assembled it, is worth a read.