Rolandt
Shared posts
Twitter Favorites: [edenthecat] Hi! Here is my first blog post about Tinder. I don't want to see your code. https://t.co/grCtNbkvR3
Hi! Here is my first blog post about Tinder. I don't want to see your code. medium.com/@edenthecat/he…
Twitter Favorites: [AnakanaSchofiel] Looks like I am going to have to write a separate online date guidebook entirely for programmers. As in Don’t Put Y… https://t.co/G7gMcBVfuy
Looks like I am going to have to write a separate online date guidebook entirely for programmers. As in Don’t Put Y… twitter.com/i/web/status/8…
Twitter Favorites: [awsamuel] .@sillygwailo Forget calendar-based DND! I want a brain implant that monitors sleep and cancels meetings that aren't worth waking up for.
.@sillygwailo Forget calendar-based DND! I want a brain implant that monitors sleep and cancels meetings that aren't worth waking up for.
LeEco – Le life line
Small war chest means laser sharp strategy and execution needed.
- Chinese real estate developer Sunac has pumped $2.2bn into LeEco to get the fledgling Chinese ecsosystem back on track, but I still think it will need to dump autos to have a chance.
- Sunac is buying a 8.6% stake in Leishi (the parent company) for RMB6.04bn, a 15% stake in Le Vision Pictures (movies) for RMB1.05bn and a 33% stake in Leishi Zhixin (TVs) RMB7.95bn.
- This all adds up to RMB15.04 or $2.2bn which should help keep the wolf from the door but it looks to me like much of the money is already committed.
- I suspect that the RMB7.95 going into Leishi Zhixin will help finance the acquisition of Vizio as well as the very reasonably priced TVs that the company launched a few months ago (see here).
- This leaves RMB6.04 ($872m) to finance the development of everything else of which around $250m will already be tied up in the real estate transaction LeEco has with Yahoo.
- This leaves $622m to keep the rest of the ecosystem strategy alive until it begins to generate cash.
- Given Xiaomi’s experience in developing an ecosystem via hardware, this could take a while and even then, a high level of cash return on sales is far from guaranteed.
- Now that the immediate pressure has been released, LeEco has come out of its corner fighting stating that it will now take on and far surpass Baidu, Alibaba and Tencent (BATmen) in their home market.
- This will take some doing as these three all already have at least 2 dominant Digital Life services in the Chinese market (see here), far more than 500m users each as well as billions of dollars of organic cash generation every quarter.
- By comparison, LeEco is starting from almost nothing and has around $622m to invest putting it behind even Xiaomi.
- This is why the company is seeking a separate line of financing for the automotive offering and I think it is clear that the Faraday Future factory in Nevada, USA will remain on ice until this issue is fixed.
- This also means that the LeSee electric vehicle will also be delayed for the same reasons.
- There is still huge scepticism that LeEco can make it given that the investors in Sunac sent its shares down more than 6% in Hong Kong when the deal was announced on Monday 16th
- I still think that LeEco has to really focus on the areas where it can thinks it can make a difference and even if automotive is separately funded, it is a distraction management can not afford.
- Strategy and investments have to be laser sharp to make the most of the relatively small war chest that the company now has to see it through to generating cash of its own.
- What the company does now is likely to determine its eventual fate and I am not beyond thinking that it could make an acquisition target.
- I see China becoming more vertically integrated and into this LeEco might fit for one of the BATmen (see here).
How to Get Messenger Style Chat Bubbles for Any Chat App on Android
Facebook’s Messenger’s chat head style bubbles are just bloody useful. They stay on the side of the screen, almost hidden, until you need them. Just tap on the circle, and the messaging thread shows up on top of whatever is on the screen. Type your reply, send it along, tap the bubble and it’s out of the way again. Chat bubbles are so useful it’s no wonder that Android developers are trying to use it in many creative ways – that’s where the floating browser concept comes in.
Continue reading →
The day Google invited me to learn papier mâché
It started like any average Thursday: I responded to a few messages and checked on project progress in our MEX Basecamp. It was when I opened my Google calendar to review the rest of the day that things got a little weird.
“News Year’s resolution?” Google asked me. There was no small talk. Google seemed to think I needed some self improvement and it got straight to the point.
Immediately I was curious: not because I was especially in search of a resolution (indeed, I am steadfast in my curmudgeonly resistance to waiting for arbitrary dates to start worthwhile endeavours), but because I’m not accustomed to my calendar suggesting appointments to me. Surely it is supposed to be the other way around: the humans decide the activity and the calendars remember and schedule them? I’m sure it has always been done that way.
Google, it seems, had other ideas and I took the bait.
First I was asked to choose my goal and shown a selection of illustrated panels to tempt me: more exercise, building a skill etc… I happen to be relatively content with my activity levels, so I opted to learn a new skill. Google gave me options: I could learn a language, learn to code, practice an instrument or create art. I would even have been permitted to enter a choice all of my own under the ‘Custom…’ category.
I couldn’t help wondering though, given everything Google is doing with artificial intelligence, were these same options offered to everyone, or where they chosen just for me, based on what Google thinks it knows?
I went for art. It seemed fittingly grandiose to imagine 2017 will be the year my scratchy stick people finally evolve into something more…Da Vincian.
Right away, Google wanted commitment. Would I practice my art 1, 3, 5 or 7 days a week?
I wanted Google to take me seriously – to realise my dedication to making great art – but 7 days a week seemed a little excessive. I opted for 5 instead. However, Google wanted me to be more precise: exactly how long would I spend on my art on each of these 5 days? I went for the maximum, 2 hours, on the basis that most people, I’m sure, are in the same situation of having at least 2 hours a day they’ve been struggling to occupy!
Given that Google was being so pro-active in managing my programme of self improvement, I left it up to the app to decide when I would find these 2 hours each day. Those who are less comfortable with such a laissez-faire attitude could ask Google to stick to ‘morning’, ‘afternoon’ or ‘evening’ depending on their preference.
Last of all, Google offered me a range of specific artistic endeavours to choose from. It was with great delight I noticed one of the options was papier mâché. There seemed no better way to conclude this conversation with Google’s ambition marshals than agreeing to henceforth spend 5 days a week, 7pm to 9pm, making models from soggy paper.
So it is that every weekday, just as afternoon drifts into evening, I am now reminded by Google’s Android notification system that it is time to begin my new hobby. Later, it invites me to confirm with a tap on the chirpy ‘Did it’ button or give in to procrastination and postpone my self improvement with a dejected swipe of the ‘Later’ button. There’s even an artful pie chart to track how many days out of the 5 I manage to hit my goal each week.
Experience design is entering a new phase, where artificial intelligence and habitual use of digital devices combine to create hitherto impossible opportunities for one-to-one interactions between brands and consumers. There will be temptation for companies to experiment at every stage. For all my teasing of Google’s over-zealous self-improvement kick, I am largely in favour of such experimentation.
However, I fear in this instance Google failed to apply one simple rule which would have revealed the flaw in its endeavour: is the system it designed, however clever it may seem in the labs, capable of producing a ridiculous outcome?
Regardless of whether you dress your project as ‘designing for behaviour change’, ‘gamification’, ‘machine learning’ or ‘contextual activity tracking’, there should always be someone on the team willing to put up their hand and ask whether the users will really, on a whim, commit to 2 hours of papier mâché, 5 days a week, just because their calendar app suggested it.
What I did (Jan. 16 '17)
Very happy about my work today :)
Pretty much completing my work from friday, I rewrote an essential part of the engine (message passing between actors).
- The code became much simpler! (this was the goal)
- Some very mysterious parts of the engine are less mysterious, making it hopefully less and less scary-looking for any stray helpful programmers passing by
- Like I said on friday, multithreading will be easier thanks to this
- Simpler code makes it easier to find bugs hiding in every other part affected by it
- The code became more correct!
- The new implementation makes some guarantees about the order in which actors receive messages
- To illustrate the importance, imagine someone sending you a letter that says "Destroy all houses" and then a second letter that says "Build a new house". You tragically receive and implement them in the wrong order though - and to make things worse, this someone then wants to visit you at the new house. Also, both of you are incredibly dumb.
- ...this prevents a whole class of bugs!
- The code became faster!
- I hoped that the new implementation would be at least as fast as the old one, else this whole endeavor would be kind of useless, but it was hard to predict that so I had to try anyways
- But after some pretty obvious optimizations, the new implementation actually ended up being faster! (Planning & building roads ~1.3x faster, traffic simulation ~1.6x faster!)
- This makes me very happy :)
Apple Honors Dr. Martin Luther King, Jr.

Today is Martin Luther King Day in the United States, a holiday dedicated to celebrating the life and legacy of the civil rights leader. Last night, Apple CEO Tim Cook posted a tweet honoring King:
We honor #MLK by working to help achieve justice and equality. "We may have all come on different ships, but we're in the same boat now.” pic.twitter.com/dVQfg3CTSd
— Tim Cook (@tim_cook) January 16, 2017
This morning, Apple has dedicated its homepage to a full-page image of Dr. King that includes the quote:
“Commit yourself to the noble struggle for equal rights. You will make a greater person of yourself, a greater nation of your country, and a finer world to live in.”
Support MacStories Directly
Club MacStories offers exclusive access to extra MacStories content, delivered every week; it’s also a way to support us directly.
Club MacStories will help you discover the best apps for your devices and get the most out of your iPhone, iPad, and Mac. Plus, it’s made in Italy.
Join NowUber Taking on Public Transit?
The Guardian‘s Greg Lindsay discusses what many transportation planners have been worrying about-we all assume that Uber will displace and disrupt taxi and private automobiles-but what if we are wrong? What if Uber disrupts basic transit service?
“Traditional thinking would suggest that UberPool, which allows users to split the cost of trips with other Uber riders heading in the same direction, will always be inferior to public transport. Sitting in the backseat of a Prius may be more comfortable than standing on a crowded bus or train, continues this reasoning, but carpooling can’t substitute for mass transit at rush hours without massively increasing congestion.”
But oops! “Uber began offering “ride shares” for as little as $1 , introduced optimised pickup points that algorithmically recreate bus stops, and started testing semi-autonomous vehicles it hopes will solve its increasingly contentious labour issues.”
It is estimated that Uber passengers only pay about 40 per cent of the cost of each ride, and it has bee assumed that this might be predatory pricing with an aim to monopolise and control the market. When a system wide shutdown of the metro system happened in Washington DC , Uber, Lyft and other services offered shared rides way below the cost of a metro transit ticket. London’s tube strike last week saw Uber fare surcharges rocketing up 450 per cent in some cases. “As a spokesperson explained, “without this pricing, there would simply be no cars available”. Meanwhile, the number of licensed private-hire vehicles in London has nearly doubled from 59,000 in 2010 to more than 110,000 by the middle of 2016.”
What to do? Cities are partnering with Uber to fix weak transportation links and “then using its looming inevitability as an excuse to not improve their own service. Diverting funds to pay for blanket subsidies will only hasten the public system’s implosion.” Lindsay argues that the way to incentivize transit use and retention is to leverage “every tool at cities’ disposal, including lane access, parking regulations and incentives to shift the peak of rush hours commutes, to create communities that are at their best when served by mass transit – and could never be built around a million Ubers.”
It’s a compelling thought to create transit friendly cities and densities by putting public transportation policies and priorities first.

Seattle’s Pronto Bike-Share Unsaddled
Geekwire reports an unsettling story that the City of Seattle’s Pronto bike-share service will shutter on March 31. “In October 2014, Pronto Cycle Share debuted as a public-private partnership. In 2015, the City Council set aside $5 million to expand the program. But plans changed after Pronto reported that it was “insolvent” due to operating losses ($1.2 million of debt) and low ridership numbers a controversial and ultimately unsuccessful program in Seattle, with fewer-than-expected members signing up to rent bicycles on-demand to get around the city.”
The city last year intended to buy out the bike-share program and relaunch the service with electric bikes. This year instead the funding will be used for expanded pedestrian and bicycle facilities.“This shift in funding priorities allows us to make critical bicycle and pedestrian improvements — especially for students walking and biking to school,” Mayor Murray said in a statement. “While I remain optimistic about the future of bike share in Seattle, today we are focusing on a set of existing projects that will help build a safe, world-class bicycle and pedestrian network.”
This failure is in contrast to the success of Seattle car shares, which has had fantastic growth, or the launch of bike share in Portland where the “recently-launched bike-share program is off to a hot start.”

Freedom Mobile selects AT&T as its sole roaming partner in the United States
Shaw-owned Freedom Mobile, previously known as Wind Mobile, recently announced its quarterly earning and reported wireless revenues of $138 million CAD, ARPU of $36.84, and a small jump in subscribers to reach 1,052,758.
The most important milestone for the carrier in the last three months was the successful launch of its ‘traffic-free’ LTE network in select areas of Toronto and Vancouver. While still a work in progress, Freedom has committed to release new handsets with Band 66 compatibility beyond the LG V20 and ZTE Grand X4.
Prior to Freedom Mobile becoming the carrier it is today, customers who purchased its U.S. Roaming Add-on were connecting to T-Mobile and AT&T while traveling. However, as of December 31st, 2016, T-Mobile has been dropped as a partner and the carrier has selected AT&T is its sole partner for roaming in the United States.

In a statement to MobileSyrup, Freedom Mobile confirmed the news but declined to give further details as to the reasons for T-Mobile being removed.
According to its coverage map, Freedom Mobile and its ‘Away Partners’ — AT&T in the United States and Rogers, Bell and Telus within Canada — now cover 98 percent of the Canadian and American population. Freedom’s U.S. Roaming Add-on is $15 per month or 15¢ per minute, 5¢ per text, and 5¢ per MB.
Airbus CEO: Flying Car Prototype Will Be In The Air By The End Of The Year
|
mkalus
shared this story
from |
Ever since TV viewers first met George Jetson (his boy Elroy; daughter Judy; Jane, his wife) we’ve been fantasizing about zooming around in our very own personal flying cars. While many companies have made strides in that general direction, we have yet to see a true Jetsonian vehicle. Now, Airbus’ CEO thinks he can bring us even closer to our dreams: he expects the company to complete a self-piloted flying car prototype by the end of the year.
Airbus Group is planning to test a flying car as a way to escape traffic jams on the ground, company CEO Tom Enders told the audience at the DLD digital technology conference in Munich, Reuters reports.
The company created a division called Urban Air Mobility to develop ideas like a vehicle that transports individuals, or a helicopter type vehicle that could ferry multiple passengers around. The whole thing sounds a lot like Uber’s plan for on-demand flying taxis.
“One hundred years ago, urban transport went underground, now we have the technological wherewithal to go above ground,” Enders told the audience, adding that he hopes his company will let a demo vehicle designed for single-person transport loose on the skies before 2017 is through.
“We are in an experimentation phase, we take this development very seriously,” he said. Any technology Airbus developed would have to be clean, he pointed out, as the whole idea of flying vehicles is to help clean up congested cities.
Flying cars could cut down on costs for city infrastructure planners as well, since there’s no need to spend billion on concrete bridges and roads — Where we’re going, we won’t need roads.

Don’t Forget Your Keys: Tesla Owner Stranded When “Start By Phone” Doesn’t Work
|
mkalus
shared this story
from |
|
| Designed in California, never tested outside the Bay Area! |
Buying a Tesla means you’re buying a whole lot of technology, including the ability to unlock, start, and drive your vehicle through the company’s app. While that’s convenient, one owner recently found that you still shouldn’t leave home without your keys.
A Las Vegas resident says he was stranded on the side of the road in the desert over the weekend when he couldn’t restart his car using the Tesla app, Mashable reports.
The man shared his plight on Instagram, noting that he was just six miles from his home when he stopped the car to adjust a dog seat.
When he went to restart the car via his app, it wouldn’t work, as there was no cell service.
“Need to restart the car now, but, with no cell service, my phone can’t connect to the car to unlock it. Even with cell service, the car would also need cell service to receive the signal to unlock,” the man said.
In the end, the man’s wife walked two miles down the road until she had service. She then called a friend to pick her up and drive her to the house to retrieve the keys.
While the man tells Mashable that the incident was his fault — he was aware the mobile app won’t start the car without cell signal, he just forgot that the reception was poor on that area of the road — he suggested that Tesla could come up with another secure way to start vehicles with the mobile app.

The Well Connected Rabbit

Compose's RabbitMQ can help your business and in this Write Stuff article, Ken Whipday shows how it has helped Tripcatcher. He'll show how to set up a basic AMQP message queue with NodeJS and then move on to Rabbot's powerful abstraction for RabbitMQ clusters, exchanges and queues.
We have a Node.js application hosted on Heroku. The application is starting to outgrow Heroku's 30 second limit for programs running on the web server so we need to move the slower running transactions off the web server and into background processes.
RabbitMQ is the most popular open source choice when using messaging to offload work from the web server to a background process. Compose had just launched its RabbitMQ offering and the proposition appealed to us at Tripcatcher because of its simplicity and scalability. There are lots of tutorials around too for RabbitMQ on NodeJS, so the only challenge was how to configure it to work with Compose.
In this article, we'll show you how to get two node libraries (amqplib and Rabbot) connected to Compose's RabbitMQ.
Compose Setup
The first thing we need to do is create our Compose RabbitMQ instance and create a play environment.
- For a small application we'll use the vhost as an environment, so we'll build one vhost to play with: one for development, one for staging and one for production. Larger applications might use one vhost per chunk of functionality, such as logging. On Compose's RabbitMQ page, select the Browser tab and click the Add vhost button and create a vhost called 'plaything'.
- Select the plaything vhost and add a username 'demo-user' and a suitable password.
- Now, select the username and grant it access to the plaything vhost.
- Back on the Overview view, make a note of the connection string ready to use it in the next step. It is in the format:
amqps://[username]:[password]@[hostname]:[port]/[vhost]
amqplib
Since we've set up our RabbitMQ deployment, all we have to do is install amqplib, which is the most popular NodeJS library for RabbitMQ. It is comprehensive, works and there are lots of tutorials. Let's install it by running the following command in your terminal:
npm install --save amqplib
Get connected
Now that our deployment is set up and the AMQPLIB library has been installed, let's write some code and create a connection. In the uri variable below, substitute the hostname and port with the username and password you created earlier in your Compose deployment.
var amqp = require('amqplib/callback_api');
var url = require('url');
var uri = 'amqps://[username]:[password]@[hostname]:[port]/plaything';
var parsedUrl = url.parse(uri);
var opts = { servername: parsedUrl.hostname };
amqp.connect(uri, opts, function(err, conn) {
if (err) {
console.error("[AMQP]", err.message);
return;
}
console.log("[AMQP] connected");
// conn is the connection object
});
If you now visit the Compose Admin UI page (the link is on your deployment's Overview page), you should see there is a connection to your RabbitMQ instance.
However, amqplib is a low-level library; therefore, you have to code your own cluster support. But, you can get around this by using Rabbot, which provides cluster support via a simple config setting.
Rabbot and Rabbus
Rabbot is an opinionated abstraction over amqplib. At the same time, Rabbus is another abstraction, but it abstracts over Rabbot. Rabbus makes use of Rabbot's code for making a connection. Hence, coding the Rabbot connection will work for both Rabbot and Rabbus.
One great advantage of using a Rabbot connection is it supports clusters so we can connect in a resilient manner to Compose's RabbitMQ.
In the next section, we'll show you how to create a connection with Rabbot that you can then use with Rabbot or Rabbus.
Rabbot connection
Rather than using a connection string as we did previously, we're now going to use a connection object. The parsedUrl variable is removed and we're hard-coding the hostname and port number in the connection object (this is so we can add cluster support in the next step).
Below is the updated code. Update the config object with your password, hostname and port. Then run the code and you should now see the plaything vhost on the Compose console.
var rabbit = require('rabbot');
var config = {
connection: {
protocol: 'amqps://',
name: 'plaything',
user: 'demo-user',
pass: 'demo-password',
server: hostname1,
port: port1,
vhost: 'plaything'
}
};
rabbit
.configure(config)
.then( function() {
console.log('rabbit is hopping');
// ready to start rabbit receivers and publishers
})
.then(null, function(err) {
console.log(err);
});
Cluster support
On the Compose RabbitMQ console, there are two connection strings. To add the second connection string, add the hostnames as a comma-separated array. The two port numbers will probably be the same number, but add them as a comma-separated array, too.
var config = {
connection: {
name: 'plaything',
user: 'demo-user',
pass: 'demo-password',
server: [hostname1, hostname2],
port: [port1, port2],
vhost: 'plaything'
}
};
I haven't found out yet, how to test the resilience provided by the two hostnames. Using Compose with MongoDB you can drop one of the connections and test your driver switches to the other connection. Hopefully, this feature will be available in RabbitMQ soon. But, at least you are as resilient as you can be.
Configuring exchanges and queues
With Rabbot, you publish your message to an exchange and the exchange uses the Routing Key to allocate the message to a queue. The background process (e.g. worker.js) can then fetch the message from the queue.
Let's update the config variable to include an Exchange and Queue. The 'bindings' object links the Queue to the Exchange.
var config = {
connection: {
protocol: 'amqps://',
name: 'plaything',
user: 'demo-user',
pass: 'demo-password',
server: [hostname1, hostname2],
port: [15121, 15121],
vhost: 'plaything'
},
exchanges: [
{ name: "worker.exchange",
type: "direct",
autoDelete: false,
durable: true,
persistent: true},
{ name: "deadLetter.exchange",
type: "fanout"}
],
queues: [
{ name: "worker.queue",
autoDelete: false,
durable: true,
noBatch: true,
limit: 1,
subscribe: true,
deadLetter: 'deadLetter.exchange'},
{ name: 'deadLetter.queue'}
],
bindings: [
{ exchange: "worker.exchange",
target: "worker.queue",
keys: ["email"]},
{exchange: "deadLetter.exchange",
target: "deadLetter.queue",
keys: ["email"]}
]
};
This creates two exchanges ('worker' and 'deadLetter') and two queues ('worker' and 'deadLetter'). The worker queue is going to handle all the messages from Rabbit. We can spin up additional worker processes as the load increases. Normally, we'd configure Rabbit to maximize throughput. But, in this case, we want the messages to flow through Rabbit really slow, so we can have a peep at the Management Console and watch it work.
The queue.limit is set to 1, so the messages are handed out one at a time. This is very slow but makes it easier to watch what is happening.
Sending Messages
Let's write a short harness to send 5 messages, which will send a message every 10 seconds; slow enough to watch the messages appear on the Management Console. The first 4 messages will have dataOK = true and the last message will have dataOK = false. Later, the worker will use this to determine whether to accept and process the message or to reject it.
The payload is the message content. We've arbitrarily split the payload into data (in payload.body) and meta-data (e.g. payload.routingKey).
Below is the code to send messages. Open the Management Console and look at the worker.queue. Then run the program (e.g. node sender.js) and watch the queued messages increase on the chart - exciting isn't it!
var rabbit = require("rabbot");
var config = {..}; // see config object defined earlier
rabbit
.configure(config)
.then(function(){
console.log('connected to Rabbit');
var x = 0;
var payload = {};
payload.routingKey = 'email';
var intervalID = setInterval(function () {
payload.body = {msg:'Greetings, this is message ' + x, dataOK: true};
if (x === 3) {
payload.body.dataOK = false;
}
sendMessage(payload);
if (x === 4) {
clearInterval(intervalID);
}
x++;
}, 10000);
})
.then(null, function(err){
console.log("RabbitMQ Connection Error!");
console.log(err.stack);
process.exit(1);
});
function sendMessage(payload) {
rabbit.publish("worker.exchange", payload, 'plaything')
.then( function() {
console.log('payload sent: ' + payload.body.msg);
})
.catch( function(err) {
console.log(err);
});
}
Receiving messages
Now, let's write a worker.js file to receive and process the messages. Use the same config object we used in the previous example.
var rabbit = require("rabbot");
var config = {..}; // see earlier config definition
var handleMessage = function(payload) {
if (payload.body.dataOK) {
// if the data in the payload is good, lets delete the message from the queue
console.log('payload received: ' + payload.body.msg);
payload.ack();
} else {
// the data is not good, lets move the message to the dead-letter queue
console.log('rejecting message: ' + payload.body.msg );
payload.reject();
}
};
var startListening = function() {
rabbit.handle({}, handleMessage);
// must define handler before starting the subscription, otherwise messages will be lost
rabbit.startSubscription(config.queues[0].name, config.connection.name);
};
rabbit
.configure(config)
.then(function(){
console.log('connected to Rabbit');
startListening();
})
.then(null, function(err){
console.log("RabbitMQ Connection Error!");
console.log(err.stack);
process.exit(1);
})
.catch( function(err) {
console.log(err.stack);
process.exit(1);
});
Now let's test it. Run worker.js and the messages will be taken from the worker.queue. Watch the graph on the Management Console to see the messages being fetched.
One of the messages was rejected with payload.reject(). This will be in the 'deadletter' queue. Open the Management Console, view the 'deadletter' queue and use the Get Message(s) button to fetch the failed message.
Conclusion
Let's recap on what you've done so far:
- Setup an instance of Compose's RabbitMQ;
- Connected to RabbitMQ using the amqplib low-level library;
- Connected to RabbitMQ using Rabbot, an opinionated abstraction over amqplib;
- Configured Rabbot to provide both a 'worker' queue and a 'deadletter' queue for failed messages;
- Built a simple NodeJS program for sending messages to the 'worker' queue;
- Built a simple worker program for reading messages from the queue and processing them.
The RabbitMQ configuration used was quite simple, it only processed one message at a time, but this allowed us to watch the code in action on the Compose RabbitMQ Management Console.
At Tripcatcher, we initially installed RabbitMQ to move the workload of sending emails away from our web server and into a background process. But, we're now adding management reports and integrations with third parties (where the response time may be slow), too. RabbitMQ is providing a really slick way of moving the processing load off the web server, while still having the web server authenticate requests and initiate work.
I recommend looking at some RabbitMQ tutorials and checking the documentation on the config object to get a better understanding of how RabbitMQ might benefit your business.

attribution Pexels
Medium, and The Reason You Can’t Stand the News Anymore
Sean Blanda,
Medium,
Jan 19, 2017
Continuing an important conversation: "The reason so many fail isn’ t because they aren’ t well meaning or smart. It’ s because the incentive structure of online news is fundamentally broken. Companies from Medium to The Washington Post to Mashable to Buzzfeed all eventually run into the same unthinkable truth: The methods used to fund modern journalism simultaneously undermine trust in the news outlets." These same truths apply to education. If we replace learning and social incentives with commercial incentives, we do so at our own peril. Excellent article, long and detailed.
[Link] [Comment]B.C. Liberal Party’s high-profile fundraiser, Bob Rennie, steps back, saying he’s done his job
I’ve been covering B.C. politics for more than 30 years. In that time, the fundraisers for various parties have been part of the scene. But none of them has achieved the high profile or hostile public reaction that Bob Rennie has. (Back in the Gordon Campbell days, Marty Zlotnik used to be the chief fundraiser. People would talk to him occasionally, but he was never in the spotlight the way Rennie has been.)
Now he says he’s stepping back. (My story here.) He’s raised pots of money for the party, the Liberals are in good shape, and he’s going off to do other things.
There’s already been speculation on Twitter that his “resignation” is somehow connected to the New York Times story published last week about the unfettered campaign fundraising in B.C.
But Rennie has been talking about quitting the fundraiser job for a while, though I’d always understood that he was going to stop after the election. As I said on Twitter, I’d be more inclined to believe that, if there is any hidden agenda, this an agreement between him and the party to remove some of the fuel in the anti-developer fire that has been licking at the Liberals’ doorstep in the last two years, as people have grown more resentful about the local crazy high housing prices.
Recommended on Medium: Help me I’m on Tinder
Tinder and I have a mixed relationship. I haven’t had a single date on there that has lead to anything positive. A failed threesome. A guy…
Recommended on Medium: Help me I’m on Tinder: I don’t want to see your code
People who work too much and who might have a hard time meeting others as a result is a huge demographic within Tinder users. This applies…
Acquia retrospective 2016
As my loyal blog readers know, at the beginning of every year I publish a retrospective to look back and take stock of how far Acquia has come over the past 12 months. If you'd like to read my previous annual retrospectives, they can be found here: 2015, 2014, 2013, 2012, 2011, 2010, 2009. When read together, they provide a comprehensive overview of Acquia's trajectory from its inception in 2008 to where it is today, nine years later.
The process of pulling together this annual retrospective is very rewarding for me as it gives me a chance to reflect with some perspective; a rare opportunity among the hustle and bustle of the day-to-day. Trends and cycles only reveal themselves over time, and I continue to learn from this annual period of reflection.
Crossing the chasm
If I were to give Acquia a headline for 2016, it would be the year in which we crossed the proverbial "chasm" from startup to a true leader in our market. Acquia is now entering its ninth full year of operations (we began commercial operations in the fall of 2008). We've raised $186 million in venture capital, opened offices around the world, and now employ over 750 people. However, crossing the "chasm" is more than achieving a revenue target or other benchmarks of size.
The "chasm" describes the difficult transition conceived by Geoffrey Moore in his 1991 classic of technology strategy, Crossing the Chasm. This is the book that talks about making the transition from selling to the early adopters of a product (the technology enthusiasts and visionaries) to the early majority (the pragmatists). If the early majority accepts the technology solutions and products, they can make a company a de facto standard for its category.
I think future retrospectives will endorse my opinion that Acquia crossed the chasm in 2016. I believe that Acquia has crossed the "chasm" because the world has embraced open source and the cloud without any reservations. The FUD-era where proprietary software giants campaigned aggressively against open source and cloud computing by sowing fear, uncertainty and doubt is over. Ironically, those same critics are now scrambling to paint themselves as committed to open source and cloud architectures. Today, I believe that Acquia sets the standard for digital experiences built with open source and delivered in the cloud.
When Tom (my business partner and Acquia CEO) and I spoke together at Acquia's annual customer conference in November, we talked about the two founding pillars that have served Acquia well over its history: open source and cloud. In 2008, we made a commitment to build a company based on open source and the cloud, with its products and services offered through a subscription model rather than a perpetual license. At the time, our industry was skeptical of this forward-thinking combination. It was a bold move, but we have always believed that this combination offers significant advantages over proprietary software because of its faster rate of innovation, higher quality, freedom from vendor lock-in, greater security, and lower total cost of ownership.
Creating digital winners
Acquia has continued its evolution from a content management company to a company that offers a more complete digital experience platform. This transition inspired an internal project to update our vision and mission accordingly.
In 2016, we updated Acquia's vision to "make it possible for dreamers and doers to craft the digital world". To achieve this vision, we want to build "the universal platform for the world's greatest digital experiences".
We increasingly find ourselves at the center of our customer's technology and digital strategies, and they depend on us to provide the open platform to integrate, syndicate, govern and distribute all of their digital business.
The focus on any and every part of their digital business is important and sets us apart from our competitors. Nearly all of our competitors offer single-point solutions for marketers, customer service, online commerce or for portals. An open source model allows customers to integrate systems together through open APIs, which enables our technology to fit into any part of their existing environment. It gives them the freedom to pursue a best-of-breed strategy outside of the confines of a proprietary "marketing cloud".
Business momentum
We continued to grow rapidly in 2016, and it was another record year for revenue at Acquia. We focused on the growth of our recurring revenue, which includes new customers and the renewal and expansion of our work with existing customers. Ever since we started the company, our corporate emphasis on customer success has fueled both components. Successful customers mean renewals and references for new customers. Customer satisfaction remains extremely high at 96 percent, an achievement I'm confident we can maintain as we continue to grow.
In 2016, the top industry analysts published very positive reviews based on their dealings with our customers. I'm proud that Acquia made the biggest positive move of all vendors in this year's Gartner Magic Quadrant for Web Content Management. There are now three distinct leaders: Acquia, Adobe and Sitecore. Out of the leaders, Acquia is the only player that is open-source or has a cloud-first strategy.
Over the course of 2016 Acquia welcomed an impressive roster of new customers who included Nasdaq, Nestle, Vodafone, iHeartMedia, Advanced Auto Parts, Athenahealth, National Grid UK and more. Exiting 2016, Acquia can count 16 of the Fortune 100 among its customers.
Digital transformation is happening everywhere. Only a few years ago, the majority of our customers were in either government, media and entertainment or higher education. In the past two years, we've seen a lot of growth in other verticals and today, our customers span nearly every industry from pharmaceuticals to finance.
To support our growth, we opened a new sales office in Munich (Germany), and we expanded our global support facilities in Brisbane (Queensland, Australia), Portland (Oregon, USA) and Delhi (India). In total, we now have 14 offices around the world. Over the past year we have also seen our remote workforce expand; 33 percent of Acquia's employees are now remote. They can be found in 225 cities worldwide.
We've also seen an evolution in our partner ecosystem. In addition to working with traditional Drupal businesses, we started partnering with the world's most elite digital agencies and system integrators to deliver massive projects that span dozens of languages and countries. Our partners are taking Acquia and Drupal into some of the world's most impressive brands, new industries and into new parts of the world.
Growing pains and challenges
I enjoy writing these retrospectives because they allow me to chronicle Acquia's incredible journey. But I also write them for you, because you might be able to learn a thing or two from my experiences. To make these retrospectives useful for everyone, I try to document both milestones and difficulties. To grow an organization, you must learn how to overcome your challenges and growing pains.
Rapid growth does not come without cost. In 2016 we made several leadership changes that will help us continue to grow. We added new heads of revenue, European sales, security, IT, talent acquisition and engineering. I'm really proud of the team we built. We exited 2016 in the market for new heads of finance and marketing.
We adjusted our business levers to adapt to changes in the financial markets, which in early 2016 shifted from valuing companies almost solely focused on growth to a combination of growth and free cash flow. This is easier said than done, and required a significant organizational mindshift. We changed our operating plan, took a closer look at expanding headcount, and postponed certain investments we had planned. All this was done in the name of "fiscal fitness" to make sure that we don't have to raise more money down the road. Our efforts to cut our burn rate are paying off, and we were able to beat our targets on margin (the difference between our revenue and operating expenses) while continuing to grow our top line.
We now manage 17,000+ AWS instances within Acquia Cloud. What we once were able to do efficiently for hundreds of clients is not necessarily the best way to do it for thousands. Going into 2016, we decided to improve the efficiency of our operations at this scale. While more work remains to be done, our efforts are already paying off. For example, we can now roll out new Acquia Cloud releases about 10 times faster than we could at the end of 2015.
Lastly, 2016 was the first full year of Drupal 8 availability (it was formally released in November 2015). As expected, it took time for developers and the Drupal community to become familiar with its vast array of changes and new capabilities. This wasn't a surprise; in my DrupalCon keynotes I shared that I expected Drupal 8 to really take off in Q4 of 2016. Through the MAP program we committed over $1M in funds and engineering hours to help module creators upgrade their modules to Drupal 8. All told, Acquia invested about $2.5 million in Drupal code contributions in 2016 alone (excluding our contributions in marketing, events, etc). This is the most we have ever invested in Drupal and something is I'm personally very proud of.
Product milestones
Acquia remains an amazing place for engineers who want to build great products. We achieved some big milestones over the course of the year.
One of the largest milestones was the significant enhancements to our multi-site platform: Acquia Cloud Site Factory. Site Factory allows a team to manage and operate thousands of sites around the world from a single console, ensuring all fixes, upgrades and improvements are delivered responsibly and efficiently. Last year we added support for multiple codebases in Site Factory – which we call Stacks – allowing an organization to manage multiple Site Factories from the same administrative console and distribute the operation around the world over multiple data centers. It's unique in its ability and is being deployed globally by many multinational, multi-brand consumer goods companies. We manage thousands of sites for our biggest customers. Site Factory has elevated Acquia into the realm of very large and ambitious digital experience delivery.
Another exciting product release was the third version of Acquia Lift, our personalization and contextualization tool. With the third version of Acquia Lift, we've taken everything we've learned about personalization over the past several years to build a tool that is more flexible and easier to use. The new Lift also provides content syndication services that allow both content and user profile data to be reused across sites. When taken together with Site Factory, Lift permits true content governance and reuse.
We also released Lightning, Acquia's Drupal 8 distribution aimed at developers who want to accelerate their projects based on the set of tested and vetted modules and configurations we use ourselves in our customer work. Acquia's commitment to improving the developer experience also led to the release of both Acquia BLT and Acquia Pipelines (private beta). Acquia BLT is a development tool for building new Drupal projects using a standard approach, while Pipelines is a continuous delivery and continuous deployment service that can be used to develop, test and deploy websites on Acquia Cloud.
Acquia has also set a precedent of contributing significantly to Drupal. We helped with the release management of Drupal 8.1 and Drupal 8.2, and with the community's adoption of a new innovation model that allows for faster innovation. We also invested a lot in Drupal 8's "API-first initiative", whose goal is to improve Drupal's web services capabilities. As part of those efforts, we introduced Waterwheel, a group of SDKs which make it easier to build JavaScript and native mobile applications on top of Drupal 8's REST-backend. We have also been driving usability improvements in Drupal 8 by prototyping a new UX paradigm called "Outside-in" and by contributing to the media and layout initiatives. I believe we should maintain our focus on release management, API-first and usability throughout 2017.
Our core product, Acquia Cloud, received a major reworking of its user interface. That new UI is a more modern, faster and responsive user interface that simplifies interaction for developers and administrators.
Our focus on security reached new levels in 2016. In January we secured certification that we complied with ISO 27001: the international security and compliance standard for enterprise cloud frameworks. In April we were awarded our FedRAMP ATO from the U.S. Department of Treasury after we were judged compliant with the U.S. federal standards for cloud security and risk management practices. Today we have the most secure, reliable and agile cloud platform available.
We ended the year with an exciting partnership with commerce platform Magento that will help us advance our vision of content and commerce. Existing commerce platforms have focused primarily on the transactions (cart systems, payment processing, warehouse/supply chain integration, tax compliance, customer credentials, etc.) and neglected the customer's actual shopping experience. We've demonstrated with numerous customers that a better brand experience can be delivered with Drupal and Acquia Lift alongside these existing commerce platforms.
The wind in our sales (pun intended)
Entering 2017, I believe that Acquia is positioned for long-term success. Here are a few reasons why:
- The current market for content, commerce, and community-focused digital experiences is growing rapidly at just under 20 percent per year.
- We hold a leadership position in our market, despite our relative market share being small. The analysts gave Acquia top marks for our strategic roadmap, vision and execution.
- Digitization is top-of-mind for all organizations and impacts all elements of their business and value chain. Digital first businesses are seeking platforms that not only work for marketing, but also for service, compliance, portals, commerce and more.
- Open source combined with the cloud continue to grow at a furious pace. The continuing rise of the developer's influence on technology selection also works in our favor.
- Drupal 8 is the most significant advance in the evolution of the Drupal and Drupal's new innovation model allows the Drupal community to innovate faster than ever before.
- Recent advances in machine learning, Internet of Things, augmented reality, speech technology, and conversational interfaces all coming to fruition will lead to new customer experiences and business models, reinforcing the need for API-first solutions and the levels of freedom that only open source and cloud computing offer.
As I explained at the beginning of this retrospective, trends and cycles reveal themselves over time. After reflecting on 2016, I believe that Acquia is in a unique position. As the world has embraced open source and cloud without reservation, our long-term commitment to this disruptive combination has put us at the right place at the right time. Our investments in expanding the breadth of our platform with products like Acquia Lift and Site Factory are also starting to pay off.
However, Acquia's success is not only determined by the technology we back. Our unique innovation model, which is impossible to cultivate with proprietary software, combined with our commitment to customer success has also contributed to our "crossing of the chasm."
Of course, none of these 2016 results and milestones would be possible without the hard work of the Acquia team, our customers, partners, the Drupal community, and our many friends. Thank you for your support in 2016 – I can't wait to see what the next year will bring!
Die digitale Zukunft im Jahr 2030
#Digital2030
The post Die digitale Zukunft im Jahr 2030 appeared first on Monty Metzger.
Desksurfing #DLD17

Live stream at http://dld-conference.com/DLD17/?livestream=1
How to customize your Surface Pen

Matthias asked me this morning how he can select which of his two OneNote programs he could launch when pressing the button on his Surface Pen. I told him to use the Surface app, which eventually lead him to the correct panel. This setting has moved from the Surface app into Windows 10 Settings/Devices/Pen & Windows Ink.
Iovine Comments Suggest Apple Music’s Video Strategy Has Broadened
Evidence continues to mount that Apple’s video streaming ambitions for Apple Music extend beyond the occasional music-related project. Last week, The Wall Street Journal cited unnamed sources that claim Apple is looking to acquire original television series and movies for the service. That story was given weight by comments made by Jimmy Iovine on Saturday at the Television Critics Association's winter press tour that was covered by The Hollywood Reporter:
At Apple Music, what we're trying to create is an entire cultural, pop cultural experience, and that happens to include audio and video.
We're fighting 'free.' So a simple utility where, 'here's all the songs, here's all the music, give me $10 and we're cool,' is not going to scale.
That certainly sounds like someone intent on broadening the scope of Apple Music’s video offerings. To date, Apple has produced primarily music-related video content, including a Taylor Swift concert and music documentaries. However, upcoming projects, like Planet of the Apps, Carpool Karaoke, and Dr. Dre’s drama Vital Signs, have already begun to veer away from a strict music oriented focus. If the speculation is accurate, Apple Music’s moves could open a whole new dimension of competition among streaming music services.
Support MacStories Directly
Club MacStories offers exclusive access to extra MacStories content, delivered every week; it’s also a way to support us directly.
Club MacStories will help you discover the best apps for your devices and get the most out of your iPhone, iPad, and Mac. Plus, it’s made in Italy.
Join NowThis startup connects China’s LGBT community for marriages of convenience
We have seen many LGBT startups in China in the past years, such as Blued, Lesdo, and The L. While these apps connect same-sex homosexuals, one startup set out to connect different sex homosexuals to solve their real problem. iHomo, a Beijing-based startup is now helping out LGBT community to find a beard to ward off increasing pressure from family members.
“Marriage and having children all seems to be taken for granted in China. My parents are no exception,” CEO and founder of iHomo, Xiaobai Ou told TechNode. “They began to urge me to get married. In order to appease my family, I chose xinghun (形婚, marriage of convenience or lavender marriage in English). We had a wedding ceremony in 2012, which was fairly smooth. My girlfriend was my bridesmaid and make-up artist at the wedding.”
In their first year of marriage, they needed to move to each other’s home. Later, they didn’t have to do that so frequently. “My husband is now a good friend of mine, and we go out together to eat and chat. When things come up, we help each other,” Xiaobai said.
Thinking that she is not the only one struggling with this problem, Xiaobai and her girlfriend Yi Zhi launched an app called iHomo aiming to connect the gay community with the lesbian community to find beards.
Due to China’s traditional culture, rigid concepts of family, many other factors, China’s LGBT community will take a long time to achieve the status quo seen in the U.S.
Along the way, Xiaobai believes xinghun is a necessary process, and more suitable for the majority of homosexual groups in China. According to her, the gay community’s demand for xinghun is increasingly growing.
“Coming out is very hard and we shouldn’t expect too many people to do this is in a short period of time. In fact, it could bring more harm to the LGBT community,” she added. “We believe that any form of choice must be related to the social status quo, and xinghun is a relatively moderate approach.”

From left to right: Users are divided into gay and lesbian; the company analyzes users to match them; users can post to updates to their network (Image credit: iHomo)
The iHomo app can be downloaded on both iOS and Android. A new user can only access the app through an invitation code, which the company claims is to protect user privacy. The app works like a social network, with a focus on the xinghun connection.
In the early stages of development within two years, iHomo will first focus on accumulating users, then invite users to sign up for paid membership service on the app. Finally, the company aims to provide a paid on-line platform for xinghun, and receive a service charge for business partners and take commissions when connecting the two groups for xinghun.
“In the future, we will enhance the business value through a combination of online and offline services, including activities, matchmaking, wedding services, pregnancy, and legal advice,” Xiaobao remarked. “After the platform has reached a certain level, and the development of Chinese homosexual groups to a certain stage, we will provide more practical services; not just marriage services around homosexual groups, but also employment, rent, pension and other homosexual group’s needs.”
The company has not yet raised any funding and has bootstrapped since 2014.
Other similar companies include Chinagayles, which has over 400,000 users and claims to have matched almost 50,000 couples, and Queers, which is operated by the same company as LGBT social networks GayPark and LesPark.
Lenovo confirms Motorola event at Mobile World Congress
Now that CES has come and gone, the next big event in mobile technology is the annual Mobile World Congress in Spain. While all manufacturers don’t necessarily make big announcements or releases devices during this event, many will use the gathering of many mobile industry players to debut new devices or accessories.
A few big device launches are already planned for that week, including a release event from Huawei, an announcement from Nokia, and the reveal of the LG G6.

At the end of last week, Lenovo sent out press invites for a Motorola announcement event as well, for the 26th of February. This makes the 26th one of the busier days of MWC, with the Huawei and Nokia announcements also scheduled for that Sunday. The invite is vague in terms of details about what might be announced, but the Moto G5 Plus could be on the way, as well as new accessories for the Moto Z line.
As Mobile World Congress approaches, it’s expected that most mobile manufacturers will have some kind of presence or make an announcement, so keep an eye out for more news in the next few weeks.
Galaxy S8 to feature 8MP autofocusing front-facing camera, launch on April 15, says new report
The endless churn that is the Galaxy S8 rumour mill continues this week with a fresh new report from Pocketnow that indicates Samsung’s next flagship smartphone will launch in mid-April and will feature an 8-megapixel autofocus-capable front-facing camera.
Citing “conflicting” information, the website says Samsung plans to launch the S8 on Saturday, April 15.
Should Pocketnow‘s information be accurate, it means Samsung will have delayed the launch of the S8 by several weeks. In 2016, the company began selling the S7 on March 11th after it revealed the phone on February 21st at Mobile World Congress. That said, a later release date aligns with other rumours that said Samsung planned to delay the launch of the S8 to avoid a repeat of the Note 7 battery debacle.
Pocketnow goes on to note that we still see Samsung tease the S8 at Mobile World Congress, scheduled to start on February 27th this year.
Finally, the website says it’s “pretty much guaranteed” the S8 will feature a much improved front-facing camera. In this case, that means an 8-megapixel camera with autofocus. If Pocketnow’s information is accurate, then the S8 will be one of the first smartphones to feature a front-facing camera with autofocus, which should result in sharper selfies.
Source: Pocketnow
The tiny-house movement gets a boost in Vancouver from two dedicated advocates
In the way that journalism works, the germ of this story sprouted at a public meeting where I was a moderator. The panel was focused on housing as a human right. But there were a lot of young people in the audience who were hungry for more — they were looking for practical solutions to Vancouver’s housing dilemmas.
Among them were Anastasia and Sam, quoted in this story, who have gone beyond just individual interest in tiny houses to trying to create the momentum and focus for the change needed to permit them in local cities.
They’ve created a website to collect information and they’ve made connections with city planners, post-secondary institutions, and other housing advocates. I’m not sure how long it will take them to get anywhere (the two city politicians I talked to were interested but, I’d say, a bit wary) but they are definitely taking all the right steps to start a wave.
Five-word movie review: The Finest Hours
A powerful story. Adequately performed.
How to Get a Free Printer from Best Buy
Here's how I got a free printer from Best Buy:
- Spend thousands of dollars on your credit card.
- Forget that you can use credit card points to make a payment.
- Instead use the points to get a $100 gift card at Best Buy.
- Look up on The Wirecutter what the best all-in-one printer is.
- Buy said printer on Amazon for about $125 and use the 30-day free trial of Prime you just signed up to get free shipping.
- Wait until the day it arrives at your doorstep. (Literally. Whoever delivered it just left it at my doorstep.)
- See a promoted tweet advertising a blowout sale for laptops at Best Buy.
- Forget that's what you clicked and spend 10 minutes retracing your steps to figure out what link you got there from.
- See that there are no Chromebooks on sale, but notice the printer you just bought—or, rather, one that's almost the same but a slightly different model—is on sale at $80 off, for a price of $50 (plus tax, plus recycling fee).
- Decide to buy that printer, and almost press “Submit order” before remembering you have the $100 gift card.
- Notice that the printer is on sale for just today.
- Rush home from work and find the gift card and submit the order and apply the gift card to the entire cost of the printer.
- Let the printer you bought on Amazon sit unopened until you're sure you get the free one in the mail.
- Wait for the email you'll get from Canada Post Flex Delivery that the printer has arrived for you at the post office.
- Pick up the printer. This is not the last step of getting a free printer, since you have another printer to sell.
- Return the printer you bought on Amazon. If that's not possible, this should be easy enough on Craigslist.
I'm currently at step #14.
World's eight richest people have same wealth as poorest 50%
Larry Elliott,
The Guardian,
Jan 19, 2017
This is a placeholder for when I need to respond to arguments like "we can't afford free tuition" or "OERs must be sustainable". The money does exist, however, it has been concentrated into the hands of a very few, where it serves nobody but them. In Canada the situation isn't really better where just two people (pictured) have the same wealth as a third of the rest of the Canadian population. This also explains why education alone will not solve poverty and inequality; we need policy changes at a higher level.
[Link] [Comment]













