Shared posts

17 Jan 19:38

Building Skills Of An Online Community Team

by Richard Millington

For everyone managing a community team…

To improve a community you can either improve the technology, processes, or the people. The first two get far more attention than the latter.

But if you improve the people…the technology and processes naturally improve too. It’s the best bang for your buck by far.

Set the expectation that each member of your team will acquire new skills. Detail what skills they will need. The Roundtable’s framework is a good place to start. Provide the time (and resources) to acquire new skills. Build a mutual understanding they will make mistakes along the way.

This last part is critical. Skills involve practice. Practice means mistakes.

Then put your framework together.

  • Engagement. Engagement skills begin with the ability to stimulate activity and effectively reply to questions. At the highest end, you want a recognized industry expert able to persuade a large following to take action which benefits both the brand and themselves. This requires more sector expertise, better relationship building skills, learning tools of persuasion, and developing systems for moderation/responding to questions with empathy.
  • Content. Content skills begin at creating content members may find useful or entertaining. Most community professionals can do this. At the higher end, you want a community manager who can increase conversation rates, search traffic, automation campaigns, write effective newsletters, and attract top industry experts to submit content on a regular basis. The ultimate goal is a self-sustaining system filled with high-quality content that achieves specific goals.
  • Technical. Technical skills begin with understanding how the platform works and diagnosing basic problems. At the higher end, you want a community manager to use data to optimize every part of the site, improve speed and functionality, and manage the entire vendor technology process. This means being able to select vendors, negotiate rates, improve design, manage implementation/maintenance etc…
  • Strategy. Strategy skills begin with pulling basic engagement data to decide what to work on. At the highest end, you want clear data-driven systems to allocate limited resources to achieve the highest possible ROI for the organization. This means the ability to set logical benchmarks, provide decision frameworks for the team, run multiple experiments simultaneously, building customized dashboards, and doing deep research into the audience’s unique needs.
  • Business. Community professionals probably struggle more with business skills than any other category. This begins with understanding how the community fits into the organization’s competing strategic objectives and communicating effectively (e.g. knowing who needs what information and when). At the higher end, you should be able to build a network of allies throughout the organization, attract and keep world-class talent on your team, and become a senior leader within the organization.

Don’t assume more experience leads to more skills. Performing the same, repetitive, role doesn’t do that. Instead, set clear quarterly targets for skills you want your team to acquire and check in each month to see how they’re getting on.

Once you create the right conditions, you might be amazed at how quickly your team improves.

17 Jan 19:38

A Unit of Comparison for Local Council Budget Consultations, Based on Transparency Spending Data – ASCdays?

by Tony Hirst

A few years ago, via the BBC Radio 4 & World Service programme More or Less (incidentally co-produced by the OU), I came across the notion of miciromorts (Contextualising the Chance of Something Happening – Micromorts), a one in a million chance of death that can be used as a unit of risk to compare various likelihoods of dying. Associated with this measure is David Spiegelhalter’s microlife, “30 minutes of your life expectancy”. The point behind the microlife measure is that it provides a way of comparing life threatening risks based on how much life is likely to be lost, on average, when exposed to such risks.

Life expectancy for a man aged 22 in the UK is currently about 79 years, which is an extra 57 years, or 20,800 days, or 500,000 hours, or 1 million half hours. So, a young man of 22 typically has 1,000,000 half-hours (57 years) ahead of him, the same as a 26 year-old woman. We define a microlife as the result of a chronic risk that reduces life, on average, by just one of the million half hours that they have left.

The idea of micromorts came to mind last night as I was reflecting on a public budget consultation held by the Isle of Wight Council yesterday (a day that also saw the Council’s Leader and Deputy Leader resign their positions). The Council needs to improve budgetary matters by £20 million over the next 3 years, starting with £7.5m in the next financial year. This can come through increasing funding, or cuts. By far the biggest chunk of expenditure by the council, as with all councils, is on adult social care (ASC) [community care statistics /via @jonpoole].

As with every year for the past however many years, I’ve had a vague resolution to do something with local council spending data, and never got very far. Early dabblings with the data that I’ve so far played with this year (and intend to continue…) reinforce the notion that ASC is expensive. Here’s a quick summary of the spending data items for October, 2016:

The spend for each of the directorates was as follows:

  • Adult Services:
    • total spend: £7,746,875.55 (48.33%% of total monthly spend)
    • capital: £395,900.06 (5.11% of directorate monthly spend)
    • revenue: £7,350,975.49 (94.89% of directorate monthly spend)
  • Chief Executive:
    • total spend: £501,021.32 (3.13%% of total monthly spend)
    • capital: £492,507.54 (98.30% of directorate monthly spend)
    • revenue: £8,513.78 (1.70% of directorate monthly spend)
  • Childrens Services:
    • total spend: £2,044,524.26 (12.76%% of total monthly spend)
    • capital: £243,675.08 (11.92% of directorate monthly spend)
    • revenue: £1,800,849.18 (88.08% of directorate monthly spend)
  • Place:
    • total spend: £4,924,117.40 (30.72%% of total monthly spend)
    • capital: £974,024.13 (19.78% of directorate monthly spend)
    • revenue: £3,950,093.27 (80.22% of directorate monthly spend)
  • Public Health:
    • total spend: £434,654.13 (2.71%% of total monthly spend)
    • revenue: £434,654.13 (100.00% of directorate monthly spend)
  • Regeneration:
    • total spend: £57.65 (0.00%% of total monthly spend)
    • revenue: £57.65 (100.00% of directorate monthly spend)
  • Resources:
    • total spend: £377,172.20 (2.35%% of total monthly spend)
    • capital: £20,367.87 (5.40% of directorate monthly spend)
    • revenue: £356,804.33 (94.60% of directorate monthly spend)

Cancelling out Adult Services revenue spend for a month would match the £7.5 million required to make up next year’s funds. That’s unlikely to happen, but it does perhaps hint at a possible unit of comparison when trying to make budget decisions, or at least, support budget consultations.

From my naive perspective, adult social care needs to support a certain number of people, a number that evolves (probably?) in line with demographics. One of the ways people exit care is by dying, though the service is set up to minimise harm and help prolong life. Folk may also be transiently cared for (that is, they enter the care system and then leave it). By looking at the amount spent on adult social care, we can come up with an average cost (mean, median?) per person per day of adult social care – ASCdays. We can reduce the total cost by reducing the amount of time folk spend in the system, either by shortening transient stays or postponing entry into the system.

So what I’ve started wondering is this: as one way of trying to make sense of transparency spending data, is there any use in casting it into equivalent units of ASCdays? If we use ASCday equivalent units, can we take a weak systems view and try to get a feel for whether a cut to a particular service (or improvement of another) can help us get a handle on the ASC expenditure – or whether it might cause problems down the line?

For example, suppose a week’s respite care costs the same as two weeks worth of ASCdays. If that week’s respite care keeps someone out of the adult care service for a month, we’re quids in. If cutting respite care saves 100 ASCdays of funding, but is likely to bring just one person into the care system 3 months early, we might start to doubt whether it will actually lead to any saving at all. (Longer tail saves complicate matters given councils need to balance a budget within a financial year. Spending money this year to save next year requires access to reserves – and confidence in your bet…)

For trying to make budget decisions, or helping engage citizens in budgetary consultations, costing things as per ASCday equivalents, and then trying to come up with some probabilities about the likelihood that a particular cut or expense will result in a certain number of people entering or leaving ASC sooner or later, may help you get a feel for the consequences for a particular action.

As to whether prior probabilities exist around whether cutting this service, or supporting that, are likely to impact on the adult care system, maybe data for that is out there, also?


17 Jan 19:37

2017 week 2 in review

by D'Arcy Norman

Work

The first week of the W2017 semester went off without any major crises. MUCH smoother than the F2016 semester start (which is fair, since that was the first full-scale semester we’ve hosted in the TI). I’m constantly amazed at the diversity of courses (and instructors and students) who are working in the TI – every course is different, from almost every faculty on campus. Every class session is different – with instructors and students moving furniture into different layouts regularly, and using the tech in new ways.

This first week of the semester was still pretty hectic, but is starting to calm down already.

PhD

Jennifer Payne gave a pre-defence talk about tangible artifacts for visualizing data – exploring how making or interacting with physical representations may be different than just barfing out a pivot chart in Excel. Interesting stuff.

I had my first class for the human-robot-interaction course. Looks like I’ll be working on some insanely interesting and challenging stuff this semester. Love it!

Read

Other

We had an absolutely perfect day at Nakiska – great snow, nice and cold, sunny. I worked on a few things, and felt much stronger and fluid as a result. Still not fast (at. all.) but moving better.

Sunshine Village upgraded one of their webcams to a new HD camera, and the feed is amazing. I decided to try making a timelapse. It plays perfectly on my computer, but YouTube appears to have done something funky to it. This was the fourth time trying to upload it, and each time something different went janky. Anyways. I’ve lived next to the Rockies my entire life, and have never stopped being in utter awe of them.

  1. note: the author names are taken directly from the RSS feeds. In a few cases, I hand-repair them because “Anonymous” and “admin” are not useful author names. Fix your feeds, people.
17 Jan 19:37

Looking for commonality among HTTP request APIs

by Brett Cannon

It all started when ...

While developing the CLA bot for Python I realized this might not be the last bot I or anyone else may have to write for helping with CPython's development once it shifts to GitHub. As such, I began to think about what my ideal GitHub library would look like.

Now you might be thinking that there has to be a library that provides some idiomatic access to GitHub's API and you would be right. If you look at GitHub's list of libraries, you will see there are 10 libraries listed for Python alone. But for me they all have one fatal flaw: none of them are asynchronous and thus none of them support async code. And so with that, I started to think about how I would design a GitHub library in an asynchronous Python world.

While I thought about this problem I was quickly reminded of how Python moving to an asynchronous world means old assumptions stop working. In this instance, it's assuming I can make HTTP requests occur implicitly behind the scenes in third-party library code. See, in a synchronous world I could develop a library that uses e.g. requests and any users of my library wouldn't really care what HTTP library I used. In a synchronous world, an HTTP request is just another blocking network call, which means what HTTP library I use doesn't impact what HTTP library you use (yes, you can do fancier things like connection pooling that is specific to an HTTP library, but I'm ignoring advanced features for this comparison).

But in an asynchronous world, you suddenly have a framework driving your HTTP requests for your entire application, e.g. aiohttp and its event loop. You can't then use just any old HTTP library behind the scenes for your library; the library author might choose aiohttp but you choose curio for your application code, which means you would need to have two separate frameworks driving asynchronous scheduling and that can get messy. What you end up wanting is uniformity in what your async functions await on so you have a single framework managing everything cleanly and efficiently.

This all means that if you're trying to develop a library that needs to make HTTP requests in an asynchronous world, you suddenly start to care a great deal about having defined APIs that everyone follows (this is also why in an asynchronous world you really care about people handling network protocols sans I/O so you don't force people to choose a specific async framework to support a protocol). Since there aren't tons of HTTP libraries in the async side of the Python world yet, there's a chance to try and standardize on the API now before there are too many libraries out there with slight differences between their APIs. This led me to look at some HTTP libraries in the Python community to see if some common API already exists that I wasn't aware of. A side benefit of looking into this is the search could potentially help curio out with an API design for any HTTP support they may end up providing in the future.

How I performed my search

I started my search by looking for the major HTTP request libraries out there for Python:

In the end I came up with a list of urllib3, requests, Twisted, Tornado, and aiohttp (the last one being the only library created in an async world). The key point is that this group of libraries should represent enough of the Python community's take on HTTP libraries to see if there are any commonalities among them.

I should mention that this blog post should never be viewed as negative towards any library. The work put into these libraries should always be appreciated even if they don't fit the needs of what this blog post is talking about. So thank you to everyone who has contributed to the libraries I'm analyzing; your work is appreciated. I'm also sure I've made some assumption incorrectly and that there is something that could stand to be changed, so don't assume I'm an expert at the intricacies of HTTP, cover every possible detail, or that I'm even right the majority of the time. This entire post is me just trying to answer the question of "is there commonality among the APIs of some HTTP libraries?" for myself.

Looking for commonalities

When designing an API in Python, there are three things you have to consider: input, output, and exceptions. "Inputs" are the parameters and their expected interfaces/types that people will be using to call into your library call. "Outputs" is what your library will give back for those "inputs". And "exceptions" are what you have to possibly catch and handle if something goes wrong (and when you're dealing with networking, errors are always possible). In all of these cases you're primarily dealing with naming and expected object interfaces/types (it can obviously get more complicated than this, but an HTTP request is already defined somewhat so there's a basic understanding of what an API serving a common REST requests would need to look like).

In the end I went through all of the libraries I listed and read their documentation for their latest release. I then filled in a multi-sheet spreadsheet with all the information I could for their APIs regarding making a request, what a response looks like, and what exceptions they may raise (I'm very lucky that I only have to care about what amounts to a single function call and what it returns or raises).

Input

An HTTP request is a simple concept broken up into three parts. The first part is the request line which specifies the HTTP verb/method you're using (e.g. POST), the URL you are requesting, and the version of HTTP you are making the request with (the last of which is more of an implementation detail for the HTTP library and not really your concern as a user of the library). After the request line is the header which contains multiple fields ranging from Content-Type to custom header fields. And finally there's the body of the request when there's some form of payload, like when you provide JSON in the body of a POST. So to recap, I have the HTTP verb/method, URL, header fields, and the body payload to consider.

Looking at all the libraries they do agree on a couple of things when it comes to the fundamentals of a request call. First of all, they all call the parameter for the HTTP verb method and take a str for it. Second, they take a str for the URL and call that parameter url and have it as the second parameter. Third, they all have a parameter named headers for header fields.

And that's where the similarities stop. Take the header parameter, for instance: requests has it as a keyword-only argument, Tornado has it as its third positional parameter, and the rest have it as the fourth positional parameter. The name of the parameter to take the body isn't consistent but everyone accepts bytes for it. There's also no agreement on the default value.

There's also extra features an HTTP library can support. A good example of this is whether redirection is automatically followed. Another is supporting a timeout. This means the request call doesn't stop at just what is in the HTTP request directly. But there's also inconsistency here from no parameters having the same name or position.

And then there's also the synchronous/asynchronous aspect since aiohttp uses an async with and no one else does.

In the end, here's what all of the libraries agree on:

from typing import Dict

def request(method: str, url: str, *, headers: Dict[str, str] = ..., some_name_for_body: bytes = None):  
    ...

Output

Basically the only thing the libraries agree on in their return value from the request call is that you get back an object. That's it. Types don't match, attribute names don't match; nothing matches on a technical level.

Semantically at least there is some agreement. You do get back the status code of the HTTP response. All libraries also return the reason for the code, but HTTP/2 drops support for that, so it's not really necessary. They all return the header fields in the response, but everyone uses their own custom class to deal with case-insensitivity and potentially repeated fields. Finally, there's a way to get the body of the response.

All of this means I can update the common API to:

from typing import Dict

def request(method: str, url: str, *, headers: Dict[str, str] = ..., some_name_for_body: bytes = None) -> object:  
    ...

Exceptions

Unfortunately exceptions aren't much better than the response object. All libraries agree there should be a base exception for all HTTP-related errors, but that's where it stops; the name for the exception and what should be exposed on it varies (e.g. most include the status code, but requests instead attaches the request and/or response objects that triggered the exception).

Three of them have an exception for socket-related errors and if the connection times out, and then it varies between two libraries for having another timeout exception, malformed URLs, invalid headers, or proxy errors. All other errors are unique to the library and they can be very specific. So in the end there's no exception consistency.

Manufacturing commonality

Okay, so there's not much commonality at the API level. But since the semantics are obviously similar since they are all essentially implementing the same thing, it would seem possible to come up with an API that makes sense overall that can then wrap the APIs of the libraries so they expose a uniform API for users who need it (or what would make sense if one were to design an HTTP library from scratch today).

Input

The first question is should the API be a context manager or a function? Since both requests and aiohttp have context managers for better connection management, I'm going to go with that as the best approach. Having said that, to keep the example simple, I'm going to simply define a request() function, but you can assume it's for an __init__() function for an asynchronous context manager and you will use it as:

async with request(...) as response:  
    ...

So, what can I start from based on the analysis above (with the starting assumption that I am using an async function)?

async def request(method: str, url: str) -> Response:  
    ...

That's enough to basically make an extremely simple GET request, but not much else (just assume Response will be defined later). First thing to support are header fields. All implementations agree on headers as the field name, but there's disagreement on the argument order. To follow the structure of an HTTP request I will make headers the next argument.

from typing import Dict

async def request(method: str, url: str, headers: Dict[str, str] = {}) -> Response:  
    ...

The default value could be None, but since an empty dictionary doesn't change the meaning I don't see a need for using None. Using an empty dictionary also keeps the library code simple as it means it doesn't have to do a if headers check to cover the None case.

If one were to normalize cleanly across libraries then there would need to be a decision about inserting header values which can be inferred, e.g. content-length. My suspicion is that all the libraries do this for certain fields, I'm just not sure which ones (e.g. do they all automatically insert user-agent if it's left out?).

There's also the question of what to do about keys where only the case matters? Technically HTTP allows for multiple headers with the same field name and so really there should probably be a warning if any of the keys vary by case alone.

With the HTTP verb/method, URL, and headers taken care of, that leaves the body of the request left to specify. Since all the HTTP libraries accept bytes the only decision is position and name. As I already put in the headers argument that implicitly solves the order problem. But what about the name? The libraries use body, data, and postdata. The HTTP specification uses body. I personally also like body, but to check myself I asked on Twitter what people preferred:

So with my hunch (narrowly) validated, I end up with:

from typing import Dict

async def request(method: str, url: str, headers: Dict[str, str] = {}, body: bytes = b'') -> Response:  
    ...

Much like with headers, I'm using the false-y value of the bytes type rather than None to keep the library code simple and not have to special case for None itself. The suggestion was made that if a data parameter existed it could encode its value based on what content-type was set to, but I don't want to go down the road of registering encoders to manage possible MIME types.

That covers what goes into an HTTP request, but there's always extra features around the request. Unfortunately none of the libraries agree on implementing a single extra feature. That means for instance that implementing a timeout isn't feasible if you were to wrap all of these libraries without having a special-case failure if a user asked for a timeout and it simply wasn't possible with the library they chose.

But one extra that can be added on to a library is automatic request forwarding. This can be normalized as any wrapper code could easily capture the 3xx response and then make another request based on the forwarding. This does get a little complicated in terms of semantics if you make a POST request but receive a 303 redirection which forces a GET request, but in such instances an exception would just need to be raised.

Assuming those semantics issues could be decided upon, there is once again a name disagreement among the libraries. The options are allow_redirects, follow_redirects, redirect, and followRedirect. Ignoring the last one for not following PEP 8 style (which I always try to follow in new projects), I asked on Twitter what people preferred with my preference being follow_redirects:

Obviously a very clear winner. There was also an interesting point made on Twitter that allow_redirects can be taken to mean that if a redirect is found an exception would be raised, otherwise the redirect wouldn't be followed but simply returned as the response (ironically Tornado uses follow_redirects as the parameter name but uses these semantics of raising an exception if set to False). I can see where they might reach that interpretation, so that solidifies for me the choice of follow_redirects.

from typing import Dict

async def request(method: str, url: str, headers: Dict[str, str] = {}, body: bytes = b'', *, follow_redirects = True) -> Response:  
    ...

The parameter is keyword-only thanks to the fact that it's a boolean argument which makes passing it in as a positional argument lose any context of what the heck the value is meant to represent when a literal is used. Luckily all the other arguments to this function have easily inferred meaning if passed in through literals.

I also made the default parameter True since four of the five libraries that support redirection default to True.

And since timeout support is covered by everyone, I will put that in as well with 0 as the default to represent no timeout and keyword-only since a literal argument does not provide enough context:

from typing import Dict, Optional

async def request(method: str, url: str, headers: Dict[str, str] = {}, body: bytes = b'', *, follow_redirects = True, timeout: float = 0) -> Response:  
    ...

And that's it! The input aspect of the API does not support every possible option that all the libraries have, but it's enough for the most common use-cases.

Output

Now that I can make a request I need to be be able to read the response. As mentioned above, there's is unfortunately no agreement among the libraries on what the returned object from our function should look like. That means I am not starting from much:

class Response:  
    pass

Much like our request function, I will start from what HTTP responses contain and just work my way forward. That means the status code of the HTTP response is the first thing to worry about. Everyone agrees it should be an int, but what to name the attribute in the response? There's status, code, and status_code in use (the HTTP specification calls it a "status code"). My preference is with status_code. Will Twitter agree?

My streak of Twitter agreeing with me and the HTTP spec continues! That gives me something to start with (and thanks to Python 3.6 and its support for variable annotations I can type the class and its instances!):

class Response:

    status_code: int

Now all of the HTTP libraries provide access to the reason phrase in the response and three out of the five provide the HTTP version used in the response. But since HTTP/2 drops both the reason phrase and version info, I'm going to drop them as well.

Next up is headers. This is a little tricky thanks to how HTTP headers can be repeated. This has led to various custom mappings used by libraries: urllib3 has a custom class, requests returns a case-insensitive dictionary, Twisted has its own case-insensitive multi-dict as does Tornado which uses HTTP-based capitalization, and aiohttp broke out their case-insensitive multi-dict out into a separate project. That means consistency will either require using a proxy like multidict.CIMultiDictProxy, copying the headers over to a new case-insensitive multi-dict instance, lowercasing all names and only keeping the last value, not changing the keys at all and still only keeping the last value, or doing any of the last two and always using a list as the value to hold multiple values. Probably the case-insensitive multi-dict is the safest bet.

Regardless of the chosen solution, the type for the headers attribute should be a mapping:

from typing import Mapping

class Response:

    status_code: int
    headers: Mapping[str, str]

A near consistency is that all but one of the libraries records what URL was requested that led to the response. Names vary between geturl(), url, url_obj, and effective_url. I like url, but since redirects can lead to a different URL than what you started with I can see the appeal of effective_url. Twitter's opinion?

Now an interesting suggestion that was made as part of this poll was making the attribute be a sequence of URLs, recording any/all redirections taken to reach the final URL. The only issue with that is it would require any wrapper to handle redirection itself in order to record the intermediary URLs, but since that might be needed anyway then you might as well get the benefit of recording the redirection sequence.

from typing import Mapping, Sequence

class Response:

    status_code: int
    headers: Mapping[str, str]
    urls: Sequence[str]

This gets me to the final bit: how to get the body from the response. Once again this varied by name between the libraries: read(), content, deliverBody(), and buffer. Since this is for asynchronous code that removes the desire for an attribute (you could always return an awaitable from an attribute, but that would be weird). Sticking with the name body just like the matching parameter to the request function makes sense to me. What say you, Twitter?

So that's interesting as that doesn't align with any of the HTTP libraries. Sticking with what I like, the response object in the end becomes:

import abc  
from typing import Mapping, Sequence

class Response(abc.ABC):

    """The response to an HTTP request."""

    status_code: int
    headers: Mapping[str, str]
    urls: Sequence[str]  # `url: str` for simpler solution.

    @abc.abstractmethod
    await body() -> bytes:
        """Read the body of the response."""

Exceptions

Trying to normalize what exceptions are raised is almost a lost cause. Every HTTP library has a base exception that's typically named HTTPError (probably because that's the name for urllib.errors.HTTPError), but otherwise there's very little agreement. Three of them have an exception for connection issues (think more along the lines of socket trouble), and those same three have an exception for timeouts. After that everyone has very unique exceptions; one has an exception for proxy scheme errors, another worries about websockets, and yet another has one for HTTP/2 special headers. What is one to do?

What I would probably do is define a base exception that all other exceptions in the library inherit from. I would then have an exception for connection problems and timeouts. The real question becomes whether 4xx and 5xx responses warrant an exception or not. If they don't then that's simple as you simply don't worry about them. If they do, though, then they should probably have the response as an attribute and that's it as the response did return successfully from an HTTP perspective.

Regardless of how the exception situation is handled, you can always raise the base exception with a cause, e.g. Exception from exc. That way the library-specific exception can still be caught in an agnostic fashion without losing any detail if one chose to consider the details of the original exception.

Is this even the right abstraction level?

But maybe I don't have to worry about any of the open questions I have because this is all at the wrong abstraction level? Would it be better to do this at the socket level? Both asyncio and curio emulate low-level socket calls, so could you then use h11 and/or hyper-h2 to build an HTTP library at that level and not have to wrap HTTP libraries themselves and instead abstract out the socket calls? Based on things like Nathaniel Smith's comparison of curio and asyncio, I think the answer is probably "no".

17 Jan 19:37

Draw the patterns of Obama’s presidency

by Nathan Yau

A couple of years back The New York Times asked readers to draw on a blank plot the relationship between income and college attendance. It was a way to get you to think about your own preconceptions and compare them against reality. The Times recently applied the same mechanic to the changes during Barack Obama’s presidency.

Bonus: Here’s how to make your own you-draw-it graph.

Tags: drawing, game, New York Times, quiz

17 Jan 19:37

Photo



17 Jan 19:37

"Another friend texted me this morning to tell me she planned to learn how to farm."

“Another friend texted me this morning to tell me she planned to learn how to farm.”

-

Warren Ellis, 45th And Final – MORNING, COMPUTER

How people are reacting to the postnormal world.

17 Jan 19:37

ithelpstodream: Here’s a MLK quote I’d love to see white people...



ithelpstodream:

Here’s a MLK quote I’d love to see white people share.

17 Jan 19:37

The 15 Warnings Signs of Impending Tyranny

robertreich:

As tyrants take control of democracies, they typically:

1.  Exaggerate their mandate to govern – claiming, for example, that they won an election by a landslide even after losing the popular vote.

2.  Repeatedly claim massive voter fraud in the absence of any evidence, in order to restrict voting in subsequent elections.

3.  Call anyone who opposes them “enemies.”

4.  Turn the public against journalists or media outlets that criticize them, calling them “deceitful” and “scum.” 

5.  Hold few if any press conferences, preferring to communicate with the public directly through mass rallies and unfiltered statements

6.  Tell the public big lies, causing them to doubt the truth and to believe fictions that support the tyrants’ goals.

7.  Blame economic stresses on immigrants or racial or religious minorities, and foment public bias and even violence against them.

8.  Attribute acts of domestic violence to “enemies within,” and use such events as excuses to beef up internal security and limit civil liberties.

9.  Threaten mass deportations, registries of religious minorities, and the banning of refugees.

10. Seek to eliminate or reduce the influence of competing centers of power, such as labor unions and opposition parties.

11. Appoint family members to high positions of authority

12. Surround themselves with their own personal security force rather than a security detail accountable to the public.

13. Put generals into top civilian posts                

14. Make personal alliances with foreign dictators.

15. Draw no distinction between personal property and public property, profiteering from their public office.

Consider yourself warned.

And they change the national anthem.

17 Jan 19:37

CanCon Podcast Ep. 50: Microsoft buys Canadian AI

by MobileSyrup

This week, as it reaches an arbitrary milestone, the CanCon podcast turns towards the next technology frontier, Artificial Intelligence.

In an article published this past week, Canadian AI leaders Jordan Jacobs, Tomi Poutanen, Richard Zemel, Geoffrey Hinton and Ed Clark argue that Canada should be investing in a modern state of the art facility to advance AI research within the country. The article was released only a few days before the CBC published a poll indicating where Canadians want to see their tax dollars spent. Is an AI supercluster on the bill for Canada, and what exactly are the repurcussions?

In a world where connectivity is everything, France has passed a new law mandating that employees have the right to disconnect from their emails outside of working hours The law is being left up to the interpretation of individual companies, which has the CanCon team wondering if something similar cold fly in Canada.

Tune in as CanCon’s podcast crew – Erin Bury, Managing Director of 88 Creative, Patrick O’Rourke, MobileSyrup Senior Editor, Rob Kenedi – TWG’s Entrepreneur in Residence and host of the amazing #smallrooms podcast, and Douglas Soltys, BetaKit Editor in Chief – weigh the pros and cons of our future robot overlords and try to figure out if anyone outside of the Canadian tech bubble gives a what about the ‘new economy’.

Have some hot takes on the topics that were covered? Maybe you want to suggest something for a future podcast! Perhaps you have a burning question about something you read in tech news that we didn’t cover. Email us, post a comment below with the answer or question, or better yet, rate CanCon 5-stars on iTunes and post your thoughts there.

Subscribe via: RSS, iTunes, Stitcher, Google Play

CanCon Podcast Episode 50 (01/13/17)

AI is the (terrifying) future
AI is the future and Canada must seize it
Microsoft acquires Montreal based AI startup Maluuba

You’ve got to fight for the right
France’s ‘right to disconnect’ is a nice idea, but it’s also pretty vague

On a budget
Poll suggests Canadians favour spending tax dollars on traditional rather than high-tech infrastructure

Canadian Content music clip (under fair dealing): “A conversation between two robots” by The Superfantastics

17 Jan 19:37

All I Know Is What’s on the Internet

by Rolin Moe

Fake news elected Donald Trump. At least, judging by media attention — social or otherwise — one might come to that conclusion. Something must be responsible for a result that defied polls and many Americans’ sense of propriety, and fake news has proved a useful scapegoat: It can be quickly identified, it is easy to loathe, and it is often readily debunked — never mind that fake news is neither new (forgery, quackery, and conspiracy theorizing are not recent inventions) nor exclusively right-leaning. The new form it has taken in readily sharable social media, however, has made it easy for conventional media to excuse themselves from responsibility for how the election was covered. They have made a fake-news story of sorts out of fake news’s rise, creating a climate of emotionally satisfying skepticism out of innuendo and invented causality. Meanwhile, the problem of how to verify knowledge festers: Attention is fixed on the spectacle of pizzagate, while the Wall Street Journal equates fact-checking Trump to a subjective application of morality, refusing to label his lies as such.

Though they may profit from a culture of obfuscation, fake-headline writers did not build it alone. They are not solely responsible for exalting the solutionistic promises of Silicon Valley, where a program or a platform is the remedy for those left behind. They are not the custodians of our increasing cultural ahistoricism, where history is seen as made by intrepid individuals and not a multi-layered process of past events and present obstacles. If we can blame fake-news makers for the Trump presidency and other social ills, then we can continue to deny this wider complicity in developing a society that promises knowledge as power, but primarily treats information as an economic resource. Fake news is just squatting in one part of one building in an entire landscape of neglect and corruption; evicting them will make no difference to the blight.

Fake news is squatting in one building in an entire landscape of neglect and corruption; evicting them will make no difference to the blight

Fake news is a convenient framing that sets the stage for feel-good, ultimately escapist solutions. One such solution is “information literacy,” which is being proposed by many educators as the antidote to fake news. For proponents, the case for information literacy seems straightforward: Since fake news is a many-headed Hydra that ultimately can’t be defeated on the supply side, we must teach consumers how to properly engage with information and evaluate it rigorously, differentiating between proper and discreditable use. The U.S. education system, they argue, has been too focused on teaching to tests and has failed to adapt to a new world that requires new evaluative competencies. People believe lies not because they are more ideologically satisfying than facts but simply because they can’t differentiate false from true in the tempest of information overload. Pepper this kind of conversation with phrases like “critical thinking and “21st-century skills,” or even give it a rebranding as “digital literacy,” and the problem feels solved. We can resume our everyday life and continue to ignore the other ways the public sphere is being dismantled.

Just as fake news is not new, neither is information literacy. A 1989 report from the Association of College and Research Libraries’ Presidential Committee on Information Literacy sounds much like what today’s advocates espouse: It describes information literacy as “a survival skill in the Information Age. Instead of drowning in the abundance of information that floods their lives, information literate people know how to find, evaluate, and use information effectively to solve a particular problem or make a decision — whether the information they select comes from a computer, a book, a government agency, a film, or any number of other possible resources.”

That report was itself a response to a paper from the 1974 National Commission on Libraries and Information Science, which called for the nation to achieve information literacy by 1984. Going further back, Bill Johnson and Sheila Webber link information literacy to Vannevar Bush’s World War II–era treatise on information, science, and warfare, “As We May Think.” The only change to information literacy over the past 70 years is the specter it is invoked to defeat: It is no longer the military-industrial complex, the cost of mainframe production, or the rise of Wikipedia that threaten the stability and certification of social information. Today’s barbarian at the gate is a much more evocative villain, because it is our own reflection.

Information literacy presumes a set of unbiased institutions and incorruptible instructors are waiting in the wings to begin inculcating the masses with the proper truth procedures. As much as the advocates of information literacy at libraries and universities hope to be arbiters of truth and facilitators of knowledge, with a unimpeachable mission of social justice guiding their practices, their micro actions over the past few centuries have too often been tangential rather than negotiated with or in resistance to the dominant hierarchy. The result is a system that, by and large, reconciles pupils to the existing order, first in deference to an aristocracy of power and now to the sovereignty of the market.


Critical thinking is at the foundation of information literacy, but those selling it are not necessarily in a position to actually supply it. They may be hampered by an inability to think critically about their own practices and proposals.

Prior to social revolutions of the 18th and 19th centuries, purveyors of false truth were rebutted by distributed networks of widely accepted arbiters of knowledge. Colleges and universities were one part of the localized networks; there were also galleries for art, learned societies such as the Royal Society in London for natural and political history, science societies like the Academy of Sciences in Paris for zoological and biological study, and libraries for textual information. These societies and their associated spaces existed in towns and cities of all sizes, mainly in Europe but also early America, and membership was limited, often by invitation. The identification and maintenance of scholastically and culturally significant artifacts was in the hands of historical power.

The opportunity for representative democracy in the development of knowledge dawned in the late 19th and early 20th centuries, spurred by social innovation and local efforts to change historical definitions of citizenry. Museums, zoos, and many societies opened their doors and collections to the public. At the same time, philanthropists such as Andrew Carnegie helped create over 2,000 libraries in towns and localities throughout the world. Here was an effort — as Tony Bennett, a professor of cultural studies at Western Sydney University, argues, to forestall civil unrest through promoting the diffusion of knowledge.

But the public was expected to consume the artifacts on display, not participate in their assessment or curation. Nor were they taught the criteria that established importance or brought into a democratic process for determining them. By and large the institutions remained fundamentally elitist, and the capacity to validate social knowledge continued through the hands of the established order. Museums and the like, to paraphrase Theodor Adorno, became mausoleums open for general admission. Open access to these institutions served merely to coordinate mass consumption of already certified objects, presented in what Oliver Gaycken calls a “decontextualized curiosity,” where learners are treated as users meant to view information items from an established list without understanding why or how any of it relates to the projects of building knowledge in a given discipline.

“Content” is not simply access to the world’s information banks, but a standardized experience that makes any candidate more easily assessed against any other

A disparity existed between open access to education and pre-determined engagement with the historical arbiters of knowledge. As more people were granted the rights of citizens, enrollment surged in compulsory and higher education. Despite increased access to these spaces, the opportunity for collaboration in real knowledge creation remained a professorial pursuit, with doctoral student assistance. Community and undergraduate enrollment remained a space of indoctrinating information transfer. The rise in graduate-level enrollments was not a matter of more students becoming involved in original research or the dispensation of expert knowledge; it came largely from the development of career-based professional programs. The average student’s exposure to education remained the consumption of pre-produced content, often created at scale by third-party businesses in the form of textbooks and curricula.

The content-consumption model used in schools perpetuates the same model that the mass media has used, providing decontextualized information as edutainment. News organizations advertised presidential debates as though they were pro-wrestling bouts and offered more than a year of up-to-the-minute calculations of winning odds, as if the election were a sporting event. These same reputable news companies offered paid content within traditional news sections, and used click or viewership data to set coverage quotas.

In “The Work of Art in the Age of Mechanical Reproduction,” Walter Benjamin argues that the emerging mass media of his era, unlike the singular aura-laden artifacts of an early era, were imposing a “graduated and hierarchized mediation” on audiences who consume them simultaneously. These audiences did not have a unique and original response to the works, nor did their views aggregate into the creation of a new, shared general meaning. Instead consumers experienced their response as individualized, even as it was harmonized with the rest of the mass having the same experience.

So unlike with painting, which, before mass reproduction and distribution technology, “always had an excellent chance to be viewed by one person or by a few,” modern media convene individuals as masses. At the cinema, Benjamin argued, “individual reactions are predetermined by the mass audience response they are about to produce.” A collective response is shaped, a norm is established, but the members who have been normalized don’t feel as though they contributed to a community that produced the norm. Instead, they feel they had a purely individual response that just happens to coordinate with everyone else’s. And that response is governed by the industry that made the work that could be consumed at such a scale.

The information shared by educational institutions and libraries works similarly: it has been oriented to a mass. Whether bound or stored in an online archive, it is sorted, labeled, and mobilized as content, which requires “hierarchization.” “Content” today is not simply access to the information banks of the world, but a thoroughly designed experience meant to guide the end user to a specific understanding, which can then be measured against the demands of employers for specifically skilled applicants. A standardized experience makes any candidate more easily assessed against any other.

So rather than develop localized standards, with librarians and instructors working in collaboration with those seeking information, developing together shared social standards for knowledge in their community, colleges and libraries have ceded control to content publishers, who impose their hierarchical understanding of information on passive consumers, leaving institutions to only exhibit and protect the information. In this, they have excelled: Access to the world’s most prestigious research journals is a website away, although that website is behind both a tuition and a journal subscription firewall. The best teachers in the world offer the best courses in the world for free through networks of classes aimed at democratizing education, as long as the students are essentially autodidacts. Although shrewd advertising promotes the college experience as personalized and connective, schools and libraries have joined the historical arbiters of culture as mausoleums.


For the past 40 years, society has demanded information literacy of students, but effectively extolled the virtues of citizens as mass content consumers. Schools and libraries are not conduits of a knowledge society, but appendages of a knowledge economy. Instead of teaching students critical thinking, they have stoked decontextualized curiosity. Rather than develop students’ wisdom and character, they have focused on making their students’ market value measurable through standardized testing.

Universities and the mass media are both beholden to profit-driven business models, leaving well-intentioned information-literacy advocates nowhere to turn. To remake education into a space of social justice rather than course-by-course “all you can consume” content buffets, faculty and staff would need to acknowledge and address these structural issues. Instead, educators doubled down on control, promulgating top-down information-literacy rubrics.

Schools and libraries are appendages of a knowledge economy. Instead of teaching students critical thinking, they’ve stoked decontextualized curiosity

The word rubric, fittingly, comes from medieval church doctrine regarding expected rules for group worship. Information-literacy rubrics are equally indoctrinating. One popular information-literacy rubric is RADCAB (relevancy, appropriateness, detail, currency, authority, and bias), which was designed for K-12 students and comes complete with a children’s book: Little RADCABing Hood: A Cautionary Tale for Young Researchers. Another is CRAAP (currency, relevance, authority, accuracy, and purpose), designed for higher education students. Other rubrics exist too, but they all draw on the same criteria of authorial authority, topicality, and proximity to recent events. By these standards, primary-source news organizations are considered valid and reliable; government agencies and holders of public office, more so.

For information literacy to have any relevance, schools and libraries must assume that primary sources and government agencies act in good faith. But the social media prowess of a Donald Trump scuttles CRAAP logic. Not only does Trump disregard information literacy protocols in his own information diet — he famously declared during the campaign, “All I know is what’s on the internet” — but he operates with an entirely different paradigm for making public statements. He speaks as a celebrity, confident in the value of his brand, rather than as a politician or technocrat, making recourse to facts, tactical compromises, or polls.

There is no reason to think that the Trump administration will be a “valid” source in the sense of making truthful, accurate statements. Instead, Trump has backed into Karl Rove’s famous idea of the reality-based community: “We’re an empire now, and when we act, we create our own reality. And while you’re studying that reality — judiciously, as you will — we’ll act again.”

Trump-based reality is now spreading into other government agencies. In late 2016, the House Committee on Science, Space, and Technology used its .gov homepage to question causes of climate change, while the Wisconsin State Department of Natural Resources recently changed reports to claim the subject is a matter of scientific debate.

Benjamin ends “The Work of Art in the Age of Mechanical Reproduction” by arguing that “fascism attempts to organize the newly created proletarian masses without affecting the property structure which the masses strive to eliminate. Fascism sees its salvation in giving these masses not their right, but instead a chance to express themselves.” This recasts social media in a more sinister light. Fascism is on the rise not because students can’t tell fake news from the slanted news promulgated by hegemonic interests. Rather, fascism is resurgent because freedom of expression has turned out to have little to do with what we can create and much more to do with how much we can consume.

The promise of social justice and upward mobility through education has largely gone unkept, and many citizens who believed in democratic progress have turned to different promises. Information literacy fails not only because it serves a broken system, but because it is affectively beside the point. Its cerebral pleasure pales in comparison with fascism’s more direct, emotive appeals.

Information today is content, a consumable whose truth value is measured in page views. To combat this, the validation of knowledge must be localized, shared in communities between engaged citizens. Information-literacy rubrics implemented by individuals are insufficient. We must value expertise, but experts must also commit to forging community through shared development. The one-way diffusion of knowledge must be upended.

Information literacy is less a solution than an alibi for the problems ailing education. “Solving” fake news will only compound the real problem. Without substantial work to subvert the traditional and promote the outside, the feel-good efforts of information literacy will not serve America’s promised rebound. Instead they will signify democracy’s dead-cat bounce.

17 Jan 19:37

Today is the last day to download existing Vines

by Igor Bonifacic

The day has finally arrived: Twitter is shuttering Vine today.

Going forward, Vine will live on as a pared down camera app called Vine Camera, capable of only capturing six-second video clips and sharing them to Twitter. If you have any Vines you would like to save, today, January 17th, is the final day to download them before the service turns into a husk of its former self.

To do so, launch Vine and go to your profile page. Beneath your avatar, you will find a ‘Save Videos’ button. Tap on it and then decide if you would like to save the videos to your smartphone’s camera roll or if you would instead like to get them via a download link. Choosing the second option also saves any likes and re-vines you may have accrued during your Vine career.

Twitter announced on October 27th it planned to shut down Vine. Back in 2012, the company reportedly paid $30 million to acquire Vine.

Via: Engadget

17 Jan 19:36

Firefox for iOS Users Can Now Choose Their Favorite Email Apps

by Nick Nguyen

For most of us email is a big part of our online lives. Today we’re excited to share that we’ve made updates to the email experience in Firefox for iOS, making it possible to choose your favorite email app when sending emails from pages browsed with Firefox.

We identified some of the mail applications preferred by Firefox users around the world and included those email apps in this update. So whether it is Microsoft Outlook, Airmail, Mail.Ru, MyMail, or Spark, you can easily send an email by tapping an email link displayed in the browser. That will open up your selected email app with the desired email address automatically populated in the address field. In a similar fashion, users can also update their settings in these email apps to automatically open any embedded link in Firefox.

You can choose your favorite email program in Firefox by going into settings in the Firefox for iOS app and selecting from the email programs listed.

You can also use Firefox to automatically open links embedded in emails by going into the settings menu of your preferred email app and selecting Firefox.

It’s clever, quick and simple – and more flexible. Because we want you to browse the Internet freely, the way you want, on Firefox.  Get the latest Firefox for iOS here.

 

List of Mail Partners

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

 

We hope you enjoy the latest version.

17 Jan 19:35

Humanity Flees to the Forest in this Bleak Sci-Fi Short

by Kevin Holmes for The Creators Project


Image courtesy of Simon Saulnier

If society starts to crumble—be it from climate change, nukes, zombies, whatever—while some people may retreat to the safety of their underground bunkers, others will probably flee the cities and head to the forests. Back from whence we came, as it were. That's the idea behind this French sci-fi short by director Simon Saulnier called The Edge.

As the brief prologue explains it's set in a future where the Earth is dying and the forest has become a haven, a symbol. All tiers of society have fled there, eking out a living, be it robbing others or using basic survival tactics to get by. The latter is how a young woman, Hawa, and her father attempt to survive until something Hawa holds dear is stolen. Which spurns her to head off for some good old fashioned revenge against the thieves who took it. 


Image courtesy of Simon Saulnier

Saulnier shot the film on location in the forests and Vosges Mountains around Saverne, France. It's that sense of realism that gives the film its dreary yet believable atmosphere, because it feels like a world that could exist, with a bunch of scruffy people attempting to get by in a damp forest (a bit like 2015's The Survivalist). It's bleak, but possible. So it's no surprise that Saulnier cites Children of Men as inspiration. It is set in a futuristic, but realistic and recognizable, England where humanity can no longer reproduce and the youngest person on Earth has just died. In Saulnier's film however it's not the youngest human, but the forests that are dying. 

"[Children of Men is] very realistic in terms of its social context, especially in light of current events," notes Saulnier. "I like to play around with reality, modify it, combine it with a warning about what’s happening around us today. I wanted to put this story in a very realistic sci-fi context, so The Edge is set right before 'the apocalypse' happens. It's a very human film, raw and organic, set in a universe created from the elements that were on hand, and it reflects a world in perpetual decline."

You can check it out below. It's in French so make sure you have captions on and it's only available for a week, although they may extend that, so watch it while you can.

To find out more about the film head to its website here.

Related:

Meet the Sci-Fi Artist Fixated on the Grime of Mexico City

Inside Adult Swim’s New Rotoscoped Sci-Fi Comedy 'Dream Corp LLC'

Apocalyptic Paintings Modernize the Book of Revelation

17 Jan 19:34

MacDown 0.2.3: PDF and Printing

by Tzu-ping Chung

MacDown 0.2.3 is the third bug-fixing release for 0.2, plus a few extra goodies. The main “thing” in this release are fixes and improvements for printing PDF generation and support.

PDF Export

From pretty much the beginning of the first MacDown release, there have been suggestions for adding a “Export to PDF” menu item to go along with the existing “Export to HTML” one. Those were rejected, mainly because macOS has PDF generation built-in. If you navigate to File → Print…, you will find a “PDF” button at the bottom left corner, and clicking it reveals a few options…

PDF options in macOS Print dialog.

…including Save as PDF. This can be used to export PDF, so there really is no need for individual macOS applications (as long as they use the system printing dialog) to implement a seperate export option, unless they provide additional export options, such as those provided by Pages, Keynote, etc..

But I was a little surprised when I get asked again. And again. And there’s a pull request about it. And then there is a review with this line:

Mou can export as PDF and HTML but Macdown can export in HTML format only.

(Side note: Please spell the application name as MacDown, with a capital D, not Macdown.)

Aside from the “one click is better than three” argument (which makes much sense), the most surprising part of people requesting this feature is that most people don’t seem to know that such feature exists in macOS. Which is the main reason that MacDown will from now on include the new Export menu:

New Export menu in MacDown 0.2.3.

The PDF export works similarly as its HTML counterpart, but will always match styles in the preview, without the CSS and syntax highlighting options. Speaking of which…

Other Improvements

The HTML export options now have more sensible defaults, based on current application preferences. This should make exporting routines easier.

And if you’re more into copying content directly from preview, instead of exporting the whole file, copy-pasting to web browsers (other than Safari, which already works) should now preserve styles in the preview.

The bundled Prism is also upgraded, meaning that you’ll get more language definitions for syntax highlighting, including Haskell, LaTeX, and Twig. I’ll update the full language list on the site later; you can also check out Prism’s documentation.

17 Jan 19:34

MacDown 0.4

by Tzu-ping Chung

MacDown 0.4 has been released. This is the second minor version jump in a row, and with good reason: it is much better than MacDown 0.3.

Hoedown 3

The Markdown-to-HTML rendering backend has been upgraded to Hoedown 3. As a result, MacDown now outputs the preview HTML more quickly than ever before, with even fewer glitches. The library API has been revamped greatly, and while you might not be able to notice the difference (without digging into the source code), this helps the development of MacDown because we can now build extensions to the rendering system more easily. Great thanks to the people behind Hoedown!

But those are not all we get from a simple library upgrade. The most important feature change in MacDown 0.3 is…

Math Rendering

LaTeX-like math syntax support has always been a popular feature for MacDown (and many other Markdown editors, too!), but unfortunately due to syntax differences between Markdown and LaTeX, the support is not without problems. Until now. Hoedown 3 added built-in math blocks/spans detection, so now math syntax gets first-class support. Many bugs are killed just because of that.

Built-in math syntax also opens the door to a new possibility: server-side math rendering. MacDown now uses MathJax to render math in the preview, but this requires Internet connection (because MathJax is huge), and is not exactly efficient (because we need to re-render every time preview is updated, and MathJax isn’t very fast either). With built-in syntax support, it would be possible to render the blocks/spans before it hits the preview UI, eliminating performance and volume overhead, even Internet connection! [1] Very excited about what we can do in the future.

However, the new math rendering behaviour is a little bit different from the one used previously. The new math syntax adds a feature inspired by kramdown called context-based inline math detection. Previously, if you write something like this:

Lorem ipsum $$ y = ax + b $$ dolor sit amet…

You will get two paragraphs, separated by a math block. Like this:

Math rendering without context detection

But now the rendering engine automatically detects that you’re writing inline math, and renders it accordingly:

Math rendering with context detection

This saves you from the more verbose \\( ... \\) syntax, at the same time enables you to write dollar signs in your text without needing to escape them.

As a consequence, you are now required to put $$ ... $$ math in its own paragraph to make it a block under default settings. This is best practice when you write LaTeX anyway, so while I apologise for your inconvenience, I don’t really sympathise you for making your text not readable in the first place. :p

This context detection is disabled if you explicitly turn on $ ... $ inline math (i.e. the behaviour is the same with previous versions). If you’re used to using \\( ... \\) and \\[ ... \\] anyway, everything still works.

Command Line Utility

MacDown 0.3 ships with an additional binary at MacDown.app/Contents/SharedSupport/bin/macdown. This is a command line utility that can be used to open Markdown documents with MacDown from you terminal. Simply link the binary somewhere in your PATH, e.g.: [2]

ln -s /Applications/MacDown.app/Contents/SharedSupport/bin/macdown /usr/bin

and you’ll be able to open documents like this:

macdown foo.md bar.md

If the documents you specified do not exist, MacDown will create a new document, and setup its saving path for you (but you’ll still need to save it yourself, obviously). You should be right at home if you’re familiar with Sublime Text’s command line helper subl, or CLI editors like nano, VIM, and Emacs.

There are plans to add more features to this utility, too. If you want to know more about what it can do, just run macdown --help. No man page now, sorry. Speak up if you want to help out on this one!

Enjoy!

There are also various bug-fixes and minor improvements besides the aforementioned ones. Checkout the release notes! If you have any questions and suggestions, join our Gitter-powered chatroom. Or you can just open a new issue on GitHub (but please make sure it’s not already posted yet!), or, even better, open a pull request.

But first, please enjoy the new MacDown. Believe me, it is good. :D


  1. It would still require Internet connection to download math fonts if you export to HTML, unless you install them locally.

  2. Assuming you install MacDown in /Applications. If your installation locates somewhere else (Homebrew Cask installs MacDown 0.4 to /opt/homebrew-cask/Caskroom/macdown/0.4/MacDown.app, for example).

17 Jan 19:34

Short Notice for Homebrew Cask Users

by Tzu-ping Chung

MacDown has been updated. The most recent version now is 0.4.2 (release notes). This has been a while, so there are quite some new things, both bug-fixes and minor improvements—nothing too interesting if you’re not looking for them. But I still encourage you to update, as always.

If you installed MacDown with Homebrew Cask, however, you might notice that there’s no new version on it. But no, certainly you are not forgotten! This is a side effect as we have moved from a versioned cask to use a rolling, unversioned download link. This means that we no longer depend on Homebrew Cask to publish updates, and you will need to use the built-in update mechanism now.

And it’s totally normal if you don’t understand any of the above. Just do this:

brew cask uninstall macdown
brew cask install macdown

and you will be all right!

This should have been posted earlier, when I released the update. But things intervene and this is a bit delayed. I hope this is not too late. Sorry for the inconvenience.

17 Jan 19:33

@MacDownApp

by Tzu-ping Chung

As you might know, I just added plug-in support in the latest MacDown 0.6 release. This opens a new avenue for those who want to add functionalities to MacDown.

I have been actively preventing MacDown from getting some specific features I considered not essential for a simplicit text editor. Some of the most wanted include sidebar support, and integration with specific Internet services. With the new plug-in arcitecture, anyone is now free to implement any feature he or she wants, and those who don’t want it can just ignore its existence.

To demonstrate how plug-ins work, I have created a simple plug-in called ”Gist it!” that uploads the current document as a GitHub Gist through GitHub’s web API. I also attached some basic documentation, so that you can get a better idea on how things work. I am very excited about this new feature, and look forward for the community to come up more new ideas to utilise it.

With the creation of the Gist it! repository, I now have three projects related to MacDown in my GitHub account (@uranusjr). This make things clutter, and difficult for others to find those repositories. Therefore I have created a new organization account for MacDown, @MacDownApp, that will serve as an umbrella for all MacDown-related repositories, including MacDown itself, this site, and all future asset, dependency, and plug-in projects that we may need.

Repositories previously under my account have already been migrated. Old links will continue to redirect traffic to new URLs, thanks to GitHub, but I think it is still a good idea to edit any link you might have pointed to the old location. Thanks!

17 Jan 19:33

The Triumphant Rise And Epic Collapse Of Vine

by Mary Beth Quirk
mkalus shared this story from Consumerist.

Today, while you’re posting the seventeen-thousandth Snapchat clip of yourself with the “puppy face” filter, or using Instagram to share that two-second loop of your grandma hula-hooping, the once-great micro-video platform Vine dies. Sure, it’s being reborn as some new app, but lightning rarely strikes twice on the internet, and the era of the “Vine star” or the six-second “viral Vine” is surely gone. In honor of Vine’s demise, we look back at the service’s meteoric rise — and its quiet fall from favor.

June 2012: Vine is founded by Dom Hofmann, Rus Yusupov, and Colin Kroll in Florida.

“It was surprising,” Hofmann told The Verge of the way people were encouraged to put the app to strange uses almost immediately. “Our original beta had something like 10 or 15 people on it, and even with that small group we started to see experimentation pretty early on.”

October 2012: Amid rumors that Twitter wanted to launch its own video service, the social media company bought Vine, AllThingsD reported on Oct. 9, 2012, for a reported $30 million.

Jan. 24, 2013: Twitter launches Vine as a free app for iOS devices.

“Like Tweets, the brevity of videos on Vine (6 seconds or less) inspires creativity,” explained Twitter’s VP of products at the time, Michael Sippey, in a blog post. “Now that you can easily capture motion and sound, we look forward to seeing what you create.”

Jan. 28, 2013: Only a few days into its life, Vine contracts a bit of a pornography problem, as Consumerist reported then.

March 2013: A few short months later, Vine bans porn and most nudity on the platform in an attempt to address the aforementioned porn issue.

April 9, 2013: Vine becomes the most-downloaded app on iOS, according to co-founder Yusupov, who celebrated the milestone on Twitter.

June 2, 2013: Vine becomes available on Android. Later that month, Wired noted that the Boston Marathon was a defining moment for Vine, after a Vine video of the explosion went viral. Founder Hofmann also explained that the brevity of each clip made them easier to share on social media.

“It began with unlimited time,” he said of the first version of the app. “But when we saw our friends trying to share their videos over text message, we realized that it needed a social component—and that meant we needed to make it quick to share and view.”

May 1, 2014: Vine launches a website version of the video service, allowing anyone with access to the internet to view clips.

July 2014: Vine introduces “loop counts,” which means everyone knows how many time a clip has been looped. And how popular you rae.

August 2015: Vine Music debuts, allowing users to create infinite loops of music. That same month, the company announced that it serves more than 100 million people every month, delivering more than 1.5 billion loops per day, Quartz reported at the time.

Oct. 27, 2016: The end arrived suddenly, with Vine announcing that Twitter would be discontinuing the mobile app.

November 2016: Rumors that Twitter might sell Vine for cheap instead of closing it down abound.

Dec. 16, 2016: Vine announces that the app will be replaced by will be replaced by the Vine Camera app, which will connect to Twitter instead of having its own social network as of Jan. 17, 2017.

Jan. 17, 2017: This brings us to today, when the mobile app official becomes the Vine camera. All old videos will be archived and browsable on the Vine website, however, so you’ll never have to go without.

While there was no guaranteed formula for a hit Vine, perhaps one big reason people seemed to gravitate toward it was its everyman appeal — you didn’t have to be a famous reality star to craft an ingenious, brilliant, dog-filled Vine. You could just be a guy with an adorable dog, like Harrison Nussbaum, creator of this piece of internet magic starring his dog, Marley:

We checked in with Nussbaum to see how he was feeling about the Vine changeover, and what it meant to have one of the most popular dogs on the internet.

“It’s sad to say that fame went right to Marley’s head,” Nussbaum told Consumerist in an email. “She began listening less while expecting more treats.”

He says his friends and family started sending him copies of his Vine whenever they found it posted elsewhere on social media, and everyone pampered Marley to extremes as a result of her newfound popularity.

“The reactions were hilarious,” he said of Marley’s sudden stardom.

As for why Vine was such a hit, Nussbaum says he thinks it was pretty simple — there was nothing else quite like it at the time, and it was easy to use.

“I think the ability for the short videos to play themselves over made Vine what it was; users could open the app, see a video, and close the app all in 10 seconds,” he says.

When he heard Vine was shutting down its mobile app, Nussbaum says he was “shocked,” saying Vine’s introduction “still feels like yesterday.” He adds that he’s optimistic for the future, however.

“I’m hoping the new Vine Camera will continue what Vine first started, just in a new way.”

We had one last question for Nussbaum: did he have any idea if Phil Collins himself had seen his Vine?

“Sadly, to my knowledge he has not seen it,” Nussbaum admitted.

*We chose the following popular Vines at random to include in the above photo accompanying this story, including Nussbaum’s above, as well as Vines by: Alienbatpigs; calebnatale; jessewelle; KingBach; Hood Vine; and chloe lmao.*





17 Jan 19:30

Tesla autopilot update rolls out to HW2 cars, may activate by end of week

by Rose Behar

Tesla CEO Elon Musk has confirmed that the company’s highly-anticipated Enhanced Autopilot update has rolled out to vehicles with second-generation self-driving hardware — known as HW2 cars — including the Model S and X.

Musk notes, however, that the update is currently in ‘non-actuating’ mode in order for the company to assess reliability. If all appears safe and ready, the update will activate by the end of the week (January 20th to 22nd).

 

Additionally, Musk assured followers that the company has not forgotten about HW1 vehicles, noting that several HW1 improvements will roll out over the course of 2017.

Enhanced Autopilot is set to deliver features such as autosteer, smart summon, autopark and auto lane change. Though some of those features aren’t new, having shipped in first-generation vehicles, they were deactivated for the HW2 vehicles in order to calibrate the system.

Tesla announced in October 2016 that all cars in production from then on would have “full self-driving capabilities” in terms of hardware.

Source: Twitter

17 Jan 19:27

Ohrn Image — Windows

by Ken Ohrn

Commercial Drive.


17 Jan 19:27

Ni Hao, Hasselblad!

by Michael Johnston
mkalus shared this story from The Online Photographer.

(Nǐ hǎo is the romanization of 你好, which is Mandarin for "hello." I learned this recently from Tommy and Yuki at a sushi restaurant I sometimes go to in Geneva (New York, not Switzerland). It's dubious whether my Mandarin is going to progress much further than this, sadly.)

Anyway, two tidbits of news...

• First, the Hasselblad X1D is at long last showing up in the wild! Here's a post at GetDPI from "ddanois" that shows his.

• Second, Hasselblad is now Chinese.

Well, not really. But the Chinese drone king DJI has apparently bought a majority stake. TechCrunch asks, "Will DJI leave the business of Hasselblad to operate like an independent subsidiary, but continue to ensure its cameras are easily integrated with DJI’s drone rigs? Or will DJI use Hasselblad technology to entirely replace the cameras used in their consumer-level drones like the Phantom and Mavic?"

X1D size

Pentax 645D and Hasselblad X1D. Illustration courtesy camerasize.com.

The answer isn't known, but when DJI took a minority stake (along with a seat on the Board of Directors) in Hasselblad in 2015, both companies said they would keep their operations independent.

(By the way, I have a lot of respect for people like Tommy and Yuki, who as far as I know are just co-workers. He's from "The South" of China and she's from Beijing. It's been hard enough for me migrating from Wisconsin to New York, never mind what they've done. Tommy's been here for ten years but speaks poor English, and says he "prays" to be able to take ESL classes. Yuki has a small child, Leo, with whom I had quite an involved and serious conversation last week about whether you need to be afraid of ghosts. That Leo was there at the restaurant seems to indicate that Yuki has no one to watch him while she's waiting tables. And the sushi restaurant is closing, so they and their other co-workers will be out of work soon. I got the picture that this is very serious indeed for all of them. I wish them well. My earliest American ancestors might have been Pilgrims, venerated now, but they were immigrants, and they also had a hard time at first.)

Mike
(Thanks to Oren Grad, Bryan Signorelli, Aaron Greenman, Jeffrey Schimberg, and others)

UPDATE Tuesday morning: Ming Thein puts the whole Hasselblad thing into perspective with intelligent guesses and his two cents' worth. If you're interested. (There's a summary TL;DR version at the end.)

Original contents copyright 2017 by Michael C. Johnston and/or the bylined author. All Rights Reserved. Links in this post may be to our affiliates; sales through affiliate links may benefit this site.

Droning onward!
Give Mike a “Like” or Buy yourself something nice

(To see all the comments, click on the "Comments" link below.)
Featured Comments from:

Struan (partial comment): "I think it's a mistake to see this tie-in in terms of putting Hasselblads into consumer toys.

"Drones are already taking over professional aerial and mast-based photography, and new uses for top-down and oblique imagery are under vigourous development everywhere. Mapping cameras and photogrammetry have always used the highest resolution possible, because even the very best photographic tools and analyses are a small part of the overall financial and opportunity cost of getting into the air. National mapping and reconnaissance agencies won't be dumping their Leica Geosystems kit, but there plenty of civilian applications where savings on, say, helicopter time are so dramatic that what hobbyists think of as the high price of a medium-format camera is actually a drop in the bucket.

"There are already companies here in Europe here offering farmers remote sensing-style analysis of drone footage of their crops.  The results used to program and control GPS-aware fertiliser spreaders and harvesters. In this kind of application, medium-format imagers don't just provide better spatial resolution, their better spectral resolution aids image analysis too.

"So to me, the DJI tie-in makes perfect sense. Hasselblad get a cash-rich owner/investor that is actually interested in cameras. DJI brings in-house the products, expertise and technology it needs for developing non-commodity drone applications. Win-win. I'm just hoping the some of the crumbs from the table fall into my lap."

Jay: "I know it wasn't the main subject of this post but thank you for acknowledging the struggles immigrants face every day. It is unfortunate that so few people make an effort to understand what the true lives of immigrants are like."

17 Jan 19:25

Artists Enlist the Public in Building Future Utopias in Two Forgotten Cities

by DJ Pangburn for The Creators Project

Images courtesy the artists.

Art collective Blast Theory is undertaking an ambitious science fiction project, titled 2097: We Made Ourselves Over, connecting the British city of Hull with the Danish city Aarhus. This isn’t Silicon Valley futurism, where techno-idealists disrupt their way to a future utopia of riches. Instead, Blast Theory is working with the cities’ residents to build a science fiction story as a possible future where all will benefit. Along the way, Blast Theory will stage various public happenings involving artists and artworks.

Nick Tandavanitj tells The Creators Project that 2097: We Made Ourselves Over can be traced back to the 2008 financial crisis. Like many others at the time, the collective’s members were struck by the sense that globalization—its financial markets in particular—had left people completely disempowered, including the people generally viewed as running the show.

“Since then, we’ve been thinking about the future,” says Tandavanitj. “What are the alternatives? How do we get there? And what is a more inclusive way of choosing that path.”

Between Hull and Aarhus, Blast Theory considers the similarities. They see two coastal cities vulnerable to climate change, with out-of-date developments, whose residents are trying to build sustainable economies and infrastructure.

“2097 will find new ways for us to speculate about the future with people,” Tandavanitj explains. “It takes a timeframe that is far enough to see our world potentially transformed but close enough that people now in their 20s might be here to see.”

Tandavanitj says an ongoing inspiration is Rebecca Solnit’s book A Paradise Built in Hell, which shows everyday men and women reacting with great ingenuity and courage in the face of disasters. What inspired Blast Theory is that people are resourceful and humane enough to keep going at all in some of these cases.

Over the past few months, Tandavanitj says that Blast Theory has been interviewing experts in different fields—scientists working on smart cities and community activists—for their predictions and thoughts on the challenges of the 21st century. The collective is asking attendees to re-imagine Hull and Aarhus with stories, drawings and ideas. These chats are part of workshops with different groups across Hull and Aarhus, which also range from schoolchildren to pensioners.

Blast Theory will throw their creativity into bringing this future world to life throughout 2017. They plan to do so with films, smartphones, and performances. They also plan to release interviews each month, and will discuss locations for shooting films with the people of the cities. Many of these happenings will be kept quiet, as much of the project is intended as a surprise.

Refreshingly, especially for those who believe in science fiction’s potential for envisioning many futures, Blast Theory boldly talks of building utopia. Some might scoff at the very idea of utopian planning, but Blast Theory could care less.

“Science fiction brings the power to make certain things literal and visual in a way that other genres can’t,” Tandavanitj says. “The authoritarian state can be literally represented as an army of faceless baton wielding robots, the consequences of catastrophic climate change can be made to feel all too immediate. Science fiction dystopias with out-of-control technology or terrifying forms of social inequity can reflect genuine challenges or dilemmas that we face today.”

Blast Theory believe they have a responsibility to propose new possibilities, especially because of the political surprises on both sides of the Atlantic this past year. Tandavanitj points to science fiction author JG Ballard’s The Drowned World as a point of reference—how the novel’s characters exist on the edge of precipice (in a world flooded by climate change), but simply keep going with a lack of sentiment.  

“[It] feels like the thing that will actually sustain us in the face of the unknown is the kind of resilience and stoicism shown among Ballard’s characters,” says Tandavanitj. “One of the properties of our global culture is that we can draw on specialist knowledge and expertise from around the world and combine this with local knowledge,” he adds. “In a time where it feels like everything is changing and everything is up for grabs, then we have an opportunity to take control of where we go and become protagonists ourselves in the making of the future.”

Click here to see more of Blast Theory’s work.

Related:

Utopia Looms Over London’s First Design Biennale

Road Trip into a VR-Triggered Wasteland in These Vivid Sci-Fi Paintings

Exhibition Mirrors Uncertain Future for United Kingdom

17 Jan 19:25

This Singer Inserts Himself Into Iconic Album Covers For His New Music Video

by Nathaniel Ainley for The Creators Project

Screencaps, via

Redesigning album covers is common practice within the digital art community but Philadelphia electronic artist and producer, Moon Bounce, a.k.a. Corey Regensburg, stands out amongst the horde. In a clever music video directed by Peter English, Regensburg recreates some of music’s most outrageous album covers while mouthing the lyrics to his infectious new single, "Drugs". In the beginning of the video, Regensburg stumbles upon a surreal music shop filled with classic vinyl records that have been remodeled with his face and body. As he steps inside to investigate, Regensburg gets sucked down a satirical rabbit hole of music history.

The video’s animator and art director, Raymo Ventura, inserts Regensburg’s character into a series of staged photoshoots for iconic album artworks like Grace Jones’s Do or Die and Prince’s Lovesexy. Much like the music, the visuals for this synth heavy pop tune are both nostalgic and innovative. Regensburg says the inspiration for his quirky yet soulful electronic sound stems from Chris Clarke and bands like The Blood Brother and M83. "Drugs" is the latest single off Regensburg’s first full length album release entitled Clean House, set to release on his own label Grind Select on March 10th. Check out some more stills from the video below:

Keep it locked on the Grind Select Bandcamp for updates on the coming release and be sure to check out Moon Bounce on SoundCloud.

Related:

Yeasayer's Cryptic Album Cover, Explained in One Video [Premiere]

15 Classic Album Covers Get Redesigned by Artists and Illustrators

Get to Know the Father of Album Cover Art

17 Jan 19:25

Heels on Wheels: Fiona Reid

by dandy

Photo by Molly Crealock 

Fiona Reid is set to play the Queen of England in The Audience. A play focusing on the Queen's meetings with various British prime ministers over the years. The play opens January 17. This interview is from a past issue of dandyhorse magazine published in 2014, where she talks about acting and bikes. For more past issues go here

Heels on wheels: Fiona Reid, Actor, Age 60

Story by Tammy Thorne

Fiona Reid played Cathy, the wife of Larry King, aka the King of Kensington in the popular Canadian TV series of the same name that ran from 1975 to 1980. Today, Reid is the Creative Director of Eclat School of Performing Arts with multiple awards under her belt, including two Doras and an Order of Canada. She can usually be found biking around town looking more like a messenger than a thespian. dandyhorse magazine caught up with her in Kensington Market this spring.

What projects are you working on right now?

I’m auditioning for television roles and doing various play workshops and readings. My next theatre gig is in the fall in The Arsonists is directed by Morris Panych at Canstage.

As one of the Creative Directors of the Eclat School of Performing Arts you work towards teaching and mentoring young actors.

Why do you think mentorship is important to the future of live theatre?

Toronto is brimming with amazing professional resources for students interested in theatre. There is so much we can do to give high school students more hands on training. That’s where the Eclat school comes in. It’s a way for students to learn in a meaningful environment while gaining an Ontario course credit. I wish I’d had access to something like this as a teenager. I feel very lucky to be part of such a terrific team of professionals teaching there.

Today’s youth represent the future of our craft. Their interest, their talents, their hunger for excellence is a cause for hope for us all. I love working with them. Sometimes when I least expect it, I find myself astonished by a young performer’s talent and dedication. It’s thrilling when one has that moment, which usually comes from hard work. It’s deeply inspiring. eclat-arts.com

Why is it important to support Canadian content in Canadian broadcasting?

Well, it’s getting pretty dire. So many of us have been fighting for our stories to be told on our media for years and now it’s all in some peril. To choose to become an actor in Canada is becoming an increasingly risky career choice. For example, the average wage for an ACTRA member is $8,000 per annum.

We are a vast country geographically. The CBC is mandated as our way of talking to each other across these great distances. But now, the Harper government is cutting the very backbone of the corp. So, no more radio drama; series’ are being dropped. There’s less money all around and that means less development of unique stories. We’re losing our ways of connecting, our myriad ways of expressing our national identity. Canadian culture is not only our means of communication and identification with each other; it is also our face to the world. It’s the very lifeblood of a country. Every developed country besides the USA and India supports culture. We should not apologize for that. Besides, our cultural industries are a great investment with significant economic effects.

Have you ever worn heels while riding your bike?

If I go to an opening, or a lunch date, or even an audition, I’ll generally wear heels. They’re so easy to wear on a bike, because the heel isn’t a factor when pedalling. I get the odd comment, which is nice. That doesn’t happen so often at my age.

What’s your usual cycling apparel?

I usually look like a bike courier. Black bike pants or jeans, red MEC jacket, bike gloves, Blundstones. Sometimes I bring out some skinny pants and nicer shoes and wear my M0851 raincoat, which is a bit more chic. Still, it’s black, so not the best for night time, so I have to have lots of lights. I have a thing about bikers who ride at night with no illumination!

Have you ever ridden your bike to a gala event wearing formal attire?

Not yet. I would like to try, but I’m a bit afraid of getting oil on a silk dress. My bike isn’t very clean most days.

Have you ever rehearsed lines on your bike?

I’m ALWAYS rehearsing lines on my bike! It’s the best! No one cares with the vehicle noise all around. I find the act of riding very freeing for vocal delivery. Once I rode to an audition. The main draw back of that is helmet head. But, this one time, I guess I’d rushed a bit, because as soon as the camera started shooting me, I started dripping with sweat!

     

From dandyhorse magazine Issue 9

What is your favourite ride in Toronto?

I love going down that hill on Rosedale Valley road, after visiting my mum at Belmont House in midtown. Then I haul my bike up the stairs near Bayview- that’s a bit of an upper body work out for an old broad like me – and ride through the bottom of Cabbagetown, on to River and down to Dundas, then towards home on Carlaw. That part of Cabbagetown near the Riverdale zoo is an oasis of charm and character.

Please tell us about your commute route?

I’m usually heading to the Y in the morning. There’s been major construction on a lot of roads, so the road condition is lousy. I have to keep my eye out for uneven terrain. I enjoy watching the new Olympic pool structure as it’s coming along. And there’s usually a crossing guard lady on Dundas, west of River who’ s super friendly. Every morning it’s ‘Hi, darlin!” You see so many interesting sights that you’d never really catch in a car.

What’s one thing you’d like to see change in Toronto for cyclists?

More bike lanes. Transit and bikes need to become the preferred means of getting around Toronto. We need to de-amalgamate. The needs of downtowners when it comes to bikes are particular to its geography and character. I do find cars in general are becoming a bit more respectful about sharing the road. Oh, and safety guards for trucks are a no-brainer.

What is your advice to young actors trying to “make it”?

Be determined. Learn to deal with rejection from the outset. And know how to do more than one thing.

Why should youth be hopeful for the future?

That’s a tough one, because I think my generation has a fair bit to answer for in terms of what we’ve handed down to the younger generation. But when I see so much amazing indie work done on a shoestring, I realize there’s enormous talent and creativity in our midst when it comes to young artists.

More from dandyhorse magazine:

Bike Spotting in Oshawa

Cathy Crowe Q&A

Vision Zero 

17 Jan 19:24

ZTE’s crowdsourced Hawkeye smartphone is compatible with Freedom Mobile’s LTE network

by Igor Bonifacic

On January 4th, ZTE revealed the name and release date of its Project CSX crowdsourced smartphone. Almost two weeks later, the company has released details on the internal specifications of the device, which is now officially known as Hawkeye.

The most interesting takeaway about this phone — at least from a Canadian perspective — is that it is Band 66-compatible, meaning it should be able to connect to Freedom Mobile’s LTE network. We’ve reached out to the carrier to confirm the fact, and we’ll update this article once we hear back from Freedom.

In the meantime, the good news is that Hawkeye is proof positive that more Band 66-compatible devices are on their way — though by the time it arrives this September, other Band 66-compatible smartphones will have already made their way to consumers.

Besides hands-free scrolling via eye tracking and an optional adhesive case that allows users to stick the phone to flat surfaces, the $199 USD Hawkeye is mostly a standard Android offering for 2017. It features a 5.5-inch full HD display, Snapdragon 625 processor, 3GB of RAM, 32GB of expandable internal storage, 3,000mAh battery with Qualcomm Quick Charge 2.0 and a dual 13 and 12 megapixel camera setup.

It’s also set to ship with Android Nougat, though it’s safe to say it will come with a fair bit of bloatware — ZTE’s has to keep costs down somehow, after all.

The phone is now available to pre-order via Kickstarter.

17 Jan 19:24

Equal Rating Innovation Challenge: And the Semifinalists are…

by Katharina Borchert
Announcing the five innovative concepts that made it to the final round

 

About three months ago we launched this global Equal Rating Innovation Challenge to help catalyze new thinking and innovation to provide access to the open Internet to those still living without. Clearly the idea resonated. Thanks to the help of numerous digital inclusion initiatives, think tanks, impact hubs and various local communities that supported us, our challenge has spurred global engagement. We received 98 submissions from 27 countries around the world. This demonstrates that there are entrepreneurs, researchers, and innovators in myriad fields poised to tackle this huge challenge with creative products and services.

Semifinalist Infographic

Our judging panel evaluated the submissions against the criteria of compliance with Equal Rating, affordability and accessibility, empathy, technical feasibility, as well as scalability, user experience, differentiation, potential for quick deployment, and team potential.

Here are the five projects which received the highest scores from our judges. Each team will receive 8 weeks of mentorship from experts within our Mozilla community, covering topics such as policy, business, engineering, and design. The mentorship is broad to better assist the teams  in building out their proposed concepts.

Congratulations go to:

Gram Marg Solution for Rural Broadband

  • Team Leader: Prof. Abhay Karandikar
  • Location: Mumbai, India
  • Open source low-cost hardware prototype utilizing Television White Spectrum to provide affordable access to rural communities.

Freemium Mobile Internet (FMI)

  • Team Leader: Steve Song
  • Location: Lunenburg, Nova Scotia, Canada
  • A new business model for telecommunication companies to provide free 2G to enable all the benefits of the open web to all.

Afri-Fi: Free Public WiFi

  • Team Leader: Tim Human
  • Location: Cape Town, South Africa
  • Model to make Project Isizwe financially sustainable by connecting brands to an untapped, national audience, specifically low-income communities who otherwise cannot afford connectivity.

Free Networks P2P Cooperative

  • Team Leader: Bruno Vianna
  • Location: Rio de Janeiro, Brazil
  • Cooperative that enables communities to set-up networks to get access to the Internet and then supports itself through the cooperative fees, and while co-creating the knowledge and respecting the local cultures.

Zenzeleni “Do it for yourselves” Networks (ZN)

  • Team Leader: Dr Carlos Rey-Moreno
  • Location: Cape Town, South Africa
  • Bottom-up telecommunications co-operatives that allows the most disadvantaged rural areas of South Africa to self-provide affordable communications at a fraction of the cost offered by other operators.

While we will disclose further information about all of these teams and their projects in the coming weeks, here are some themes that we’ve seen in the submission process and our observations on these themes:

  • Cooperatives were a popular mechanism to grow buy-in and share responsibility and benefit across communities. This is in contrast to a more typical and transactional producer-consumer relationship.
  • Digital literacy was naturally integrated into solutions, but was rarely the lead idea. Instead it was the de facto addition. This signals that digital literacy in and of itself is not perceived as a full solution or service, but rather an essential part of enabling access to the Internet.
  • Many teams took into account the unbanked and undocumented in their solutions. There seemed to be a feeling that solutions for the people would come from the people, not governments or corporations.
  • There was a strong trend for service solutions to disintermediate traditional commercial relationships and directly connect buyers and sellers.
  • In media-centric solutions, the voice of the people was as important as authoritative sources. User generated content in the areas of local news was popular, as was enabling a distribution of voices to be heard.

What’s Next?

Following the mentorship period, on March 9, we will host a day-long event in New York City on the topic of affordable access and innovation. We will invite speakers and researchers from around the world to provide their valuable insights on the global debate, various initiatives, and the latest approaches to affordable access. The main feature of this event will be presentations by our semifinalists, with a thorough Q&A from our judges. We will then have a week of open public voting on EqualRating.com to help determine the winners of the Challenge. The winners will then be announced at RightsCon on March 29 in Brussels.

At this point we want to thank all who have sent us their ideas, organised or hosted an event, or helped to spread the word. We also want to thank our esteemed panel of judges for their time, insight, and mobilizing their communities. While we did have almost a hundred teams submit solutions, we also had thousands of people meeting and engaging in this content through our events, webinars, and website. With this in mind, Mozilla aims to further engage with more teams who sent us their concepts, connect them to our network, and continue to grow the community of people working on this important topic.

Let’s keep this spirit burning – not only through the end of our Challenge, but beyond.

The post Equal Rating Innovation Challenge: And the Semifinalists are… appeared first on The Mozilla Blog.

17 Jan 17:22

Mateus Asato :: Don't Dream it's Over

by Volker Weber

Simply beautiful.

[Thanks, Phil]

17 Jan 17:21

Surface Pro 4 :: Cold start

by Volker Weber

8ac2f5e91733f7c218a486a200815aeb

This is how long my Surface Pro 4 takes from releasing the power button until Windows Hello recognizes me. That's pretty quick isn't it? No Enterprise boat anchor attached, of course.

17 Jan 15:39

We’ve Moved!

by Tzu-ping Chung

I mentioned previously I was going to migrate the site to be a static-generated site. After more than a week’s hacking with Lektor, I can finally complete the migration. This blog post will be the first to be hosted on the new site, so if you’re reading this, welcome!

The migration isn’t difficult (this site is very simple to begin with), but didn’t go without some trouble. After some investigation (Jesse’s experience helped a lot—and he even used MacDown to help the process!) I had to give up on GitHub Pages, and decided to deploy to Netlify instead. One feature in particular is that they offer a very straightforward way to handle HTTP redirects, and with a custom build process I am able to maintain full compatibility to the old site’s URL rules. Built-in Python support also made deploying way simpler than GitHub Pages. All I need to do is to push to my GitHub repo, and sit back.

There are still some rough edges I would like to address to. The site now uses Remarkable to render Markdown, KaTeX for math, and Prism for syntax highlighting, and all of these are done at server-side (i.e. compile time), so now every blog post you view is fully static.

This is how I imagine MacDown would render things in the long run. While a Markdown parser/renderer implemented in C is obviously super fast and easy to use (with Objective-C), you have to admit JavaScript libraries now offer a better landscape for a Markdown app. Fortunately macOS makes this easy—JavaScriptCore solves most issues—and I’m very exicited about this new stack. This, however, also means we’re at unknown water for the moment. But hopefully I can learn more about how things work this way, and implement a better rendering engine for MacDown in the future.

In the mean time, I hope this new site is at least as enjoyable as the old one. And if you find any problems, please, please open an issue to tell me! This would really help a lot.