Shared posts

16 May 09:28

Twitter Favorites: [dlbno] Proof I'm awake tweet.

DB @dlbno
Proof I'm awake tweet.
16 May 09:28

"Slack ‘Spots’, not just Bots" in Work Futures

by Stowe Boyd

Ev Williams of Medium would like to see more sorts on information — stuff external to slack — rendered within Slack channels. He lists

Continue reading on Work Futures »

16 May 09:28

Quip Launches Slack Integration Featuring ‘Sign in with Slack’

by Federico Viticci

Since Google ended up offering one of the worst productivity suites on the iPad, we've moved several of our Relay FM show documents and MacStories research material to Quip.

Quip is a powerful alternative to Google Docs and Sheets with proper support for iOS 9 and multitasking on the iPad Pro. Despite some minor issues (the Apple Pencil can't scroll or select text in the app; there's no search in spreadsheets on iOS), I work better with Quip on iOS because they respect the platform and they take advantage of the latest iOS tech.

It's unsurprising, then, that I'm excited about Quip's integration with another service I use on a daily basis – Slack. Starting today, you'll be able to create Quip documents in Slack and mirror notifications from Quip to Slack conversations.

Spark ideas in Slack conversations and give them structure in Quip docs where you can organize, discuss, and evolve your team’s most important work. Use the Slack slash-command to create a new Quip doc where things can really take off.

And:

You won’t lose track of those groundbreaking, killer, disruptive ideas even if they’re happening in both the Slack channel and a Quip docu- ment at the same time. Any @mentions, messages, and edits to your Quip docs will in- stantly post to Slack so you can easily follow along and jump in on the action.

I haven't been able to test these features prior to today's launch, but I'm interested. I'm already mirroring notifications from a bunch of services (such as RSS and GitHub) into Slack channels, and adding Quip document status to the mix could be useful.

Also new today: Slack is rolling out a new 'Sign In with Slack' feature to quickly start using a service/app with your Slack identity and automatically get people from your Slack team on it.

Here's the Slack blog with an example for Quip:

When a user signs up for your app using Sign in with Slack, they’ll be instantly connected to their teammates within your product. For customers, this is an invisible but delightful feature. It exemplifies our mission in action — making people’s working lives simpler, more pleasant, and more productive — by keeping teams effortlessly in sync.
[...]
Upon signing in with Slack you are automatically connected to your Slack team within Quip. No extra team creation required — your team already exists within Quip in one fell swoop. From there, you can use Slack and Quip to supercharge the way that you brainstorm and create documents with your team.

As the owner of a Slack team, I'm also eager to take this for a spin.


Like MacStories? Become a Member.

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 Now
16 May 09:28

Dear Vancouver: We Are Not Breaking Up With You

image

Photo: Tourism Vancouver

There are a lot of “break up” letters being written to Vancouver lately, so my team at Modus Planning, Design and Engagement got together to write a sort of love letter to the city. We hope it inspires people to move forward and make innovative changes:

Dear Vancouver,

We know a lot of people are breaking up with you, but we can work this out.

Why do we love you so much that we’re willing to make sacrifices to live with you?  It’s obvious, really.  You’re beautiful.  But we don’t just mean the view of the mountains, we love you for so many reasons: your street life, the public parks, the beaches, the cherry blossoms in the spring, the seawall, the great beer and restaurants, Granville Island and Stanley Park.

But, we are not going to sit here and lavish you with praise for your spectacular natural setting or the fact that you can ski and golf in the same day (because who actually does this?). The truth is, you have some real issues that you could work on: your housing is too expensive, the traffic sucks, and you don’t provide jobs to match the cost of living.  

How do we get past this and move forward?

The beauty (and torment) of relationships is that being intimate with each other forces us to confront personal, social, and cultural issues. We can choose to leave or find a way to grow together. Of course, leaving is sometimes the right decision. But when one chooses to stay, figuring out how to make the relationship work helps us become better together.

There’s a parallel with cities. Many of us have fallen in love with Vancouver and decided to “move in together.” Now that we’re all trying to live in this small space, we’re being forced to confront our personal and cultural assumptions. This includes the kinds of homes we expect to raise a family in, how to get around, how to make our neighbourhoods better, and how to welcome new people without displacing existing community members.

Deciding to stay isn’t right for everyone, but those who choose to stay are developing creative and innovative ways to build our city for the future. That has always been the way things are done in Vancouver. Here are some examples of why you are still a leader when it comes to building a great city:

You can read the rest of the letter here.

16 May 09:28

The DAO is alive, now let the evolution begin

files/images/photo-1441555136638-e47c0158bfc9.jpg


Julian Feder, Backfeed, May 13, 2016


I spent a good part of the day exploring this (and the rest of the day exploring the awesomeness of Windows 93). What we have here is really a two-part story, the first about Ethereum, and the second about Dao itself. To the first: according to the website, "Ethereum is a decentralized platform that runs smart contracts: applications that run exactly as programmed without any possibility of downtime, censorship, fraud or third party interference." Basically, it enables developers to create their own blockchain 'currencies' (which may or may not have financial value) which can be used in a variety of applications.

This leads us to the second part of the story, Dao, which is one of those applications. Basically it is a 'distributed corporation' that receives investments, chooses projects, and pays for their development; some of these projects return revenue to Dao and others don't. The key here is to prevent the corporation from being taken over and milked for value by large financial interests. As they say, "The idea of an organization without the need of headquarters, which exists almost outside of physical space, unseizable by force, which doesn’ t belong to any individual or group, and which has the ability to execute itself and self-regulate, would have sounded almost religious just a few decades ago." I wonder whether we could run science and education like that.

[Link] [Comment]
16 May 09:28

Extravaganza – May 2016

by Michael Kelly

Once a month, web developers from across Mozilla get together to talk about the work that we’ve shipped, share the libraries we’re working on, meet new folks, and talk about whatever else is on our minds. It’s the Webdev Extravaganza! The meeting is open to the public; you should stop by!

You can check out the wiki page that we use to organize the meeting, or view a recording of the meeting in Air Mozilla. Or just read on for a summary!

Shipping Celebration

The shipping celebration is for anything we finished and deployed in the past month, whether it be a brand new site, an upgrade to an existing one, or even a release of a library.

Normandy, the Recipe Server

First up was Osmose (that’s me!), sharing the news that Normandy has shipped! Normandy is a service that will eventually power several Firefox features that involve interacting with users and testing changes to Firefox quickly and safely, such as recommending features that may be useful to users or offering opportunities to try out changes. Right now the service is powering Heartbeat surveys being sent to release users.

Big thanks to the User Advocacy and Web Engineering teams for working on the project!

MDN Save Draft Feature

Next was shobson who talked about MDN‘s Safe Draft feature. When editing an MDN article, the site autosaves your edits to localStorage (if it’s available). Then, when you revisit the editing interface later, the site offers to let you restore or discard the draft, disabling autosave until a decision is made. Future improvements may include previewing drafts and notifying users when an article has changed since their draft was saved.

Air Mozilla Thumbnails

peterbe stopped by to talk about Air Mozilla‘s chapters feature, which allows users to mark and link to segments in a video. The site now auto-generates thumbnails for chapters to help preview what the chapter is about.

Roundtable

The Roundtable is the home for discussions that don’t fit anywhere else.

Docker Development Environments

Last up was jgmize, who asked about use of Docker for easy development environments. The general consensus was that most of the developers present had tried using Dockerized development environments, but tended towards using it only for deployed services or not at all.

Some of the interesting projects brought up for using Docker for development or deployment were:

Check ’em out!


If you’re interested in web development at Mozilla, or want to attend next month’s Extravaganza, subscribe to the dev-webdev@lists.mozilla.org mailing list to be notified of the next meeting, and maybe send a message introducing yourself. We’d love to meet you!

See you next month!

The post Extravaganza – May 2016 appeared first on Mozilla Web Development.

16 May 09:28

You Can Help Build the Future of Firefox with the New Test Pilot Program

by Nick Nguyen

When building features for hundreds of millions of Firefox users worldwide, it’s important to get them right. To help figure out which features should ship and how they should work, we created the new Test Pilot program. Test Pilot is a way for you to try out experimental features and let us know what you think. You can turn them on and off at any time, and you’ll always know what information you’re sharing to help us understand how these features are used. Of course, you can also use Test Pilot to provide feedback and suggestions to the teams behind each new feature.

As you’re experimenting with new features, you might experience some bugs or lose some of the polish from the general Firefox release, so Test Pilot allows you to easily enable or disable features at any time.

Feedback and data from Test Pilot will help determine which features ultimately end up in a Firefox release for all to enjoy.

https://blog.mozilla.org/wp-content/uploads/2016/05/Firefox-Test-Pilot_-Suit-up-and-take-experimental-features-for-a-test-flight.mp4

What New Experimental Features Can You Test?

Activity Stream: This experiment will make it easier to navigate through browsing history to find important websites and content faster. Activity stream helps you rediscover the things you love the most on the web. Each time you open a new tab, you’ll see your top sites along with highlights from your bookmarks and history. Simply browse the visual timeline to find what you want.

Tab Center: Display tabs vertically along the side of the screen instead of horizontally along the top of the browser to give you a new way to experience tabbed browsing.

Universal search: Combines the Awesome Bar history with the Firefox Search drop down menu to give you the best recommendations so you can spend less time sifting through search results and more time enjoying the web. You’ll notice that search suggestions look different. If you have been to a site before, you will see it clearly highlighted as a search suggestion. Recommended results will include more information about the site suggestion, like top stories on the news page or featured content.

How do I get started?

Test Pilot experiments are currently available in English only and we will add more languages later this year. To download Test Pilot and help us build the future of Firefox, visit https://testpilot.firefox.com/

16 May 09:28

Euphoria

by Richard

At 5:06 PM I saw a tweet by Drake (the rapper) that he was doing…something at 5 PM at 567 Queen St. West.

"It started already, it'll over by the time I get there," I thought. Still, it was a few short blocks away from where I live. I walked there, and the line was long but sure, why not? The line's this long, it's got to be good!

While in line, I pieced together that it was a pop-up shop, and that people were getting t-shirts promoting his new album. OK, free t-shirt, cool. Four guys ahead of me didn't want to wait an hour for a t-shirt (or something?) and didn't know what would have been in store for them. I hung out, trying not to eavesdrop on the conversations in front of me. One woman was told by someone she knew that they had run out of t-shirts, and was almost convinced to leave the line. She stuck with it, and I ended up in the alley with a bunch of people, listening to some Drake tracks, when all of a sudden someone said, into a microphone, "What's up?" Euphoria as Drake, the man himself, stepped out the door, smiling and winking at everybody. This was a dream come true for a lot of people! Since I'm tall, I offered to take photos for the family behind me, who couldn't see over everybody. I also let them go ahead of me. It was a bigger deal for them than it was for me.

Drake

Lots of people gave dap to Drake and some got selfies with him. The guy is the master at the well-timed flash of the "six" and smile just as people clicked their selfie. No selfie for me, though. I just shook Drake's hand. I think he wanted to lock thumbs with me but I am definitely not at all cool enough for that. At least he looked into my soul, oh so briefly.

Did the people ahead of us not get to meet Drake? Are they now thinking "All I got was a t-shirt?" For me, it was another thing that happened that was only possible because I moved to Toronto.

16 May 09:28

3D Me

by Richard

I met Douglas Coupland! I had known for a while about his project to 3D scan and print each and every Canadian (minus those who couldn't make it to their local branch of a Quebec-based fashion retailer) for an installation he will later make. I was finally able to do it this weekend. I know one of his collaborators, John Biehler, so it occurred to them to scan me both wearing the Blue Jays cap I showed up in and one without. Everybody who gets scanned will get a copy of themselves, and, lucky me, I get two. It'll be weird seeing a 3-dimensional version of me without my glasses, but like Doug (I'm allowed to call him Doug) said, maybe I'm a different person without my glasses anyway.

I didn't get a selfie with him, same as with Drake. That makes it two Canadian celebrities I decided not to get a selfie with in the same week.

It was a pretty slick operation, with demo units of 3D printers and waiver forms to sign. I saw one tweet snarkily ask "Are people getting paid in 'exposure'?" not reading the part where you get a totally cool 3D printed bust of yourself. (And a t-shirt. That part I didn't know.) Totally worth spending two hours on transit to go to Mississauga and back. Would go again! In fact, to pick up my busts, I will, won't I?

Later: John sent me a photo of the two copies of me. I love 'em both!

Two 3D printed copies of me, one with a ballcap, one without

16 May 09:28

No Bell and the Brakes Were Hilariously Loud

by Richard

Today was my first Bike Share Toronto commute, and I made as many blunders as possible. I added a few extra minutes by figuring out how to take a bike out, walking (not biking) from King to Adelaide, dodging trucks parked in the bike lane while properly crossing old streetcar tracks, turning into a one-way street, and getting turned around at least once, maybe twice. Next time I'm just going to turn right onto Church.

The actual cycling time of 15 minutes is about half the amount of time it takes to walk to work and about a third the time it takes by transit (the streetcar is sooooo slooooww, but at least I can read or zone out). The bike I rode has no bell and the brakes were hilariously loud. At least now I know what's involved, and the actual time door-to-door next time will be a lot shorter.

Thanks to Average Joe Cyclist for the timely post about using Strava, which noted that today was Strava's Global Bike to Work Day. That's right, I did it for the badge.

16 May 09:27

Cancellation of subscriptions to 2,116 Springer journals

files/images/BLSH-650_000.jpg


Press Release, Université de Montréal, May 13, 2016


A press prelease from the Université de Montré al minces no words in explaining why itè s dropping the bulk of its subscriptions from Springer: "'We are trying to best meet the needs of our community despite budget cuts in the last few years, the greediness of commercial publishers, and the weak Canadian dollar,' said Sté phanie Gagnon, Collections Director." One of the major culprits is bundling, which forces the university to buy journals nobody reads. "On their own, Libraries are absolutely no match for these multinational publishers. However, UdeM professors and researchers that are concerned about these changes are well positioned to make a difference....  The greatest risk for publishers is that people start questioning their access to this free research output and volunteer workforce as well as their business model.

[Link] [Comment]
16 May 09:27

A million things to do with a computer!

I gave a talk at !!con last weekend, about my favourite programming language scratch:

Back in 1971, Cynthia Solomon and Seymour Papert wrote “Twenty things to do with a computer”, about their experiences of teaching children to use Logo and their ideas for the future.

They were wrong: There’s a lot more than twenty. Logo’s successor, Scratch, has over thirteen million things that children and adults alike have built. Scratch is radically approachable in a way that puts every other language to shame.

This talk is about the history, present, and future of Scratch: why Scratch is about ‘coding to learn’, and not about ‘learning to code’.

I had a incredible time at !!con. The live captioning was fantastic (and they’re crowdfunding a game to teach steno too).

The livestreams are up (but no captions), and my talk is 3h29m32s in on day 2.

16 May 09:27

A means not an end - building a social media presence as a junior scientist

Editor’s note - This is a chapter from my book How to be a modern scientist where I talk about some of the tools and techniques that scientists have available to them now that they didn’t before. 50% of all royalties from the book go to support Data Carpentry to promote data science education.

Social media - what should I do and why?

Social media can serve a variety of roles for modern scientists. Here I am going to focus on the role of social media for working scientists whose primary focus is not on scientific communication. Something that is often missed by people who are just getting started with social media is that there are two separate components to developing a successful social media presence.

The first is to develop a following and connections to people in your community. This is achieved through being either a content curator, a content generator, or being funny/interesting in some other way. This often has nothing to do with your scientific output.

The second component is using your social media presence to magnify the audience for your scientific work. You can only do this if you have successfully developed a network and community in the first step. Then, when you post about your own scientific papers they will be shared.

To most effectively achieve all of these goals you need to identify relevant communities and develop a network of individuals who follow you and will help to share your ideas and work.

Set up social media accounts and follow relevant people/journals

One of the largest academic communities has developed around Twitter, but some scientists are also using Facebook for professional purposes. If you set up a Twitter account, you should then find as many colleagues in your area of expertise that you can find and also any journals that are in your area.

Use your social media account to promote the work of other people

If you just use your social media account to post links to any papers that you publish, it will be hard to develop much of a following. It is also hard to develop a following by constantly posting long form original content such as blog posts. Alternatively you can gain a large number of followers by being (a) funny, (b) interesting, or (c) being a content curator. This latter approach can be particularly useful for people new to social media. Just follow people and journals you find interesting and share anything that you think is important/creative/exciting.

Share any work that you develop

Any code, publications, data, or blog posts you create you can share from your social media account. This can help raise your profile as people notice your good work. But if you only post your own work it is rarely possible to develop a large following unless you are already famous for another reason.

Social media - what tools should I use?

There are a large number of social media platforms that are available to scientists. Creatively using any new social media platform if it has a large number of users can be a way to quickly jump into the consciousness of more people. That being said the two largest communities of scientists have organized around two of the largest social media platforms.

  • Twitter - is a platform where you can post short (less than 140 character) messages. This is a great platform for both discovering science and engaging in conversations about topics at a superficial level. It is not particularly useful for in depth scientific discussions.
  • Facebook - some scientists post longer form scientific discussions on Facebook, but the community there is somewhat less organized and people tend to use it less for professional reasons. However, sharing content on Facebook, particularly when it is of interest to a general audience, can lead to a broader engagement in your work.

There are also a large and growing number of academic-specific social networks. For the most part these social networks are not widely used by practicing scientists and so don’t represent the best use of your time.

You might also consider short videos on Vine, longer videos on Youtube, more image intensive social media on Tumblr or Instagram if you have content that regularly fits those outlets. But they tend to have smaller communities of scientists with less opportunity for back and forth.

Social media - further tips and issues

You do not need to develop original content

Social media can be a time suck, particularly if you are spending a lot of time engaging in conversations on your platform of choice. Generating long form content in particular can take up a lot of time. But you don’t need to do that to generate a decent following. Finding the right community and then sharing work within that community and adding brief commentary and ideas can often help you develop a large following which can then be useful for other reasons.

Add your own commentary

Once you are comfortable using the social media platform of your choice you can start to engage with other people in conversation or add comments when you share other people’s work. This will increase the interest in your social media account and help you develop followers. This can be as simple as one-liners copied straight from the text of papers or posts that you think are most important.

Make online friends - then meet them offline

One of the biggest advantages of scientific social media is that it levels the playing ground. Don’t be afraid to engage with members of your scientific community at all levels, from members of the National Academy (if they are online!) all the way down to junior graduate students. Getting to know a diversity of people can really help you during scientific meetings and visits. If you spend time cultivating online friendships, you’ll often meet a “familiar handle” at any conference or meeting you go to.

Include images when you can

If you see a plot from a paper you think is particularly compelling, copy it and attach it when you post/tweet when you link to the paper. On social media, images are often better received than plain text.

Be careful of hot button issues (unless you really care)

One thing to keep in mind on social media is the amplification of opinions. There are a large number of issues that are of extreme interest and generate really strong opinions on multiple sides. Some of these issues are common societal issues (e.g., racism, feminism, economic inequality) and some are specific to science (e.g., open access publishing, open source development). If you are starting a social media account to engage in these topics then you should definitely do that. If you are using your account primarily for scientific purposes you should consider carefully the consequences of wading into these discussions. The debates run very hot on social media and you may post what you consider to be a relatively tangential or light message on one of these topics and find yourself the center of a lot of attention (positive and negative).

16 May 09:27

Twitter Favorites: [dbarefoot] Since returning from Germany, I use the term 'colleague' way more. It's commonly used in both German and English (and at the UN).

Darren Barefoot @dbarefoot
Since returning from Germany, I use the term 'colleague' way more. It's commonly used in both German and English (and at the UN).
16 May 09:27

Recommended on Medium: "Introducing Sign in with Slack" in Slack Platform Blog

Today, we’re introducing Sign in with Slack, a way for customers to quickly sign up for your app using their Slack identity.

Continue reading on Slack Platform Blog »

16 May 09:27

Now I Get It: Snapchat

There’s a lot that’s confusing in the world of consumer tech — and there’s no handy handbook to explain it. Welcome to “Now I Get It: Tech,” a new series from David Pogue that explains some of the most baffling mysteries in the tech world.

I don’t use Snapchat. And no wonder: Most people who use it are under 25, and 70 percent of them are female. I’m neither.

At the same time, I’ve been dying to understand Snapchat. I mean, it’s a major cultural force: 200 million people are using it. They send 20,000 photos a second and watch 8 to 10 billion videos a day. The company has yet to turn a profit, but it turned down Facebook’s offer of $3 billion; today, it’s valued at $20 billion.

So I decided to dive in, to talk to people, to pound on this app until I finally understood it. Here, for the benefit of people who don’t understand Snapchat, is what I discovered.

image

First, you need to know that Snapchat is really three apps crammed in one.

Function 1: Self-destructing messages

Snapchat’s primary (and most famous) feature is that it lets you send self-erasing photos to people. To be more precise, it lets you snap a picture or record a 10-second video, dress it up with funny overlays, type and format a caption, draw on it with your finger if you like, and then send it to specified friends. Once they’ve seen your snap, it disappears forever. Not even the company can get it back.

You can also post snaps publicly to all of your followers on a timeline (here called your Story), à la Facebook or Instagram; the difference is that whatever you post on Snapchat vanishes after 24 hours.

For nonteenagers, the whole concept is a little bizarre. Why would you take photos and videos knowing that they’ll disappear after one viewing? Isn’t the whole purpose of photos and videos to capture cherished memories to be viewed years from now?

Here’s my theory: Deep down, Snapchat’s appeal has to do with teenage insecurity.

Usually, what you post online is there forever. It can come back to haunt you. Everything on Facebook, Twitter, Instagram, the Web, text messages, email — it will always be there for people to judge you. Your parents might see it. A college admissions officer. A prospective employer.

But Snapchat takes the pressure off. If your snap is goofy or badly framed or embarrassing or incriminating — you don’t care! Post it anyway. No employer or principal or parent will ever find it and disapprove.

Furthermore, there are no comments, no Like buttons, no counts of how many friends you have. No judgment.

All of this gives Snapchat an honesty, an authenticity, an immediacy that the other social media apps lack — and that millennials love.

The screenshot loophole

It is true, by the way, that if someone sends you a snap, you can take a screenshot of it before it disappears, thereby preserving it forever and, presumably, defeating the whole purpose of Snapchat. (To take a screenshot on the iPhone, you press the sleep and Home buttons at the same time; on most Android phones, you press the volume-down and Home buttons.)

The app does notify you when an image has been screenshotted before it disappears. But even that function can be defeated using little hacks that are easy to find online.

So I couldn’t help wondering: Why would anyone risk sending naughty or risky stuff, knowing that it could be captured forever?

One good answer came from a respondent on Quora: “If you don’t trust someone to not take advantage of you, don’t send them that snap; it’s really that easy.”

Another came from a high schooler I interviewed: “Nobody really thinks that the point of Snapchat is to send messages that will delete … unless it’s something secret or embarrassing, I guess. Anyway, I don’t think people care if you screenshot something.”

Either way, the screenshot loophole doesn’t seem to bother anyone.

One more exception: Once a day, you can watch one snap one more time in case you missed it. Incredibly, you can also pay to view snaps again (three replays for a dollar). Mostly, nobody bothers. (“I did not even know that was a feature. Neither did my cousins — noted avid Snapchat users,” said my high school source.)

Function 2: Standard chat program

Many teenagers use Snapchat constantly. They send many, many snaps. They live in the app.

The Snapchat folks have fanned that flame by adding text, voice, and video chat capabilities to the app. You can have a conversation by typing, by talking, or by video calling, and you can slap in cute cartoony “stickers.”

image

These communications, too, disappear, once both parties have read them.

Function 3: A news app

The third face of Snapchat’s personality is its recent incarnation as a news app. Online publications can post their own stuff for you to read: ESPN, Comedy Central, BuzzFeed, People, National Geographic, CNN, and others are already on board.

image

What does any of this publishing stuff have to do with chatting with friends or sending self-destructing photos?

Beats the heck out of me, but I’d guess it has something to do with Snapchat trying to make money.

(Most of my teenage sources say they don’t even look at these articles.)

Snapchat the Unknowable

Snapchat wins no awards for ease of use. In fact, it’s incredibly hard to figure out, filled with unlabeled icons and confusingly arrayed screens. Many functions don’t have buttons at all; you get to them by swiping across the screen in various directions [as shown by the arrows here], which is something you kind of have to stumble on.

image

(Maybe this, too, is part of the appeal to teenagers. Every generation of teens has its secret, proprietary culture — slang, music, rituals — deliberately designed to shut out or mystify their parents. Maybe mastering Snapchat’s bizarre layout makes its fans feel like insiders in an exclusive club.)

Over time, Snapchat has become burdened by an almost absurd assortment of features. My impression is that it’s popular despite this feature-itis, not because of it.

How to use Snapchat

All that said, here’s a quick guide to get you started:

Functions 2 and 3 (chatting and reading articles) are relatively easy. To read the articles posted by media organizations, tap the lower-right button (labeled Discover in the right-hand screenshot above) to see the names of magazines and websites, and tap your way in to start reading.

For chat, you swipe to the right from the camera screen to see your list of contacts, and then tap one to start typing or calling.

That leaves us with the Big One, the primary Snapchat feature, the really fun one: Sending self-deleting photos and videos.

When you first open the app, its camera screen appears. It works just like your phone’s regular camera app. Tap the upper-right camera button to use the phone’s front-facing camera to take a selfie (which is usually the point). Touch the big round shutter button to take the photo. (Or hold it down for up to 10 seconds to record a video.)

image

All Snapchat photos and videos are vertical, by the way; nobody turns the phone 90 degrees to take or view them in landscape mode.

Once you’ve snapped a shot, the real fun begins: Dressing it up.

Apply a filter: Swipe horizontally across your photo to apply a filter — to add a blue or green tint to the whole thing, for example. If you keep swiping, you’ll see some really interesting ones: One adds the name of your city with a cool graphic treatment, another stamps the current time or temperature, yet another stamps your current speed in miles per hour (best if you’re not doing the driving).

image

Stamp some stickers: At the top of the screen, the tilted square icon shown here [below, left] opens a page of emoji icons. Tap to stamp one on your photo. At that point, you can drag the “sticker” around to move it, or pinch/spread with two fingers to enlarge it or shrink it.

image

Type some text: When you tap the T button at the top right of your photo screen, the keyboard opens [below, left]. Type a caption and then Done. Now you can drag with your finger to slide the caption up or down the photo.

Or maybe you’d prefer giant lettering. To do that, tap the T to make the text huge [below, middle]. Tap a third time to center the text. Once it’s huge, tap the text itself to open a page with a color slider, so you can change the color [right].

image

Draw on the photo: Tap the pencil icon to draw or write on the shot with your finger. Once again, a slider appears so you can specify the color.

image

Put on a virtual mask: You’d never in a million years stumble onto this feature without being told about it, but it’s hilarious and fun: Snapchat can turn you into a gorilla or a Viking or a bobblehead, either as a still or a video, by superimposing an animated mask or costume on your live image.

To see these software “masks” (or Lenses, as Snapchat calls them), the trick is to hold your finger down on your own face in the live camera view before taking the photo. After a moment, a grid out of a sci-fi movie appears on your face, and icons for virtual masks fill the bottom of the screen. Tap one to try it out. (They change all the time, for variety.) Some come with instructions, like Open your mouth, which triggers a funny animation.

image

When you’ve got a look you like, snap it as a photo or video just as you normally would, by touching or holding your finger down on the round button on the screen. (Snapchat charges $1 apiece to install new Lenses of this type.)

(I would have written that these virtual masks are so witty, new, and interesting that it’s worth installing Snapchat just to try them out — except that MSQRD is a free app that does exactly the same thing, with even better animations and smarts, and without all the extra clutter of Snapchat. If you have a child and an upcoming car ride, you must download MSQRD.)

Finally, you’re ready to post your masterpiece. For this, you use the icons at the bottom of the screen:

image
  • Seconds: The lower-left icon specifies how many seconds your recipients will have to view your masterpiece before it disappears. (They’ll see a countdown.)
  • Save: Your friends aren’t supposed to keep a copy of your photo, but it’s OK for you to keep one. Tap Save to preserve it in your phone’s Photos collection.
  • Post to your Story: Again, Story is Snapchat’s name for your timeline or newsfeed. It’s a way for you to make your snaps viewable to your entire social circle (which you specify in Settings) — for 24 hours.
  • Choose recipients. When everything’s ready to go, tap here to view your friends list, so you can specify who gets your masterpiece.

Now you get it?

As you now know, the first Snapchat mystery — How do you use it? — is easily solved, once you have a cheat sheet.

As for the second mystery — Why do you use it? — it helps to be a teenager. But Snapchat also rocketed up the ranks because of its convenience, silliness and fun, immediacy — and above all, because whatever you do with it, you won’t someday regret it.

David Pogue is the founder of Yahoo Tech; here’s how to get his columns by email. On the Web, he’s davidpogue.com. On Twitter, he’s @pogue. On email, he’s poguester@yahoo.com. He welcomes nontoxic comments in the Comments below.

16 May 09:24

Strategies for Balancing Innovation and Technical Debt

by Heather McCloskey

The app ecosystem has changed many things in the world of software development, one major shift being the ability to rapidly push out software updates to your entire user base. Many apps are updated every week or two, and before the end user clicks that “Update” button, they have the chance to see exactly what’s different in the shiny new version of each app. From update to update, you’ll find a common theme: “bug fixes” and “performance improvements” appear just as often (if not more often) as new features or functionality.

This doesn’t mean these app developers are shipping junk software to the masses and then fixing things when users start complaining. Rather, it means these companies are investing in their technical debt, just in a far more public space than enterprise solutions and SaaS products that don’t need to broadcast to users what they’re up to.


You don’t have to do anything wrong to amass technical debt.
Click To Tweet


.

Primary Sources of Technical Debt

  • Usage growth. This is the greatest source of technical debt. As your solution is used more and more, it suffers growing pains, capacity issues, and performance woes that must be addressed to accommodate the additional workload and storage requirements.
  • The passage of time. Third-party resources (libraries, platforms, operating systems, etc.) you depend on age and must be updated themselves to support new technology, repel new viruses, and give your own software new capabilities to incorporate.
  • Cleaning up your messes. Nothing is perfect the first time out, so adding new features and functionality inevitably creates imperfections to fix and processes to optimize.

Technical Debt and Product Innovation: A Necessary Pairing

While the first two sources of technical debt are essentially necessary evils, it’s the third category that creates the most challenges for product management.

You want to deliver new features. Your developers want to build new features. Your QA department wants to test new features. And your sales and marketing teams definitely want to talk about new features. This is why you’re here – you all got into this business to come up with new stuff and deliver it to customers.

But with every new feature you add, you’re also adding a complexity cost. It’s one more thing to add to the testing matrix. It’s one more item that creates dependencies. It’s one more thing to maintain and become a source of future technical debt.

“Complexity cost is the debt you accrue by complicating features or technology in order to solve problems,” says Kris Gale of Yammer. “An application that does twenty things is more difficult to refactor than an application that does one thing, so changes to its code will take longer. Sometimes complexity is a necessary cost, but only organizations that fully internalize the concept can hope to prevent runaway spending in this area.”

As your product matures, new functionality runs an additional risk. When you’re not simply improving an existing element, you’re adding one more widget that can water down your value proposition, confuse your sales efforts, distract users, and suck resources away from the core elements of your product.

And while there’s a natural tendency to keep adding features, this tendency can easily lead to feature bloat.

“I feel very strongly that the depth of our features, not the scope of them has been what has made Sketch popular,” says Pieter Omvlee of Bohemian Coding. “We’ll gain more fans with smart little touches we add to existing features than bolting on more and more features. Bloat is something we want to avoid at all costs.”

Strategies for Balancing Technical Debt and Innovation

Figuring out when to add something new instead of fixing something old is tricky business. Here are some ways to figure out how to make it happen.

Prioritize customer needs (not wants)

Customers are a great source for ideas, but they are not always a source for great ideas. They’re usually not well-versed in the complexities of your products or even software development in general. So instead of letting them design the solution, use their expertise to fully articulate the problem.

Customer Want: The customer wants a button for every possible person or group they might send a message to.

Vs.

Customer Need: The customer needs to send some messages to the entire team, some messages to specific subgroups, and some messages to individuals.

It might very well be that dedicated buttons are the best way to handle message routing…or it could be an unmitigated disaster that doesn’t scale, slows down the UI, and is impossible on a mobile client version of your app. It’s your job to figure out how to meet the customer’s needs without creating problems your dev team will be wrestling with for years to come.

The key to making this all work is letting your customers know that you’re going to address their needs (not just doing exactly what they asked you to do) and that you’re going to accomplish this without ransoming your future flexibility for a quick win today.


Customers are a great source for ideas, but they are not always a source for great ideas.
Click To Tweet


Encourage good coding practices

good coding practices help reduce technical debt

As the product manager, you’re sometimes viewed as the slavedriver whipping the team to deliver specific functionality by a certain date (or at least the person who told the project manager to whip them). If you treasure hitting dates and pushing code above all else, those values will eventually trickle down into the engineering teams supporting you.

While this may initially seem great, sloppy coding and half-baked testing procedures will rapidly lead to both unhappy customers and development efforts hamstrung with supporting the spaghetti code the engineering team cranked out on version 1.0. This scenario can be avoided by supporting — or even demanding — that your engineering teams are employing proper coding practices and spending the time on code reviews, unit testing, and regression testing before they even think about shipping.

If you make it a requirement, it will happen. If you leave it up to them, you never know. So take the hit on delivery dates, set expectations with sales and customers, and make sure you’re shipping something that will be far easier to support in the future. It’s all about taking your medicine today so you’re healthy tomorrow.

Get organizational alignment on routine debt management

One of the trickier tasks you’ll face is convincing your own organization that it’s worthwhile to tackle technical debt. While you may have a few prudent voices on your management team, the focus on hitting targets, creating press release fodder, and pleasing customers can often drown them out.

Therefore it’s essential to make addressing technical debt part of your company’s routine. Whether it’s every release or every other one, there should be an expectation that managing technical debt is an expected and regular part of the process.

One way to reinforce this is working from a single backlog, with new features and technical debt items sitting side-by-side in the queue. This keeps them visible for everyone and doesn’t make it seem like they are “something extra” that people need to work on and slot into the product roadmap.

Remember that not all technical debt is bad

It’s natural to assume that technical debt is a negative force in your product that should be eradicated at all costs. But just like you shouldn’t eliminate ALL cholesterol and fat from your diet, getting to “zero technical debt” isn’t a realistic or healthy goal.

“Up to 40 percent technical debt for early-stage companies and up to 20 percent for more mature organizations is actually healthy,” says Brian York of Bliss. “Once you cross over those thresholds, you risk releasing buggy products that will negatively impact your relationship with customers.”

The reason why these levels are OK is because snuffing out every speck of technical debt will bring your innovation to a screeching halt. Of course you want to future-proof whenever possible, but not at the expense of having your product stagnate in the market.

“Obsessing about technical debt leads to shipping releases that users don’t care about, paving the path to irrelevance,” says Mathew Lodge of Weave.works. “There needs to be a balance between paying off technical debt and making the product better for users and buyers, and an understanding of when clearing technical debt helps improve customer experience.”


Getting to “Zero Technical Debt” isn’t a realistic or healthy goal
Click To Tweet


Notice early warning signs that technical debt is taking its toll

You know it’s out there, lurking, waiting to suddenly throw a wrench in your plans and derail a release. But is there a way to predict when it’s time to take on a major technical debt project?

One indicator that technical debt is moving from nuisance item to stumbling block is when your team’s velocity or throughput is slowing down. Says management consultant Johanna Rothman:

“If you have a lot of Technical Debt and you’re growing your Technical Debt, then your velocity is going to go down and your throughput is going to go down. If you don’t look at it and you do not look at it over time (trends are everything!) you will lose the big picture…I also want to look at velocity to say: Are we losing ground from iteration to iteration? Not to punish ourselves… but to see if we are growing Technical Debt, because this will determine if we are taking too many shortcuts.”

Do some positive pruning

reducing your technical debt

The more your product does, the more opportunity for technical debt to pile up. As a product manager, you’re lauded and rewarded for identifying new features and bringing them to market. But the opportunity to kill off dead-weight features is often ignored and these vestigial, little-used features suck up time and resources with every release.

“Decide a ‘minimum bar of usage/value’ that every feature must pass in order for it to remain a feature. If a new feature doesn’t hit that bar in some set period of time, prune it,” says Dharmesh Shah of HubSpot. “Support those efforts to prune where pruning makes sense. Acknowledge that there will be some short-term pain, but that the long-term value is worth it.”

You will inevitably face resistance from sales teams fearful of upsetting customers, but if it’s not delivering core value or being used that much, you should feel confident using the data to justify this hard decision.

16 May 09:24

The Battle for “Personalized Learning”

files/images/1430253590-hermione-granger-harry-potter-wingardium-leviosa.gif


Michael Feldstein, e-Literate, May 13, 2016


I actually don't care who defines 'personalized learning' nor how they define it so long as I can keep distinguishing it from 'personal learning'. But I think it's far-fetched to say "it  seems to have no specific meaning at all" and even more so to say that "it means... robot tutor in the sky" (and yes, of course Knewton was over-reaching  - anyone who understands how this technology works understands that it has been over-reaching). And having said all that, their own definition ("a family of teaching practices that are intended to help reach students in the metaphorical back row") is just plain weird. Their examples ("that teachers have been using for a very long time") include 'homework' and 'tutors'. I get what they're after - nobody wants a repeat of the co-option of terms like we've seen with 'open' and 'edupunk' and 'MOOC'. But this sort of non-definition won't help anything. Why not at least refer to a principled way  of describing it, and work from there, instead of  "asserting squatters’ rights" by  pretending that nobody had ever attempted  the task  before? (p.s. -1 for mixing reference to LoTR and HP).

[Link] [Comment]
16 May 09:24

Oracle vs. Google – The Merry-go-round.

by windsorr

Reply to this post

RFM AvatarSmall

 

 

 

 

 

I think Google will end up paying less than $1bn.

  • Google and Oracle are at it again with Oracle asking for up to $9bn of damages as a result of Google’s alleged copyright infringement of the Java programming language.
  • Normally this would be quite straight forward but where it gets complicated is that Java is open source software meaning that Google is entitled to use it.
  • 37 Java APIs lie at the heart of this dispute which make up less than 0.1% of the Android software that runs on 2.0bn devices of which 0.9bn are Google ecosystem devices.
  • However, Oracle owns the copyright on these 37 APIs and claims that Google simply copied them rather than make its own versions to work in conjunction with the open source Java code.
  • Google’s position is that it its use of the APIs transformed the software into something new which counts as “fair use” because it is far more than merely copying.
  • Last time around, the jury found that Google had violated Oracle’s copyrights but were deadlocked as to whether or not it constituted “fair use”.
  • The supreme court declined to intervene which is why the whole issue is being dragged before a court again.
  • There are strong arguments in both directions:
    • For Oracle. Google has a history of copying code line for line from the open source community and I believe that much of Android Auto was built this way.
    • Google does not seem to be denying that it copied the APIs but it categorically states that it did so legally.
    • This immediately puts Google on the back foot as it is not really denying Oracle’s accusation and is left defending its actions.
    • For Google. For seven years prior to the launch of Android, many companies tried and failed to create a viable operating system for a smartphone using Java.
    • Google’s success in doing so strongly indicates that it fundamentally changed the nature of the Java code to make it work properly on mobile thereby, in all likelihood, fulfilling the requirements of “fair use”.
    • Furthermore I think that Oracle’s allegation that Google copied Java APIs wilfully for monetary gain is baseless.
    • Google used Java as the starting point for Android because of Andy Rubin, the creator of Android.
    • Andy Rubin’s previous company Danger, created a data centric device called the Sidekick that was based on Java.
    • Consequently, when he came to Google with the mission to create Android, Java was the natural starting point.
    • Engineers do not tend to think about copyright or patents when they create something, they just focus on making the best product that they can which is what I am certain happened in this case.
  • There is no doubt that Google has made a vast amount of money from the Android software which carries its services to mobile users but Oracle’s estimate looks punchy.
  • RFM estimates that between 2013-2015, Google generated $30.4bn in revenues ($20.8bn from advertising and $9.6bn from Google Play) from devices based on Android software.
  • Due to the very rapid growth in Android over the last 3 years, revenues prior to 2013, are unlikely to be more than $1bn-$2bn and not really meaningful.
  • I believe that a very large proportion of this was profit but it is impossible to tell because many of the costs of providing the services will be the same as those for providing services to PCs.
  • Legal cases in general are very difficult to predict and this one is far more difficult than most.
  • I suspect that the outcome will be a settlement where Google pays Oracle something but far less than the $9bn that is flying around.
  • My back of the envelope calculation ($30.4bn at 5% royalty) gives a figure of $1.5bn but given what companies are paying in royalties these days, this 5% looks high.
  • Consequently, I think it unlikely that Google will pay more than $1bn which is a figure that could pass through the financial statements with barely a ripple.
  • Alphabet remains around fair value meaning that I see more upside in Microsoft or Samsung but Apple is still looks incredible value for the really long term income investor.
16 May 09:22

Mozilla Open Source Support (MOSS): Now Open To All Projects

by Mozilla

Last year, we launched the Mozilla Open Source Support Program (MOSS) – an award program specifically focused on supporting open source and free software. The first track within MOSS (“Foundational Technology”) provides support for open source and free software projects that Mozilla uses or relies on. We are now adding a second track. “Mission Partners” is open to any open source project in the world which is undertaking an activity that meaningfully furthers Mozilla’s mission.

Our mission, as embodied in our Manifesto, is to ensure the Internet is a global public resource, open and accessible to all. An Internet that truly puts people first, where individuals can shape their own experience and are empowered, safe and independent. We know that many other software projects around the world share these goals with us, and we want to use our resources to help and encourage others to work towards them.

So if you think your project qualifies, we encourage you to apply. Applications for the Mission Partners track are open as of today. (Applications for Foundational Technology also remain open.) You can read more about our selection criteria and committee on the wiki. The budget for this track for 2016 is approximately US$1.25 million.

We are keen to enable applications from groups not currently connected with Mozilla and from communities outside the English-speaking free software world. Therefore, applications for Mission Partners do not require a Mozillian to support them. Instead, they must be endorsed by a well-known and respected figure from the wider software community of which the project is a part.

The deadline for applications for the initial batch of Mission Partners awards is Tuesday, May 31 at 11:59pm Pacific Time. The first awardees will be announced at the Mozilla All Hands in London in the middle of June. After that time, applications will continue to be accepted and will be considered on an ongoing basis.

If you want to be kept informed of updates to the MOSS program, please join our discussion forum and read our updates on the Mozilla blog.

We look forward to considering the applications.

16 May 09:22

Firefox for iOS Makes it Faster and Easier to Use the Mobile Web the Way You Want

by Mozilla

We’re always focused on making the best Firefox experience we can offer. We want to give you complete control over your web experience, while also making sure to protect your privacy and security the best we can. Today, we’re pleased to share an update to Firefox for iOS that gives you a more streamlined experience and that allows for more control over your mobile browsing experience.

What’s New in Firefox for iOS?

iOS Today Widget: We know that getting to what you need on the Web fast is important, especially on your mobile, so you can access Firefox through the iOS Today widget to quickly open a new tab, a new private tab or a recently copied URL.

iOS Today Widget in Firefox for iOS

iOS Today Widget in Firefox for iOS

Awesomebar: Firefox for iOS allows you to search your bookmarks and history within the smart URL bar, making it easier to quickly access your favorite websites.

Search bookmarks

Search bookmarks in Firefox for iOS

Manage Security: By default, Firefox helps to ensure your security by warning you when a website’s connection is not secure. When you attempt to access an unsafe website, you’ll see an error message stating that the connection is untrusted, and you are prevented from accessing that site. With iOS, you can now temporarily ignore these error messages for websites you have deemed as “safe”, but that might register as potentially unsafe by Firefox.

SSL Certificate

Over-ride certificate errors in Firefox for iOS

To experience the newest features and use the latest version of Firefox for iOS, download the update and let us know what you think.

Download_on_the_App_Store_Badge_US-UK_135x40

16 May 09:22

This AI has killer dance moves

files/images/319-dancing-ai.jpg


Nora Young, CBC | Spark, May 14, 2016


Driving back from a lunch meeting I listened to this interesting program on Spark about LuminAI, a computer program that learns to dance by dancing with you. It does not have dance moves pre-programed into it; rather, it learns through a process of pattern recognition (though the designers did cheat a little bit by giving it a dance repertoire language). What's interesting is not simply the understanding of how to learn without explicit instruction, it's also the idea of humans and AIs learning to work together. “ Co-creative artificial intelligence, or using AI as a creative collaborator, is rare,” said Brian Magerko, the Georgia Tech digital media associate professor who leads the project. “ As computers become more ubiquitous, we must understand how they can co-exist with humans. Part of that is creating things together.” Additionally, we can see this being a model for future instruction: an AI works with an expect for a period of time, learns what to recognize, then in turn is able to teach by working with novices (or as we called it, 'automated competency detection and recognition').

[Link] [Comment]
16 May 09:14

Metrics Maven: Window Functions in PostgreSQL

by Lisa Smith
Metrics Maven: Window Functions in PostgreSQL

In our Metrics Maven series, Compose's data scientist shares database features, tips, tricks, and code you can use to get the metrics you need from your data. In this first article, we'll look at how to use window functions in PostgreSQL.

PostgreSQL window functions

If you use PostgreSQL, you're probably already familiar with many of the common aggregate functions, such as COUNT(), SUM(), MIN(), MAX(), and AVG(). But you may not be familiar with window functions since they're touted as an advanced feature. Window functions aren't nearly as esoteric as they may seem, however.

As the name implies, window functions provide a "window" into your data, letting you perform aggregations against a set of data rows according to specified criteria that match the current row. While they are similar to standard aggregations, there are also additional functions that can only be used through window functions (such as the RANK() function we'll demonstrate below). In some situations window functions can minimize the complexity of your query or even speed up the performance.

Make note: window functions always use the OVER() clause so if you see OVER() you're looking at a window function. Once you get used to how the OVER() clause is formatted, where it fits in your queries, and the kind of results you can get, you'll soon start to see lots of ways to apply it. Let's dive in!

OVER( )

Depending on the purpose and complexity of the window function you want to run, you can use OVER() all by itself or with a handful of conditional clauses. Let's start by looking at using OVER() all by itself.

If the aggregation you want to run is to be performed across all the rows returned by the query and you don't need to specify any other conditions, then you can use the OVER() clause by itself. Here's an example of a simple window function querying a table in our Compose PostgreSQL database containing the United States Census data on estimated population:

SELECT name AS state_name,  
       popestimate2015 AS state_population,
       SUM(popestimate2015)
            OVER() AS national_population
FROM population  
WHERE state > 0 -- only state-level rows  
ORDER BY name  
;

Notice that we're using a window function to sum the state populations over all the result rows (that's the OVER() you see in our query... yep, just that one little addition to an otherwise standard query). Returned, we get result rows for each state and their populations with also the population sum for the nation - that's the aggregation we performed with our window function:

state_name           | state_population | national_population  
--------------------------------------------------------------
Alabama              | 4858979          | 324893002  
Alaska               | 738432           | 324893002  
Arizona              | 6828065          | 324893002  
Arkansas             | 2978204          | 324893002  
California           | 39144818         | 324893002  
Colorado             | 5456574          | 324893002  
Connecticut          | 3590886          | 324893002  
Delaware             | 945934           | 324893002  
District of Columbia | 672228           | 324893002  
Florida              | 20271272         | 324893002  
. . . .

Consider how this compares to standard aggregation functions. Without the window function, the simplest thing we could do is return the national population by itself, like this, by summing the state populations:

SELECT SUM(popestimate2015) AS national_population  
FROM population  
WHERE state > 0 -- only state-level rows  
;

The problem is, we don't get any of the state level information this way. To get the same results as our window function, we'd have to do a sub-select as a derived table:

SELECT name AS state_name,  
       popestimate2015 AS state_population,
       x.national_population
FROM population,  
(
  SELECT SUM(popestimate2015) AS national_population
  FROM population
  WHERE state > 0 -- only state-level rows
) x
WHERE state > 0 -- only state-level rows  
ORDER BY name  
;

Looks ugly in comparison, doesn't it? Using window functions, our query is much less complex and easier to understand.

Condition clauses

In the above example, we looked at a simple window function without any additional conditions, but in many cases, you'll want to apply some conditions in the form of additional clauses to your OVER() clause. One is PARTITION BY which acts as the grouping mechanism for aggregations. The other one is ORDER BY which orders the results in the window frame (the set of applicable rows).

So, besides the format of the returned rows as we reviewed above, the other obvious difference with window functions is how the syntax works in your queries: use the OVER() clause with an aggregate function (like SUM() or AVG()) and/or with a specialized window function (like RANK() or ROW_NUMBER()) in your SELECT list to indicate you're creating a window and apply additional conditions as necessary to the OVER() clause, such as using PARTITION BY (instead of the GROUP BY you may be used to for aggregation).

Let's look at some specific examples.

PARTITION BY

PARTITION BY allows us to group aggregations according to the values of the specified fields.

In our census data for estimated population, each state is categorized according to the division and region it belongs to. Let's partition first by region:

SELECT name AS state_name,  
       popestimate2015 AS state_population,
       region,
       SUM(popestimate2015)
            OVER(PARTITION BY region) AS regional_population
FROM population  
WHERE state > 0 -- only state-level rows  
ORDER BY name  
;

Now we can see the population sum by region but still get the state level data:

state_name           | state_population | region    | regional_population  
-------------------------------------------------------------------------
Alabama              | 4858979          | South     | 121182847  
Alaska               | 738432           | West      | 76044679  
Arizona              | 6828065          | West      | 76044679  
Arkansas             | 2978204          | South     | 121182847  
California           | 39144818         | West      | 76044679  
Colorado             | 5456574          | West      | 76044679  
Connecticut          | 3590886          | Northeast | 56283891  
Delaware             | 945934           | South     | 121182847  
District of Columbia | 672228           | South     | 121182847  
Florida              | 20271272         | South     | 121182847  
. . . .

Let's add division:

SELECT name AS state_name,  
       popestimate2015 AS state_population,
       region,
       division,
       SUM(popestimate2015)
            OVER(PARTITION BY division) AS divisional_population
FROM population  
WHERE state > 0 -- only state-level rows  
ORDER BY name  
;

Now we're looking at state-level data, broken out by region and division, with a population summary at the division level:

state_name           | state_population | region    | division           | divisional_population  
-------------------------------------------------------------------------------------------
Alabama              | 4858979          | South     | East South Central | 18876703  
Alaska               | 738432           | West      | Pacific            | 52514181  
Arizona              | 6828065          | West      | Mountain           | 23530498  
Arkansas             | 2978204          | South     | West South Central | 39029380  
California           | 39144818         | West      | Pacific            | 52514181  
Colorado             | 5456574          | West      | Mountain           | 23530498  
Connecticut          | 3590886          | Northeast | New England        | 14727584  
Delaware             | 945934           | South     | South Atlantic     | 63276764  
District of Columbia | 672228           | South     | South Atlantic     | 63276764  
Florida              | 20271272         | South     | South Atlantic     | 63276764  
. . . .

ORDER BY

As you've probably noticed in the previous queries, we're using ORDER BY in the usual way to order the results by the state name, but we can also use ORDER BY in our OVER() clause to impact the window function calculation. For example, we'd want to use ORDER BY as a condition for the RANK() window function since ranking requires an order to be established. Let's rank the states according to highest population:

SELECT name AS state_name,  
       popestimate2015 AS state_population,
       RANK()
            OVER(ORDER BY popestimate2015 desc) AS state_rank
FROM population  
WHERE state > 0 -- only state-level rows  
ORDER BY name  
;

In this case, we've added ORDER BY popestimate2015 desc as a condition of our OVER() clause in order to describe how the ranking should be performed. Because we still have our ORDER BY name clause for our result set, though, our results will continue to be in state name order, but we'll see the populations ranked accordingly with California as the number 1 ranked based on its population:

state_name           | state_population | state_rank  
-----------------------------------------------------
Alabama              | 4858979          | 24  
Alaska               | 738432           | 49  
Arizona              | 6828065          | 14  
Arkansas             | 2978204          | 34  
California           | 39144818         | 1  
Colorado             | 5456574          | 22  
Connecticut          | 3590886          | 29  
Delaware             | 945934           | 46  
District of Columbia | 672228           | 50  
Florida              | 20271272         | 3  
. . . .

Let's combine our PARTITION BY and our ORDER BY window function clauses now to see the ranking of the states by population within each region. For this, we'll change our result-level ORDER BY name clause at the end to order by region instead so that it'll be clear how our window function works:

SELECT name AS state_name,  
       popestimate2015 AS state_population,
       region,
       RANK()
           OVER(PARTITION BY region ORDER BY popestimate2015 desc) AS regional_state_rank
FROM population  
WHERE state > 0 -- only state-level rows  
ORDER BY region  
;

Our results:

state_name   | state_population | region        | regional_state_rank  
----------------------------------------------------------------------
Illinois     | 12859995         | Midwest       | 1  
Ohio         | 11613423         | Midwest       | 2  
Michigan     | 9922576          | Midwest       | 3  
Indiana      | 6619680          | Midwest       | 4  
Missouri     | 6083672          | Midwest       | 5  
Wisconsin    | 5771337          | Midwest       | 6  
Minnesota    | 5489594          | Midwest       | 7  
Iowa         | 3123899          | Midwest       | 8  
Kansas       | 2911641          | Midwest       | 9  
Nebraska     | 1896190          | Midwest       | 10  
South Dakota | 858469           | Midwest       | 11  
North Dakota | 756927           | Midwest       | 12  
New York     | 19795791         | Northeast     | 1  
Pennsylvania | 12802503         | Northeast     | 2  
New Jersey   | 8958013          | Northeast     | 3  
. . . .

Here we can see that Illinois is the number 1 ranking state by population in the Midwest region and New York is number 1 in the Northeast region.

So, we combined some conditions here, but what if we need more than one window function? Read on...

Named window functions

In queries where you are using the same window function logic for more than one returned field or where you need to use more than one window function definition, you can name them to make your query more readable.

Here's an example where we've defined two windows functions. One, named "rw", partitions by region and the other, named "dw", partitions by division. We're using each one twice - once to calculate the population sum and again to calculate the population average. Our windows functions are defined and named using the WINDOW clause which comes after the WHERE clause in our query:

SELECT name AS state_name,  
       popestimate2015 AS state_population,
       region,
       SUM(popestimate2015)
            OVER rw AS regional_population,
       AVG(popestimate2015)
            OVER rw AS avg_regional_state_population,
       division,
       SUM(popestimate2015)
            OVER dw AS divisional_population,
       AVG(popestimate2015)
            OVER dw AS avg_divisional_state_population
FROM population  
WHERE state > 0 -- only state-level rows  
WINDOW rw AS (PARTITION BY region),  
       dw AS (PARTITION BY division)
ORDER BY name  
;

Since we didn't do any manipulation on the averages values yet, the numbers look a little crazy, but that can be easily cleaned up using ROUND() and CAST() if need be. Our purpose here is to demonstrate how to use multiple window functions and the results you'll get. Check it out:

state_name           | state_population | region    | regional_population | avg_regional_state_population | division           | divisional_population | avg_divisional_state_population  
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Alabama              | 4858979          | South     | 121182847           | 7128402.764705882353          | East South Central | 18876703              | 4719175.750000000000  
Alaska               | 738432           | West      | 76044679            | 5849590.692307692308          | Pacific            | 52514181              | 10502836.200000000000  
Arizona              | 6828065          | West      | 76044679            | 5849590.692307692308          | Mountain           | 23530498              | 2941312.250000000000  
Arkansas             | 2978204          | South     | 121182847           | 7128402.764705882353          | West South Central | 39029380              | 9757345.000000000000  
California           | 39144818         | West      | 76044679            | 5849590.692307692308          | Pacific            | 52514181              | 10502836.200000000000  
Colorado             | 5456574          | West      | 76044679            | 5849590.692307692308          | Mountain           | 23530498              | 2941312.250000000000  
Connecticut          | 3590886          | Northeast | 56283891            | 6253765.666666666667          | New England        | 14727584              | 2454597.333333333333  
Delaware             | 945934           | South     | 121182847           | 7128402.764705882353          | South Atlantic     | 63276764              | 7030751.555555555556  
District of Columbia | 672228           | South     | 121182847           | 7128402.764705882353          | South Atlantic     | 63276764              | 7030751.555555555556  
Florida              | 20271272         | South     | 121182847           | 7128402.764705882353          | South Atlantic     | 63276764              | 7030751.555555555556  
. . . .

Now that's an informative report of population metrics... and window functions made it easy!

Wrapping up

This article has given you a glimpse of the power of PostgreSQL window functions. We touched on the benefits of using window functions, looked at how they are different (and similar) to standard aggregation functions, and learned how to use them with various conditional clauses, walking through examples along the way. Now that you can see how window functions work, start trying them out by replacing standard aggregations with window functions in your queries. Once you get the hang of them you'll be hooked.

In our next article we'll look at window framing options in PostgreSQL to give you even more control over how your window functions behave.

16 May 09:06

The Fort Mac Fire and Climate Change

by pricetags

Is it time yet?  Can we talk about this?

Others certainly are.  As in the International New York Times:

.

Fort Mac

Scientists have been warning for decades that climate change is a threat to the immense tracts of forest that ring the Northern Hemisphere, with rising temperatures, drying trees and earlier melting of snow contributing to a growing number of wildfires.

The near-destruction of a Canadian city last week by a fire that sent almost 90,000 people fleeing for their lives is grim proof that the threat to these vast stands of spruce and other resinous trees, collectively known as the boreal forest, is real. And scientists say a large-scale loss of the forest could have profound consequences for efforts to limit the damage from climate change.

TrudeauThe charge leveled against those who have made the connection – most notably the leader of the Green Party, Elizabeth May – is of insensitivity if not inaccuracy.  The suffering is too real to be politicized – which is what some of those who prefer the connection not be made at all are calling it: politicization.  Ideally, average Canadians will be persuaded that raising climate change in the context of those whose living depends on the oil sands is so inappropriate that it should not be discussed, ever.

Beyond that is an even tougher question: Should we as Canadians, whether through government funding or private investment, pour money into Fort McMurray to rebuild and enlarge the city so that we can double down on carbon extraction, even as the forests burn and threaten one of the world’s most valuable carbon sinks?

How can that be reconciled?

Or is it better just not to talk about it?


16 May 08:57

Chinese Social App Momo Tripled Revenue In 2015 Despite User Stagnation

by Tracey Xiang

China’s leading location-based social networking app, Momo, has pulled off a rare feat. The company tripled their annual revenue despite monthly active accounts and paying subscribers plunging in the second half of 2015.

Premium subscription revenues almost doubled, while mobile gaming sales grew 180% year-over-year. And mobile marketing rocketed.

It’s also the first time the company turned an annual profit from operations since it began generating revenue in the second half of 2013.

Source: Momo Inc.

Source: Momo Inc. (Click to Enlarge)

Momo blamed a decrease in smartphone sales for the active user stagnation, even as many Chinese social apps reported considerable user growth for last year; for instance, the popular messaging app WeChat saw 39% year-over-year growth in monthly active users in 2015.

Another explanation Momo gave was users hadn’t got used to some software updates released during the year. The immediate user feedback to Momo’s 6.0 version, a major update launched in the second quarter, failed to meet their expectations, said Momo CEO Jonathan Zhang, during their Q2 earnings call. Later in the year the company released two updates, which apparently failed to boost active user growth.

Source: Momo Inc.

Source: Momo Inc. (Click to Enlarge)

While the total number of paying subscribers didn’t change much during the year, the jump in revenue collected per subscription reflects the success of an additional type of premium subscription that was introduced in June 2015.

While the previous ‘VIP membership’ subscription costs 12 yuan, less than $2 USD per month, the new ‘Super VIP’ is priced much higher at 30 yuan ($4.60 USD).

This kind of membership hierarchy system, in which users spend time or money to upgrade to higher levels, has been widely adopted by Chinese social services to engage users and keep them spending. Tencent’s premium subscription system has built eight levels over the last decade or so.

Source: Momo Inc.

Source: Momo Inc. (Click to Enlarge)

Mobile advertising overtook membership subscription as the largest revenue stream for Momo in the fourth quarter of 2015. The annual advertising revenue surpassed that from gaming, which is the largest revenue source for many Chinese social services like Tencent. Advertising revenue as a percentage increased from 4% in the previous year to 29% in 2015.

Source: Momo Inc.

Source: Momo Inc. (Click to Enlarge)

In the second quarter 2015, Momo launched a self-service ad system for in-feed ads and would later enable real-time bidding. Previously their advertising revenue was driven by display ads and ‘Dao Dian Tong’, a service that allows local merchants to set up their business profile pages.

Before the self-service ad system took off, 58.com, the leading local services platform which is integrated into Momo, and Alibaba, one of Momo’s shareholders, had been important ad revenue contributors for the social networking company.

By 2015 there were 35 games on Momo platform, up from 12 in the previous year. The company has since begun developing games in-house, and launched their first title in February 2015.

The rest of the annual revenue was primarily derived from their live video streaming service, launched in the third quarter. Minor revenue sources include emoticon stickers, one of the company’s early monetization approaches, and the gift mall, launched in early 2015 for users to send physical gifts to other users or themselves.

Momo’s live video streaming business started with Momo Life, a live music concert streaming platform that hires pop singers to do online-only shows. The platform enables viewers to buy virtual gifts for singers, splitting the gains with the company.

Virtual gift-based live video streaming has been highly profitable in China. Momo would later open the platform to all users, inviting a stream of amateur performers. The company claimed that monthly active users reached 30 million in April 2016.

Established in 2011, Momo Inc. raised more than $200 million USD through an IPO on the NASDAQ in December 2014. But only half a year later the company announced the receipt of a non-bidding privatization bid led by Tang Yan, co-founder, chairman and CEO of the company and a group of Chinese venture capital firms.

Image credit: yqdown

13 May 21:29

The Falling Apple

13 May 21:29

francisalbertsinatra: Frank Sinatra returning from London with...



francisalbertsinatra:

Frank Sinatra returning from London with Dean Martin (in background), August 1961

13 May 21:27

Latest Update to ES File Explorer Adds Lockscreen Adware

by Rajesh Pandey
If you have been getting ads about installing DU Battery Booster on the lockscreen of your Android device recently, blame ES Explorer. With the latest update, the team behind ES File Explorer have bundled an adware with the app that shows ads of DU Battery Booster on the lockscreen.  Continue reading →
13 May 21:26

Google Posts OTA Update Download Links for Nexus Devices on Its Website

by Rajesh Pandey
Every time Google releases a new update for Android, it simultaneously also releases factory images for the new version on its website. The OTA update usually rolls out over the next few weeks, which is painstakingly slow and frustrating. Flashing the factory image is not always possible since it also wipes the phone clean of all the data. Continue reading →
13 May 13:39

How to use Apple Pay in Canada

by Ian Hardy

After first launching with support for American Express credit cards last November, Apple Pay will soon support the vast majority of Canadian-issued credit and debit cards.

Announced earlier today, Apple Pay can now be used by Canadians with credit cards from CIBC, RBC, ATB Financial, and Canadian Tire Financial Services. In addition, CIBC and RBC customers can also use Interac debit cards to make a purchase. TD Canada Trust, Bank of Montreal and Scotiabank debit and credit card holders will also be able to use the platform in a matter of weeks.

Apple Pay is Apple’s mobile payment solution. It works with the iPhone 6s, iPhone 6s Plus, iPhone 6, iPhone 6 Plus, iPhone SE and Apple Watch. Apple Pay will not work on the iPhone 5 or iPhone 5s because it lacks the necessary NFC chip (but will work if you connect your Apple Watch to it). In addition, iOS users can make in-app Apple Pay purchases with Touch ID-equipped iPad Air 2, iPad mini 3, iPad mini 4 and iPad Pro.

rbc

How to add a card to Apple Pay on the iPhone and Apple Watch:

Open the Wallet app, which used to be called Passbook with iOS 8, and this will launch Apple Pay. You’ll be prompted to add a valid credit or debit card and then asked to enter your Apple ID password.

Once you select the card of choice, you can either enter in manually or use the iPhone’s rear camera to capture the credentials. Users will have to verify the expiry date and the CVV number for security reasons.

Adding a card to Apple Pay on the Watch is a separate procedure to that of the iPhone. On the Apple Watch app within the iPhone, scroll down to Wallet & Apple Pay, then tap on “Add” where it shows the card.

How to make a payment using Apple Pay in-store?

Once the merchant has presented you with the total amount due, simply put your finger on Touch ID and hold your iPhone close to the terminal. The terminal might ask you to select either Credit or Debit but you could simply select a default card for all transactions. The phone will vibrate once the payment has gone through.

To make an Apple Pay payment from the Watch, unlock it with a passcode and double-tap on the bottom button to bring up the list of cards. Place the Watch close to the terminal and similar to the iPhone, the Watch will vibrate when the payment has been completed.

Related: Apple Pay now supports debit and credit cards from CIBC and RBC, support for remaining banks to come soon