Doug Schepers (Vectoreal)Justice in the End

Some of my international friends have asked what the recent death of Supreme Court Justice Antonin Scalia means for America, for our process, and for the election. I couldn’t fit it into a tweet, so I thought I’d share my understanding and opinions here. I don’t have any great insights or expertise, but I hope this is useful for those who haven’t delved into the peculiarities of US government and law.

The death of Justice Scalia leaves a seat open in the Supreme Court of the United States (SCOTUS), the third branch of government (the Judicial branch); the other two branches are Congress (the Legislative branch, comprised of the House and Senate), and the Presidency (the Executive branch).

The Supreme Court has 9 Justices, appointed for life. This means that whomever is appointed as a replacement for Scalia will likely affect the tone of American justice for decades after the President who appointed them has left. Scalia was appointed in 1986, by President Reagan, and has been a consistently conservative voice for 30 years, frequently writing scathing and sarcastic dissenting opinions (“minority reports”) for decisions he did not agree with, including the legalization of same-sex marriage, Obamacare, women’s rights to abortion, civil rights, and many other progressive issues. Though he was intelligent, witty, and well-versed in the law, he was not kind in his judgments.

When Scalia was alive, the Supreme Court was almost evenly split between conservatives and progressives, with Chief Justice John Roberts, Clarence Thomas, Samuel Alito, and Antonin Scalia on the strongly conservative side, and Ruth Bader Ginsburg, Elena Kagan, Stephen Breyer, and Sonia Sotomayor on the moderate to strongly progressive side; the deciding vote has usually been the generally fair-minded, moderately conservative Anthony Kennedy. The death of Justice Scalia changes that balance. It’s expected that President Obama would nominate a progressive as Scalia’s replacement, and though he hasn’t yet named a candidate, conservative politicians have already attempted to block Obama’s appointment (in the true spirit of ♫whatever it is, I’m against it♫ ), leaving it to the next President to decide.

The Justices of the Supreme Court

It’s the duty and right of the sitting President to name replacement nominees to the Supreme Court (and Obama does intend to do so), and the duty and right of the Senate (not all of Congress) to approve these nominations. This has been highly politicized in the past few years, with more and more attempts by both conservatives and (to a lesser extent) progressives to block Supreme Court appointments, drawing out the debate, so there’s some wisdom in nominating a moderate Justice, in hopes of a speedy and non-contentious approval by the Senate. Notably, the nominee doesn’t have to be a current judge, or even a lawyer, but in reality, the Senate would be unlikely to approve anyone who isn’t a law professional (with good reason).

The nominee must get a simple majority in the Senate; currently, with 2 Senators from each of the 50 States, that means 51 approval votes.

The Republicans control the Senate, with 54 senators; the Democrats have only 44 senators; Independents make up the balance, with 2 senators (Bernie Sanders of Vermont and Angus King of Maine), who typically vote with the Democrats. While there are a few conservative Democratic senators, it’s likely that all Democratic and Independent senators will vote to appoint Obama’s nominee, whomever that might be. That’s only 46 votes, meaning at least 4 Republican senators will need to cross party lines to vote for the appointee… in an election year. That could be a tough sell for Obama.

But Obama has 342 days left in office, and the longest Supreme Court confirmation process, from nomination to resolution, was 125 days, back in 1916, when nominee Louis Brandeis “frightened the Establishment” by being “a militant crusader for social justice”. (Thanks, Rachel Schnepper!) In today’s sharply divided and fractured political system, I expect that we will set a new record for how long it takes to confirm a Supreme Court Justice, if it happens in the Obama administration at all.

If you did the math, you’ll have noticed that 46 + 4 = 50, not 51; luckily, if there’s a split vote in the Senate, the Vice President casts the deciding vote, and Joe Biden is closely aligned with President Obama.

If Obama can’t get the votes he needs for his nominee (a real possibility), he could wait until Congress adjourns for the year, and make a recess appointment, meaning a judicial selection while Congress is not in session; but this appointment would be temporary, less than 2 years, and the next President would certainly be the one to make the permanent appointment.

I’m reasonably confident (though not certain) that the next Supreme Court Justice will be a progressive, and will be appointed by President Obama, not the next President. But that wouldn’t mean that the implications of this for the 2016 Presidential election are any less notable! Other Justices (including the beloved Notorious RBG and “Swing Vote” Kennedy) may step down or even die during the term of the next President, meaning that the balance might shift yet again. We can’t ignore the fact that Bernie Sanders, a sitting Independent senator, will have a vote in the current Supreme Court nomination, while Hillary won’t, which will likely raise Bernie’s profile (for good or ill). And while the nomination process is underway, all the candidates will talk about who they’d appoint to the Supreme Court (keeping in mind that Obama probably doesn’t want the job), though I dearly hope they don’t get the chance.

Scalia’s Legacy

While it’s not polite to speak ill of the dead, and while I can mourn Scalia’s death as a person, I’ve long held a very low opinion of him, and I admit that I’m glad of any opportunity to shift the character of the Supreme Court to a more progressive, compassionate, and modern constituency.

Many have painted Scalia as a patriot who’s made America better; here’s my dissenting opinion.

Scalia was clever, and I think it’s even more important for clever people to also strive to be good people; even more so if they are in a position of power. He may have been a good person to his friends and family, but he did not carry that over into how he served this country.

His writings struck me as insincere, and his claim to adhere to “Constitutional originalism” was belied by his whimsical interpretations of the US Constitution, such as his very modern stance that the 2nd Amendment ensured private ownership of guns, rather than the original emphasis on militias for national defense, and the absurd notion that “The Constitution is not a living document”, when the Constitution itself defines how to amend it. And while he’s perhaps most famous for his dissenting opinions, it’s his majority rulings that have caused the most damage to America and Americans.

Beyond his own rulings, his influence and legacy is in giving voice, authority, and credibility to a radical conservatism that influenced a generation of legal thought, carried on in Alito and Roberts, which holds that interpreting the text of the law is more important than the applicability to modern society and technology. In other words, it claims that trying to imagine (in a ridiculous fantasy) the opinions of a person living over two centuries ago, when this country was yet unformed, is more relevant than a view informed by the country as it has since developed. Generously, this is truly “conservative”, preserving the prejudices and ignorance of bygone eras along with any wisdom; more pointedly, this was a convenient way to appear impartial while twisting the result to his own backwards ideological view.

Scalia’s rulings were often specious and inhumane, mere clever arguments based on selective interpretation of the wording of laws and the Constitution rather than attempts at applying justice. In dissenting on a ruling for reopening a death-penalty case, where most of the original witnesses had recanted their testimonies, Scalia said, “Mere factual innocence is no reason not to carry out a death sentence properly reached.” For Scalia, it seems, the law was not a way to achieve social or personal fairness, but a pro-forma game whose rules were both strict and meaningless.

It’s hard to imagine someone as retrograde as Scalia getting nominated or confirmed, so I’m hopeful that we’ll have a more reasonable, just, and progressive Supreme Court in the next few months. This is how the Founding Fathers wanted this country to work… with each generation forging its own vision of a more perfect union, renewing the government to meet their own needs and desires, with the consistent thread of life, liberty, and the pursuit of happiness.

ProgrammableWebThe Merits of Meritocracy: Are Women Better Coders Than Men?

Let’s face it, it sucks that in 2016 we still have to talk about gender bias in the workplace. Even in the programming world we find a substantial degree of sexism. For those in the ‘know’ this won’t be surprising: gender bias in the tech community is a well-documented phenomenon. But, thanks to a study released this week, we can start to lay prejudice to rest. According to researchers from California Polytechnic State University and North Carolina State University, women are, statistically, better coders.

ProgrammableWebDaily API RoundUp: Insight360, Planwise, Dell, Planwise, Leftronic

Every day, the ProgrammableWeb team is busy, updating its three primary directories for APIs, clients (language-specific libraries or SDKs for consuming or providing APIs), and source code samples.

Daniel Glazman (Disruptive Innovations)Inventory and Strategy

“There’s class warfare, all right, but it’s my class, the native class, that’s making war, and we’re winning.” -- Android and iOS, blatantly stolen from Warren Buffet

Firefox OS tried to bring Web apps to the mobile world and it failed. It has been brain dead - for phones - for three days and the tubes preserving its life will be turned off in May 2016. I don't believe at all myself in the IoT space being a savior for Mozilla. There are better and older competitors in that space, companies or projects that bring smaller, faster, cleaner software architectures to IoT where footprint and performance are an even more important issue than in the mobile space. Yes, this is a very fragmented market; no, I'm not sure FirefoxOS can address it and reach the critical mass. In short, I don't believe in it at all.

Maybe it's time to discuss a little bit a curse word here: strategy. What would be a strategy for the near- and long-term future for Mozilla? Of course, what's below remains entirely my own view and I'm sure some readers will find it pure delirium. I don't really mind.

To do that, let's look a little bit at what Mozilla has in hands, and let's confront that and the conclusion drawn from the previous lines: native apps have won, at least for the time being.

  • Brains! So many hyper-talented brains at Mozilla!
  • Both desktop and mobile knowledge
  • An excellent, but officially unmaintained, runtime
  • Extremely high expertise on Web Standards and implementation of Web Standards
  • Extremely high expertise on JS
  • asm.js
  • Gaia, that implements a partial GUI stack from html but limited to mobile

We also need to take a look at Mozilla's past. This is not an easy nor pleasant inventory to make but I think it must be done here and to do it, we need to go back as far in time as the Netscape era.

Technology Year(s) Result
Anya 2003 AOL (Netscape's parent company) did not want of Anya, a remote browser moving most of the CPU constraints to the server, and it died despite of being open-sourced by its author. At the same time, Opera successfully launched Opera Mini and eventually acquired its SkyFire competitor. Opera Mini has been a very successful product on legacy phones and even smartphones in areas with poor mobile connectivity.
XUL 2003- Netscape - and later Mozilla - did not see any interest in bringing XUL to Standards committees. When competitors eventually moved to XML-based languages for UI, they adopted solutions (XAML, Flex, ...) that were not interoperable with it.
Operating System 2003- A linux+Gecko Operating System is not a new idea. It was already discussed back in 2003 - yes, 2003 - at Netscape and was too often met with laughter. It was mentioned again multiple times between 2003 and 2011, without any apparent success.
Embedding 2004- Embedding has always been a poor parent in Gecko's family. Officially dropped loooong ago, it drove embedders to WebKit and then Blink. At the time embedding should have been improved, the focus was solely on Firefox for desktop. If I completely understand the rationale behind a focus on Firefox for desktop at that time, the consequences of abandoning Embedding have been seriously underestimated.
Editing 2005- Back in 2004/2005, it was clear Gecko had the best in-browser core editor on the market. Former Netscape editor peers working on Dreamweaver compared mozilla/editor and what Macromedia/Adobe had in hands. The comparison was vastly in favor of Mozilla. It was also easy to predict the aging Dreamweaver would soon need a replacement for its editor core. But editing was considered as non-essential at that time, more a burden than an asset, and no workforce was permanently assigned to it.
Developer tools 2005 In 2005, Mozilla was so completely mistaken on Developer Tools, a powerful attractor for early adopters and Web Agencies, that it wanted to get rid of the error console. At the same moment, the community was calling for more developer tools.
Runtime 2003- XULRunner has been quite successful for such a complex technology. Some rather big companies believed enough in it to implement apps that, even if you don't know their name, are still everywhere. As an example, here's at least one very large automotive group in Europe, a world-wide known brand, that uses XULRunner in all its test environments for car engines. That means all garages dealing with that brand use a XULRunner-fueled box...
But unfortunately, XULrunner was never considered as essential, up to the point its name is still a codename. For some time, the focus was instead given to GRE, a shared runtime that was doomed to fail from the very first minute.
Update: XULRunner just died...
Asian market 2005 While the Asian market was exploding, Gecko was missing a major feature: vertical writing. It prevented Asian embedders from considering Gecko as the potential rendering engine to embed in Ebook reading systems. It also closed access to the Asian market for many other usages. But vertical writing did not become an issue to fix for Mozilla until 2015.
Thunderbird 2007 Despite of growing adoption of Thunderbird in governmental organizations and some large companies, Mozilla decided to spin off Thunderbird into a Mail Corporation because it was unable to get a revenue stream from it. MailCo was eventually merged back with Mozilla and Thunderbird is again in 2015/2016 in limbos at Mozilla.
Client Customization Kit 2003- Let's be clear, the CCK has never been seen as a useful or interesting project. Maintained only by the incredible will and talent of a single external contributor, many corporations rely on it to release Firefox to their users. Mozilla had no interest in corporate users. Don't we spend only 60% of our daily time at work?
E4X 2005-2012 Everyone had high expectations about E4X and and many were ready to switch to E4X to replace painful DOM manipulations. Unfortunately, it never allowed to manipulate DOM elements (BMO bug 270553), making it totally useless. E4X support was deprecated in 2012 and removed after Firefox 17.
Prism (WebRunner) 2007-2009 Prism was a webrunner, i.e. a desktop platform to run standalone self-contained web-based apps. Call them widgets if you wish. Prism was abandoned in 2009 and replaced by Mozilla Chromeless that is itself inactive too.
Marketplace 2009 Several people called for an improved marketplace where authors could sell add-ons and standalone apps. That required a licensing mechanism and the possibility to blackbox scripting. It was never implemented that way.
Browser Ballot 2010 The BrowserChoice.eu thing was a useless battle. If it brought some users to Firefox on the Desktop, the real issue was clearly the lack of browser choice on iOS, world-wide. That issue still stands as of today.
Panorama (aka Tab Groups) 2010 When Panorama reached light, some in the mozillian community (including yours truly) said it was bloated, not extensible, not localizable, based on painful code, hard to maintain on the long run and heterogeneous with the rest of Firefox, and it was trying to change the center of gravity of the browser. Mozilla's answer came rather sharply and Panorama was retained. In late 2015, it was announced that Panorama will be retired because it's painful to maintain, is heterogeneous with the rest of Firefox and nobody uses it...
Jetpack 2010 Jetpack was a good step on the path towards HTML-based UI but a jQuery-like framework was not seen by the community as what authors needed and it missed a lot of critical things. It never really gained traction despite of being the "official" add-on way. In 2015, Mozilla announced it will implement the WebExtensions global object promoted by Google Chrome and WebExtensions is just a more modern and better integrated JetPack on steroids. It also means being Google's assistant to reach the two implementations' standardization constraint again...
Firefox OS 2011 The idea of a linux+Gecko Operating System finally touched ground. 4 years later, the project is dead for mobile.
Versioning System 2011 When Mozilla moved to faster releases for Firefox, large corporations having slower deployment processes reacted quite vocally. Mozilla replied it did not care about dinosaurs of the past. More complaints led to ESR releases.
Add-ons 2015 XUL-based add-ons have been one of the largest attractors to Firefox. AdBlock+ alone deserves kudos, but more globally, the power of XUL-based add-ons that could interact with the whole Gecko platform and all of Firefox's UI has been a huge market opener. In 2015/2016, Mozilla plans to ditch XUL-based add-ons without having a real replacement for them, feature-per-feature.
Evangelism 2015 While Google and Microsoft have built first-class tech-evangelism teams, Mozilla made all its team flee in less than 18 months. I don't know (I really don't) the reason behind that intense bleeding but I read it as a very strong warning signal.
Servo 2016 Servo is the new cool kid on the block. With parallel layout and a brand new architecture, it should allow new frontiers in the mobile world, finally unleashing the power of multicores. But instead of officially increasing the focus on Servo and decreasing the focus on Gecko, Gecko is going to benefit from Servo's rust-based components to extend its life. This is the old sustaining/disruptive paradigm from Clayton Christensen.

(I hope I did not make too many mistakes in the table above. At least, that's my personal recollection of the events. If you think I made a mistake, please let me know and I'll update the article.)

Let's be clear then: Mozilla really succeeded only three times. First, with Firefox on the desktop. Second, enabling the Add-ons ecosystem for Firefox. Third, with its deals with large search engine providers. Most of the other projects and products were eventually ditched for lack of interest, misunderstanding, time-to-market and many other reasons. Mozilla is desperately looking for a fourth major opportunity, and that opportunity can only extend the success of the first one or be entirely different.

The market constraints I see are the following:

  • Native apps have won
  • Mozilla's reputation as an embedded solution's provider among manufacturers will probably suffer a bit from Firefox OS for phones' death. BTW, it probably suffers a bit among some employees too...

Given the assets and the skills, I see then only two strategic axes for Moz:

  1. Apple must accept third-party rendering engines even if it's necessary to sue Apple.
  2. If native apps have won, Web technologies remain the most widely adopted technologies by developers of all kinds and guess what, that's exactly Mozilla's core knowledge! Let's make native apps from Web technos then.

I won't discuss item 1. I'm not a US lawyer and I'm not even a lawyer. But for item 2, here's my idea:

  1. If asm.js "provides a model closer to C/C++" (quote from asmjs.org's FAQ), it's still not possible to compile asm.js-based JavaScript into native. I suggest to define a subset of ES2015/2016 that can be compiled to native, for instance through c++, C#, obj-C and Java. I suggest to build the corresponding multi-target compiler. Before telling me it's impossible, please look at Haxe.
  2. I suggest to extend the html "dialect" Gaia implements to cross-platform native UI and submit it immediately to Standard bodies. Think Qt's ubiquity. The idea is not to show native-like (or even native) UI inside a browser window... The idea is to directly generate browser-less native UI from a html-based UI language, CSS and JS that can deal with all platform's UI elements. System menus, dock, icons, windows, popups, notifications, drawers, trees, buttons, whatever. Even if compiled, the UI should be DOM-modifyable just like XUL is today.
  3. WebComponents are ugly, and Google-centric. So many people think that and so few dare saying it... Implementing them in Gecko acknowledges the power of Gmail and other Google tools but WebComponents remain ugly and make Mozilla a follower. I understand why Firefox needs it. But for my purpose, a simpler and certainly cleaner way to componentize and compile (see item 1) the behaviours of these components to native would be better.
  4. Build a cross-platform cross-device html+CSS+JS-based compiler to native apps from the above. Should be dead simple to install and use. A newbie should be able to get a native "Hello World!" native app in minutes from a trivial html document. When a browser's included in the UI, make Gecko (or Servo) the default choice.
  5. Have a build farm where such html+CSS+JS are built for all platforms. Sell that service. Mozilla already knows pretty well how to do build farms.

That plan addresses:

  • Runtime requests
  • Embedding would become almost trivial, and far easier than Chromium Embedded Framework anyway... That will be a huge market opener.
  • XUL-less future for Firefox on Desktop and possibly even Thunderbird
  • XUL-less future for add-ons
  • unique source for web-based app and native app, whatever the platform and the device
  • far greater performance on mobile
  • A more powerful basis for Gaia's future
  • JavaScript is currently always readable through a few tools, from the Console to the JS debugger and app authors don't want that.
  • a very powerful basis for Gaming, from html and script
  • More market share for Gecko and/or Servo
  • New revenue stream.

There are no real competitors here. All other players in that field use a runtime that does not completely compile script to native, or are not based on Web Standards, or they're not really ubiquitous.

I wish the next-generation native source editor, the next-gen native Skype app, the next-gen native text processor, the next-gen native online and offline twitter client, the next native Faecbook app, the next native video or 3D scene editor, etc. could be written in html+CSS+ECMAScript and compiled to native and if they embed a browser, let be it a Mozilla browser if that's allowed by the platform.

As I wrote at the top of this post, you may find the above unfeasible, dead stupid, crazy, arrogant, expensive, whatever. Fine by me. Yes, as a strategy document, that's rather light w/o figures, market studies, cost studies, and so on. Absolutely, totally agreed. Only allow me to think out loud, and please do the same. I do because I care.

Updates:

  • E4X added
  • update on Jetpack, based on feedback from Laurent Jouanneau
  • update on Versioning and ESR, based on feedback from Fabrice Desré (see comments below)
  • XULrunner has died...

Clarification: I'm not proposing to do semi-"compilation" of html à la Apache Cordova. I suggest to turn a well chosen subset of ES2015 into really native app and that's entirely different.

Amazon Web ServicesResources for Migrating Parse Applications to AWS

In light of the recent announcement that Parse will be winding down, the AWS team has been working to provide developers with some migration paths and some alternative services, as have members of the AWS community. Here’s what I know about:

I also have some partner and community resources for you:

Migration Webinar
My colleague John Bury (Principal Solution Architect) has been working in the mobile space for more than 12 years. On March 1st he will lead a 200-level webinar, Migrating Mobile Apps from Parse to AWS. The webinar will run from 11 AM to Noon (PT). After an introductory look at the full range of AWS mobile services, John will lead you though the steps necessary to migrate your mobile app from Parse to AWS.

Jeff;

PS – Please share additional resources in the comment section and I’ll add them to the post.

 

ProgrammableWebHow to Implement Basic Search with Google Maps API

Google Maps has always been at the forefront of JavaScript technology, and over the years it has evolved into several APIs that go beyond simple maps--offering the ability to, for example, convert addresses to geographic coordinates, locate named places, calculate directions and even determine distances.

Amazon Web ServicesAmazon Web Services to Acquire NICE

I would like to extend a warm welcome to our new colleagues at NICE. We have signed an agreement to acquire this leading provider of software and services for high performance and technical computing.

Products for HPC
From their headquarters in Asti, Italy, NICE delivers products and solutions to customers all over the world. These products help customers to optimize and centralize their high performance computing (HPC) and visualization workloads while also providing tools that are a great fit for distributed workforces making use of mobile devices.

For Existing Customers
The NICE brand and team will remain intact and will continue to develop and support the EnginFrame and Desktop Cloud Visualization (DCV) products. Customers will continue to receive world-class support and services, enhanced with the backing of the AWS team. Going forward, NICE and AWS will work together to create even better tools and services.

Still Day 1
As Jeff Bezos often says, it is still day 1 and we don’t have all of the answers yet. However, I did want to share this news with you and let you know that we are looking forward to meeting and working with our new colleagues. We expect the deal to close in Q1 of 2016.

Jeff;

 

Amazon Web ServicesNew – Access Resources in a VPC from Your Lambda Functions

A few months ago I announced that you would soon be able to access resources in a VPC from your AWS Lambda functions. I am happy to announce that this much-wanted feature is now available and that you can start using it today!

Your Lambda functions can now access Amazon Redshift data warehouses, Amazon ElastiCache clusters, Amazon Relational Database Service (RDS) instances, and service endpoints that are accessible only from within a particular VPC. In order to do this, you simply select one of your VPCs and identify the relevant subnets and security groups. Lambda uses this information to set up elastic network interfaces (ENIs) and private IP addresses (drawn from the subnet or subnets that you specified) so that your Lambda function has access to resources in the VPC.

Accessing Resources in a VPC
You can set this up when you create a new function. You can also update an existing function so that it has VPC access.  You can configure this feature from the Lambda Console or from the CLI.  Here’s how you set it up from the Console:

That’s all you need to do! Be sure to read Configuring a Lambda Function to Access Resources in an Amazon VPC in the Lambda documentation if you have any questions.

Things to Know
Here are a couple of things that you should know about this new feature:

ENI & IP Address Resources – Because Lambda automatically scales based on the number of events that is needs to process, your VPC must have an adequate supply of free IP addresses on the designated subnets.

Internet Access – As soon as you enable this functionality for a particular function, the function no longer has access to the Internet by default. If your function requires this type of access, you will need to set up a Managed NAT Gateway in your VPC (see New – Managed NAT (Network Address Translation) Gateway for AWS for more information) or run your own NAT (see NAT Instances).

Security Groups – The security groups that you choose for a function will control the function’s access to the resources in the subnets and on the Internet.

S3 Endpoints – You can also use this feature to access S3 endpoints within a VPC (consult New – VPC Endpoint for Amazon S3 to learn more).

Webinar – To learn more about this new feature, join our upcoming webinar, Essentials: Introducing AWS VPC Support for AWS Lambda.

Jeff;

Amazon Web ServicesAmazon RDS Update – Share Encrypted Snapshots, Encrypt Existing Instances

We want to make it as easy as possible for you to secure your AWS environment. Some of our more recent announcements in this area include encrypted EBS boot volumes, encryption at rest for Amazon Aurora, and support for AWS Key Management Service (KMS) across several different services.

Today we are giving you some additional options for data stored in Amazon Relational Database Service (RDS). You can now share encrypted database snapshots with other AWS accounts. You can also add encryption to a previously unencrypted database instance.

Sharing Encrypted Snapshots
When you are using encryption at rest for a database instance, automatic and manual database snapshots of the instance are also encrypted. Up until now, encrypted snapshots were private to a single AWS account and could not be shared. Today we are giving you the ability to share encrypted snapshots with up to 20 other AWS accounts. You can do this from the AWS Management Console, AWS Command Line Interface (CLI), or via the RDS API. You can share encrypted snapshots within an AWS region, but you cannot share them publicly. As is the case with the existing sharing feature, today’s release applies to manual snapshots.

To share an encrypted snapshot, select it and click on Share Snapshot. This will open up the Manage Snapshot Permissions page. Enter one or more account IDs (click on Add after each one) and click on Save when you have entered them all:

The accounts could be owned by your organization (perhaps you have separate accounts for dev, test, staging, and production) or by your business partners. Backing up to your mission-critical databases to a separate AWS account is a best practice, and one that you can implement using this new feature while also gaining the benefit of encryption at rest.

After you click on Save, the other accounts have access to the shared snapshots. The easiest way to locate them is to visit the RDS Console and filter the list using Shared with Me:

The snapshot can be used to create a new RDS database instance. To learn more, read about Sharing a Database Snapshot.

Adding Encryption to Existing Database Instances
You can now add encryption at rest using KMS keys to a previously unencrypted database instance. This is a simple, multi-step process:

  1. Create a snapshot of the unencrypted database instance.
  2. Copy the snapshot to a new, encrypted snapshot. Enable encryption and specify the desired KMS key as you do so:
  3. Restore the encrypted snapshot to a new database instance:
  4. Update your application to refer to the endpoint of the new database instance:

And that’s all you need to do! You can use a similar procedure to change encryption keys for existing database instances. To learn more, read about Copying a Database Snapshot.

Jeff;

 

ProgrammableWebDaily API RoundUp: Oculus, Cisco PSIRT, Walgreens, Cars.com, Autochartist, UPS

Every day, the ProgrammableWeb team is busy, updating its three primary directories for APIs, clients (language-specific libraries or SDKs for consuming or providing APIs), and source code samples.

ProgrammableWebGoogle Announces Cloud Functions, Takes on AWS Lambda

The trend towards serverless computing is gaining more traction. The big cloud vendors are going full steam with the renewed belief that developer should focus on code and string together applications by orchestrating various services. The whole task of provisioning servers to run the code is handled by the platforms themselves.

ProgrammableWebHow Developers Competed to Drive Innovation With Nexmo APIs

Early last year we launched some pretty awesome Nexmo developer contests. What made them awesome? The cool stuff developers built. As we continue our contests into 2016, I thought it would be a great time to take a look at the best dev projects from the past year.

Amazon Web ServicesCongratulations to the Winners of the Hackster AWS IoT Mega Contest

Earlier this year I told you about the AWS IoT Mega Contest. The contest closed at the end of January, the judges retired to our secret lair deep in the heart of Seattle, and we have chosen the winners. There were an impressive number of equally impressive projects and it was not easy to evaluate them against our criteria and to pick our favorites. After extended deliberation, we managed to choose ten projects. With no further fanfare, here we go!

First Prize
The following two entrants will receive the first prize, a Kindle Fire HD 10:

Second Prize
The following three entrants will receive the second prize, an Amazon Echo:

Third Prize
The following five entrants will receive the third prize, Amazon Fire TV Gaming Edition:

What I Learned
After spending time examining the entries in detail, I came away impressed by a couple of things. To wit:

  1. There are lots of creative people out there! The initial ideas and the resulting projects were literally all over the map.
  2. IoT is here now. People are building devices, sites, and applications that are sophisticated and useful.
  3. Connecting to and working within the real world is a lot harder than running within the clean, abstract confines of a virtual machine. A successful IoT application must be prepared to deal with erroneous or missing data, intermittent connections, and more.
  4. Building these applications requires and exercises a diverse set of skills. In addition to creativity, a successful IoT project can require theoretical & practical electronics skills (both analog and digital), 3D modeling & printing, along with the ability to write code that runs on small devices and in the cloud, generally using multiple languages, frameworks, and cloud services! If you currently have a subset of these skills, jumping in to IoT is a great way to put them to use.

Congratulations & Thanks
Congratulations to all of the winners, and thank you to everyone who entered! Also, a big thank-you to our device partners and to the team at Hackster.

Jeff;

Andy Budd (Clearleft)We won the moral argument but did we lose the business case for UX?

When we first started Clearleft 10 years ago, the bulk of my effort was focussed on explaining to clients what user experience design was, the extra value it offered, and why design needed to be more than just moving boxes around the screen. I’m pleased to say that it’s been a long time since I’ve had to explain the need for UX to our clients. These days clients come to us with a remarkable understanding of best practice, and a long list of requirements that contain everything from research, strategy, prototyping and testing, through to responsive design, mobile development and the creation of a modular component library. I think it’s safe to say that the quality of the average digital project has soared over the past 10 years, but so has the effort involved.

This isn’t unusual and happens across all kinds of industries as they develop and become more professional. You only have to look at the advances in health care over the last 50 years to see the dramatic rise in quality. Back in my childhood, the most advanced diagnosis tool was probably the X-ray. These days a whole battery of tests are available, from ECGs to MRIs and beyond. The bar has been raised considerably, but in the process, so has the average cost of patient care.

Over the past few years I’ve seen client expectations rise considerably, but digital budgets have remained largely unchanged. We’ve done an amazing job of convincing digital teams that they need proper research, cross-platform support, and modular style guides, but somehow this isn’t filtering back to the finance departments. Instead, design teams are now expected to deliver all this additional work on a similar budget.

I believe one of the reasons for this apparent lag is that of tempo. Despite the current received wisdom of continual deployment, most traditional organisations still bundle all their product and service improvements into a single big redesign that happens once every 4 or 5 years. Most traditional organisations’ understanding of what a digital product should cost is already half a decade out of date. Add to this the fact that it takes most large organisations a good 18 months to commission a new digital product or service, launch it, then tell whether it’s been a success, and you have all the hallmarks of a terrible feedback loop and a slow pace of learning.

I think another problem is the lack of experienced digital practitioners in managerial positions with budget setting authority. It’s relatively common for digital budgets to be set by one area of the company, completely independently from those setting the scope. Project scope often becomes a sort of fantasy football wish list of requirements, completely untethered from the practical realities of budget.

I couldn’t begin to tell you the number of projects we’ve passed on the last couple of years because their budgets were completely out of whack with what they wanted to achieve; or the number of clients who have asked for our help when their previous project failed, only to discover that the reason was probably due to their previous agency agreeing to deliver more than the budget would actually allow. These organisations end up spending twice as much as they could have done, because they wanted to spend half as much as was necessary—the classic definition of a false economy.

Fortunately once you’ve made this mistake once, you’re unlikely to make it again. Speed of learning is hugely important. In fact I think the organisations that will fare best from the effects of digital transformation are those who can up their tempo, fail faster than their competitors, learn from their mistakes, and ensure they don’t happen again. Basically the standard Silicon Valley credo.

It is possible to avoid some of these mistakes if you hire strategically. I’ve seen a fairly recent trend of hiring in-house digital managers from the agency world. You end up hiring people who will have delivered dozens of projects over the past 5 years, rather than just one or two. These people also tend to be fairly savvy buyers, knowing which agencies have a good reputation, and which are little more than body shops.

As for us practitioners, I think we’ve done a great job of convincing our peers on the value of good UX design and digital best practices. We now need to up our effort getting that message across to the people commissioning digital services and setting budgets, to ensure we can actually deliver on the claims we’ve made.

ProgrammableWebDaily API RoundUp: PortaText, Carnival, Joysticket, Virgil Security, plus Shippo, Preact, Algorithmia, Slack SDKs

Every day, the ProgrammableWeb team is busy, updating its three primary directories for APIs, clients (language-specific libraries or SDKs for consuming or providing APIs), and source code samples.

ProgrammableWebGoogle People API Lets Devs Poke Through Users' Contacts

Google today announced the People API, a single API it hopes will eventually be able to replace both the existing Google+ API and Google Contacts API. The People API will allow developers to snag connection data from authenticated Google users with a single call, rather than multiple calls -- and that's good news for everyone.

ProgrammableWebGitHub Enterprise 2.5 is Now Available

GitHub is excited to announce the release of GitHub Enterprise 2.5. With this release, we’re introducing features and updates that will help development teams build software at scale with a focus on scalability, security, and management of GitHub Enterprise for development teams of any size.

Jeremy Keith (Adactio)Handling redirects with a Service Worker

When I wrote about implementing my first Service Worker, I finished with this plea:

And remember, please share your code and your gotchas: it’s early days for Service Workers so every implementation counts.

Well, I ran into a gotcha that was really frustrating but thanks to the generosity of others, I was able to sort it out.

It was all because of an issue in Chrome. Here’s the problem…

Let’s say you’ve got a Service Worker running that takes care of any requests to your site. Now on that site, you’ve got a URL that receives POST data, does something with it, and then redirects to another URL. That’s a fairly common situation—it’s how I handle webmentions here on adactio.com, and it’s how I handle most add/edit/delete actions over on The Session to help prevent duplicate form submissions.

Anyway, it turns out that Chrome’s Service Worker implementation would get confused by that. Instead of redirecting, it showed the offline page instead. The fetch wasn’t resolving.

I described the situation to Jake, but rather than just try and explain it in 140 characters, I built a test case.

There’s a Chromium issue filed on this, and it will get fixed, but it in the meantime, it was really bugging me recently when I was rolling out a new feature on The Session. Matthew pointed out that the Chromium bug report also contained a workaround that he’s been using on traintimes.org.uk. Adrian also posted his expanded workaround in there too. That turned out to be exactly what I needed.

I think the problem is that the redirect means that a body is included in the GET request, which is what’s throwing the Service Worker. So I need to create a duplicate request without the body:

request = new Request(url, {
    method: 'GET',
    headers: request.headers,
    mode: request.mode,
    credentials: request.credentials,
    redirect: request.redirect
});

So here’s what I had in my Service Worker before:

// For HTML requests, try the network first, fall back to the cache, finally the offline page
if (request.headers.get('Accept').indexOf('text/html') !== -1) {
    event.respondWith(
        fetch(request)
            .then( response => {
                // NETWORK
                // Stash a copy of this page in the pages cache
                let copy = response.clone();
                stashInCache(pagesCacheName, request, copy);
                return response;
            })
            .catch( () => {
                // CACHE or FALLBACK
                return caches.match(request)
                    .then( response => response || caches.match('/offline') );
                })
        );
    return;
}

And here’s what I have now:

// For HTML requests, try the network first, fall back to the cache, finally the offline page
if (request.headers.get('Accept').indexOf('text/html') !== -1) {
    request = new Request(url, {
        method: 'GET',
        headers: request.headers,
        mode: request.mode,
        credentials: request.credentials,
        redirect: request.redirect
    });
    event.respondWith(
        fetch(request)
            .then( response => {
                // NETWORK
                // Stash a copy of this page in the pages cache
                let copy = response.clone();
                stashInCache(pagesCacheName, request, copy);
                return response;
            })
            .catch( () => {
                // CACHE or FALLBACK
                return caches.match(request)
                    .then( response => response || caches.match('/offline') );
                })
        );
    return;
}

Now the test case is working just fine in Chrome.

On the off-chance that someone out there is struggling with the same issue, I hope that this is useful.

Share what you learn.

Daniel Glazman (Disruptive Innovations)歌剧

When Opera switched to WebKit and started its deep reorganization, I had a chat with a few ex-Opera fellows. We agreed that the whole move was indeed a purely financial decision made to increase the value of the company on the "market" at a time many larger companies and phone manufacturers were looking for a seat at the main players' table, the restricted list of companies owning either a rendering engine or a world-class rendering engine team. In other terms, the whole strategy of the company was strictly oriented towards a sale. The often quoted potential deal with AOL did not make any sense to me.

While I was thinking more of phone manufacturers like Samsung or Huawei, we all agreed the most plausible option was an asian host. It seems we were right. It would have made a lot of sense for Samsung to acquire Opera. I even advocated a bit in that direction during my tenure there but the company - or at least the people my message reached - either were not receptive or never forwarded the message. I still think Samsung missed a rather important opportunity here.

Golden Brick and Yonglian are more acquiring the user base than the engineering team, and I do have some concerns about the future of that team. In fact, I have some concerns about the whole thing. We'll see. Browser teams are a very small community around the world and I wish our Opera friends all the best for that coming change.

Now that Opera's not on the market any more, the next company to watch in that space is clearly, from my point of view, Igalia.

ProgrammableWebCloudKit Adds Support for Server-to-Server API Access

Hot off the heels of Facebook’s announcement that it is shutting down it’s Parse Cloud platform, Apple has announced in a press release that they are adding additional capabilities (including server-to-server Web service requests) to CloudKit, their cloud-storage and authentication offering. CloudKit, up until now had

ProgrammableWebEdamam Opens New Nutrition Data API

Edamam, a company providing structured food and nutrition data to businesses in the health, wellness and food industries announced today the release of its new Nutrition Data API

Amazon Web ServicesLumberyard + Amazon GameLift + Twitch for Games on AWS

Building world-class games is a very difficult, time-consuming, and expensive process. The audience is incredibly demanding. They want engaging, social play that spans a wide variety of desktop, console, and mobile platforms. Due to the long lead time inherent in the game development and distribution process, the success or failure of the game can often be determined on launch day, when pent-up demand causes hundreds of thousands or even millions of players to sign in and take the game for a spin.

Behind the scenes, the development process must be up to this challenge. Game creators must be part of a team that includes developers with skills in story telling, game design, physics, logic design, sound creation, graphics, visual effects, and animation. If the game is network-based, the team must also include expertise in scaling, online storage, network communication & management, security.

With development and creative work that can take 18 to 36 months, today’s games represent a considerable financial and reputational risk for the studio. Each new game is a make-or-break affair.

New AWS Game Services
Today I would like to tell you about a pair of new AWS products that are designed for use by professional game developers building cloud-connected, cross-platform games. We started with several proven, industry leading engines and developer tools, added a considerable amount of our own code, and integrated the entire package with our Twitch video platform and community, while also mixing in access to relevant AWS messaging, identity, and storage services. Here’s what we are announcing today:

LumberyardA game engine and development environment designed for professional developers. A blend of new and proven technologies from CryEngine, Double Helix, and AWS, Lumberyard simplifies and streamlines game development. As a game engine, it supports development of cloud-connected and standalone 3D games, with support for asset management, character creation, AI, physics, audio, and more. On the development side, the Lumberyard IDE allows you to design indoor and outdoor environments, starting from a blank canvas. You (I just promoted you to professional game developer) can take advantage of built-in content workflows and an asset pipeline, editing game assets in Photoshop, Maya, or 3ds Max for editing and bringing them in to the IDE afterward. You can program your game in the traditional way using C++ and Visual Studio (including access to the AWS SDK for C++) or you can use our Flow Graph tool and the cool new Cloud Canvas to create cloud-connected gameplay features using visual scripting.

Amazon GameLiftMany modern games include a server or backend component that must scale in proportion to the number of active sessions. Amazon GameLift will help you to deploy and scale session-based multiplayer game servers for the games that you build using Lumberyard. You simply upload your game server image to AWS and deploy the image into a fleet of EC2 instances  that scales up as players connect and play. You don’t need to invest in building, scaling, running, or monitoring your own fleet of servers. Instead, you pay a small fee per daily active user (DAU) and the usual EC2 On-Demand rates for the compute capacity, EBS storage, and bandwidth that your users consume.

Twitch IntegrationModern gamers are a very connected bunch. When they are not playing themselves, they like to connect and interact with other players and gaming enthusiasts on Twitch. Professional and amateur players display their talents on Twitch and create large, loyal fan bases. In order to take this trend even further and to foster the establishment of deeper connections and stronger communities, games built with Lumberyard will be able to take advantage of two new Twitch integration features. Twitch ChatPlay allows you to build games that respond to keywords in a Twitch chat stream. For example, the audience can vote to have the player take the most desired course of action. Twitch JoinIn allows a broadcaster to invite a member of the audience into to the game from within the chat channel.

These services, like many other parts of AWS, are designed to allow you to focus on the unique and creative aspects of your game, with an emphasis on rapid turnaround and easy iteration so that you can continue to hone your gameplay until it reaches the desired level of engagement and fun.

Support Services – As the icing on this cake, we are also launching a range of support options including a dedicated Lumberyard forum and a set of tutorials (both text and video). Multiple tiers of paid AWS support are also available.

Developing with Lumberyard
Lumberyard is at the heart of today’s announcement. As I mentioned earlier, it is designed for professional developers and supports development of high-quality, cross-platform games. We are launching with support for the following environments:

  • Windows – Vista, Windows 7, 8, and 10.
  • Console – PlayStation 4 and Xbox One.

Support for mobile devices and VR headsets is in the works and should be available within a couple of months.

The Lumberyard development environment runs on your Windows PC or laptop. You’ll need a fast, quad-core processor, at least 8 GB of memory, 200 GB of free disk space, and a high-end video card with 2 GB or more of memory and Direct X 11 compatibility. You will also need Visual Studio 2013 Update 4 (or newer) and the Visual C++ Redistributables package for Visual Studio 2013.

The Lumberyard Zip file contains the binaries, templates, assets, and configuration files for the Lumberyard Editor. It also includes binaries and source code for the Lumberyard game engine. You can use the engine as-is, you can dig in to the source code for reference purposes, or you can customize it in order to further differentiate your game. The Zip file also contains the Lumberyard Launcher. This program makes sure that you have properly installed and configured Lumberyard and the third party runtimes, SDKs, tools, and plugins.

The Lumberyard Editor encapsulates the game under development and a suite of tools that you can use to edit the game’s assets.

The Lumberyard Editor includes a suite of editing tools (each of which could be the subject of an entire blog post) including an Asset Browser, a Layer Editor, a LOD Generator, a Texture Browser, a Material Editor, Geppetto (character and animation tools), a Mannequin Editor, Flow Graph (visual programming), an AI Debugger, a Track View Editor, an Audio Controls Editor, a Terrain Editor, a Terrain Texture Layers Editor, a Particle Editor, a Time of Day Editor, a Sun Trajectory Tool, a Composition Editor, a Database View, and a UI Editor. All of the editors (and much more) are accessible from one of the toolbars at the top.

In order to allow you to add functionality to your game in a selective, modular form, Lumberyard uses a code packaging system that we call Gems. You simply enable the desired Gems and they’ll be built and included in your finished game binary automatically. Lumberyard includes Gems for AWS access, Boids (for flocking behavior), clouds, game effects, access to GameLift, lightning, physics, rain, snow, tornadoes, user interfaces, multiplayer functions, and a collection of woodlands assets (for detailed, realistic forests).

Coding with Flow Graph and Cloud Canvas
Traditionally, logic for games was built by dedicated developers, often in C++ and with the usual turnaround time for an edit/compile/run cycle. While this option is still open to you if you use Lumberyard, you also have two other options: Lua and Flow Graph.

Flow Graph is a modern and approachable visual scripting system that allows you to implement complex game logic without writing or or modifying any code. You can use an extensive library of pre-built nodes to set up gameplay, control sounds, and manage effects.

Flow graphs are made from nodes and links; a single level can contain multiple graphs and they can all be active at the same time. Nodes represent game entities or actions. Links connect the output of one node to the input of another one. Inputs have a type (Boolean, Float, Int, String, Vector, and so forth). Output ports can be connected to an input port of any type; an automatic type conversion is performed (if possible).

There are over 30 distinct types of nodes, including a set (known as Cloud Canvas) that provide access to various AWS services. These include two nodes that provide access to Amazon Simple Queue Service (SQS),  four nodes that provide access to Amazon Simple Notification Service (SNS), seven nodes that provide read/write access to Amazon DynamoDB, one to invoke an AWS Lambda function, and another to manage player credentials using Amazon Cognito. All of the games calls to AWS are made via an AWS Identity and Access Management (IAM) user that you configure in to Cloud Canvas.

Here’s a node that invokes a Lambda function named DailyGiftLambda:

Here is a flow graph that uses Lambda and DynamoDB to implement a “Daily Gift” function:

As usual, I have barely scratched the surface here!  To learn more, read the Cloud Canvas documentation in the Lumberyard User Guide.

Deploying With Amazon GameLift
If your game needs a scalable, cloud-based runtime environment, you should definitely take a look at Amazon GameLift.

You can use it to host many different types of shared, connected, regularly-synchronized games including first-person shooters, survival &  sandbox games, racing games, sports games, and MOBA (multiplayer Online Battlefield Arena) games.

After you build your server-side logic, you simply upload it to Amazon GameLift. It will be converted to a Windows-based AMI (Amazon Machine Image) in a matter of minutes. Once the AMI is ready, you can create an Amazon GameLift fleet (or a new version of an existing one), point it at the AMI, and your backend will be ready to go.

Your fleets, and the game sessions, running on each fleet, are visible in the Amazon GameLift Console:

Your Flow Graph code can use the GameLift Gem to create an Amazon GameLift session and to start the session service.

To learn more, consult the Amazon GameLift documentation.

Twitch Integration
Last but definitely not least, your games can integrate with Twitch via Twitch ChatPlay and Twitch JoinIn.

As I mentioned earlier, you can create games that react to keywords entered in a designated Twitch channel. For example, here’s a Flow Graph that listens for the keywords red, yellow, blue, green, orange, and violet.

Pricing and Availability
Lumberyard and Amazon GameLift are available now and you can start building your games today!

You can build and run connected and standalone games using Lumberyard at no charge. You are responsible for the AWS charges for any calls made to AWS services using the IAM user configured in to Cloud Canvas, or through calls made using the AWS SDK for C++, along with any charges for the use of GameLift.

Amazon GameLift is launching in the US East (Northern Virginia) and US West (Oregon) regions, and will be coming to other AWS regions as well. As part of AWS Free Usage tier, you can run a fleet comprised of one c3.large instance for up to 125 hours per month for a period of one year. After that, you pay the usual On-Demand rates for the EC2 instances that you use, plus the charge for 50 GB / month of EBS storage per instance, and $1.50 per month for every 1000 daily active users.

Jeff;

 

ProgrammableWeb: APIsCarnival

Carnival is a marketing system designed for customer retention. Some of Carnival's features include in-app messaging, advanced audience segmentation, customized insights, integration assistance, and behavioral triggering. Carnival offers its API which is REST based, and makes use of HTTP Basic Authentication. Carnival is located in New York and Wellington, New Zealand.
Date Updated: 2016-02-09
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsJoysticket

Joysticket is a rewards platform and loyalty program that can be integrated to existing applications. It can be used as a recommendations platform to acquire more users or as a retention option for existing users. Joysticket features a community for users, and real time retention. The Joysticket API is REST based, and responds in JSON format.
Date Updated: 2016-02-09
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsPortaText

PortaText is an SMS marketing platform based in Florida. Its features include bulk SMS, integrated notifications, added security, and auto responder. PortaText as a platform can be used as a communication layer between businesses and customers. This REST HTTP based API uses HTTP Basic Auth as well as API Keys for authentication.
Date Updated: 2016-02-09
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsVirgil Security

Virgil Security is a cloud based encryption and authentication platform. It can be used to easily add a security layer to existing applications. It features at rest and transfer encryption, and identity verification. When used within an enterprise, this platform can be integrated with business processes and protect against internal and external threats. Cloud applications can be secured with paswordless authentication and end to end encryption; each device is secured with its own key.
Date Updated: 2016-02-09
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWebHow to Build an App Ecosystem Using Your API

APIs are all about empowering users and creating partnerships. There are a lot of great, standard ways to use APIs but they are much more powerful than you think. APIs have the ability to completely transform your product or an entire business into something much, much better - a platform.
 

Amazon Web ServicesAWS Week in Review – February 1, 2016

Let’s take a quick look at what happened in AWS-land last week:

Monday

February 1

Tuesday

February 2

Wednesday

February 3

Thursday

February 4

Friday

February 5

Saturday

February 6

Sunday

February 7

New & Notable Open Source

  • goad is an AWS Lambda powered, highly distributed, load testing tool.
  • python-lambder lets you create and manage scheduled AWS Lambdas from the command line.
  • sevenseconds is an AWS account configurator.
  • Zappa implements serverless WSGI with AWS Lambda and API Gateway.
  • ctl-transcode transcodes videos using AWS.
  • AWS is a set of PowerShell scripts, functions, and modules for managing AWS.
  • ssc-lambda is a set of SSC Lambda functions for AWS processing.
  • rifactor can automatically refactor your AWS Reserved Instances to match your running instances.
  • Eureka is an AWS service registry for resilient mid-tier load balancing and failover.
  • lamvery is a function-based deployment and management tool for AWS Lambda.

New SlideShare Presentations

New Customer Success Stories

  • Career Builder – By automating its software release process using AWS CodePipeline and AWS CodeDeploy, CareerBuilder increases update speed and assures quality code, freeing up developers to focus on the core product.
  • edotco Group – edotco Group has achieved availability well in excess of its service level agreement of 99.95 percent and reduced infrastructure costs by at least 50 percent over five years using AWS.
  • KeptMe – By launching its service on AWS, KeptMe was able to quickly expand to more than 4,000 schools in nine different countries.
  • Open Universities Australia – By moving its collocated data center to AWS, OUA reduced the the time required to deliver changes to production from three months to less than two hours, cut costs by up to AU$1 million (US$726,850) over two years, and improved the performance of its websites by up to 20 percent.
  • Sokrati – By using AWS, Sokrati reduced the data in its database from 20 terabytes to 2 terabytes and reduced its infrastructure costs by 35 percent.
  • Time Inc. – Time Inc. uses AWS Enterprise Support to assist with planning and executing the migration of existing and new applications to AWS.
  • 91App – Using AWS has enabled 91App to create and launch digital campaigns in just 24 hours, compared to the several weeks the same processes would have required with a physical IT infrastructure.
  • Air Works – By using AWS, Air Works has improved its operational performance by 84 percent and its response times by 160 percent.
  • Autodesk – Autodesk can monitor and control the use of hundreds of AWS accounts from a single pane of glass.
  • GENALICE – GENALICE uses AWS to run the Population Calling module of its GENALICE MAP Next-Generation Sequencing data analysis suite.
  • The Guardian – Guardian News and Media increased the velocity of releases for its digital properties to 40,000 in 2015, up from 25 in 2012, by using AWS.
  • Jelly Button Games – Jelly Button Games, an Israeli social gaming company, can grow its business while its AWS environment handles up to one million game server requests a minute.
  • Lyft – By using Spot, the startup saves up to 75 percent monthly versus on-demand instances for routine testing processes that do not require the most current or most powerful compute resources.

New YouTube Videos

Upcoming Events

Help Wanted

Stay tuned for next week! In the meantime, follow me on Twitter and subscribe to the RSS feed.

Jeff;

Amazon Web ServicesAWS Week in Review – January 25, 2016

Let’s take a quick look at what happened in AWS-land last week:

Monday

January 25

Tuesday

January 26

Wednesday

January 27

Thursday

January 28

Friday

January 29

Saturday

January 30

Sunday

January 31

Stay tuned for next week! In the meantime, follow me on Twitter and subscribe to the RSS feed.

Jeff;

ProgrammableWebSendGrid Deprecates Several API Endpoints

SendGrid, a Colorado-based email delivery service, announced they are sunsetting two of their API endpoints this month. In a short email sent to their API consumers, Sendgrid stated that all API calls must now use a new base URL. They also directed developers to reference SendGrid’s new API documentation or to contact them through their attached email.

Elliotte Rusty HaroldError Dialogs for the Internet Age

Here’s a red error message Eclipse popped up on my screen today:

No server type definition

There are a lot of things to complain about here, but the main one is not obvious from a static screenshot (though it turns out a static screenshot has exactly the problem):

The message cannot be copied.

The first thing any competent computer user does when presented with an incomprehensible error message such as “No server type definition” is to Google it. Only why should the user have to type it in? This message should be able to be copied right out of the UI.

And why stop at error dialogs? Any confusing UI element should be able to be selected and copied. This is critical for tech support, debugging, documentation, and anything that happens when apps go wrong. Here’s a history window from Crashplan. None of these messages can be copied and emailed to tech support. If I want to tell them what Crashplan is doing wrong (something they refuse to believe can possibly be happening) I have to laboriously retype all this information:

crashplanerrormessage

This is one of the (few) things web apps often get right and desktop and mobile apps usually get wrong. As long as the UI is HTML, you can probably select it. Here’s a recent Firefox error message. The complete message is selectable so I can, for example, copy and paste it into an email to the site owner alerting her to the problem:

Your connection is not secure The owner of kriswrites.com has configured their website improperly. To protect your information from being stolen, Firefox has not connected to this website. Learn more…

That’s not the only use for copyable text either.
I can (and did) easily use it for alt text of the above img element, which improves the searchability of the problem.
I can search for the error message in the Firefox source code repository, if I feel like fixing the grammatical error in the message.
There are probably a dozen other uses I haven’t yet imagined that are enabled by having easy access to the message as text.
Text is fluid and accessible, and admits many different uses, in a way screenshots don’t.

When writing UI code, resist the urge to display non-selectable labels. For example, in Swing never use the JLabel class because JLabels are not selectable without a lot of error-prone custom event handling code. Instead use a JTextPane and configure it so it looks like a JLabel:

JTextPane label = new JTextPane();
label.setText("Something bad happened!");
label.setEditable(false); 
label.setBackground(null); 
label.setBorder(null);

In some circumstances, you may also want to change the font to match what users expect in a label. Exploding Pixels has instructions for doing that if you find it necessary.

I blame Oracle for making this necessary. Why do toolkits even allow non-selectable text? There should be no such thing as an unselectable, uncopyable label. Uneditable, yes; but not uncopyable. JLabel must die.

Widget libraries (GTK+, Cocoa, AWT, Swing, SWT, etc.) should remove non-selectable labels. The default should be to allow the user to select and copy UI text.

There are a few widgets that have non-selectable text because clicking them already does something else. Enabling selection of menu items would probably confuse less dexterous users who select a menu item they mean to click. Perhaps buttons as well. But all labels — that is, all strings of text whose primary purpose is to be shown to the user — should be able to be copied and pasted. It’s simple respect for the user.

Anne van Kesteren (Opera)Custom elements no longer contentious

I was in San Francisco two weeks ago. Always fun to see friends and complain about how poorly Caltrain compares to trains in most civilized countries. Custom elements day was at Apple where you cannot reasonably get to via public transport from San Francisco. The “express” Caltrain to Mountain View and a surged Uber is your best bet. On the way back you can count on Ryosuke, who knows exactly how much gas is in his car well after the meter indicates it’s depleted.

While there are still details to be sorted with both custom elements and shadow DOM, we have made major headway since last time. Getting cross-browser agreement on the contentious issues:

  • If a custom element definition has been registered, the parser will synchronously invoke its constructor, similarly to how the parser executes script synchronously upon seeing </script> today, but then for the custom element start tag. Attributes will be added after this, synchronously one-by-one.

  • Everywhere else “upgrade” semantics will be used. Basically meaning that the browser creates the element, then invokes the constructor and callbacks at a later point. The timing of this was dubbed “nanotasks”, though it does not really involve tasks. It is basically a queue that is emptied just before the browser returns from IDL land (and at some other places).

    div.innerHTML = "<sw-rey>...</sw-rey>"
    // nanotasks happened
    console.log(div.innerHTML)

For those paying attention, none of this provides a consistent world view throughout. We gave up on that and hope that the combination of the parser doing things synchronously and other contexts not doing that will be enough to get folks to write their components in a way that is resilient to different developer practices.

Jeremy Keith (Adactio)Enhance’n’drag’n’drop

I’ve spent the last week implementing a new feature over at The Session. I had forgotten how enjoyable it is to get completely immersed in a personal project, thinking about everything from database structures right through to CSS animations,

I won’t bore you with the details of this particular feature—which is really only of interest if you play traditional Irish music—but I thought I’d make note of one little bit of progressive enhancement.

One of the interfaces needed for this feature was a form to re-order items in a list. So I thought to myself, “what’s the simplest technology to enable this functionality?” I came up with a series of select elements within a form.

Reordering

It’s not the nicest of interfaces, but it works pretty much everywhere. Once I had built that—and the back-end functionality required to make it all work—I could think about how to enhance it.

I brought it up at the weekly Clearleft front-end pow-wow (featuring special guest Jack Franklin). I figured that drag’n’drop would be the obvious enhancement, but I didn’t know if there were any “go-to” libraries for implementing it; I haven’t paid much attention to the state of drag’n’drop since the old IE implement was added to HTML5.

Nobody had any particular recommendations so I did a bit of searching. I came across Dragula, which looked pretty solid. It’s made by the super-smart Nicolás Bevacqua, who I know shares my feelings about progressive enhancement. To my delight, I was able to get it working within minutes.

Drag and drop

There’s a little bit of mustard-cutting going on: does the dragula object exist, and does the browser understand querySelector? If so, the select elements are hidden and the drag’n’drop is enabled. Then, whenever an item in the list is dragged and dropped, the corresponding (hidden) select element is updated …so that time I spent making the simpler non-drag’n’drop interface was time well spent: I didn’t need to do anything extra on the server to handle the data from the updated interface.

It’s a simple example but it demonstrates that the benefits of starting with the simpler universal interface before upgrading to the smoother experience.

ProgrammableWebHow Ohio Republicans Use APIs and Zapier

As politics continues to embrace technology to drive campaign focus and engage voters, Danny Schreiber’s post on the Zapier website discusses how the Ohio House Republican Organizational Committee (OHROC) unlocked voter data using API-driven software integrations.

ProgrammableWebDaily API RoundUp: Weaver, Elasticode, Knurld, Rosette, Bookalope, QuantiModo

Every day, the ProgrammableWeb team is busy updating its three primary directories for APIs, clients (language-specific libraries or SDKs for consuming or providing APIs), and source code samples.

ProgrammableWebAs the Google Earth API Shutdown Nears, What Are Your Options?

Due to security concerns and dwindling cross-platform support for the relevant NPAPI plugin framework, the Google Earth API is due to be shut down in early 2016.

ProgrammableWeb: APIsReviso

The Reviso API allows developers to integrate accounting functions into their own applications and systems. Reviso provides all standard accounting features, such as online invoicing, reports, support for VAT schemes, and free access for accountants and bookkeepers. Reviso is 100% online and allows users to import data from their previous systems.
Date Updated: 2016-02-05
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsBookalope

The Bookalope API allows developers to integrate manuscript analysis and conversion into their own applications. Bookalope can structure, clean, and convert manuscripts into e-books for Nook, iPad, or Kindle; into PDF print books; or into another file format for continued editing and design. All e-books produced with Bookalope validate and pass standard publishing industry tests.
Date Updated: 2016-02-05
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsRosette

The Rosette API allows developers to integrate linguistic analysis, statistical modeling, and machine learning into their own Big Text processing applications. The API includes methods for language identification, relationship extraction, categorization, sentiment analysis, name translation, name matching, base linguistics, entity extraction, and entity linking against Wikidata for English, Spanish, and Chinese. Rosette is a suite of linguistic analysis components that integrate into applications to quickly add multilingual capability for mining unstructured data. It is provided by Basis Technology.
Date Updated: 2016-02-05
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsGerencianet

The Gerencianet API allows developers to integrate its services for handling billing, payments, and receipts into their own applications. Gerencianet is a Brazilian intermediary payments company that allows users to issue bills or payment books to their customers and to get receipts for payments received. The Gerencianet website and API documentation are provided solely in Portuguese.
Date Updated: 2016-02-05
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsEnts24

The Ents24 API gives developers access to the UK’s most comprehensive live entertainment database. The API is REST based with CORS enabled. Ents24 allows users to browse and buy tickets for music events in the UK. Users can follow performers for gig alerts.
Date Updated: 2016-02-05
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWebVisa Opens up Its Global Payments Network to Developers

Visa has opened up its global payments network to developers releasing a set of APIs that includes 150 endpoints across all Visa products. The company has launched a new developer program and website so that developers can build applications powered by the Visa payments platform. This new set of APIs is the first of many APIs that the company plans on releasing in the coming months.

Jeremy Keith (Adactio)Service Worker notes

Here’s a disconnected hodge-podge of things related to Service Workers I’ve noticed recently…

Service Workers have landed in Firefox. When it was first unveiled in a nightly build a few people spotted some weird character issues on sites like mine that are using Service Workers, but that should all be fixed in the next release.

A while back I voted up Service Workers on Microsoft’s roadmap for Edge. I got an email today to say that the roadmap priority is high:

We intend to begin development soon.

We’re getting there.

Here’s a little gotcha that had me tearing my hair out until I tracked down the culprit: don’t use Header append Vary User-Agent in your site’s Apache config file. I don’t know why it snuck in there in the first place, but once I removed it, it fixed a weird issue that Aaron T. Grogg pointed out to me whereby my offline page would get cached, but not my CSS.

I really like this proposal for:

<link rel="serviceworker" href="/serviceworker.js">

It makes sense to me that I should be able to point to the Service Worker of a page in the same way that I point to a style sheet. It makes sense as a rel value too: “the linked resource has the relationship of ‘serviceworker’ to the current document.”

Also, I’m just generally a fan of declarative solutions. This feels like another good example of functionality that starts life in an imperative language (JavaScript) and then becomes declarative over time (see also: :hover, the required attribute, etc.).

Lyza wrote a fantastic article on Smashing Magazine that goes into all the details of her Service Worker. I must admit to feeling extremely gratified when she wrote:

First, I’m hugely indebted to Jeremy Keith for the implementation of service workers on his own website, which served as the starting point for my own code.

Going through her code, she made this remark:

Note: I use certain ECMAScript6 (or ES2015) features in the sample code for service workers because browsers that support service workers also support these features.

That’s a really good point. I haven’t messed around much with ES6 HipsterScript stuff partly because I haven’t yet set up a transpiler, so it was nice to know that my Service Worker is a “safe space” to try some stuff out in the browser. I refactored my JavaScript to use const, let, and =>.

Jake is looking for feedback on a specific part of Service Worker functionality around URLs. If I can wrap my head around what’s being described, I’ll chime in.

Finally, I had a nice little Service Worker moment earlier today. I was doing some updates on my web server that required a reboot. When I checked in Chrome to see how long adactio.com was down, I was surprised to see that the downtime appeared to be …zero. “That’s odd” I thought, “How can my site still be reachable if the server is …oh!” That’s when I realised I was seeing a cached version of my homepage. My Service Worker was doing it’s thing.

I had been thinking of Service Workers as a tool to help in situations where the user agent goes offline. But of course it’s an equally useful tool for when the server goes offline. This was a nice reminder of that.

ProgrammableWebSupercell Launches Clash of Clans Developer API in Beta

Supercell, Clash of Clans developer, has released a new Clash of Clans Developer API in beta. Aimed at intense gamers, Web developers, Clans, and Clan Wars; the new API should trigger new websites, apps, and additional services dedicated to Clash of Clans enthusiasts.

Anne van Kesteren (Opera)Three years at Mozilla

I started in London during a “work week” of the Platform group. I had also just moved to London the weekend prior so everything was rather new. I don’t remember much from that week, but it was a nice way to get to know the people I had not met yet through standards and figure out what things I could be contributing to.

Fifteen months later I moved to Switzerland to prepare for the arrival of Oscar and Mozilla has been hugely supportive of that move. That was so awesome. Oscar is too of course and might I add he is a little bigger now and able to walk around the house.

Over the years I have helped out with many different features that ended up in Gecko and Servo (the web engines Mozilla develops) through a common theme. I standardize the way the web works to the best of my ability. In the form of answering questions, working out fixes to standards such as the security model of the Location and Window objects, and helping out with the development of new features such as “foreign fetch”. I hope to continue doing this at Mozilla for many years to come.

ProgrammableWebEnvestnet | Yodlee Releases New API Architecture for Its Financial Data Platform

Today, Envestnet | Yodlee announced "a simpler, more intuitive RESTful API architecture that allows developers to integrate with and access the company's data platform with less effort and time spent." The digital financial services company continues its dedication to the developer community as it aims to lead in providing financial data through a world class developer experience.

Andy Budd (Clearleft)The Industrialisation of Design (or why Silicon Valley no longer hires UX designers)

Despite having their roots in Silicon Valley, UX designers are a rare breed inside traditional tech companies like Google, Facebook and Twitter. In some cases they are so rare that other designers claim UX design doesn’t even exist. As a result I thought it would be interesting to explore where this attitude has come from, to see if it can hint at where our industry is heading.

In my (largely anecdotal) experience, Silicon Valley startups are focussed on hiring product designers at the moment. If you haven’t come across the product designer term before, you can think of them as next generation web designers; talented generalists with an affinity towards mobile and a desire to create great digital experiences for all.

While hiring product designers is all the rage at the moment, that hasn’t always been the case. Many early stage start-ups were originally conceived by individuals who considered themselves user experience designers. Many of these individuals have subsequently moved into design leadership roles at companies like Amazon, Adobe and IBM.

UX design is undoubtedly a specialism, focussing on the strategic and conceptual aspects of design, rather than the more tangible elements of UI. In that regard it has close similarities with service design, but is typically scoped around digital experiences. As practitioners traditionally came to UX design later in their careers, either through Information Architecture and Human Computer Interaction, or UI design and front-end development, there are naturally fewer experienced UX Designers than other disciplines.

This lack of supply, combined with increased demand, started to cause problems. Thankfully, a rising awareness around the general concept of user experience (as opposed to the practice of user experience design) saw more and more UI designers explore this space. Designers started to gain an increased sensitivity towards the needs of users, the demands of different platforms, and an understanding of basic interaction design practices like wireframes and prototypes. A new hybrid began to emerge in the form of the product designer; somebody who understood the fundamentals of UX Design, but retained their focus on tangible UI design.

The viability of the Silicon Valley product designer was made possible by several interesting trends. First off, tech companies started to hire dedicated design researchers; a role that UX designers would often have done themselves. They also started to hire dedicated product managers, releasing the need for designers to engage in deep product strategy. The has led many experienced UX designers to follow careers in research and product management, while others have moved towards IoT and service design.

At the same time, the rise of design systems has reduced the reliance on traditional craft skills. Rather than having to create interfaces from scratch, they can now be assembled from their component parts. This has allowed product designers to spend more time exploring newer fields of interaction design like animated prototypes. You could argue that thanks to design systems, product designers have become the new interaction designers.

This is further helped by companies with a vibrant developer culture and a focus on continual release. Rather than having to spend months researching and strategising, you can now come up with a hunch, knock up a quick design, launch it on a small subset of users and gain immediate feedback.

As a result of these infrastructure changes, tech companies no longer need people with deep UX expertise at the coalface. Instead these skills are now centred around management and research activities, allowing the companies to grow much faster than they otherwise would.

However this approach is not without growing pains, as I learnt when chatting to a design team director at one of the big tech companies recently. There was definitely a sense that while the new breed of product designers were great at moving fast and delivering considerable change, they lacked some of the craft skills you’d expect from a designer. Instead, design languages, prototyping tools, research teams and multi-variant testing were maybe acting as crutches, hiding potential weaknesses. There was also a concern that product designers were so focussed on the immediate concerns of the UI, they were struggling to zoom out, see the big picture and think more strategically.

All these concerns aside, it’s easy to see why, inside the tech industry bubble, UX design may no longer be recognised as a distinct thing.

Norman Walsh (Sun)The short-form week of 25–31 Jan 2016

<article class="essay" id="content" lang="en">

The week in review, 140 characters at a time. This week, 17 messages in 20 conversations. (With 2 favorites.)

This document was created automatically from my archive of my Twitter stream. Due to limitations in the Twitter API and occasional glitches in my archiving system, it may not be 100% complete.

In a conversation that started on Sunday at 12:55pm

Been hacking #Emacs again the past few days. Serious fun. Also: finally became a helm convert. Seriously productive.—@ndw
@ndw Curious: what language do you write most of your code in? Are you doing that coding in Emacs as well?—@avernet
@avernet Day job is mostly XQuery. I also do XML, XSLT, JavaScript, Java, Scala, and others. #Emacs for everything but Java and Scala.—@ndw
@ndw Got it, I was wondering you had been happy using Emacs for Scala/Java.—@avernet
@avernet Trying to move back to Emacs for Scala/Java is on my list of things to explore.—@ndw
@ndw BTW, if you're interested in digging into ENSIME, I'd recommend this talk by @fommil and @a_dev_musing. https://t.co/3AlYltY0BS —@avernet
@ndw I have big hopes for ENSIME, but it's so far quite a step down from IntelliJ.—@avernet
@avernet @ndw what is missing in that big step?—@fommil
@fommil @ndw I'd say support for mixed projects (Java+Scala), "find usages", and "good" Scala debugging.—@avernet
@avernet @ndw Java is supported, find usages on the roadmap and a new debugger is imminent.—@fommil
@fommil @ndw Awesome. I'm seriously excited to see ENSIME/Emacs become a serious alternative to IntelliJ.—@avernet
@avernet @ndw it already is ;-) I've been using it on huge projects for almost two years. Very productive.—@fommil

Monday at 06:10pm

FAV
Your periodic reminder that oppressed people shouldn't have to "do something" about their oppression. They didn't make the mess.—@leeflower

Monday at 08:33pm

RT @zarfeblong: My sympathies to everyone about to watch an updated X-Files. I grew up a hard-ass Prisoner fan, so I've already had my turn…—@ndw

Monday at 08:44pm

RT @ChrisGrace: "The surest defense against terrorism is to refuse to be terrorized.” — Bruce Schneier—@ndw

Tuesday at 12:49am

@edd Trello has something like that.—@ndw

Wednesday at 12:11am

RT @tommorris: There is someone on the AirTrain with a MongoDB branded bag. To maximise comedy in the world, the airline will lose it.—@ndw

Wednesday at 12:49am

@tommorris @ndw Baggage service is eventually consistent.—@mdubinko

Wednesday at 06:33am

@tommorris @ndw I'm sure it will show up eventually—@msokolov

Thursday at 12:10am

RT @DavidAllenGreen: "If you have nothing to hide, you have nothing to fear," say the very same politicians who are seeking to restrict fre…—@ndw

Thursday at 10:32am

RT @FakeUnicode: You g̶u̶y̶s̶ g̶u̶y̶s̶ ̶a̶n̶d̶ ̶g̶a̶l̶s̶ p̶e̶o̶p̶l̶e̶ sapient agents of non-binary gender and indeterminate specie are all …—@ndw

Thursday at 10:22pm

RT @Multimaniaco: THIS. (From «Steal Like An Artist» by Austin Kleon) https://t.co/IQ7xidNMeH —@ndw

Friday at 04:17pm

Sounds right to me. https://t.co/oGyzvqFhfp —@ndw

Saturday at 11:27am

RT @parimalkumar: JK Rowling is on top form. https://t.co/nfFUVjXaOK —@ndw

Sunday at 01:36am

RT @dret: seeing the obtrusive flood of "living document" updates at @w3c, it's good that at least there's no support for timestamps on pub…—@ndw

Sunday at 09:16am

@dret I agree we can all be glad @w3c TR space will no longer be largely a graveyard but instead a place you can find up-to-date specs @ndw —@sideshowbarker

Sunday at 02:13pm

No, "{{Salutation,DefaultTo=Friend}}," doesn't seem impersonal and spammy at all. Why do you ask?—@ndw

Sunday at 02:16pm

FAV
@tacodeli for breakfast. Sat outside in glorious sunshine. Don't wanna leave Texas waaaaahhh!! #backtoLondon #UKwhyyousocold —@doctortovey

Sunday at 02:18pm

RT @PinPopular: Cheap cab ride? You must have missed Uber’s true cost | Evgeny Morozov | Opinion | The Guardian https://t.co/Bqeg2DMwFm —@ndw

Sunday at 04:49pm

RT @_james_fuller: XML In, Web Out: Balisage pre-conference symposium https://t.co/XMF4WNHFgT #balisage —@ndw

In a conversation that started on Sunday at 06:17pm

I should ask @ndw whether he's still liking Austin.—@kendall
.@kendall Austin remains lovely. Open carry and other craziness is unfortunate but still seems tolerable.—@ndw
@ndw I keep finding houses there that I would love to live in... :)—@kendall
</article>

Norman Walsh (Sun)The short-form week of 18–24 Jan 2016

<article class="essay" id="content" lang="en">

The week in review, 140 characters at a time. This week, 25 messages in 30 conversations. (With 7 favorites.)

This document was created automatically from my archive of my Twitter stream. Due to limitations in the Twitter API and occasional glitches in my archiving system, it may not be 100% complete.

In a conversation that started on Thursday at 01:06pm

Inspired by @n1vux attempting to update the comp.fonts FAQ, I put it up on github. Pull requests welcome: https://t.co/UVKRM2MkZ5 —@ndw
@ndw @n1vux Good deal! :) Bill, didn't you tell Norm about... https://t.co/bngCczZOX4 —@pzelchenko
@pzelchenko @ndw guilty as charged—@n1vux
@ndw awesome! Does this include the updates by @n1vux ? :)—@davelab6
@davelab6 @ndw yes it includes Peter Zelchenko's NOVO update that I forwarded. (It includes much bibliography from me back when)—@n1vux
@ndw Bookmarked ... I'll be back !—@n1vux

In a conversation that started on Monday at 12:13am

ES6: "when trying to overwrite a const variable the variable is left unchanged. It does NOT throw an error" #WAT!?—@ndw
@ndw *in sloppy mode. In strict mode it throws an error. Always program in strict mode.—@tabatkins

In a conversation that started on Monday at 12:28am

@jorabin What did the EULA say when you agreed to the collection? (P.S. "No.")—@ndw
@ndw if I declined to reveal my birth date they'd reasonably decline to issue a ticket. Do you agree to micro targetting? Not a question.—@jorabin

Monday at 07:12am

XML Stars, the journal is out! https://t.co/CKd38xMeX0 Stories via @james_clark @ndw —@dominixml

Monday at 10:23am

FAV
Cool video of a vortex in a pool. Especially at the end when she shows with dye how the two… https://t.co/afQYhomrqQ https://t.co/GYWW6sazHi —@nazgul

Monday at 11:06am

Given that "application/xml-external-parsed-entity" contains "appliation/xml" as a substring, I wonder how many tools would fall over.—@ndw

In a conversation that started on Monday at 06:03pm

I donated $100 to the Center for Biological Diversity. https://t.co/ZENjHT890w Thank you. #Oregonstandoff —@ndw

Tuesday at 12:19am

@mholzschlag @w3c Congratulations Molly!—@ndw

Tuesday at 12:36am

RT @trieloff: Why I hate your Single Page App https://t.co/nxQhrqzSUj —@ndw

In a conversation that started on Tuesday at 12:24pm

So #Chrome on #Linux seems to have become confused about dropdown lists. They appear entirely blank but arrow keys on them work. Just me?—@ndw
@ndw A bit .. inaccurate, but not blank?—@dpawson
@dpawson The drop-down rectangle is entirely empty. Just a white void.—@ndw
@ndw I'm on Fedora Version 47.0.2526.111 (64-bit) . E.g. all FB pull downs working OK?—@dpawson
@dpawson Here's a simple dropdown on https://t.co/fBReEpQAVY on my Ubuntu box. https://t.co/YEpRptQMJ7 —@ndw
@ndw count down shows to and for in list.—@dpawson

Tuesday at 12:39pm

FAV
Every complaint about Millennials in summary: Baby Boomers are angry we're reshaping & adapting to a world they won't admit they broke.—@fozmeadows

In a conversation that started on Tuesday at 02:30pm

@ndw I love that they included fizzbuzz in the example scripts—@dmcassel

Tuesday at 05:15pm

FAV
I know just the database to power #cancermoonshot https://t.co/0fpNSNUNAq —@grechaw

In a conversation that started on Tuesday at 05:22pm

So Gmail starts redirecting to Inbox (which you can turn off and I have). I don't see any way to edit filters from Inbox. Am I missing it?—@ndw
@ndw I hated Inbox at first. Now I'm addicted. AMA.—@kendall
@kendall I use it all the time, I'm just confused about how Google expects me to manage filters now that gmail redirects there.—@ndw
@ndw @kendall I expect they don't. Because most people don't use filters.—@avernet
@avernet @ndw I do. Or rather I did... :(—@kendall
@kendall @avernet They work fine in Inbox, you just have to get through to GMail to configure them. Either would be useless without them.—@ndw

Tuesday at 10:19pm

@LedgerTips Naive question: can I setup recurring payments so I don't have to manually enter identical transactions each month?—@ndw

Wednesday at 12:14am

RT @ErnieAtLYD: Basically, 90% of why i want to start my own tech company is to hire diverse people by not giving stupid whiteboard problem…—@ndw

In a conversation that started on Wednesday at 12:20am

@shelleypowers @FBI Indeed. I'm struggling to understand why these vandals haven't been taken by force and arrested.—@ndw
@ndw @FBI Agree. This isn't Ruby Ridge. This isn't Waco. It could be, though, if the lawbreakers are allowed to entrench.—@shelleypowers

Wednesday at 12:35am

Would it help if I donated $100/month to the Center for Biological Diversity until these asshats are removed? #Oregonstandoff —@ndw

Wednesday at 12:38am

.@PicardTips I've considered it.—@ndw

Wednesday at 10:26am

skype.el. Heh. #emacsallthethings —@ndw

Wednesday at 07:31pm

RT @kendall: Yeah, why would you ever want business logic in a declarative graph-based data model?! https://t.co/cYRQmqiLHi —@ndw

Thursday at 12:53am

RT @zephoria: Some days I'm convinced that people don't want to hear knowledge but rather bullshit that resonates. And this kills me.—@ndw

Thursday at 06:29am

@zephoria @ndw the truth hurts—@msokolov

Thursday at 06:09pm

FAV
Overheard: "We were in heaven, then there was this big bang. After that, 13.5 billion years of hell."—@dsearls

In a conversation that started on Friday at 02:52am

Hey @ndw to your knowledge, is anyone hosting MarkLogic on DreamHost?—@mdubinko
@mdubinko No, I considered trying it but I got barked at once for running too much Perl so I figured they woudn't like it :) Working on AWS—@ndw
@ndw @mdubinko How about Azure? We have tentatively planned to start testing that in a few weeks.—@willseth

Friday at 05:07pm

@jaredsinclair @MattioV This is known as the "don't be a dick" rule.—@ndw

Sunday at 11:08am

FAV
The blast doors were sealed, the oxygen depleting. They begged the ship's AI to explain. "Object object", was all the silvery voice replied.—@mcclure111

Sunday at 02:54pm

FAV
“Anheuser-Busch donates truck-load of canned water to Flint” … so Bud Light then?—@mdubinko

Sunday at 03:49pm

FAV
I suppose all the health advantages of kale are negated utterly when I roast it in goose fat. #ifthatiswrongidontwanttoberight —@mathling

Monday at 08:33pm

RT @zarfeblong: My sympathies to everyone about to watch an updated X-Files. I grew up a hard-ass Prisoner fan, so I've already had my turn…—@ndw
</article>

Norman Walsh (Sun)The short-form week of 11–17 Jan 2016

<article class="essay" id="content" lang="en">

The week in review, 140 characters at a time. This week, 17 messages in 22 conversations. (With 4 favorites.)

This document was created automatically from my archive of my Twitter stream. Due to limitations in the Twitter API and occasional glitches in my archiving system, it may not be 100% complete.

In a conversation that started on Sunday at 12:55pm

Been hacking #Emacs again the past few days. Serious fun. Also: finally became a helm convert. Seriously productive.—@ndw
@ndw Curious: what language do you write most of your code in? Are you doing that coding in Emacs as well?—@avernet
@avernet Day job is mostly XQuery. I also do XML, XSLT, JavaScript, Java, Scala, and others. #Emacs for everything but Java and Scala.—@ndw
@ndw Got it, I was wondering you had been happy using Emacs for Scala/Java.—@avernet
@avernet Trying to move back to Emacs for Scala/Java is on my list of things to explore.—@ndw
@ndw BTW, if you're interested in digging into ENSIME, I'd recommend this talk by @fommil and @a_dev_musing. https://t.co/3AlYltY0BS —@avernet
@ndw I have big hopes for ENSIME, but it's so far quite a step down from IntelliJ.—@avernet
@avernet @ndw what is missing in that big step?—@fommil
@fommil @ndw I'd say support for mixed projects (Java+Scala), "find usages", and "good" Scala debugging.—@avernet
@avernet @ndw Java is supported, find usages on the roadmap and a new debugger is imminent.—@fommil
@fommil @ndw Awesome. I'm seriously excited to see ENSIME/Emacs become a serious alternative to IntelliJ.—@avernet
@avernet @ndw it already is ;-) I've been using it on huge projects for almost two years. Very productive.—@fommil

In a conversation that started on Sunday at 11:10pm

. @ndw tying up a comp.fonts loose thread, PeteZ origin of Hobo - https://t.co/92A137ZJAS —@n1vux
@n1vux @ndw damn that's a shaggy dog story!—@hoover_dam
@hoover_dam @ndw he left out the shaggiest details ...—@n1vux
@n1vux @hoover_dam I think I missed the beginning of this conversation.—@ndw
@ndw Last year i nagged him yet again to write it up properly. He did. Finally sent link over weekend. cc: you as our FAQ editor emeritus:)—@n1vux
@ndw @hoover_dam the beginning was on Comp.Fonts 20+ years ago. Pete Zelchenko and Kibo got the clue on Hobo's origin ~ 1992.—@n1vux
@n1vux @ndw @hoover_dam Interestingly, I only noticed the irrefutable egg-shaped "O" coincidence last week, which is why I am reposting.—@pzelchenko
@pzelchenko @ndw @hoover_dam probably the first thing Kibo noticed but didn't itemize. (Driving with him was weird.)—@n1vux

Monday at 01:21am

RT @gimsieke: Dreaming of an alternate universe in which XQuery, XSLT, and XProc do away with all these makeshift JS approaches. https://t.… —@ndw

Monday at 01:30am

RT @JamieFord: Oddly enough, many people who say "I don't vote because one vote doesn't matter" have no problem with #Powerball odds.—@ndw

Monday at 05:06am

@gimsieke @ndw "React says imm. when you forget to close a tag or ref a nonexistent prop. This radically speeds development." XML anyone?—@stevenpemberton

Wednesday at 04:35am

@ndw Interested in finding out the easy way to grow a startup? Come to a free workshop Feb 3rd: https://t.co/ecW69k0wXC —@vdignan

In a conversation that started on Wednesday at 02:08pm

Dear @MarkLogic I still own a MarkLogic group on linkedin, how do i transfer it to you? cc @ndw @peteaven —@dscape
@dscape @MarkLogic @ndw I think @dmcassel may be able to help—@peteaven
@peteaven @ndw @dmcassel can you confirm this is the correct person to transfer to? https://t.co/Ai7JgUg061 —@dscape
@dscape @peteaven @ndw He's a good choice -- please transfer to him and we can take it from there. Thanks!—@dmcassel
@dscape @MarkLogic @ndw @peteaven Hotel California! LOL ;-)—@grtjn

In a conversation that started on Thursday at 01:06pm

Inspired by @n1vux attempting to update the comp.fonts FAQ, I put it up on github. Pull requests welcome: https://t.co/UVKRM2MkZ5 —@ndw
@ndw @n1vux Good deal! :) Bill, didn't you tell Norm about... https://t.co/bngCczZOX4 —@pzelchenko
@pzelchenko @ndw guilty as charged—@n1vux
@ndw awesome! Does this include the updates by @n1vux ? :)—@davelab6
@davelab6 @ndw yes it includes Peter Zelchenko's NOVO update that I forwarded. (It includes much bibliography from me back when)—@n1vux
@ndw Bookmarked ... I'll be back !—@n1vux

Friday at 04:12pm

FAV
He was heavily into BDSM - Batman, Dungeons & Dragons, Star Wars and Mathematics.—@50NerdsofGrey

Saturday at 12:03am

RT @lecanardnoir: Rickman’s “secret” battle with cancer and Bowie’s “secret” cremation. Word is “private”, newspapers. You have no automat…—@ndw

Saturday at 09:39am

FAV
I had a dream I was drowning in orange soda. It seemed so real, but when I woke up I realized the whole thing was just a Fanta sea.—@beckycloonan

Saturday at 03:24pm

FAV
Republicans are so angry about Obama freeing U.S. prisoners you'd think he'd given them health care.—@LOLGOP

Sunday at 12:00am

FAV
You might want to let this one marinate. https://t.co/9d2c1ogtkc —@codepink

Sunday at 12:23am

@dweinberger Probably not, but it's a lot less profitable for their friends.—@ndw

Sunday at 10:46am

Ugh. Pixel perfect, two-factor defeating LastPass phishing. https://t.co/oQkUIPLUEN #security #fail —@ndw

In a conversation that started on Monday at 12:13am

ES6: "when trying to overwrite a const variable the variable is left unchanged. It does NOT throw an error" #WAT!?—@ndw
@ndw *in sloppy mode. In strict mode it throws an error. Always program in strict mode.—@tabatkins

Monday at 12:14am

RT @fgeorges: "I use `const` by default, `let` only where it is required and `var` to identify code which needs to be refactored." https://… —@ndw

Monday at 12:20am

My new favorite poem! https://t.co/4qee7X9Ogz —@ndw

Monday at 12:20am

RT @cczona: Conferences: STEAL THIS IDEA. Talk time slot on badge! My speaker anxiety and my networking impulses both thank you. https://t.… —@ndw

In a conversation that started on Monday at 12:28am

@jorabin What did the EULA say when you agreed to the collection? (P.S. "No.")—@ndw
@ndw if I declined to reveal my birth date they'd reasonably decline to issue a ticket. Do you agree to micro targetting? Not a question.—@jorabin

Monday at 12:32am

RT @ACLU: You may not understand #trans people, but we too deserve privacy, fairness, & liberty by @xychelsea https://t.co/iLFmm7YkJW —@ndw

Monday at 12:51am

RT @gknauss: Stuff the GOP sees as existential threats: ISIS, healthcare, gun control. Stuff that actually is: fear-mongering, lack of hea…—@ndw
</article>

Norman Walsh (Sun)The short-form week of 4–10 Jan 2016

<article class="essay" id="content" lang="en">

The week in review, 140 characters at a time. This week, 30 messages in 26 conversations.

This document was created automatically from my archive of my Twitter stream. Due to limitations in the Twitter API and occasional glitches in my archiving system, it may not be 100% complete.

In a conversation that started on Sunday at 12:55pm

Been hacking #Emacs again the past few days. Serious fun. Also: finally became a helm convert. Seriously productive.—@ndw
@ndw Curious: what language do you write most of your code in? Are you doing that coding in Emacs as well?—@avernet
@avernet Day job is mostly XQuery. I also do XML, XSLT, JavaScript, Java, Scala, and others. #Emacs for everything but Java and Scala.—@ndw
@ndw Got it, I was wondering you had been happy using Emacs for Scala/Java.—@avernet
@avernet Trying to move back to Emacs for Scala/Java is on my list of things to explore.—@ndw
@ndw BTW, if you're interested in digging into ENSIME, I'd recommend this talk by @fommil and @a_dev_musing. https://t.co/3AlYltY0BS —@avernet
@ndw I have big hopes for ENSIME, but it's so far quite a step down from IntelliJ.—@avernet
@avernet @ndw what is missing in that big step?—@fommil
@fommil @ndw I'd say support for mixed projects (Java+Scala), "find usages", and "good" Scala debugging.—@avernet
@avernet @ndw Java is supported, find usages on the roadmap and a new debugger is imminent.—@fommil
@fommil @ndw Awesome. I'm seriously excited to see ENSIME/Emacs become a serious alternative to IntelliJ.—@avernet
@avernet @ndw it already is ;-) I've been using it on huge projects for almost two years. Very productive.—@fommil

Monday at 06:10am

RT @jameswjacobs: I haven't been able demonstrate against the #RailRipOff but am with @ActionForRail in spirit. Share if you are! https://t… —@ndw

In a conversation that started on Monday at 06:43am

Every. Single. One. Of. These. https://t.co/niu6a7QHHx —@ndw
@ndw @psd 👏—@TonyYates
@ndw @psd "... you guys chucked a wobbly over it" - New design award name : The Wobblys—@dierken

Tuesday at 07:12am

XML Stars, the journal is out! https://t.co/g9C8EPw4cu Stories via @ndw @xmlgrrl —@dominixml

In a conversation that started on Tuesday at 07:34am

@codinghorror you lost me at "Taco Bell window".—@ndw

Tuesday at 07:40am

RT @wilkieii: when an enemy ship tells you to power down your shields so you can truly enjoy the photon torpedo experience https://t.co/dgr… —@ndw

Tuesday at 01:55pm

Things that do not scare me appreciably: refugees, muslim or otherwise. Things that terrify me: Antonin Scalia and Y'all Queda—@ndw

In a conversation that started on Tuesday at 09:51pm

Networks and cable must be the leading cause of torrents. I'd like to see Sherlock: The Abominable Bride. I'd happily pay. It's nowhere.—@ndw
@ndw Dunno if you've seen this, but I think it will be freely available online for a while after the 11th https://t.co/40Ya0ksB9Y —@iTod
@ndw when are you next across the pond? it will probably be free on BBC for weeks: longer if one of us downloads it for you (legally)—@tom_yamahito
@tom_yamahito Unknown. But thanks. It'll turn up.—@ndw

In a conversation that started on Tuesday at 09:52pm

It took less than 10 seconds to find as a torrent. I won't. Because I don't. But still. Come on, I'm begging you, take my money.—@ndw
@ndw we're always working on it. sorry, there are still windows of rights in the industry. content ought to be global and immediate.—@aspyker

Tuesday at 11:51pm

RT @doctorow: The difference between resisting oppression and being a flake https://t.co/JnpryvZuuE —@ndw

Wednesday at 05:47pm

building gcc // 4 point 8 point 3 not 5 // leaves time for haiku /cc @alexmilowski @xquery @ndw —@grechaw

In a conversation that started on Thursday at 07:44pm

Favourite #android #twitter client? @timbray recommended twicca last time I asked, but it's started to seem a bit flaky.—@ndw
@ndw another vote for @fenix_app. Talon wasn't too bad, but I haven't used it in a long while.—@CanOfBees
@ndw @timbray @fenix_app! Second choice: @falcon_android. Third choice: @PlumeApp.—@AndreasDriesen
@ndw Been using Fenix recently, but find I need to change clients every year or so.—@timbray
@ndw I've been using @fenix_app for the past couple days. Great so far.—@rdeltour
@ndw @timbray Twidere.—@nik_clayton

Thursday at 07:48pm

RT @brianleroux: yes promises are easy. callbacks are also easy. you know what else is easy? cutting my fingers off with a bandsaw. easy …—@ndw

In a conversation that started on Friday at 09:29am

Sorely tempted to add ".*@.*forcongress\\.*" to my email spam filter.—@ndw
@ndw Well. Ok. ".*@.*forcongress\\..*" if you want to be pedantic. And I know you do. Better still, probably \\.com$ maybe.—@ndw

Friday at 11:51am

Unicode has all the double-six dominoes, both horizontally and vertically. I believe we should petition for all of the Carcassonne tiles!—@ndw

Friday at 01:42pm

@stilkov @JeniT While I generally agree, I do sometimes appreciate not having to navigate past paywall, pop-ups, and ads of source.—@ndw

In a conversation that started on Friday at 03:56pm

I'm quite pleased with my helmification of XML Unicode, https://t.co/GILavigZL5 #Emacs #Helm #Unicode #XML https://t.co/fjNRplzKk4 —@ndw
&#246;&#104;&#32;&#103;&#246;&#100;&#32;&#109;&#121;&#32;&#xeb;&#xff;&#xeb;&#x73; [@ndw] https://t.co/4LWDSefsK2 —@FakeUnicode
@ndw beautiful, which font face are you using?—@adben
@ndw Tks Norm. didn't James have something similar? Missing the 'insert ncr if no glyph' bit though?—@dpawson
@dpawson XML Unicode will insert NCRs. There's no easy way to tell what characters have glyphs, of course, so there's a list in the package.—@ndw
@ndw Bit more on 'helmification' pls @ndw —@dpawson
@dpawson Integration with the Helm "incremental completion and selection narrowing framework" https://t.co/yDHDzO2aGr —@ndw
@ndw Tks Norm.—@dpawson

Friday at 04:23pm

Helmification of XML Unicode https://t.co/18tgdJpvws @ndw #emacs #xml —@patrickDurusau

Friday at 08:45pm

@mikeloukides Why? They're clearly betting on a glued shut, take what we give you, get SW only from us future.—@ndw

Friday at 08:52pm

RT @GonzoHacker: Silicon Valley isn't solving the "big problems" anymore, but, to be fair, there is only so much you can do with JavaScript…—@ndw

Saturday at 02:35am

The ᐸinnovimax/ᐳ Daily is out! https://t.co/fF4kG8ppGy Stories via @shelleypowers @ndw @ppeccatte —@innovimax

Saturday at 03:01am

RT @scalzi: Dear every other state but Texas: Please do not let Texas' dipshit of a governor fiddle with the US Constitution. Thanks -- JS—@ndw

Saturday at 03:04am

RT @scalzi: (Texas, and most Texans I've met, are lovely, to be clear. But you sure do love electing complete dipshits to major offices.)—@ndw

In a conversation that started on Sunday at 11:10pm

. @ndw tying up a comp.fonts loose thread, PeteZ origin of Hobo - https://t.co/92A137ZJAS —@n1vux
@n1vux @ndw damn that's a shaggy dog story!—@hoover_dam
@hoover_dam @ndw he left out the shaggiest details ...—@n1vux
@n1vux @hoover_dam I think I missed the beginning of this conversation.—@ndw
@ndw Last year i nagged him yet again to write it up properly. He did. Finally sent link over weekend. cc: you as our FAQ editor emeritus:)—@n1vux
@ndw @hoover_dam the beginning was on Comp.Fonts 20+ years ago. Pete Zelchenko and Kibo got the clue on Hobo's origin ~ 1992.—@n1vux
@n1vux @ndw @hoover_dam Interestingly, I only noticed the irrefutable egg-shaped "O" coincidence last week, which is why I am reposting.—@pzelchenko
@pzelchenko @ndw @hoover_dam probably the first thing Kibo noticed but didn't itemize. (Driving with him was weird.)—@n1vux

Monday at 01:21am

RT @gimsieke: Dreaming of an alternate universe in which XQuery, XSLT, and XProc do away with all these makeshift JS approaches. https://t.… —@ndw

Monday at 01:30am

RT @JamieFord: Oddly enough, many people who say "I don't vote because one vote doesn't matter" have no problem with #Powerball odds.—@ndw
</article>

Norman Walsh (Sun)The short-form week of 28 Dec 2015–3 Jan 2016

<article class="essay" id="content" lang="en">

The week in review, 140 characters at a time. This week, 26 messages in 26 conversations.

This document was created automatically from my archive of my Twitter stream. Due to limitations in the Twitter API and occasional glitches in my archiving system, it may not be 100% complete.

Monday at 10:30pm

The Doctor Who Christmas Special was sweet and silly and full of action and a real delight to see at the cinema.—@ndw

Tuesday at 04:59pm

Dear @Pinterest you are so determined to force me to use your app that I've deleted it, unsubscribed, and will ignore you forevermore.—@ndw

Tuesday at 05:00pm

@doctortovey Shiny! :-)—@ndw

Tuesday at 11:32pm

RT @mattpodwysocki: OH: "take me down to concurrency city where green pretty is grass the girls the and are"—@ndw

Tuesday at 11:35pm

RT @zeldman: .@s9tpepper @anatudor They persist on Twitter only to sell your data to advertisers, & their fragility breaks the web’s most b…—@ndw

Wednesday at 09:50am

The reminder that open carry goes into effect on Friday has significantly reduced my enthusiasm for the new year.—@ndw

Wednesday at 11:27pm

RT @tressiemcphd: Why Do Poor People 'Waste' Money On Luxury Goods? https://t.co/ABgM295gpK By any metric I have, this remains my most read…—@ndw

Wednesday at 11:39pm

RT @tinybaby: Because the baby boomers destroyed the economy through deregulation & replaced all labor laws with a pic of Reagan http://t.c… —@ndw

Wednesday at 11:48pm

RT @animalfriespls: Worry less about homosexuality. Worry more about homophones. https://t.co/Gm3f6MvjLS —@ndw

Thursday at 07:14am

XML Stars, the journal is out! https://t.co/3NzjxfYvDB Stories via @ndw @james_clark —@dominixml

In a conversation that started on Thursday at 11:04am

Famous puzzle editor, six, no, er, five letters. Wait, what now? #copyediting #bookcovers https://t.co/4oe0tlSc0O —@ndw
@ndw Oooh ouch!—@doctortovey

Thursday at 03:54pm

RT @tommorris: "Atheism is itself a religion" is a tiresome cliche used nearly exclusively by bores, fools and halfwits.—@ndw

Thursday at 06:26pm

RT @erwan: While waiting for npm install to download the whole Internet, I remembered when JS devs made fun of Java with its jars and maven.—@ndw

Friday at 12:27am

@tommorris Rock on!—@ndw

Friday at 12:31am

RT @neiltyson: To all those who reckon time on the Gregorian Calendar - Happy New Year! (FYI: January 1 is astronomically insignificant.)—@ndw

Friday at 11:30pm

RT @UnixToolTip: 'The enjoyment of one's tools is an essential ingredient of successful work.' -- Donald E. Knuth—@ndw

Saturday at 09:30am

RT @rifflesby: Confirm that you have landed on the Prime Material Plane. If you have landed on an Elemental Plane, do not exit. https://t.c… —@ndw

In a conversation that started on Saturday at 09:57am

@psd Thus begins the year in which I inform managers of businesses that I'm leaving b/c they've let in some loon with a firearm.—@ndw
@ndw @psd and start planning to move somewhere with saner gun laws—@laurendw
@laurendw @psd Already working on that!—@ndw
@ndw consumer sense trumping common sense—@psd

Saturday at 10:31pm

RT @MsJulieLenarz: Hey @UN do you care to comment on Saudi Arabia executing 47 prisoners in a day given they currently chair your Human Rig…—@ndw

In a conversation that started on Sunday at 12:25am

@mdubinko I hope you got my 4 then!—@ndw
@ndw Several. I need to make it give better feedback on submit.—@mdubinko

Sunday at 12:27am

RT @ixKylie: Im not worried abt plane attacks, “mentally ill” shooters or Black protesters. Im terrified of armed white right extremist ter…—@ndw

In a conversation that started on Sunday at 12:31am

@pjkelly5 @ndw Thx & try another one or two… Is the submit handling better? Also, what browser are you using? https://t.co/tVFeLgv95J —@mdubinko
@mdubinko @pjkelly5 I'll do a few more. Was on Chrome on Android yesterday.—@ndw
@mdubinko @ndw Sent a five and left a comment.—@pjkelly5
@pjkelly5 @ndw awesome!—@mdubinko

Sunday at 09:20am

@MsJulieLenarz @ndw Germany is chair of the UNCHR. Re Saudi Arabia role: https://t.co/quEp1z9eu1 —@EileenOttawa

In a conversation that started on Sunday at 10:17am

Given I do all of my banking online, I find it odd that I'm so wary of exclusively online banks. Aspiration seems legit, right?—@ndw
@ndw I’ve been using First Internet Bank of Indiana since 2003. Happy customer.—@hunterhacker
@hunterhacker @ndw That was also my bank for many years.—@ispraveendead
@ndw I've used an online-only bank since 2001. As long as it's FDIC insured, there's no worry.—@ispraveendead
@ndw not at all odd. History is on your side.—@laurendw

In a conversation that started on Sunday at 12:55pm

Been hacking #Emacs again the past few days. Serious fun. Also: finally became a helm convert. Seriously productive.—@ndw
@ndw Curious: what language do you write most of your code in? Are you doing that coding in Emacs as well?—@avernet
@avernet Day job is mostly XQuery. I also do XML, XSLT, JavaScript, Java, Scala, and others. #Emacs for everything but Java and Scala.—@ndw
@ndw Got it, I was wondering you had been happy using Emacs for Scala/Java.—@avernet
@avernet Trying to move back to Emacs for Scala/Java is on my list of things to explore.—@ndw
@ndw BTW, if you're interested in digging into ENSIME, I'd recommend this talk by @fommil and @a_dev_musing. https://t.co/3AlYltY0BS —@avernet
@ndw I have big hopes for ENSIME, but it's so far quite a step down from IntelliJ.—@avernet
@avernet @ndw what is missing in that big step?—@fommil
@fommil @ndw I'd say support for mixed projects (Java+Scala), "find usages", and "good" Scala debugging.—@avernet
@avernet @ndw Java is supported, find usages on the roadmap and a new debugger is imminent.—@fommil
@fommil @ndw Awesome. I'm seriously excited to see ENSIME/Emacs become a serious alternative to IntelliJ.—@avernet
@avernet @ndw it already is ;-) I've been using it on huge projects for almost two years. Very productive.—@fommil

Sunday at 10:50pm

Emacs - Helm and @ndw #emacs #lisp —@patrickDurusau
</article>

Norman Walsh (Sun)The short-form week of 21–27 Dec 2015

<article class="essay" id="content" lang="en">

The week in review, 140 characters at a time. This week, 20 messages in 24 conversations. (With 7 favorites.)

This document was created automatically from my archive of my Twitter stream. Due to limitations in the Twitter API and occasional glitches in my archiving system, it may not be 100% complete.

In a conversation that started on Friday at 04:28pm

Why do conservatives hate healthcare? Aren't healthy people better employees? Or is it really cheaper to let them die and hire new ones?—@ndw
@ndw it's a shibbileth: in the hyper-partisan US atmosphere, every public-policy question comes across as "which side are you on?"—@david_megginson
@david_megginson Yeah. I'm not naive enough to believe there are simple answers but some answers are obviously wrong nevertheless.—@ndw
@ndw less "no simple answers" and more "different terms of discourse."—@david_megginson
@david_megginson I guess. And I don't count because I'm to the left of everyone that's left of Sanders.—@ndw
@ndw I live in a country of balanced budgets *and* socialised healthcare; welcomed refugees *and* the tar sands. Left/right are hard to map.—@david_megginson
@ndw ... low corporate taxes *and* gender parity in the federal cabinet; strictly-regulated banks *and* publicly-funded religious schools.—@david_megginson

In a conversation that started on Monday at 12:09am

@shelleypowers Yeah. I'm rewording my blog software and I'm on the fence about porting / reimplementing comments.—@ndw
@ndw I think the world outgrew comments.—@shelleypowers

Monday at 10:07pm

FAV
The "Windows" section of every open-source project's "how to compile and install" file: https://t.co/82szh0Tj0q —@despair

Tuesday at 08:26am

Tuesday at 03:26pm

One step closer to Standard! https://t.co/DoXshzOeg2 —@ndw

In a conversation that started on Tuesday at 03:39pm

In unrelated news: there's treacle taffy cooling in the kitchen.—@ndw
@ndw Any relation to a Welsh Gingerbread man?—@dpawson
.@dpawson I have definitely got to make some gingerbread. I haven't had that in ages. New Year's Gingerbread. That can be a thing, right?—@ndw
@ndw You want it, go find a recipe Norm, sod the 'appropriate' times :-) Best wishes for 2016. https://t.co/BImT46jOz2 if needed.—@dpawson
@dpawson Not that I'm aware of.—@ndw

Tuesday at 07:30pm

RT @dewitt: Our kids are never going to believe we were once allowed to pilot these kinetic two-ton metal murder machines by hand.—@ndw

Tuesday at 10:06pm

@bryngreenwood Because...—@ndw

Tuesday at 10:13pm

@debcha The stupid. It burns.—@ndw

Wednesday at 07:40am

FAV
Actually, Frankincense was the name of the doctor who created it. You're thinking of Frankincense's monster.—@OhNoSheTwitnt

Wednesday at 02:09pm

FAV
"Expected to arrive after Christmas" - Translation: You had 11.5 months, you bloody idiot—@SoVeryBritish

Wednesday at 05:19pm

FAV
This woman is genius. Pure genius. https://t.co/ZDX7E1yHCy —@clean_freak

In a conversation that started on Wednesday at 08:53pm

@shelleypowers But climate change is a...oh, I just can't even.—@ndw
@ndw Yeah that whole, "warmest year on record" kind of makes an awfully big elephant in the corner—@shelleypowers

Thursday at 12:01pm

FAV
Mum: "Do you want a ukulele, sweetheart? There's one in the bathroom if you do." #homeForChristmas —@doctortovey

Thursday at 04:32pm

Star Wars. At last. Your spoilers hold no power over me now.—@ndw

Friday at 02:45am

FAV
“You’ll shoot your I out!” —Ralphie’s parents, trying to warn him about the dangers of Zen Buddhism—@kiphampton

Friday at 06:32am

Twitter has got so desperate that now you can favorite/like your own tweet. @manisha72617183 @gclaramunt @propensive @ndw @mapastr —@MartianOdyssey

Friday at 06:44am

Trump Clinton debate. He said "schlong"?Oh I thought he said "shalom". @SomSnytt @Champagnery @channingwalton @ndw @gclaramunt @NeilClark66 —@MartianOdyssey

Friday at 09:39am

@mdubinko Statistically, something banal.—@ndw

Friday at 08:53pm

RT @CcSteff: Drink every time a relative says "I saw a thing on facebook..." When you're drunk enough, explain to them how bad they are at …—@ndw

Friday at 11:28pm

@pmarca @scottlincicome They're mistaken.—@ndw

Sunday at 05:15am

FAV
@RichardDawkins winged horses I can live with. Stoning a woman to death for wearing makeup. Not so much.—@hammaragi

In a conversation that started on Sunday at 11:17pm

@mattb @tomcoates Y'all are in Austin?—@ndw
@ndw I was, but just got back to SF. I didn't know it was your hometown.—@mattb
@mattb Hope you had fun. Next time...and happy holidays merry new year, etc.! .—@ndw
@ndw it's a great place. my wife's sister lives there so I'll be back again sooner or later. compliments of the season to you!—@mattb
@ndw I think @mattb just got back from Austin. I've been in SF.—@tomcoates

Saturday at 09:30am

RT @rifflesby: Confirm that you have landed on the Prime Material Plane. If you have landed on an Elemental Plane, do not exit. https://t.c… —@ndw
</article>

Norman Walsh (Sun)The short-form week of 14–20 Dec 2015

<article class="essay" id="content" lang="en">

The week in review, 140 characters at a time. This week, 22 messages in 20 conversations.

This document was created automatically from my archive of my Twitter stream. Due to limitations in the Twitter API and occasional glitches in my archiving system, it may not be 100% complete.

In a conversation that started on Monday at 09:31pm

Why yes, I believe I will put up a #Christmas tree this year. https://t.co/UdiM5d7hei—@ndw
@ndw "Geek!" ;-)—@dpawson

Monday at 10:17pm

35 Lines XQuery versus 604 of XSLT: A List of W3C Recommendations https://t.co/FWf27Cq4UV @XQuery @ndw @KirkDBorne —@patrickDurusau

In a conversation that started on Tuesday at 10:32pm

Tried to watch The Expanse on the #SyFy app. FFS how many commerci...oh, hello Amazon Instant Video. Show has real potential.—@ndw
@ndw Tried, but just couldn't get into it.—@shelleypowers
@shelleypowers I'm not totally hooked, but I'll give it a couple of episodes. Pilots have to introduce so much.—@ndw
@ndw Good point. May try again. I'm getting used to binge watching. Actually having to tune in each week is hard.—@shelleypowers

Tuesday at 11:11pm

RT @dweinberger: Time to redefine "Wolf Blitzer": The amount of alcohol it will take to wipe this hate-fest from my memory forever. #GOPdeb—@ndw

In a conversation that started on Wednesday at 02:24pm

To the various causes and charities I support that insist on sending email nearly every day. Congrats, I've filtered you into oblivion.—@ndw
@ndw Truth.—@bsletten

Wednesday at 02:24pm

RT @tommorris: We are in a bold new world of semantic markup... <div class="row"> <div class="col-xs-4">—@ndw

Thursday at 10:58am

TIL: ctrl-p is broke in Docker on purpose. #facepalm —@ndw

In a conversation that started on Thursday at 11:11am

Solved slightly tricky XML Schema problem. Is that a point in my favor or a point against?—@ndw
@ndw I would you rather see it as a point in your favour. Why do you doubt that?—@Wolfgang_Schi
@ndw I'd just take the point and move on 😱—@fidothe
@ndw demonstrating #XSD mastery by now may be like excelling at #calligraphy: a thing of intricate beauty, but not in very high demand.—@dret
@ndw XML schema? A kitten just died...—@perllover

Thursday at 11:11am

@mdubinko Near as I can tell, homebrew is still the top of the heap.—@ndw

Thursday at 06:16pm

@aljopainter Just worked out a way to make a simple type accept either an xs:dateTime *or* an empty string w/o xsi:nil nonsense.—@ndw

In a conversation that started on Friday at 04:28pm

Why do conservatives hate healthcare? Aren't healthy people better employees? Or is it really cheaper to let them die and hire new ones?—@ndw
@ndw it's a shibbileth: in the hyper-partisan US atmosphere, every public-policy question comes across as "which side are you on?"—@david_megginson
@david_megginson Yeah. I'm not naive enough to believe there are simple answers but some answers are obviously wrong nevertheless.—@ndw
@ndw less "no simple answers" and more "different terms of discourse."—@david_megginson
@david_megginson I guess. And I don't count because I'm to the left of everyone that's left of Sanders.—@ndw
@ndw I live in a country of balanced budgets *and* socialised healthcare; welcomed refugees *and* the tar sands. Left/right are hard to map.—@david_megginson
@ndw ... low corporate taxes *and* gender parity in the federal cabinet; strictly-regulated banks *and* publicly-funded religious schools.—@david_megginson

Saturday at 02:08am

RT @ericdfields: Modern javascript, annotated (updated): https://t.co/iIFDHpoxJJ —@ndw

Saturday at 02:09am

RT @SwiftOnSecurity: I'm sorry, I get yelly when people use the descent of humanity into a permanent post-nuclear hellscape to score politi…—@ndw

Saturday at 02:18am

@tomcoates There are good candidates?—@ndw

Saturday at 06:57pm

RT @letitiawolf: Reading @RichardDawkins tweets always makes me feel better about the world, until I then inevitably read some of the repli…—@ndw

Saturday at 08:08pm

RT @SoVeryBritish: Shopping 1st week of December: "They'll love that" 2nd: "They won't mind that, will they?" 3rd: "Could give them cash?" …—@ndw

Saturday at 08:12pm

RT @MaraWritesStuff: "Ugh, put away your phone for once" *Stops reading about current events and talking to beloved far away family members…—@ndw

Sunday at 11:49pm

RT @masonic_tweets: How to really ban encryption, just ban all prime numbers. 2, 3, 5, 7, 11, 13, ... Let's attack this problem at its sour…—@ndw

In a conversation that started on Monday at 12:09am

@shelleypowers Yeah. I'm rewording my blog software and I'm on the fence about porting / reimplementing comments.—@ndw
@ndw I think the world outgrew comments.—@shelleypowers

Monday at 12:12am

@dret @gimsieke Can it be written tail-recursively?—@ndw
</article>

ProgrammableWeb: APIsWeaver

The Weaver API provides tools for developers using the Weaver Internet of Things services and frameworks. Use of the Weaver API enables handling many devices with no relation to brand or vendor. Weaver strives for user-friendly, efficient, scalable, and cost effective service for developers connecting apps with IOT devices such as smart bulbs, thermostats, and much more.
Date Updated: 2016-02-03
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsElasticode

The Elasticode API helps users integrate Elasticode's capabilities directly. Elasticode is a service to help create more personalized mobile user onboarding experiences. To create an API key, follow the regular path to create an app, and choose the API option. More information about the Elasticode API is available upon contacting Elasticode directly.
Date Updated: 2016-02-03
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsVolo Commerce

The Volo Commerce API allows developers to integrate their application with the Volo commerce platform. More information is available upon contacting the provider. Volo Commerce is a provider of multi channel ecommerce software and services.
Date Updated: 2016-02-03
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWeb: APIsKnurld Verification

The Knurld Verification API allows developers to verify a consumer's utterance of a word or phrase with that of a previously enrolled voiceprint. Knurld provides speech biometrics services, which can recognize not only what a person is saying but also verify is who is speaking.
Date Updated: 2016-02-03
Tags: [field_primary_category], [field_secondary_categories]

ProgrammableWebDaily API RoundUp: MapFruition, Wercker, Ents24, Qymatix Solutions, VoiceBase, Vetr

Every day, the ProgrammableWeb team is busy, updating its three primary directories for APIs, clients (language-specific libraries or SDKs for consuming or providing APIs), and source code samples.

ProgrammableWebRestlet Updates DHC API Testing Tool, Adds Continuous Delivery Integrations

API tooling platform Restlet has launched a new version of DHC by Restlet, an API testing tool that functions from within a Web browser as a Chrome Web app.

Footnotes

Updated: .  Michael(tm) Smith <mike@w3.org>