Shared posts

18 Oct 15:28

Write English the Way You Write Code

by Article Author

Another very early article, from 2006, but very much in the spirit of the explaining series. – Russ

Some years ago I was managing a software group that was doing joint development with a team in Japan. My company spent a lot of money to translate a design document from Japanese into English. The result was indecipherable gobbledygook. When I complained about the quality of the translation to the Japanese manager, he just shook his head. No, he said, it wasn't the translator: the document was just as unreadable in the native Japanese. And nobody was surprised.

For a profession full of sharp people, software engineering produces some hideous prose. How many times have you tried to read a technical document and failed because it was, in a very real sense, unreadable? It doesn't have to be this way. We technical types can improve our writing simply by applying some of those hard won coding skills to to those other, human, languages. I may be grammar challenged and spelling incapable, but writing code has taught me a few things about writing for people.

Do one thing well

If we have learned anything about building programs in the last few decades, it is that each method, class, module or program should do one thing, and do it well. When a GUI tries to be both pretty and the center of the business logic, you are headed for disaster. Write database code that also tries to handle the network traffic and you are just setting yourself up for a fall. No, a program needs to concentrate on one thing, and do the best it can at that one thing.

So does your writing. If you are writing installation instructions, tell me how to install the thing. I don't want the theory of how it works. I don't want to know how it was was designed. I don't want to know why you picked Linux over Mac. I just want to know how to install it. I don't think that people deliberately wander off the point, but a lot of technical people are just dying to tell the world what a great job they have done, why they picked this over that, how hard it all was. Great: write a status report, or a blog, or the Great American Technical Memoir. The practice will do you good. But as for the installation instructions, just tell me how to install it. Then write the best code…er…English that you can come up with to make that happen.

Test, test and then test again

The oldest joke in software engineering is probably the one where the engineer says, Well it compiles, so it must be right. Everyone in the software business knows that getting a program to compile is just the first, and usually the easiest step to getting it to work. If you want to know if some code works, you need to run it. If you want to know if your prose works, read it. Out loud. There is something about running your words out of your mouth and back into you ears that is the text equivalent of unit testing. If you find you are gasping for breath, perhaps your sentences are too long. If reading your stuff makes you feel like you are trying to say She sells sea shells at the sea shore, maybe you should consider rewording. Reading your stuff out loud will also help you spot those places where you annoyingly use the same annoying word in annoying profusion.

I guess that if reading your own work out loud is unit testing, then having someone else read it is beta testing. If part of your job is writing, then a kind but honest reviewer is worth more than a fancy word processor and two dictionaries. And what's the best way to get someone to review your stuff? By reviewing theirs, of course.

Don't repeat yourself (much)

DRY is about as close to a commandment as we have in the programming world. Keeping redundant code to a minimum means that your code is easier to understand, it means that bugs can be found and fixed once, and it means that you simply have less code to deal with. Generally it is much the same when you are writing for people. You want to avoid repeating large blocks of text or the same explanations over and over. If you are writing the design document, don't repeat the requirements; point the reader back to requirements document. Avoid redundancy in your prose for exactly the same reasons you avoid it in code: your document will not only be smaller, but it will seem more organized. If you make a mistake, there is only one place to fix.

Don't take this advice too far, however. People are, well, human, and they do tend to forget. It is not bad to remind your reader every now and then of the some critical fact: remember, as we explained in chapter one, don't let the blue wire touch the detonator. Sometimes you can spot the places where a little repetition will do some good by taking a break and rereading your document later. Things that seemed obvious when you were writing will sometimes become completely obscure an hour later.

Keep in mind that there is no harm in providing some context, but you have to strike a balance between helpful reminders and the deadly retelling of section 1.4.7.c, subparagraph 4.

Don't write to impress me

There are lots of ways to write programs, some good and some bad, but perhaps the worst way is to write code to impress the reader. You see this in programs that refuse to do a simple thing simply. Need to find an particular item in a list of ten? Well let's pull out that highly optimized binary search algorithm. Need to build one dialog? Let's write a special GUI framework to support it. Want to add two plus two? Then clearly you will need a factory which produces the command which grabs the facade for the bridge to your NumberAddition class. I think we have all seen too much code that is written mainly to demonstrate the cleverness of the author.

So why is it that engineers who would never think of coding to impress, write documents that are full of impressive sounding words? We don't have a thing, we have an Artifact. We don't pull it all together, we Create an Aggregation. We don't work together, we Collaborate. And come up with Canonical answers. And don't forget the worst offender, facilitate. Even worse, we string them together: Hey kids, let's aggregate the artifactS to facilitate canonical collaborations!

Don't get me wrong – these are all perfectly good words. The problem with these words, and all of their polysyllabic friends, is that they are like the complex algorithm or the fancy framework. Frameworks and fancy words have their place, but if you are only pulling them out to impress me, it ain't gonna work. Overuse the fancy words and you make yourself sound like you are dumb and trying to pretend that you are smart.

Here's a little secret: getting your point across in as few, short words as possible shows that you care about the reader. It shows that you know your goal is to communicate. It shows that you are just trying to get it done. In short, it shows that you are smart. I can't really do better than to repeat George Orwell, who, seventy years ago, asked if you would rather read this:

Objective considerations of contemporary phenomena compel the conclusion that success or failure in competitive activities exhibits no tendency to be commensurate with innate capacity, but that a considerable element of the unpredictable must invariably be taken into account.

Or this:

I returned and saw under the sun, that the race is not to the swift, nor the battle to the strong, neither yet bread to the wise, nor yet riches to men of understanding, nor yet favour to men of skill; but time and chance happeneth to them all.

So how do you do it? How to you stick to small, pointy words that work? Start by trying to write like you talk. Very few people walk around saying things like Objective considerations of contemporary phenomena… If you say it out loud, most of the pretentious words will simply fall away. Remember, the race may not always go to the swift, but the readers' thanks will always go to the concise.

Wrapping Up

So there it is: know why you are writing and try to get it done. Read it out loud early and often. Don't repeat yourself unless it really helps the cause. And don't try to impress me. If you think about it, writing is the art of programming that wet computer that sits between your reader's ears. When you start, ask yourself how you are trying to change the state of your reader's mind. With that goal firmly in sight, write the best code you can.

– Russ

30 Apr 02:41

What a Clojure Web Framework might look like

by Eric Normand

One of the questions that came up a couple times was what is a Web framework? What does that even mean? I don’t want to get into philosophical discussion about what a framework is. Is it a library or framework or any of those kinds of questions. I’ll tell you what I meant, what I still mean by this assertion that we need one.

Transcript

Hey, my name is Eric Normand and these are my thoughts on Functional Programming.

I mentioned, a couple episodes ago, that I think that Clojure needs a boring Web framework and so I got a bunch of people replying. Thank you. That’s awesome. It’s awesome to know that people are listening.

One of the questions that came up a couple times was what is a Web framework? What does that even mean? I don’t want to get into philosophical discussion about what a framework is. Is it a library or framework or any of those kinds of questions. I’ll tell you what I meant, what I still mean by this assertion that we need one.

There’s a reason why Rails was successful. There’s a reason why when we think of Web framework, like that’s the big one in the room.

It’s more than it was just convenient and made it easy for beginners and stuff like that, but you know, it did. It made Web development really fast, but more than all that, is it’s a mental framework for how to code for the Web.

What Rails did was said, “Hey, if you think about your app as MVC, everything else is taken care of for you.” If you just think of it as a CRUD app and then you can figure out how to break stuff up in to MVC, you’re 90 percent on the way there.

Before that, if you wanted to make a Web app you were thinking about Web parameters and methods and the HTTP methods and the status codes and security and getting your HTML forms right and all that stuff. It was actually quite a lot to keep in your head especially for a beginner. By moving it out of your head and to this configuration over, what is it called?

Default over configuration, something like that. Where it was all set up for you to work right out of the box like even all the routes and everything are just done for you. I think that was what made it really work.

The thing is, I don’t think CRUD is the best thing for a Clojure app, especially an app or a Web framework, where you’re pushing a similar idea, but I think that’s what we need.

It’s something where you can give someone a very easy mental model that if they just adopt this mental model that the rest of the job of building the app becomes about incidentals. It becomes more about thinking about the domain and how you would break up your app or your problem into the pieces that it gives you. That’s what I mean.

I also said that we need something like WordPress. When I say that, I mean something specific because I don’t think we should just re-implement all of WordPress or anything like that. What I mean is something where it’s a plug-in system.

The unit of reuse is a plug-in. Currently, in the Clojure Web space, the unit of reuse is the library and integration with your current app is up to you, as the owner of the app. If you want to put buddy in or a friend because you want to use the authentication library, there are several integration points that you have to get right.

You have to add something to your middleware stack and you have to wrap the handlers and is it safe by default and there’s all sorts of issues with that. Especially dealing with something like security, it is a big deal, but I think that if you built it as a plug-in system where people will write a plug-in that hooks into the core at known hooking points, known hooks, known integration points, then you won’t have this problem.

I say in theory because I haven’t written the thing yet and this doesn’t exist, but in theory, you can install the plug-in and activate it and it just works and there’s no other integration required because it’s all done through these known hooks, these published hooks that are part of the core.

In that way, you’re actually trying to build an ecosystem, an ecosystem of plug-ins that provide a lot of the functionality that you need. You still get that nice compositionality that we like in the Clojure Web world, but you get it at a different level, because what the Clojure Web world gives you is ring as the de facto platform, which gives you certain integration points like the middleware stack or the handler or the adapter.

Really, that is not…Those are great, and I think it’s a wonderful platform, but it doesn’t really capture the Web. It doesn’t break it. It doesn’t really model the Web. It doesn’t provide a theory of the Web. If software is all about theory building, Rails, the theory of Rails is that Web apps are CRUD apps.

I’m caricaturing it, but just bear with me on this, OK.

The framework that I’m proposing needs to do is propose a different theory from the ring theory, which is that. Web requests are data to go into functions. Which sounds great because then you’re like, “Oh, I’m just in the land of functions. This is what I’m familiar with,” but what it doesn’t do is ask hard questions or something that you would quickly run into, which is, “Well, I know that the title has to go in a certain place in the HTML.”

Like we don’t deal with that, that’s someone else’s problem. I’ve got a user that I need to login and how do I store a little bit of information about that user, such a common problem, you’re going to run into it a lot and ring simply says, “Well, you just have to make it part of the request that gets passed to the function, to the handlers.”

Where do you do that? Probably in a middleware, but that’s not…It’s forcing all the knowledge of how the Web works and how your Web app should work back onto you. I’m going to turn because I’m hitting some wind.

What the Web framework needs to do is take a much more opinionated stance on the Web because we all deal with the same issues all the time. A plug-in could be the user system and it could come in by default. One of the things I’ve really appreciated about WordPress, running it for a few years now, what I really appreciate is that there’s so much built-in, and the integration or the ability to add a little bit of stuff on top is so easy.

Adding a medium amount is a little bit more work, but not much, because now you have to think about making your own database table and how do you install that when the plug-in is activated and stuff like that, but you have this very easy integration point because you can hook metadata onto the users.

You can just say, “Oh, well, I know this little key value thing about the user, I’m just going to store it.” Those kinds of things where the user system is standard, it’s just the plug-in, and you just want to add one little piece of information about the users, you shouldn’t have to do a whole bunch of work because we know that that’s very common.

We meaning the Web development industry, we know that that’s common, so we should just build that in to the plug-in. Of course, you would have a CMS plug-in that would store posts, their content, their title, and store their revisions and other metadata on it.

It would be a plug-in. In WordPress, that comes with it because it’s basically a blogging platform that they’ve added and added to. Posting and CMS, CMS is content management system. It means a blogging system, but you could add that in as a plug-in in case you wanted it. It’s very common to have that.

Then, of course, the CMS could come with an editing interface. I haven’t talked about that. This is just an idea, but that plug-ins have both the server-side code that runs and the interface side code that runs to have a single page app for the admin interface.

It could be as simple as, here’s some JavaScript that you should provide in the admin interface and it probably creates a react class or something, so it would easily connect up with reframe and etc., and then that would be it. That would be your integration into the admin interface. You could have an API plug-in that provided like a rest style API.

Really, the possibilities are endless, but the key thing is to give the base that has a really strong foundation in…Anything that you could say you’re probably going to run into this within the first few weeks of writing your app, we’re just going to save you all of that time. That’s what I mean by framework. What I don’t want is something where…

I respect Luminous, and the work that went into it and all the goals of Luminous even. I think that they’re valiant goals, and even I think as a thing itself, it’s pretty good. I don’t think it’s a good solution for beginners because what it basically is a standard ring app that is x percent already done. They just let you code it, edit the code, just add to this.

What that doesn’t let you have is that plug-in system where…Like I said before, plug-in as the unit of sharing, as the unit of composition. I can’t write a system, a plug-in for Luminous, and then people can just install it.

I could write a thing that is made to be used in Luminous, and then provide documentation for how to integrate it in, but I really think we need something where the ecosystem is based more around these reusable components that just drop into place. In Rails, the way a lot of those things work is, there’s like a standard way the request is processed and it provides hooks, and a lot of those hooks are just [inaudible 15:55] monkey patch, something.

That’s fine, but Rails [inaudible 16:06] …Sorry, the wind, you probably cannot hear me. I don’t think that that’s very safe and a lot of people move away from Rails because of that. It’s not the Clojure way we do stuff like just redefining functions that don’t do exactly what we want, we don’t do that. What we do is provide a lot of introspection.

Once you have this hook system, where you can have plug-ins that declare like, “Well, before you pass the request on, please process it through this function.”

That kind of hook. If you have that, you can actually introspect into that. You can say, “What are all the plug-ins that use this hook?” or “What are the available hooks?” You can have online documentation about what hooks are available.

Of course, plug-ins can provide new hooks, so you can see what other hooks are available once you install this plug-in.

You can see where did this hook come from, what plug-in put this in, and what line of code was it. I just feel like that is the level of added features that Clojure should be providing is that once you have a dynamic run-time like Clojure where you boot up the server, it is just running and things are shared in memory like all the hooks and stuff and what’s registered already, then you can start introspecting into that.

It’s a totally boring system at the bottom but with great tooling on top. A lot of the attempts at Web frameworks so far have been, “Hey, let’s do something and let’s focus on ease. Let’s focus on quickness to write a handler or let’s just make it very neat.” I think that we need something that’s maybe a little bit more robust at first.

Start with the robustness, the boring and then to spend a lot of time and effort, lot of work building the plug-ins out of the parts that we already have. Just doing the grunt work of saying, “Oh, this library is really cool. We are going to build it into a plug-in so that this integration point in the library you’re supposed to put this thing in the middle of a stack.”

“We’re actually going to rewrite or adapt it to fit into the hook system.” Boom, now you have that as a plug-in and have a way to a repository to list the plug-ins that are available and make them easy to install really quickly. You see all this is boring. It’s stuff that we already have in other libraries or other ecosystems. WordPress has a plug-in directory. Rails has the gems.

I feel we need some boring stuff like that. Just build out the thing. Spend the time in the work instead of trying to bootstrap a thing. That’s the curse of LISP where things are so powerful. We have such a powerful language that we are so used to having super high leverage.

Where it’s, “Look, I wrote this macro. It generates at the same time a route. It outputs HTML. It does all your Web stuff for you. It’s 20 lines of macro. That’s my framework.” This is a lot of leverage in 20 lines of code but that’s not enough. That’s not what people want.

People want full framework experience of everything that you would ever need is available. It’s something very common. It already exists. This idea of a quick win it’s destructive to the effort. It’s going to take a lot of work, a lot of time, a lot of collaboration, a lot of fights, meaning disagreements over how the thing should actually work.

We’re not going to get a framework that’s widely used without all of that. Those are my thoughts, a little bit of ranting. Thanks so much. I like these. I like doing these things. Please subscribe wherever you found this. I’ll see you next time. Bye.

The post What a Clojure Web Framework might look like appeared first on LispCast.

30 Apr 02:41

Why You May Not Need a Wok

by Winnie Yang
Why You May Not Need a Wok

For many people, the image of someone cooking Chinese food usually has the person deftly tossing stir-fry ingredients in a gigantic wok as dramatic flames leap beneath it. But as someone who grew up regularly eating delicious stir-fries that my Taiwanese mom cooked in a beat-up nonstick frying pan on an electric range, I’ve always felt that woks were unnecessary.

30 Apr 02:39

Umpire strike zone changes to finish games earlier

by Nathan Yau

When watching baseball on television, we get the benefit of seeing whether a pitch entered the strike zone or not. Umpires go by eye, and intentional or not, they tend towards finishing a game over extra innings. Michael Lopez, Brian Mills, and Gus Wezerek for FiveThirtyEight:

The left panel shows the comparative rate of strike calls when, in the bottom of an inning in extras, the batting team is positioned to win — defined as having a runner on base in a tie game — relative to those rates in situations when there’s no runner on base in a tie game. When the home team has a baserunner, umps call more balls, thus setting up more favorable counts for home-team hitters, creating more trouble for the pitcher, and giving the home team more chances to end the game.

I doubt the shift is on purpose, but it’s interesting to see the calls go that way regardless. Also, from a non baseball-viewer, why isn’t there any replay in baseball yet?

Tags: baseball, FiveThirtyEight, sports, work

30 Apr 02:39

Diversity, Inclusion and Culture: How to Build Great Teams

by Tessa Ann Taylor
Illustrations by Kelsey Wroten

As a software engineer who happens to be female, I’ve long been committed to increasing diversity in the technology workforce. In my free time, I often read about issues impacting underrepresented groups and strategies to create an inclusive environment, and I devote time to mentoring the next generation of women in technology. I recently became an engineering manager on the CMS team at The New York Times, and have gotten to experience the issues of diversity and inclusion from a new perspective: that of a hiring manager and a team leader.

Hiring

One of my first tasks as a engineering manager was to fill my old role by hiring a software engineer. I’d experienced the hiring process as a candidate, interviewer and referrer of candidates, but this was my first experience as a hiring manager.

Watching applications and referrals roll in allowed me to see first hand that, without a specific eye on diversity and inclusion, it is incredibly easy to have a homogenous group of candidates. Had I accepted my initial candidate pool as is, I would have almost exclusively interviewed people from over-indexed groups. This experience also really drove home one reason why homogenous teams and companies stay homogenous: the pressure of interviewing and hiring referrals.

Determined to change the makeup of my candidate pool, I set out to find candidates from underrepresented groups. Everyone wants a silver bullet for recruiting people with diverse backgrounds: “Just post your job on this website, and your candidate pool will instantly diversify.” I’m here to tell you that’s not the case (or if it is, send that website on over!). Finding and recruiting people with diverse backgrounds takes time, effort and dedication.

Let’s take a step back and talk about why recruiting, hiring and retaining people with diverse backgrounds is important. Namely, in addition to being the right thing to do, it’s a smart business decision. There is a wealth of research that says diverse teams perform better because each team member brings a different perspective to the table. This creates dialogue, challenges the status quo and ultimately results in a more thoughtful and robust product. While selfishly I think it’s nice to have other women in the room, my primary responsibility is to build the best team and the best products possible. I firmly believe (and research agrees) that such a team is made up of variety of people and perspectives, and that this team will build the best products.

So, how does one build a diverse team? Let’s go back to recruiting and the candidate pool. After I joined The Times as a software engineer, I attended and recruited at conferences like Grace Hopper, Society of Women Engineers, Lesbians Who Tech and a variety of hackathons that cater to women and under-represented groups. Additionally, another woman in the technology department and I collaborated to encourage The Times to recruit at single-sex schools such as Smith College and Wellesley College, and schools that have shown a commitment to diversity in their Computer Science departments, such as Harvey Mudd. Spending time attending these events, and building and maintaining these relationships and networks paid off; The recruiting team and I were able to significantly change the makeup of the candidate pool and find some great candidates we otherwise would not have considered.

After diversifying my candidate pool, I took a look at our interview process. As a team, we make a concentrated effort to ensure that the process is as fair and unbiased as possible. Each candidate sees the same — or close to the same, schedule allowing — group of people, all of whom ask the same — or close to the same — questions. There are also a variety of people on the interview panel: some to assess technical ability and some to assess soft skills. Additionally, The Times has a policy stipulating that interview panels must contain at least one woman who has technical knowledge. This policy is extremely important, as it ensures female candidates will see someone who looks like them during interviews, and it allows us to suss out gender bias in other candidates before they have a chance to become employees.

The final hiring decision is consensus-driven, and all aspects of the candidate are taken into consideration. We look at technical skills, soft skills and extras that a particular candidate would bring to bear. While I loathe the term “culture fit” as it can be misused to preserve homogeny, I would say that we assess for “not a culture fit’” (for example, a candidate showing less respect to any member of the interview panel or having a non-collaborative attitude). All of a candidate’s skills and attributes are factored into the final hiring decision.

Illustration by Kelsey Wroten

Team Culture

The first step to leveraging the strength of a diverse team is, of course, getting unique voices to the table, but the work doesn’t end there. Once people are at the table, it’s important to create an inclusive environment where they can share their thoughts and perspectives. This requires effort on the part of the team to maintain open and respectful communication, as well as a continued focus on change and growth.

It’s worth noting that though diversity and inclusion best practices are meant to benefit people from underrepresented groups, they actually benefit everyone and create a stronger team overall. Diversity doesn’t usually exist if there isn’t a good team culture, and a strong team is a byproduct of diversity. If you’re wondering where to start on your team, start with culture.

Before I was in a position to create, influence and codify the culture on my team, I got to experience the difference a good culture can make. I’ve worked on all-male technology teams for my entire career, but when I arrived at The Times and joined the CMS team as a software engineer, I immediately noticed something was different. At the time, the team was still all-male, but no one ever treated me differently for being female. In fact, I felt like my gender was never considered, it was simply not part of any thought process or conversation. Everyone on the team was open, happy to answer questions and smart but modest. Collaboration was valued over being right, and everyone was truly committed to moving the whole team forward, rather than personal victory.

There was also a commitment to work-life balance where home and family obligations were valued alongside work priorities. Interestingly, because the team was all-male, it was the men who modeled behavior of calling out to take care of a sick kid or taking off early to see a school play. This was really cool and encouraging to see, and it spoke to the great team culture. When I became an engineering manager and focused on hiring, this culture made me feel comfortable hiring more women. At the same time, I realized that it was my responsibility to maintain, codify and elevate the culture.

Onboarding

The biggest test of team culture is how the team onboards a new member. This is an opportunity to take a look at the process and code through fresh eyes, and expose inefficiencies and gaps.

My first exposure to onboarding as a manager was with our summer intern, which was fortuitous because onboarding an intern is more intensive than onboarding a regular team member. You can’t say, “Hey, here’s the code and some tickets,” as you might to a full-time hire.

Before our intern started, I created a backlog of small tasks to help get her acquainted with our projects and code. These tasks were a combination of quick wins with a focus on understanding the full picture around a particular piece of the app, and stretch assignments designed to push her understanding of our systems and inspire questions. During her first week, another team member was designated as her go-to person for questions and trouble-shooting while she was getting set up and tackling her first tasks. Additionally, she had knowledge-sharing 1:1s with members of the team to give her a high-level overview of various pieces of our tech.

Our intern’s schedule for the first few days.

As she progressed beyond onboarding tasks and into building full features, she had a dedicated partner for each of her projects. This partner was tasked with either pair-programming with her or answering questions when she was coding on her own. This ensured that there was always someone available to help and advise her; it allowed her to get comfortable asking questions of various team members; and it gave team members the opportunity to mentor a junior engineer.

Throughout the summer, I made sure to solicit feedback from her about our team and the onboarding process. I asked if there was anything we could change or improve, and whether she felt supported in her projects and as a member of the team. Through this feedback, I iterated on the onboarding process and created documentation for onboarding future interns and team members.

Onboarding a full-time team member looks very similar to intern onboarding on our team. There is a backlog of onboarding tasks, as well as informational and project-based pair-programming sessions. This allows the new hire to get familiar with the code and to ensure they are comfortable with various team members and feel like they can ask questions; and it ensures that established team members have the bandwidth to help with any questions or stumbling blocks.

In response to feedback from our summer intern, the general onboarding 1:1s for full-time hires are staggered throughout their first few months and delivered when they are relevant to a current project or task, as opposed to being delivered all up front. This slow ramp up with an emphasis on learning sets up new hires for success by allowing them to understand the “why” of various tasks and parts of the code base; it also sets the expectation that asking questions and constant learning are a daily part of the job.

A full time employee’s schedule for the first week. Pairing sessions are more spread out to allow for independent learning.

Inclusion

In addition to onboarding new team members, it is important to create and/or codify good processes and practices that ensure everyone on the team feels included, heard and recognized. Our team explicitly documents our roles and responsibilities to ensure that people feel comfortable speaking up where appropriate and necessary (for example, part of an engineers’ role is to collaborate with product and design to drive product decisions). We also document team norms around things like pull requests and remote culture to ensure that everyone’s voices are heard and respected. Finally, we set quarterly goals around improving team culture, in addition to our quarterly product and technology goals.

There are a few other things that we do to make sure that the CMS team is inclusive. First, we have multiple women on the team work together on a project, as opposed to splitting them up and assigning them to different projects. Also, some team events don’t involve alcohol and many of them are held during business hours (for example, we have a team lunch every Friday). Our events are also activity-inclusive: a recent dry, in-office event during work hours was a games party that included both video games and analog games.

So, what are the results of all of this work? Tangibly, we’ve significantly changed the demographics of the team and it includes a female engineering manager (me). What’s more impressive are the products we build and the work environment that we’ve cultivated. Our products are technically complex, visually sophisticated and power an evolving world-class newsroom (you can read about the text editor we’re building). We work collaboratively and leverage each team member’s unique skills and experiences.

The work to promote diversity and inclusion is never done, but I’d say we’re off to a great start.

Tips for Building a Great Team

Recruiting

  • There is no silver bullet. Put in the effort and reap the rewards.
  • Give first — mentor at Hackathons, present at universities, teach coding.
  • Leverage the recruiting team — they’re here to help.
  • Don’t over-emphasize referrals from current employees.

Interviewing

  • Standardize the panel for a given position.
  • Standardize the questions for a given position.
  • Discuss each candidate fully, allowing the space to talk about any special positives or red flags.
  • Consider hard skills and soft skills for every role.

Onboarding

  • Emphasize learning over results.
  • Facilitate collaboration through structured pairing and onboarding sessions.

Culture

  • Document your team’s processes, norms and code.
  • Always be iterating, and seek feedback on your processes, norms and code.
  • Value collaboration over being right.
  • Emphasize the gains of the team over the individual.
  • Ensure that team events are inclusive (dry, during work hours, etc).
  • Acknowledge and reward work to improve diversity and inclusion.

Diversity, Inclusion and Culture: How to Build Great Teams was originally published in Times Open on Medium, where people are continuing the conversation by highlighting and responding to this story.

30 Apr 02:38

Apple leak memo shows how to effectively intimidate your employees — with passive voice

by Josh Bernoff

It’s great to work at Apple, the world’s most valuable company. Just don’t leak what you’re doing. An Apple PR person once told me there are at most five people at the company authorized to talk to press — everyone else had better keep quiet. This creates pressure to leak: people inside the company want … Continued

The post Apple leak memo shows how to effectively intimidate your employees — with passive voice appeared first on without bullshit.

30 Apr 02:38

Less smoke in the Western world

This week’s chart is short and simple…because summer is here! It’s a warm day in Berlin, refreshingly surprising after a long, long winter. Everybody’s sitting outside, drinking a beer, enjoying the sun, smoking a cigarette…well, but do they? When I was twelve years old, on average six cigarettes were sold to each German adult each day. Now, it’s a third less:

Developed countries must make the tobacco industry cry: Many of them experienced the peak in tobacco consumption between the 40s and 80s. During this time, the US had a higher cigarette consumption than Germany – by now, it’s less. Still: The current three to five cigarettes per adult per day seems a lot to me. And this chart just shows us some developed countries: In many developing countries, cigarette consumption is going up. Chinese adults bought more cigarettes each day in 2014 than US-Americans at the beginning of the 60s.

Chart Choices

In the chart title, I mention “developed countries”. I also show lots of them – but then I highlight just three countries, the United States, Germany and France. Why? Because the alternative would be to either give them all a different vibrant color or to leave them grey. Both would be harder to read. The lines would be a tangled mess in which it’s hard to see the trend. So in some cases, it can be a good idea to make one to three countries stand out of the chaos as examples of the trend.

Another small detail in this chart is to extend the y-axis to zero. Datawrapper line charts don’t automatically do that for good reasons. But when the y-axis comes close to zero anyway and the main statement is still visible, including the zero baseline increases readability and comparability by a lot. When creating a line chart, it’s a good idea to quickly check if including zero might be an option.


By the way: I silently recorded my process, showing how I got the data from an Our World in Data article into Datawrapper, via Google Sheets: Click here to watch the video on YouTube. You will see me use pivot tables (which I will explain in another blog post) & the filter option. See you next week!

30 Apr 02:38

Process versus outcome productivity

Several times over the last few weeks my hatred of Doodle polls has come up in meetings. I think the polling technology is great, but I’m still frustrated by the polls. Someone asked what I’d rather have happen and I said:

“set the meeting, then let me know when it is, if I can come I will. if i’m not there then i’m happy for you to decide without me”

I tried to think about why I feel this way about meetings and I realized that there is a tradeoff between process focused and outcome focused productivity. I’m sure this is a really well known phenomenon but I’m just figuring it out now.

The way I think about it is process focused productivity happens by performing things according a standard model. The pros and cons of this model are:

  • Pros:
    • The model can be easily communicated to new people
    • It is easy to measure whether people are doing “the right” thing
    • It makes it easier for people to know what to be working on
  • Cons:
    • Anything outside of the process is difficult
    • Processes may not be optimized for a specific goal
    • Suboptimal choices can be justified by process

Outcome focused productivity on the other hand focuses on accomplishing a goal but does not impose a standard process. The pros and cons of outome focused productivity are:

  • Pros:
    • Can be very efficient since the outcome is the focus
    • Removes barriers imposed by process bureucracy
    • Can reduce or eliminate unnecessary activities
  • Cons:
    • Requires everyone to know the goal
    • Can be much more free flowing and so harder to measure progress
    • Can be frustrating for people who have to be flexible about process

Elon Musk’s productivity suggestions are a limiting case of outcome focused productivity.

I realized that I much prefer outcome focused productivity to process focused productivity personally. But working for a large organization like JHU that uses process focused productivity can be frustrating. Doodle polls, standardized email servers, specific exam requirements, processes for meeting scheduling, etc. are all components of a process focused place like JHU. But they drive a person like me who likes outcome focused productivity totally bonkers. On the other hand, I’m sure I drive people around here nuts when I make decisions on the fly/at the last minute to adapt to circumstances to achieve the outcome I’m after.

I’m not sure there is any real solution for this conflict, I just realized this is the reason for a lot of separate different frustrations that have been bubbling up over the last few weeks/months. I wonder if anyone has a good idea on how to be an outcome focused productivity person inside a process focused productivity organization?

30 Apr 02:38

This Earth Day, Let’s Put an End to Single-Use Plastics

image

As Earth Day approaches, I have been thinking a lot about single-use plastic, specifically how I use it and how I can use less of it. Plastic is now a major source of pollution in our oceans. The Great Pacific Garbage Patch—a swirling gyre of plastic debris between California and Hawaii—is 16 times larger than previously thought, and it is growing exponentially every year.  It is no wonder that whales are dying bloated with plastics in their bellies. If you want to get more depressed just watch this video of a scuba diver in Bali.

I am not posting this to paralyze you with fear. You can take action. We as individuals can reduce our consumption of single-use plastics. Here are some suggestions:

- Bring reusable bags to the grocery store.

- Don’t use plastic straws.

- Avoid bottled water at all costs.

- Bring a reusable mug when you buy your daily coffee.

- Boycott or register complaints with companies that insist on overpacking their products.

These are just a few examples. Cities can also do more to reduce single-use plastics. According to the City of Vancouver, 2.6-million disposable cups and two-million plastic bags are thrown in the trash every week. To combat this, the City is launching a Single-Use Item Reduction Strategy that includes a complete ban on styrofoam cups and containers and a bylaw on food vendors to make plastic straws optional. Today, the United Kingdom went one step further and announced it would ban the sale of plastic straws.

The movement to reduce single-use plastics may be just getting started, but it can’t come soon enough.

30 Apr 02:38

Personalizing Lightroom’s Amazing New “Auto Tone” Feature

by Jeffrey Friedl
Unrelated Cherry-Blossom Snow this photo, from this recent photoshoot , has nothing to do with this post -- Kyoto, Japan -- Copyright 2018 Jeffrey Friedl, http://regex.info/blog/
Nikon D4 + Nikkor 70-200mm f/2.8 @ 130mm — 1/640 sec, f/2.8, ISO 140 — image data
Unrelated Cherry-Blossom Snow
this photo, from this recent photoshoot, has nothing to do with this post

Lightroom 7.2 introduced an entirely new version of its “Auto Tone” feature, a one-click adjustment of photo brightness and contrast to hopefully-pleasing results. The prior version of Auto Tone used what might be called a “stupid, brute force” method that merely adjusted tone ranges to try find a numeric balance. It wasn't very useful.

The new Auto Tone, however, is fantastic, being powered by an artificial-intelligence engine trained with thousands of hand-tweaked photos from highly-regarded artists. It does a sufficiently-good job that I now use it as part of my new-photo workflow, to give me a better starting point for my own edits. (I should point out, though, that a good photographer wouldn't need any kind of better starting point for edits; a good photographer will do the work prior to pressing the shutter button. I'm not a good photographer.)

As good as the new Auto Tone is, I've found it tends to be a bit heavy handed with saturation for my tastes. I gather that the artists who worked on the photos used to train the AI engine simply prefer to lay on heavy saturation to make the photo “pop”, and perhaps this is why they are highly regarded and I am not, but it seems cheap to me. I'd prefer not to use that as my starting point.

So, to help quicken my workflow in this area, I added new features to my Bag of Goodies plugin for Lightroom that allow one to perform a personalized Auto Tone.

Your personalizations are configured in a dialog brought up by invoking:

File > Plugin Extras > Configure Personalized Auto Tone and Apply

The configuration dialog is this monstrosity:

The plugin allows each of the nine develop settings that Auto Tone touches to be canceled, scaled back, or enhanced. The details are explained on the plugin home page.

Note that even though the new Auto Tone was introduced in Lightroom 7.2, the plugin requires 7.3 to work, as that's when Adobe added the hooks that make the plugin possible.

30 Apr 02:38

Open Chasms – definitions dividing or uniting the open community? Some thoughts from #oer18

by admin

It’s often said that history is written by the winners. At this year’s OER18 conference all the keynotes took had a touch of history about them. Lorna Campbell got the conference off to a great start with her long view of changing perspectives on OER.  Momodou Sallah inspired everyone with his pedagogies of disruption, infectious activism and counter narratives, particularly around the history of access and control over and to, education and  culture in Africa. In the final keynote,  David Wiley took us through his potted history of open, open source, learning objects.

Much of what David spoke about resonated with me and the audience.  However as his presentation unfolded, and with the messages particularly from Momodou’s keynote talk the previous day still in at the forefront of my thoughts,  I was struck by the people he highlighted in his talk – predominately white, male, North American,  middle class, including some who hold some very unpleasant (to say the least) views on women in tech and gun ownership.

Early on in his talk David asked if there was/is going to be a split in the open community.  I hope there isn’t, but there are some gaping chasms. These chasms have nothing to do with the pragmatism versus practicality debate he spoke of. They are to do with who ‘wins’ the definition wars, the continuation of casual. everyday discrimination, exclusion and lack of/acknowledgement of counter narratives, and cultural sensitivity.

In tune with the 1980’s vibe let loose by the Reclaim Video folks, I can’t help but think of the classic 1980’s film The Return of the Jedi where Obi Wan Kanobi explains to Luke Skywalker that what what he told him about his father was the truth “from a certain point of view

For me, definitions particularly in education, are a bit like that. They are created, shared, debated based firmly on a certain point of view. This means that they all too easily can become, from a critical pedagogy point of view, symbols of oppression.

If am I told a narrative based on white, middle class, middle aged, North American males, I am immediately excluded (along with half of the worlds population).

If we don’t explicitly address diversity,  actively seek to include, support and embrace different voices, it’s not the difference between purists and pragmatists that will divide a community –  it’s who is included and excluded.  If your community doesn’t speak to me, then why should I become part of it, or defer and adhere to its definitions?

One of the joys of the OER conferences for me is that is a really powerful, hospitable space that brings together diverse voices to raise critically informed debate about open education.  It’s a space for people to come together and reflect on  what it means to be an open practitioner, what OER is in their context, and more importantly it can’t and can’t do.  Channelling the wonderful Dr Catherine Cronin  it’s not just open education practice that is a constantly negotiated process, it’s our definitions of it. They need to be open to negotiation and cognisant of context too. Surely that’s the way to engage, grow and sustain a diverse community.

30 Apr 02:37

Apple Should Make an Instagram Clone

Here's an idea I've been tossing around lately- Apple should make an Instagram clone for iCloud users.

Seriously!

Instagram is one of the last social networks I use these days, which I actually enjoy visiting. But I always get a little twitchy using it because it's owned by Facebook (which I'm really not a fan of). And the ads are getting pretty annoying these days.

So wouldn't it be awesome if Apple made a privacy focused clone of it? I know Apple doesn't really do well when it comes to social services, but I'm wondering if a simple photo sharing site might not be impossible for them to do well. From the outside, it looks like it's just a scaling problem. You've got photos, comments, and a list of folks to watch. It can't be that hard.

Start small. Make it clean and minimal. Add a developer API. Grow it slowly with beta invites. Why not? It's a pretty good fit if you ask me.

30 Apr 02:37

The Morality of the More Powerful

by Stephen Downes
My own sense of morality has always been from the perspective of the more powerful. This is not because I am the most powerful person in the world; far from it. Indeed, I am always sensitive to the actions (and frequent immorality) of those more powerful than I. But that does not change my perspective.

As a result of my birth, and as a result of my upbringing, I have tremendous advantages over most people in the world. It's not just privilege, though it is certainly partially that. I have been gifted with significant intelligence and wisdom, which is a personal advantage over others just as, say, great strength or speed would be.

I have a personal and moral compass that guides me not merely to do well but also to do good in the world. This compass is important to me, and I have shared it in the past. Let me pause for a few moments and explore what it is and what it means.

I want and visualize and aspire toward a system of society and learning where each person is able to rise to his or her fullest potential...

I can't think of anything more fundamental. It combines Kant's idea that each person is valuable in their own right with John Stuart Mill's principle that each person should be able to pursue their own good in their own way. I have expressed the same idea in other fora through the ideas of autonomy and diversity and interactivity and openness, and explained why I think these are important.

Significantly, this is not a principle that requires that a person should aspire to a good in one particular direction or another. It's a condition I impose on myself to the effect that I should not stand in the way of people reaching toward their highest aspirations. But it is up to each individual to define that how they wish, and to aspire to whatever higher goal they envision, or as I say,

where they may express themselves fully and without reservation through art, writing, athletics, invention, or even through their avocations or lifestyle.
 
I want people to find their best lives and their best relationships, to immerse themselves in them as fully as they wish. I know people to whom community is everything, and others to whom the expression of individuality is everything, and I value each equally. I've known people who have found their sense of selves in their culture, in their religion, in their vocation, in their expression, and I value each equally.

And I value myself just as equally, and I see my own sense of personal self-fulfillment as valid and important, and so for me, the fundamental principle I express above extends to my own capacity to rise to my fullest potential, and it is in defense of this that I speak and act again those who would seek to impose their own sense of good or morality or whatever on my.

I am not a tool you can use to pursue your own sense of good, and nor either should anyone else be. Your sense of good should be used to govern yourself, not me. We each of us has our own sense of good, and this is well and good up to the moment where we seek to impose this good on someone else.

And I see society as the mechanism we employ to make this possible, and society has two essential components: first of all, a mechanism that enables us to adjudicate peacefully legitimate differences we have with each other as a result of our conflicting interests; and second of all, the structures we can build together to mutually advance our individual or shared goods.

And society can and should function however the people who make it up decide it should function up to the point where it begins to be used to impose one person's sense of good over another. Society should be used to build and to grow, not to limit and destroy. It should be used to add and augment capability, not to deny or to limit them.

And so I envision a society of people...

where they are able to form networks of meaningful and rewarding relationships with their peers, with people who share the same interests or hobbies, the same political or religious affiliations - or different interests or affiliations, as the case may be.

This is, as Joe Clark once put it, a community of communities, and where the communities interact much as the people do, each defining its on good in its own way, each valuable as an end in itself, and each dedicated to the principles of self governance rather than to the governance of others.

They are communities freely joined and freely departed, where people are in a condition of voluntary association with each other, without coercion, without constraint, a world, in other words, where people are free to pursue their best selves

without social or financial encumbrance,

because to me, these are instruments of instrumentality and coercion. And it is further

a society where knowledge and learning are public goods, freely created and shared, not hoarded or withheld in order to extract wealth or influence.

We should be pursuing a society in which knowledge and wealth is not scarce, but abundant, and where it is freely shared in order to encourage progress and growth, not meted out as an instrument to demand compliance and control.

I recognize that not everyone is working toward view of society. I recognize that not everyone agrees with me that this is the objectively best view of society. But it's what I am working toward, and it is the basis on which I make my decisions, guide my action, and govern myself in the world.

Indeed, I see a lot of people working toward subsets of this overarching goal. I see them working toward intermediate goals that, if reached, would lead us to this broader ambition.

I see people in social and religious organizations stressing a perspective of morality to the effect that we should treat others with consideration, to the effect that we should not kill or injure or lie to them, and to the effect what we should consider the needs of others in our day-to-day lives.

I see people in social and political movements seeking to address historical and current injustices, people supporting the right of marginalized groups to safety and self-affirmation, such groups including women's rights groups, indigenous rights group, gay and lesbian societies, and more.

I see people working against the instruments of oppression, against imprisonment and torture, against social repression, against oppressive political regimes, against abridgements on personal rights and liberties such as speech and association and worship.

I see people working toward an open society, toward the free sharing of beliefs and ideas, toward th advancement of human knowledge and increase in human wisdom, toward cultural and literary achievement, toward exploration and toward discovery.

And I see people working toward physical well-being, toward curing the sick and caring for the aged and infirm, toward fostering health an education and well-being in society, toward supporting personal and physical achievement and excellence.

All of these people, whatever the differences they may ahve between them, are my allies in my own pursuit. All of these are in their own way working toward their own vision of whatever is good and right and decent. And I embrace them all.

Against this is the actions of some of them, some of us, where we think only of ourselves o our group and seek to pursue our own ambition at the expense of others, where we seek to use others to gain advantage, where we seek to take rather than to build or create or discover.

There's a lot of such people in the world, and indeed, our world is so imperfect that this group probably includes most of us at some time or another. Sometimes - a lot of the time, actually - society pits one of us against the other, and whomever is the stronger or more powerful jut takes what they want or need, without regard to rule or principle or good or right.

That's when the morality of the more powerful comes into play.

We think of power as though it were a weapon, where power (as they say) flows from the barrel of a gun, and where power is ultimately an instrument of force. And it is true that through much of history and even in society today this is how power has been manifest.

The exercise of knowledge and intellect for personal gain is an exercise of power, and stands against what is right and decent and good as any other exercise of force in the service of oppression and servitude.

But knowledge, also, is power, as Francis Bacon famously acknowledged, and when governments gave disease-infected blankets to an unknowing indigenous populations to weaken them and wipe them out, it was no less an exercise of power than it would have been had they lined them up and shot them.

I have talked, for example, of the oppressive instrument of advertising, especially to children, and of the immorality of teaching them that McDonald's sells food or that Candy Crush is a harmless pass-time. The use of surveillance and psychology to convince people to channel their resources and energy to serve the interests of the wealthy and privileged is perhaps the greatest immorality of our time.

To we who are powerful and gifted from birth with a position of advantage, including intellect and wisdom, the tools of psychology and philosophy and morality come very easily. It is not hard to convince ourselves, let alone others, that we are in the right. And indeed, it is not hard to point to the lessons of history that have placed us in a position of advantage to suggest the superiority of our ways.

All the world lines up to tell us that we are the best and the brightest, and that we are the best positioned to know what is good and right, to know what is worth pursuing, and - crucially - to tell others that they should place themselves in a position of disadvantage in the service of this higher good or noble ideal.

The morality of the more powerful lies in not doing this.

As I tell people, if you know what to look for, you begin to see it everywhere. Here's what to look for: powerful people telling (or convincing) less powerful people how they ought to behave.

The worst cases of this abuse happen when the powerful people indulge in this very behviour. Often, it is what has made them powerful in the first place. It's like the right man who got his start through stealing telling the poor that it is immoral to steal. It is like the large corporation that disregards copyright telling schoolchildren that they must respect copyright.

The morality of the more powerful lies is not using their power (their position, their wealth, their intellect) to better their own position in the world at the expense of those less powerful, even in cases where they feel they can justify that position in the name of morality or the betterment of society.

The powerful most often pretend to be working for the betterment of others when in fact each action they take seems to increase the distance between themselves and the rest of society they purport to serve.

When a powerful person has an advantage - some piece of knowledge, for example, or the experience of having read The Cathedral and the Bazaar - then they have no business denying that same advantage to someone who is less powerful; the result would be a very convenient morality that increases the distance between themselves and the society they purport to serve.

If you believe reading Eric Raymond is wrong, then don't read him. But for goodness sake, don't read him and then tell everyone else it is immoral to read him.  That is the logic of the powerful assuming a self-aggrandizing and very convenient morality over the less powerful. If you've read Eric Raymond already, then you don't get to tell other people that they should not read Eric Raymond.

If a person is less powerful, then the morality of the powerful should be to bring the less powerful to the same level as the powerful, not to maintain, perpetuate, or even increase the difference in power. The objective of any interaction with others should be to help them express themselves more fully and more completely, to enable them to govern themselves, rather than to control, manipulate, take advantage, or coerce.

Should I be telling people not to read David Wiley because he's  Mormon and I disagree with Mormonism? Should I tell people not to read the writings of the Pope because the church has some regressive views about women? Should I tell people not to read work published by Oxford because it has benefited from a colonial empire? Should I reject the work of any Rhodes scholar? Should I tell people never to listen to anyone from a company that has indulged in deceptive advertising? Should I warn people to avoid Churchill because he was a Conservative?

Should I be telling people they should lot learn from people who have served their own interest at the expense of others in the past? Should I impose what is essentially my morality on the capacity of others to learn from what is both right and wrong? On what basis do I make such assertions? Or, should I say, on the basis of what hubris?

If we really wanted to shelter people, we should not let them read any writing from the rich and powerful. We should not let them read writing from the self-serving communities that form in Oxford and Cambridge, in Harvard or Yale or Stanford or MIT, in Wall Street or Fleet Street.

Or - better - we could share with them what we have learned about the lying and the cheating and the deceit of the more powerful. And, in our day-to-day lives, refrain from that same presumption to a higher morality that all of these well-to-do people do on a day-to-day basis.



26 Apr 20:35

Tim Cook Doesn’t Believe Users Want Apple to Merge the Mac and iPad

by John Voorhees

Peter Wells has an interesting story in The Sydney Morning Herald about the much-rumored merger of Macs and iOS devices. Wells interviewed Apple CEO Tim Cook at the education event that was held late last month in Chicago. During the conversation, Wells asked Cook about Microsoft’s convertible Windows 10 strategy and how it compared to Apple’s approach to OSes. Cook responded:

“We don't believe in sort of watering down one for the other. Both [The Mac and iPad] are incredible. One of the reasons that both of them are incredible is because we pushed them to do what they do well. And if you begin to merge the two ... you begin to make trade offs and compromises.

”So maybe the company would be more efficient at the end of the day. But that's not what it's about. You know it's about giving people things that they can then use to help them change the world or express their passion or express their creativity. So this merger thing that some folks are fixated on, I don't think that's what users want."

Especially since Mark Gurman of Bloomberg reported on rumors of an Apple initiative codenamed Project Marzipan designed to bring aspects of iOS to the Mac, there has been speculation about whether it might be the first step in an eventual merger of the two operating systems. Although Cook’s comments are interesting in the context of the rumors that have circulated, he was asked about Microsoft’s Windows 10 strategy, not Apple’s plans for its platforms. I think it’s safe to say that Cook believes iOS devices and Macs are good for different tasks, which suggests that the Mac’s form factor isn’t at imminent risk, but I don’t think you can draw any conclusions from his comments about the chipsets or operating system that may drive Macs in the future.

→ Source: smh.com.au

21 Apr 02:05

Garmin Varia RTL510 Radar: See and Be Seen

by garminblog
mkalus shared this story from garminblog's YouTube Videos.

From: garminblog
Duration: 00:45

Ride smarter and more aware with Varia™ RTL510 rearview radar. Mounted neatly on the seat post, it warns of approaching vehicles and offers a bright tail light, so you can see and be seen, day or night.

Find out more about the Varia RTL510 radar here:
https://buy.garmin.com/en-US/US/p/601468

• Provides visual and audible alerts to warn of vehicles approaching from behind up to 153 yards (140 meters) away
• Tail light offers daylight visibility up to a mile away, so drivers can see you well before the radar sees the vehicle
• Sleek vertical design easily mounts to most road-use bicycles, including racing, touring and commuter styles
• Tail light provides 220 degrees of visibility to help improve driver awareness of your location
• Requires a dedicated radar display unit or wirelessly integrates with compatible Garmin devices¹

¹For full list of compatible devices, see Garmin.com/VariaRTL510Compatibility

21 Apr 02:05

Stanley Park

by Michael Kalus
mkalus shared this story from Uploads from Michael Kalus.

Michael Kalus posted a photo:

Stanley Park

Processed with VSCO with fr4 preset



21 Apr 01:25

Knowble – a review

files/images/knowble-reader1.jpg

Philip J. Kerr, Adaptive Learning in ELT, Apr 23, 2018


Icon

Nice review of a language learning app providing a needed dose of scepticism. The app is called Knowble and is a browser extension that purports to improve English-language vocabulary. The problem is, it relies on Google Translate, so it often offers incorrect vocabulary advice. Google translates pretty well when the word is found in context, but " Knowble, however, have set their software to ask Google for translations of each word as individual items," which results in inevitable errors. "The claim that Knowble’s ‘learning effect is proven scientifically’ seems to me to be without any foundation," writes Philip Kerr. "If there has been any proper research, it’s not signposted anywhere."

Web: [Direct Link] [This Post]
21 Apr 01:25

Building Bold New Worlds With Virtual Reality

by Dan Brown

 

“I wanted people to feel the whole story with their bodies, not just with their minds. Once I discovered virtual reality was the place to do that, it was transformative.”
– Nonny de la Peña, CEO of Emblematic

 

Great creators can do more than just tell a story. They can build entirely new worlds for audiences to experience and enjoy.

From rich text to video to podcasts, the Internet era offers an array of new ways for creators to build worlds. Here at Mozilla, we are particularly excited about virtual reality. Imagine moving beyond watching or listening to a story; imagine also feeling that story. Imagine being inside it with your entire mind and body. Now imagine sharing and entering that experience with something as simple as a web URL. That’s the potential before us.

To fully realize that potential, we need people who think big. We need artists and developers and engineers who are driven to push the boundaries of the imagination. We need visionaries who can translate that imagination into virtual reality.

The sky is the limit with virtual reality, and we’re driven to serve as the bridge that connects artists and developers. We are also committed to providing those communities with the tools and resources they need to begin building their own worlds. Love working with Javascript? Check out the A-Frame framework. Do you prefer building with Unity? We have created a toolkit to bring your VR Unity experience to the web with WebVR.

We believe browsers are the future of virtual and augmented reality. The ability to click on a link and enter into an immersive, virtual world is a game-changer. This is why we held our ‘VR the People’ panel at the Sundance Film Festival, and why we will be at the Tribeca Film Festival in New York next week. We want to connect storytellers with this amazing technology. If you’re at Tribeca (or just in the area), please reach out. We’d love to chat.

This concludes our four part series about virtual reality, storytelling, and the open web. It’s our mission to empower creators, and we hope these posts have left you inspired. If you’d like to watch our entire VR the People panel. Check out the video below.

 

Be sure to visit https://mixedreality.mozilla.org/ to learn more about the tools and resources Mozilla offers to help you build new worlds from your imagination.

Read more on VR the People

The post Building Bold New Worlds With Virtual Reality appeared first on The Mozilla Blog.

21 Apr 01:25

I paid no federal income tax for last year. Is that fair?

by Josh Bernoff

I had a great year in 2017. I’ve been pleased to be able to basically replicate the income I had as a very senior analyst working for a research company, but to control my own destiny and work hours, and work only on projects that I like. But one thing is different. My income tax … Continued

The post I paid no federal income tax for last year. Is that fair? appeared first on without bullshit.

21 Apr 01:24

NewsBlur Blurblog: Blogging is most certainly not dead

sillygwailo shared this story from kottke.org.

A few weeks ago, I asked the readers of the Noticing newsletter to send in links to their blogs and newsletters (or to their favorite blogs and newsletters written by others). And boy, did they! I pared the submissions list down to a representative sample and sent it out as last week’s newsletter. Here’s a smaller excerpt of that list…you can find the whole thing here.

Several people wrote in about Swiss Miss, Subtraction, Damn Interesting, Cup of Jo, sites I also read regularly.

Ted pointed me towards Julia Evans’ blog, where she writes mostly (but not exclusively) about programming and technology. One of my favorite things about reading blogs is when their authors go off-topic. (Which might explain why everything on kottke.org is off-topic. Or is everything on-topic?)

Bruce sent in Follow Me Here, which linked to 3 Quarks Daily, a high-quality blog I’d lost track of.

Marcelo Rinesi blogs infrequently about a little bit of everything. “We write to figure out who we are and what we think.”

Futility Closet is “a collection of entertaining curiosities in history, literature, language, art, philosophy, and mathematics, designed to help you waste time as enjoyably as possible”. (Thx, Peter)

Michael Tsai blogs about technology in a very old school way…reading through it felt like a wearing a comfortable old t-shirt.

Sidebar: the five best design links, every day. And Nico Lumma’s Five Things, “five things everyday that I find interesting”.

Pamela wrote in with dozens of links, among them visual blog But Does It Float, neuroscience blog Mind Hacks, the old school Everlasting Blort.

Elsa recommends Accidentally in Code, written by engineer Cate Huston.

Madeleine writes Extraordinary Routines, “sharing interviews, musings and life experiments that explore the intersection between creativity and imperfection”.

Kari has kept her blog for the last 15 years. I love what she wrote about why she writes:

I also keep it out of spite, because I refuse to let social media take everything. Those shapeless, formless platforms haven’t earned it and don’t deserve it. I’ve blogged about this many times, but I still believe it: When I log into Facebook, I see Facebook. When I visit your blog, I see you.

Social media is as compelling as ever, but people are increasingly souring on the surveillance state Skinner boxes like Facebook and Twitter. Decentralized media like blogs and newsletters are looking better and better these days…

Tags: lists   weblogs
21 Apr 01:24

Twitter Favorites: [tylorsherman] You're in line to get on the bus and a bus snake rushes on. Do you: a) Inform the bus driver of fare evasion b) Wait for the next bus

Tylor Canada @tylorsherman
You're in line to get on the bus and a bus snake rushes on. Do you: a) Inform the bus driver of fare evasion b) Wait for the next bus
21 Apr 01:23

Twitter Favorites: [bmann] An interesting list of (mainly retail / food) requested niche businesses for Toronto. Several of them exist in Va… https://t.co/tXTBKatAlm

Boris Mann @bmann
An interesting list of (mainly retail / food) requested niche businesses for Toronto. Several of them exist in Va… twitter.com/i/web/status/9…
21 Apr 01:23

Twitter Favorites: [SnarkySteff] Where a Kindle reader really shines is with large books. I bought the complete autobiographies of Maya Angelou — si… https://t.co/4sIqohKifF

Steffani Cameron, the Full Nomad @SnarkySteff
Where a Kindle reader really shines is with large books. I bought the complete autobiographies of Maya Angelou — si… twitter.com/i/web/status/9…
21 Apr 01:23

Twitter Favorites: [dbarefoot] Am I alone in wanting to specify where notifications appear in OS X? The upper right corner is precious tab space for me.

Darren Barefoot @dbarefoot
Am I alone in wanting to specify where notifications appear in OS X? The upper right corner is precious tab space for me.
21 Apr 01:22

How to celebrate the restoration of your bike

by dandy

Photo via dandyhorse.

How to celebrate the restoration of your bike

As a bike lover, it is likely that you have already considered a restoration project. It is the perfect hobby for anyone who loves life on two wheels. Instead of simply purchasing your bike from the store, you have the opportunity to truly make it your own. Restoring a bike is also a great chance for you to improve your hands-on skills, which will be of use if you are ever faced with a breakdown or unexpected scratches and dents. Why wait? With a little hard work and dedication, it won’t be long before you have reached your final goal. Below are five tips that will help you to celebrate when you finally get there.

Take progress shots

If you are working hard to restore your beloved bike, it is vital that you take plenty of progress shots, as doing so is the perfect opportunity for you to capture your bike at every stage of the process. Then, when you have completed your restoration project, you could use a free video creator to document the entire journey. Imagine how brilliant it will be to see your bike transform in front of your very eyes! You could even share your video via your social media accounts or arrange a screening for all of your loved ones.

Plan an exciting ride

The moment you dust off your hands at the end of the project is the perfect time to plan an exciting ride on your newly-completed bike. There is no better way for you to stay motivated throughout the process. Every time you feel like giving up, you will be able to focus on the cycling route that you are going to complete when all of the hard work is over. Why not start thinking about the different roads that you could take, the equipment you will need, and the mileage you would like to hit?

Update your storage

Why not update your storage options to house your new bike? No matter the size of your living space, it is possible to store your two wheels in style. Even if you are living in a tiny apartment, there are a variety of options available. Alternatively, if you have a large backyard, you could consider building an outdoor bike shed which is a fantastic way for you to keep your restored bike safe and secure.

Purchase cycling accessories

In addition to this, you should treat yourself to plenty of cycling accessories. If you are going to make the most of your newly restored bike, you will need to have all of the latest gadgets to support your plans! You will also need to invest in security equipment, as this will help you to stay safe during your bike rides. When it comes to spending time out on the open road, it is always better to be safe than sorry.

Share your bike with your loved ones

Last but not least, you should look out for ways to share your bike with your loved ones. Even if your friends and family aren’t usually interested in your passion for bikes, they will surely be impressed by all of the effort you have gone to in order to transform a previously unloved item. That is why you should think about hosting a small launch party for your bike. What better excuse for you to bring everyone together for a fun celebration?

21 Apr 01:22

Rogers email changes cause concerns among subscribers

by Sameer Chhabra
Rogers

A recent change to the Rogers email platform has caused concern among subscribers using a Rogers.com email account.

The Rogers email client is powered by Yahoo, which was acquired by Verizon in 2017. Verizon merged Yahoo, as well as its email service, with AOL to create a new brand called Oath.

According to comments submitted to MobileSyrup, as well as a number of irate commenters on the Rogers community forums, Rogers email users are receiving notifications regarding a new Oath terms of service intended to unify the privacy policies of both Yahoo and AOL users.

Globe and Mail story has expanded on the issue, reporting that one of the outlined terms enumerates that Oath analyzes “‘content and information,’ including e-mails, photos and attachments ‘when you use our services.'”

One Rogers community forum commenter stated that they had a conversation with a Roger technical services representative who informed the commenter that “we have no choice but to agree if we want to get into our email accounts.”

“Our customers’ privacy is extremely important as Canadians connect more and more whether its through social media, email or applications,” said a Rogers spokesperson, in an email to MobileSyrup. “Yahoo! recently updated its terms and conditions to be more clear and transparent, and we believe it is important that customers take the time to review any changes and adjust their settings to make sure they’re right for them.”

It should be mentioned that while MobileSyrup has been made directly aware of Rogers subscribers expressing concerns, this is not an issue specific to Rogers. It’s a global change that will affect all Yahoo and AOL customers.

Yahoo customers should also be able to opt out of interest-based advertising across the web or specific to Yahoo. They should also be able to opt out of marketing messages, block search personalization, as well as opt out of personalized content.

Source: Globe and Mail

Update 20/04/2018 6:43pm ET: Story updated with comment from Rogers and additional reporting.

The post Rogers email changes cause concerns among subscribers appeared first on MobileSyrup.

21 Apr 01:22

Flickr agrees to be acquired by SmugMug – Q&A

by Matthew Roth

 

As we have announced in this blog post, Flickr has agreed to be acquired by SmugMug. We are very excited by the news and look forward to detailing more specifics as we have them.

After nearly 14 years at Yahoo and Oath, we’re moving to a smaller, more photography-focused family, which we think will be great for Flickr and for you. SmugMug is dedicated to photography and to photographers, and has been since 2002.

Please see below for a Q&A we’ve put together with more specifics on the deal. And feel free to join the discussion on the Flickr Help Forum.

Thanks,
The Flickr Team

What’s going to happen to my Flickr account?
At present, nothing. You will continue to log in with your current credentials and you will have the same Flickr experience you are used to. If things do change in the future, we’ll be as transparent as possible about the process and give you as much notice as we can about the issues that will matter to you.

Will anything happen to my photos or will they be moved?
You’ll still be able to access your photos as you do currently and they’ll retain the same flickr.com URL as always.

Wait, what exactly is SmugMug?
SmugMug is a photography platform dedicated to visual storytellers. SmugMug has a long history of empowering people who love photography and who want to improve their craft, making them a perfect fit for Flickr and our creative community. With SmugMug, photographers can create beautiful portfolios, use a powerful e-commerce platform to sell their photos, preserve their memories, and stand out with great options for showcasing their work.

I got an email saying I have until May 25, 2018 to opt out of SmugMug’s Terms of Service and then my Flickr account will be governed by them. Explain please?
As part of the acquisition, all Flickr accounts will move to SmugMug’s Terms of Service and Privacy Policy. You have until May 25, 2018 to either accept SmugMug’s Terms and Privacy Policy or opt out. If you do nothing in that time, your account will simply transition from the current Yahoo Terms of Service and Privacy Policy to SmugMug’s Terms. If you don’t want to make this change, you can delete your Flickr account through your Account Settings page. If you want to preserve a copy of your photos, be sure to download them from your Camera Roll first!

We encourage you to read SmugMug’s Terms in detail, as you would with any site where you host your photos. It is worth noting that SmugMug has prided itself on having very photographer-friendly terms without some of the standard verbiage and licenses that many platforms grant themselves to use your data in a way that best suits them. This is one of the reasons we’re thrilled to have found a new home at SmugMug.

What are SmugMug’s plans for Flickr? Will the products be merged?
SmugMug loves Flickr and they want us to keep on being Flickr. There is no plan to merge the products. As we spend more time with the SmugMug team, we hope to find ways to coordinate our development work and provide two great destinations dedicated to visual storytellers and creatives.

Will my Flickr Pro subscription change?
You’ll remain a Flickr Pro member and continue to enjoy all the benefits of a Pro membership. We’ve just started offering a 45-day free trial for new Pros who sign up for a yearly subscription. We’re also extending this offer to folks who may have been Pro in the past and want to come back to give it a try. Learn more on our Pro page.

Will Flickr continue to have free accounts?
Yes. When Flickr joins SmugMug on May 25th, we will continue to offer free Flickr accounts.

Do I still have to log in to Flickr with my Yahoo login?
Yes. During our transition process, you will continue to sign in using your existing login credentials. Over time, Flickr’s sign-in will be separated from Yahoo’s and when that happens, you’ll have the ability to choose how you log in.

I actually can’t remember what my login is — can you help me?
If you are unable to log in to your Flickr account, please start by going through the Yahoo Help Page for Flickr and click the “Contact us” link on the lower left. Follow the prompts there to communicate with a Customer Care agent.

I have a SmugMug account — will my accounts be merged?
No, your SmugMug and Flickr accounts will remain separate and independent for the foreseeable future.

When are you going to fix Explore?
Ha! Nice try. You know the first rule of Explore is that we don’t talk about Explore.

Honestly, though, there are numerous parts of Flickr that we plan to improve and SmugMug supports our desire to make your Flickr experience better. Before making any significant changes to the Flickr experience, SmugMug is committed to spending time getting to know the community and listening to your needs. We will share updates as we map out our future together.

What happens to the Flickr staff that we all know and love?
You can’t get rid of us.

How can I keep up to date on the changes?
For any significant changes to your Flickr service, we will send you a service email like the one we’re sending about the Terms of Service and Privacy Policy changes noted above. For other updates, we’ll make announcements in-product, here on the Flickr Blog, in the Flickr Help Forum, and on Twitter.

20 Apr 20:47

The World of *Mageddons

by Ken Ohrn

Most things change, but some never do. It’s time for a (nearly) serious review of the World of *Mageddons™ .  We’re happy to do it, so that you don’t have to, and since few others will call this type of failed prediction what it is:  failed.

What this *mageddon review does illustrate is the difficulty for anyone in public life who makes decisions.  While it’s easy to dream up *mageddon scenarios, it’s much harder to plan, make decisions and commit big resources amid strident choruses of negativity, and amid the usual incomplete information and the fundamentally unknowable nature of the future.

Car-mageddon:  them stinkin’ bike lanes are going to destroy our wonderful city.  No one will be able to get anywhere.  Gridlock.  Commerce grinding to a halt.  The end of civilization as we have known and loved it since 1950.

Well, years later, the city prospers and grows. Mode-share for bikes rises steadily as some people choose a bike ride over a car for at least some of their trips.  And plans for new bike facilities attract shrinking opposition. 

Biz-mageddon: them stinkin’ bike lanes are going to ruin every business on those streets. Nobody can park their cars in front of the door, so revenues will drop and all biz’ will fail.  Ruin and bankruptcy. Families starving on the streets, watching no bikes go by.

Well, just about everywhere that bike lanes go in, businesses improve. It turns out that people on bikes have money to spend, and they shop, and lots of biz comes from people who walk.  Not to mention that these streets often become more pleasant and attractive to shoppers. Even those who arrive by car.

And now, we officially coin yet another *mageddon.

Train-mageddon:  billions wasted on these ridiculous rapid transit lines.  No one will ride these white elephants.  No one will choose a train over a car. Oh yeah, and the technology is all wrong.  And it’s all run by buffoons and prevaricators.  Disaster!  Doom!  Waste!

Well, as soon as they go into operation, Vancouver’s trains quickly attract riders in larger than planned numbers.  Rapid transit becomes a part of many lives and a solid choice for trips of all kinds. Total ridership rises steadily and the system has growing pains.  “If only we’d planned for higher ridership”. 

20 Apr 20:45

LG reportedly having difficult meeting Apple’s supply demand for iPhone LED displays

by Patrick O'Rourke
iPhone X

Apple’s goal of minimizing its reliance on Samsung-manufactured iPhone OLED displays has reportedly hit a snag.

According to a new report from the Wall Street Journal, LG Display’s OLED screens destined for the iPhone production line have run into production problems. The publication is reporting that Apple is questioning whether LG is capable of meeting the required display supply demand as the tech giant’s potential second iPhone OLED screen supplier.

Apple currently utilizes Samsung as its only OLED display supplier for the iPhone X. With multiple versions of the iPhone reportedly on the horizon that feature OLED displays, it makes sense that Apple would be looking to diversify its OLED supply chain.

With the release of the V30, LG returned to using OLED displays in its smartphones. That said, issues with the display’s quality quickly appeared.

LG also supplied the Pixel 2 XL’s display for Google. While some Pixel 2 smartphones reportedly have great displays, others suffer from screen burn-in issues and other quality related defects.

Source: Wall Street Journal

The post LG reportedly having difficult meeting Apple’s supply demand for iPhone LED displays appeared first on MobileSyrup.

20 Apr 20:45

Datasette ClusterMap Plugin – Querying UK Food Standards Agency (FSA) Food Hygiene Ratings Open Data

by Tony Hirst

Earlier today, Simon Willison announced a new feature of in the datasette landscape: plugins. I’ve not had a chance to explore how to go about creating them, but I did have a quick play with the first of them – datasette-cluster-map.

This looks through the columns of a query results table and displays each row that contains latitude an longitude columns as a marker on an interactive leaflet map. Nearby markers are clustered toegther.

So I thought I’d have a play… Assuming you have python installed, on the command line tun the following (omit the comments). The data I’m going to use fo the demo is UK Food Standards Agency (FSA) food hygiene ratings opendata.

# Install the base datasette package
pip install datasette

# Install the cluster map plugin
pip install datasette-cluster-map 

# Get some data - I'm going to grab some Food Standards Agency ratings data
# Install ouseful-datasupply/food_gov_uk downloader
pip install https://github.com/ouseful-datasupply/food_gov_uk.git
# Grab the data into default sqlite db - fsa_ratings_all.db
oi_fsa collect

# Launch datasette
datasette serve fsa_ratings_all.db

This gives me a local URL to view the datasette UI on in a browser (but it didn’t open the page automatically into the browser?). For example: http://127.0.0.1:8001

By default we see a listing of all the tables in the database:

I want the ratings_table:

We can use selectors to query into the table, but I want to write some custom queries and see the maps:

So – what can we look for? How about a peek around Newport on the Isle of Wight, which has an ish postcode of PO30

Looking closely, there doesn’t seem to be any food rated establishments around the Isle of Wight Prisons?

This is a bit odd, because I’ve previously used FSA data as a proxy for trying to find prison locations. Here’s a crude example of that:

So… all good fun, and no coding really required, just glueing stuff together.

Here are some more example queries:

# Search around a postcode district
SELECT BusinessName, BusinessType, RatingValue, AddressLine1, AddressLine2 , AddressLine3, Latitude, Longitude FROM ratingstable WHERE postcode LIKE 'PO30%'


# Crude search for prisons
SELECT BusinessName, BusinessType, RatingValue, AddressLine1, AddressLine2 , AddressLine3, Latitude, Longitude FROM ratingstable WHERE (AddressLine1 LIKE '%prison%' COLLATE NOCASE OR BusinessName LIKE '%prison%' COLLATE NOCASE OR AddressLine1 LIKE '%HMP%' COLLATE NOCASE OR BusinessName LIKE '%HMP%' COLLATE NOCASE)

# Can we find Amazon distribuion centres?
SELECT BusinessName, BusinessType, RatingValue, AddressLine1, AddressLine2 , AddressLine3, Latitude, Longitude FROM ratingstable WHERE AddressLine1 LIKE 'Amazon%' OR BusinessName LIKE 'Amazon%'

# How about distribution centres in general?
SELECT BusinessName, BusinessType, RatingValue, AddressLine1, AddressLine2 , AddressLine3, Latitude, Longitude FROM ratingstable WHERE AddressLine1 like '%distribution%' COLLATE NOCASE  or BusinessName LIKE '%distribution%' COLLATE NOCASE

# Another handy tick is to get your eye in to queryable things by looking at where
#  contract catering businesses ply their trade. For example, Compass
SELECT BusinessName, BusinessType, RatingValue, AddressLine1, AddressLine2 , AddressLine3, Latitude, Longitude FROM ratingstable WHERE AddressLine1 LIKE '%compass%' COLLATE NOCASE  OR BusinessName LIKE '%compass%' COLLATE NOCASE

One thing I could do is share the database via an online UI. datasette makes this easy – datasette publish heroku fsa_ratings_all.db` would do the trick if you have Heroku credentials handy, but I’ve already trashed my monthly Heroku credits…