Rolandt
Shared posts
Getting started
5 Tips For Choosing The Right Open Source Code
Jonathan Saring,
ReadWrite,
Jun 11, 2017
Ignore for the moment the fact that this article is about open source code, and pretend it's about open educational resources or something similar. The advice it give becomes spot-on. For example, is it readable? "Readability can be good naming conventions for identifiers, good spacing, clear readable logic, well-understood scopes." Exactly. Is the resource actively maintained? Is it well-tested? Are other people using it? And is it documented? "Documentation makes [resources] much easier to understand, use and modify. It’s also a great indication for the thought and carefulness the developer who wrote the [resource] put into it."
[Link] [Comment]
Words growing or shrinking in Hacker News titles: a tidy analysis
In May, some friends and I built Tagger News, a real-time automatic classifier of Hacker News articles based on their text (see here for more about how we built it). This process started me down some interesting paths, particularly analyzing trends in titles. By finding words that became more or less common in Hacker News titles over time, we can see what topics were gaining or losing interest in the tech world.
I thought I’d share some of these analyses here. As with most of my text analysis posts, I’ll be analyzing it with the tidytext package written by me and Julia Silge. (Check out our soon-to-be-released book on the subject, Text Mining with R!)
Processing one million Hacker News articles
The titles (and dates, and links) of Hacker News articles are helpfully stored on Google Bigquery. We start with a dataset of a million Hacker News article titles, which covers about 3 and a half years of posts. I downloaded it on 2017-06-04 with the following query:
SELECT id, score, time, title, url FROM [bigquery-public-data:hacker_news.full]
WHERE deleted IS null AND dead IS null AND type = 'story'
ORDER BY time DESC
LIMIT 1000000
I’m hosting the dataset so that you can read it yourself (note that it’s a moderately large and compressed file so it may take a minute to read) as follows:
library(tidyverse)
library(lubridate)
stories <- read_csv("http://varianceexplained.org/files/stories_1000000.csv.gz") %>%
mutate(time = as.POSIXct(time, origin = "1970-01-01"),
month = round_date(time, "month"))Whenever we read in a text dataset, the first step is usually to tokenize it (split it up into words) and remove stopwords (like “the” or “and”). As described here, we can do this with tidytext’s unnest_tokens function.
library(tidyverse)
library(tidytext)
library(stringr)
title_words <- stories %>%
arrange(desc(score)) %>%
distinct(title, .keep_all = TRUE) %>%
unnest_tokens(word, title, drop = FALSE) %>%
distinct(id, word, .keep_all = TRUE) %>%
anti_join(stop_words, by = "word") %>%
filter(str_detect(word, "[^\\d]")) %>%
group_by(word) %>%
mutate(word_total = n()) %>%
ungroup()This creates a pretty large data frame (4443083 rows) with one row per word per post. For example, we could use this to find and visualize the most common words in Hacker News posts during this 3.5 year period.
word_counts <- title_words %>%
count(word, sort = TRUE)word_counts %>%
head(25) %>%
mutate(word = reorder(word, n)) %>%
ggplot(aes(word, n)) +
geom_col(fill = "lightblue") +
scale_y_continuous(labels = comma_format()) +
coord_flip() +
labs(title = "Most common words in Hacker News titles",
subtitle = "Among the last million stories; stop words removed",
y = "# of uses")
The top result, “hn”, comes from the common constructions of “Show HN” and “Ask HN”, which are often prepended to a title. Among the other words, there’s nothing we wouldn’t have expected from following Hacker News. There some notable technology companies like Google, Apple, and Facebook, along with common topics in tech discussions like “app”, “data” and “startup”.
Change over time
What words and topics have become more frequent, or less frequent, over time? These could give us a sense of the changing technology ecosystem, and let us predict what topics will continue to grow in relevance.
To achieve this, we’ll first count the occurrences of words in titles by month.
stories_per_month <- stories %>%
group_by(month) %>%
summarize(month_total = n())
word_month_counts <- title_words %>%
filter(word_total >= 1000) %>%
count(word, month) %>%
complete(word, month, fill = list(n = 0)) %>%
inner_join(stories_per_month, by = "month") %>%
mutate(percent = n / month_total) %>%
mutate(year = year(month) + yday(month) / 365)
word_month_counts## # A tibble: 33,480 x 6
## word month n month_total percent year
## <chr> <dttm> <dbl> <int> <dbl> <dbl>
## 1 2.0 2013-10-01 42 20542 0.002044592 2013.751
## 2 2.0 2013-11-01 55 23402 0.002350226 2013.836
## 3 2.0 2013-12-01 26 21945 0.001184780 2013.918
## 4 2.0 2014-01-01 25 19186 0.001303033 2014.003
## 5 2.0 2014-02-01 31 22295 0.001390446 2014.088
## 6 2.0 2014-03-01 37 21118 0.001752060 2014.164
## 7 2.0 2014-04-01 33 23673 0.001393993 2014.249
## 8 2.0 2014-05-01 28 21394 0.001308778 2014.332
## 9 2.0 2014-06-01 47 19265 0.002439657 2014.416
## 10 2.0 2014-07-01 25 19829 0.001260780 2014.499
## # ... with 33,470 more rowsWe can then use my broom package to fit a model (logistic regression) to examine whether the frequency of each word is increasing or decreasing over time. Every term will then have a growth rate (as an exponential term) associated with it.
library(broom)
mod <- ~ glm(cbind(n, month_total - n) ~ year, ., family = "binomial")
slopes <- word_month_counts %>%
nest(-word) %>%
mutate(model = map(data, mod)) %>%
unnest(map(model, tidy)) %>%
filter(term == "year") %>%
arrange(desc(estimate))
slopes## # A tibble: 744 x 6
## word term estimate std.error statistic p.value
## <chr> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 trump year 1.7570144 0.04052662 43.35458 0.000000e+00
## 2 ai year 0.7830541 0.01756776 44.57335 0.000000e+00
## 3 blockchain year 0.6557110 0.02682345 24.44544 5.626574e-132
## 4 neural year 0.6270933 0.02617919 23.95388 8.418336e-127
## 5 react year 0.6027489 0.01628292 37.01725 6.045233e-300
## 6 vr year 0.5260498 0.02247906 23.40177 4.099556e-121
## 7 bot year 0.5178669 0.02600166 19.91669 2.916460e-88
## 8 iot year 0.5076088 0.02514613 20.18636 1.290270e-90
## 9 microservices year 0.4933223 0.03180060 15.51299 2.833910e-54
## 10 slack year 0.4718030 0.02287605 20.62432 1.660491e-94
## # ... with 734 more rowsWe can now ask: what terms have been increasing in frequency in Hacker News titles?

It makes sense that “Trump” is the word that’s growing most quickly. While it shows a moderate growth after Trump announced his candidacy in mid-2015, it shows a sharp increase around the time of the 2016 election (though it hasn’t been quite as dominant in the months since his inauguration). The next fastest growing terms include “AI” and “blockchain”, both topics that have shown a recent surge of interest. (We can also see “machine learning”, “AWS”, and “bot” among the growing terms).
What words have been decreasing in frequency in Hacker News titles?

This shows a few topics in which interest has died out since 2013, including Google Glass and Gmail. Discussion of Edward Snowden and the NSA was fresh news around 2013-2014, so it makes sense that it’s declined since. There are also some notable technologies that people write about less, such as AngularJS, HTML5, and Ruby on Rails. It’s interesting to compare these to Stack Overflow Trends during that time period, in which AngularJS has been growing in terms of Stack Overflow questions asked (HTML5 and Rails have leveled off). It’s possible that discussion on HN is a “leading indicator”, showing a surge articles when a technology first gets popular.
(I don’t currently have a guess for why “million” and “billion” had sudden dropoffs in 2014. Is it some artifact of the Hacker News policy, with the word becoming edited or deleted in newer posts? Or is it a real change in what the site discusses?)
Interestingly, the conversation around “bitcoin” peaked around 2013-2014 (with a recent uptick due to a surge in Bitcoin’s price), while discussion of the blockchain has been growing in the years since. Comparing them on the same axes makes in clear that the blockchain has roughly “caught up to” bitcoin in terms of general interest:

Words that passed their peak
We can learn a lot by examining words , but we’re misses an important piece of the puzzle: there are some words that grew in interest for part of this time, then “passed their peak.” This is more complicated to explore quantitatively, but one approach is to find words where the ratio of the peak in the trend to the average is especially high. To reduce the effect of random noise, we use a cubic spline to smooth each trend before determining the peak.
library(splines)
mod2 <- ~ glm(cbind(n, month_total - n) ~ ns(year, 4), ., family = "binomial")
# Fit a cubic spline to each shape
spline_predictions <- word_month_counts %>%
mutate(year = as.integer(as.Date(month)) / 365) %>%
nest(-word) %>%
mutate(model = map(data, mod2)) %>%
unnest(map2(model, data, augment, type.predict = "response"))
# Find the terms with the highest peak / average ratio
peak_per_month <- spline_predictions %>%
group_by(word) %>%
mutate(average = mean(.fitted)) %>%
top_n(1, .fitted) %>%
ungroup() %>%
mutate(ratio = .fitted / average) %>%
filter(month != min(month), month != max(month)) %>%
top_n(16, ratio)Here are 16 terms that had strong peaks at various point in the last 3.5 years.
peak_per_month %>%
select(word, peak = month) %>%
inner_join(spline_predictions, by = "word") %>%
mutate(word = reorder(word, peak)) %>%
ggplot(aes(month, percent)) +
geom_line(aes(color = word), show.legend = FALSE) +
geom_line(aes(y = .fitted), lty = 2) +
facet_wrap(~ word, scales = "free_y") +
scale_y_continuous(labels = percent_format()) +
expand_limits(y = 0) +
labs(x = "Year",
y = "Percent of titles containing this term",
title = "16 words that peaked then declined in Hacker News titles",
subtitle = "Spline fit (df = 4) shown.\nSelected based on the peak of the spline divided by the overall average; ordered by peak month.")
We can see a peak of discussion around net neutrality in 2015 (though it’s shown a recent resurgence of interest). You can spot the introduction of Swift and the Apple Watch, then a moderate decline in discussion around them, and there are sudden jolts of discussion around Oculus in 2014 (with Facebook’s purchase of the company) and the FBI in 2016 (news around Clinton’s email server). The graph suggests the discussion around Slack, bots, Tesla, and virtual reality may have leveled off (though in some cases it may be too early to tell).
What’s next
I have some more analyses of Hacker News posts I’ll be sharing in the future, including analyses of word correlations, examination of what words and topics tend to get upvoted, and some improvements on the Tagger News classification algorithm. The series will also give me the chance to highlight more techniques from Text Mining with R, including word networks and topic modeling.
Metrolinx is looking for a partner to bring Wi-Fi to GO Transit vehicles

Your daily commute could soon come with a side of free internet.
In a public expression of interest, Metrolinx has officially put forth a request for a partner that will help the transit company bring Wi-Fi to its trains and buses.
“Metrolinx knows that Wi-Fi is a top priority for customers, and we’re currently investigating the potential of providing this complimentary service and whether it is feasible to make available on GO Trains and GO Buses,” said Alex Burke, senior advisor for media relations and issues at Metrolinx, in an email statement.
Metrolinx hopes to find a partner that will be able to provide a “fully managed turnkey Customer Wireless Internet” for GO Transit customers.
Any groups interested in a potential partnership have until June 22nd, 2017 to respond.
Once the deadline passes, Metrolinx expects that the contract will be awarded “later this year.”
Free Wi-Fi is currently available at almost all GO stations and bus terminals, as well as Union-Pearson Express trains.
Source: Metrolinx
The post Metrolinx is looking for a partner to bring Wi-Fi to GO Transit vehicles appeared first on MobileSyrup.
@stoweboyd
Amazon has 45,000 robots across 20 fulfillment centers, a 50% jump from a year ago https://t.co/jQdAPRpIkP
— Stowe Boyd (@stoweboyd) June 7, 2017
New Project: Digitizing Higher Education
In fall, I’ll be running a course on edX with a few colleagues on Digitizing Higher Education. This course is part of a larger initiative that I’ll be rolling out later this month focused on helping universities transition into digital systems: University Networks.
Here’s the pitch:
Higher education faces tremendous change pressure and the resulting structures that are now being formed will alter the role of universities in society for the next several generations. The best time to change systems is when it is already experiencing change. A growing number of consulting agencies and service providers are starting to enter the higher education space, bringing visions that are not tightly focused on learner development and service to knowledge advancement in research domains – i.e. a shift to utilitarian views of education. I’m concerned that in the process, universities will lose control over their enterprise and will become some version of corporate lite.
I recognize that universities need to change. They need to start with a basic question: If we were to create a model of higher education today that serves the needs of learners and society, what would it look like given our networked and technologically infused society? . The answer is not pre-existing. It’s something that we need to explore together. Societies and regions that make this change will benefit from increased employment opportunities for citizens, higher quality of life, and greater control over their future.
The project, University Networks, involves working with a small number of universities, or specific faculties and departments, that are committed to rethinking and redesigning how they operate. My goal is to bring on 30 universities and over a period of 4 years, rethink and redesign university operations to align with the modern information and knowledge ecosystem. The intent is to impact 1 million learners over the next four years through offering innovative teaching and learning opportunities, utilizing effective learning analytics models, integrating learning across all spaces of life, and creating a digital and networked mindset to organization operations.
A few details:
- This is a cohort model where universities learn from each other and share those resources and practices that can be shared – for example, shared curriculum and shared quality rubrics. The cohort model enables more rapid change since the investments of all universities in the network will increase the value of the resources for everyone.
- We provide centralized consultancy (this is a non-profit) where we enter a university for two weeks of in-depth analysis of existing practices and work with leadership to plan future investments and goals. Once this analysis is done, each university will enter one of ten modules based on their current progress. For example, a university without an LMS will enter module one whereas a university with advanced infrastructure but looking to develop online programs will enter at module four.
- The shared consultancy and cohort model results in universities working with a fraction of the investment needed in working with a traditional corporation or consultancy firm. Clearly enabling partners will be needed and we’ll support and advise in that area as well. Our focus, however, is on rapid innovation owned and controlled by the university.
- My motivation for this is twofold: 1. to serve the advancement of science through modern universities that reflect the information age and the changing economy. 2. to actively research systemic transformation in higher education.
- As partners in university innovation, we (through Interlab) have deep expertise in machine learning, systemic innovation, networked learning, online learning, and digitization of organizations. More on our group here: http://interlab.me/collaboration/. What does this mean? Basically that we are committed to repositioning higher education for the modern era and that we have the skillsets to deliver on that commitment.
-
John Galvin (Intel)
Dror Ben-Naim (Smart Sparrow)
Katy Borner (Indiana University)
Al Essa (McGraw-Hill)
Casey Green (Campus Computing Project)
Sally Johnstone (NCHEMS)
Mark Milliron (Civitas)
Catherine Ngugi (Open Education Africa)
Deborah Quazzo (GSV Advisors)
Matt Sigelman (Burning Glass)
If you are interested in learning more, please email me: contact me. We are hosting an information event on June 30. We’ll provide more information at that time about the project, getting involved, and our expectation of university partners.
We have an excellent advisory board directing this project:
Why Old-Timey Jobs Are Hot Again | Lauren Weber
In his new book “Masters of Craft: Old Jobs in the New Urban Economy,” Mr. [Richard] Ocejo examines the forces driving a resurgence of occupations such as butcher and bartender among young middle-class urbanites. A similar dynamic is at work with a handful of other jobs, including craft brewer, bookbinder, furniture maker and fishmonger.
The Labor Department projects that between 2014 and 2024 the number of bartenders and barbers in the U.S. will grow 10%, while butchers will see a 5% increase, compared with a 7% job growth for all occupations over the same period. Median pay for these jobs was less than $30,000 a year in 2016.
Millennials are drawn to these occupations, in part, as a reaction to “the ephemerality of the digital age,” says Mr. Ocejo, a sociology professor at John Jay College of Criminal Justice and the City University of New York Graduate Center.
Distinct from many of today’s most vaunted jobs in fields like information technology and financial services, these trades “are based in using your hands, with actual tools and materials, to provide a tangible concrete product,” he says.
To attract young people with college degrees and other options in the labor market, jobs usually have an element of performance to them, Mr. Ocejo says. In most of the careers he studied for “Masters of Craft,” workers interact closely with customers, often in a public setting where their skill and knowledge can be admired. That’s why some manual positions like electrician and plumber are unlikely to experience the same “revalorization,” he says.
And these jobs – like the plumbers and electricians – may be safe longer from the predations of ai and robots.
Using mozregression on Windows
I already blogged about using mozregression in a terminal for Linux/Mac users so this is a follow-up post with specific instructions presented as a video tutorial for Windows users.
If you are a Windows user and want to help chasing regressions in Firefox, you don’t have to install the command line version of mozregression and work from a terminal (which is currently complicated on this OS even if the use of Bash in Windows 10 is now possible), we also provide a version of mozregression for Windows with a graphical user interface.
You can download mozregression from our GitHub repository, the Windows version is called mozregression-gui.exe, it packages everything needed for mozregression to work on Windows, including Python.
Here is a short video tutorial to help you gettting started with mozregression on Windows (which I hope is understandable despite my thick French accent):
If you want to search for regressions already reported by our community and which could benefit from a regression range search, have a look at bugs already filed in Bugzilla with the regressionwindow-wanted keyword.
Let’s build a solid Firefox together!
Test Ownership
When a bug for an intermittent test failure needs attention, who should be contacted? Who is responsible for fixing that bug? For as long as I have been at Mozilla, I have heard people ask variations of this question, and I have never heard a clear answer.
There are at least two problematic approaches that are sometimes suggested:
- The test author: Many test authors are no longer active contributors. Even if they are still active at Mozilla, they may not have modified the test or worked on the associated project for years. Also, making test authors responsible for their tests in perpetuity may dissuade many contributors from writing tests at all!
- The last person to modify the test: Many failing tests have been modified recently, so the last person to modify the test may be well-informed about the test and may be in the best position to fix it. But recent changes may be trivial and tangential to the test. And if the test hasn’t been modified recently, this option may revert to the test author, or someone else who isn’t actively working in the area or is no longer familiar with the code.
There are at least two seemingly viable approaches:
- “You broke it, you fix it”: The person who authored the changeset that initiated the intermittent test failure must fix the intermittent test failure, or back out their change.
- The module owner for the module associated with the test is responsible for the test and must find someone to fix the intermittent test failure, or disable the test.
Let’s have a closer look at these options.
The “you broke it, you fix it” model is appealing because it is a continuation of a principle we accept whenever we check in code: If your change immediately breaks tests or is otherwise obviously faulty, you expect to have your change backed out unless you can provide an immediate fix. If your change causes an intermittent failure, why should it be treated differently? The sheriffs might not immediately associate the intermittent failure with your change, but with time, most frequent intermittent failures can be traced back to the associated changeset, by repeating the test on a range of changesets. Once this relationship between changeset and failure is determined, the changeset needs to be fixed or backed out.
A problem with “you broke it, you fix it” is that it is sometimes difficult and/or time-consuming to find the changeset that started the intermittent. The less frequent the intermittent, the more tests need to be backfilled and repeated before a statistically significant number of test passes can be accepted as evidence that the test is passing reliably. That takes time, test resources, etc.
Sometimes, even when that changeset is identified, it’s hard to see a connection between the change and the failing test. Was the test always faulty, but just happened to pass until a patch modified the timing or memory layout or something like that? That’s a possibility that always comes to mind when the connection between changeset and failing test is less than obvious.
Finally, if the changeset author is not invested in the test, or not familiar with the importance of the test, they may be more inclined to simply skip the test or mark it as failing.
The “module owner” approach is appealing because it reinforces the Mozilla module owner system: Tests are just code, and the code belongs to a module with a responsible owner. Practically, ‘mach file-info bugzilla-component <test-path>’ can quickly determine the bugzilla component, and nearly all bugzilla components now have triage owners (who are hopefully approved by the module owner and knowledgeable about the module).
Module and triage owners ought to be more familiar with the failing test and the features under test than others, especially people who normally work on other modules. They may have a greater interest in properly fixing a test than someone who has only come to the test because their changeset triggered an intermittent failure.
Also, intermittent failures are often indicative of faulty tests: A “good” test passes when the feature under test is working, and it fails when the feature is broken. An intermittently failing test suggests the test is not reliable, so the test’s module owner should be ultimately responsible for improving the test. (But sometimes the feature under test is unreliable, or is made unreliable by a fault in another feature or module.)
A risk I see with the module owner approach is that it potentially shifts responsibility away from those who are introducing problems: If my patch is good enough to avoid immediate backout, any intermittent test failures I cause in other people’s modules is no longer my concern.
As part of the Stockwell project, :jmaher and I have been using a hybrid approach to find developers to work on frequent intermittent test failure bugs. We regularly triage, using tools like OrangeFactor to identify the most troublesome intermittent failures and then try to find someone to work on those bugs. I often use a procedure like this:
- Does hg history show the test was modified just before it started failing? Ping the author of the patch that updated the test.
- Can I retrigger the test a reasonable number of times to track down the changeset associated with the start of the failures? Ping the changeset author.
- Does hg history indicate significant recent changes to the test by one person? Ask that person if they will look at the test, since they are familiar with it.
- If all else fails, ping the triage owner.
This triage procedure has been a great learning experience for me, and I think it has helped move lots of bugs toward resolution sooner, reducing the number of intermittent failures we all need to deal with, but this doesn’t seem like a sustainable mode of operation. Retriggering to find the regression can be especially time consuming and is sometimes not successful. We sometimes have 50 or more frequent intermittent failure bugs to deal with, we have limited time for triage, and while we are bisecting, the test is failing.
I’d much prefer a simple way of determining an owner for problematic intermittents…but I wonder if that’s realistic. While I am frustrated by the times I’ve tracked down a regressing changeset only to find that the author feels they are not responsible, I have also been delighted to find changeset authors who seem to immediately see the problem with their patch. Test authors sometimes step up with genuine concern for “their” test. And triage owners sometimes know, for instance, that a feature is obsolete and the test should be disabled. So there seems to be some value in all these approaches to finding an owner for intermittent failures…and none of the options are perfect.
When a bug for an intermittent test failure needs attention, who should be contacted? Who is responsible for fixing that bug? Sorry, no clear answer here either! Do you have a better answer? Let me know!
Travelling the Algarve with a Toddler and a Baby
The beach a short walk from our resort in Portimao
We spent a total of 9 days in the Algarve. 4 at a resort in between Portimao and Alvor and 5 in a sleepy town called Salema. We spent our days switching between the beach and the pool with a little nearby town exploring thrown in. We chose to rent a car and drive from Lisbon so we could make day trips. Though Lisbon was fascinating and exciting, as a family with small kids, slowing down at the beach was relaxing and almost a vacation ;) (Link to Lisbon travels Here).
We took the tolled highways which are smooth and mostly empty. Our (very) compact car was rented from a Portugese company called Amoita because their car seat rental rates were significantly cheaper than the larger rental companies. We found them to have exceptional customer service and were happy with the ease of the rental process. [I should note that Portugese safety regulations do not require babies to be facing backwards. So Mae faced forwards for our trip. Mae is quite tall and big for her age so we were comfortable with her facing forwards but I know other parents might take issue with this so wanted to mention it.]
We seemed to still be on the shoulder season of the Algarve. Most of the places we stayed were half empty and we never lined up for anything, anywhere. It was a really nice way to travel especially when there were never more than 20 people on any given beach. Theo could run for a mile on the beach and we could still see him and not worry.
Lagos
We took two day trips to Lagos that was about half way between our two different rentals. It is a beautiful town with lots of charm. I had the impression it was touristy but found it to have plenty of local character. It's also where I fell in love with Casa Mae, the boutique hotel of my dreams. If I was to do the trip all over again I would stay there for at least a few days (ideally sans kids). It was incredibly beautiful with handmade details to discover for days, but Trevor spent most of our time there preventing Theo from knocking over the Flos lights or jumping on the custom upholstered white sofas. The tour we were offered of the space by one of the designers Ruben, was a true highlight of our trip. Also their coffee was the BEST in Portugal by Copenhagen Coffee Lab.
To Eat
We had one of our best meals at Calhou in Lagos (recommended through Ana on Instagram, thank you!) outside of the more popular tourist area. Most meals in Portugal start with Couvert which is usually marinated olives, bread, butter and sometimes these amazing cumin dusted marinated carrots, and fish pate. You can decline Couvert, but we loved it and ordered it even when they didn't just bring it to the table. In the Algarve, fresh grilled fish is the most popular order. A few other notable things we ate were "Cataplana" a tomato based seafood stew that is incredible and keeps you full for two meals. Theo basically lived off of "Batatas Fritas" (french fries) and fish sticks and fresh orange juice. Mae has 8 teeth already so she ate much of the food off of our plates and Theo's.
Another gem of a restaurant in Sagres was Adega Dos Arcos. We had a wonderful meal here and it was also one of the most affordable meals of our trip. We still ate a lot of pastries and croissants, oh and Natas but the Natas on the coast never compared to Lisbon.
We were also regulars at a beach side bar near our resort (Canico), with an elevator that felt like a secret and was built into the rocky cliff and a patio that was a few feet from the ocean. Upstairs was a Michelin rated restaurant we couldn't afford but the bar below served coffee and drinks and fresh lunch that suited us just fine. We made sure to try a Brandy and coffee as the Brandy is made locally. But mostly we drank Rose.
Crewcuts Swimsuit and Rain People Bonnet
Portimao
We stayed at a resort called Prainha Clube where we had a 1 bedroom with a kitchen. It's the closest we have ever come to an all-inclusive (there was nothing included) because the property had everything we needed so we didn't have to leave. The accommodations were comfortable but sparse (ex. you have to pay for an extra bath towel, no beach towels provided etc.) but the grounds were stunning. It was a short walk through grassy fields, down beautiful steep rocky steps to an essentially private beach (also where our beach bar was). The beach was full of rock formations and caves right off of a postcard. Back at the resort, there was a small wading pool (and all important for pale gals like me...beach umbrellas) that was perfect for Theo. The other restaurants onsite are best avoided, but we brought groceries from the Jumbo in Portimao so we cooked more often than not. Even though there were some things that bothered us about this resort, I would actually stay here again, especially with a group of friends or family because of the beautiful grounds and stunning beaches.
We went into the small fishing village of Alvor for dinner one night and left it at that.
Oh I feel like I should mention. All of our rentals in Portugal had a kitchen and most had a washing machine. But none of the locations included dish soap, a sponge or laundry detergent. But we were responsible for cleaning the kitchen. I found this so weird, so we would use body wash or sometimes buy soap or laundry detergent. I wish we had brought travel sized soap and detergent with us, to avoid buying and leaving behind so much soap.
the view from our townhouse in Salema
Salema
Our townhouse in Salema (Salema Beach Village) was very modern and comfortable. It certainly wasn't an authentic experience but the pool was great and the service very welcoming. They upgraded us to an ocean view which was a real treat considering that with kids we are often at our accommodations more than we would be if we were alone. The town of Salema we could have skipped, though we did have some wonderful meals there without the tourist prices of nearby Lagos or Alvor. Also there were quite a few young families staying here so Theo always had a friend to play with at the pool which was nice for him and for us.
Walking to dinner on Mother's Day. No where I'd rather be.
Sitting at the end of the world (well Europe) and all he cares about is his strawberry popsicle
Cape St Vincent
Cape St Vincent, a few minutes drive from Sagres was at one time believed to be the end of the world but is in fact the southern most point of Portugal. It is quite stunning to see in person and a bit nerve wracking as there aren't many barriers to the cliffs . This was definitely a benefit of having a car (though Mae fell asleep both times we drove there). Theo and I spent an hour wandering the grounds which was nice for me and I got him a strawberry popsicle so he was thrilled.
Board rental and a pink shorty wetsuit in Sagres (the water is cold!)
Beach at Sagres that Theo and Trevor surfed at and I hung out with Mae and made sure she didn't eat too much sand
Sagres
Most of what I read online about Sagres is that it was a sleepy town with not much to offer. I would completely disagree. We found it to be a lovely surf town with good food and cute coffee shops. We would have been happy to stay there, luckily we were only a 15 minute drive away so spent most of our time in Salema actually in Sagres. A car was useful as we drove to different beaches with our rented surfboard. The surf was accessible and the beaches sandy with the signature rocky cliffs and wildflowers we had come to expect from the Algarve. The water was still really cold in May so most people wore wetsuits. We found a used one for Theo at a friendly surf shop which came in handy for wave jumping and his first attempts at surfing.
Tavira
On our way to the Faro airport we spent a few hours in the beautiful eastern town of Tavira. We mostly wandered and picked up gourmet gifts for friends and family (canned fish and salts at this friendly shop). I could have spent more time here as every corner seemed to have a prettier tiled building or trailing flowering vine. It made for a long travel day and we dealt with some meltdowns in London when our flight landed in the evening but it was worth it to see one last beautiful town in the Algarve.
I had a great question about packing food for Mae that I can respond to here: We only brought one bottle for her (her ComoTomo, the best baby bottle we've ever used) and a double ziploc of formula. An important detail that a friend who just travelled to Italy learned the hard way and kindly passed on her knowledge to me (hey Allie!) is that European bottled water often contains sodium. You need to look for bottled water that has a symbol on it of a baby or mother and baby. This is low sodium water that is safe for babies to drink (the other water can cause vomiting etc...). We were careful to buy the right water and we still boiled water for her formula when we had the time. In addition, we brought 12 Lovechild pouches for plane rides and emergencies. We also purchased Portuguese brand fruit purees to supplement her eating and she loved them. Like a reader kindly mentioned when I was planning for the trip. Anything you need you can find in Portugal and for a reasonable price.
Wandering Tavira
The slow pace and beautiful beaches of the Algarve were a perfect family escape for us. We were able to accommodate the kid's needs and wants but still experience some local culture and natural beauty.
[nothing on this post (or any post unless noted) is sponsored. I just shared links to our accommodations and restaurants in case you are planning a similar trip and looking for ideas. It would be a dream to have a vacation sponsored one day :)]
22 arrested in theft and sale of iPhone users’ personal data
Police in east China’s Cangnan county recently arrested 22 people on suspicion of stealing and selling iPhone users’ personal information online, bringing public attention once again to the country’s rampant personal information leaks (in Chinese).
Among the 22 suspects, 20 are employees at Apple’s local direct-sales and outsourcing companies. These people took advantage of Apple’s internal system platform to illegally access iPhone users’ data including their phone numbers, names and Apple IDs. It is reported that they sold each piece of the information for RMB 10 to RMB 180, with the total amount of money involved in the case topping RMB 50 million.
It remains unknown how many Apple users’ personal data have been stolen, and the case is pending further investigation.
What is the use of stealing iPhone users’ information? In a case cracked last May by Jiangsu police, stolen Apple IDs were found to be used by criminals to top up their online game accounts and ransom blocked phones.
Although an IMEI number is printed on the packaging box of an iPhone, criminals can do nothing unless they get assistance from moles who have access to Apple’s internal platform to acquire users’ Apple ID registration information after inputting the IMEI number. In a similar personal information theft case in Anhui province last year, the mole was a staff member of a customer service company outsourced by Apple.
Police warned that any illegal acquisition, sale or provision of 50 and above pieces of information pertaining to personal whereabouts, communication content, credit and property shall constitute a crime, starting June 1, 2017. And for those who work in financial, telecommunications and medical care sectors, 25 pieces of information leak will be considered a crime if they leak out personal information for personal benefits (in Chinese).
Driven by money, the theft and sale of personal data has become a ‘black industry chain’ in China. In 2016 alone, Chinese police across the nation busted more than 2,000 personal data theft operations, capturing over 5,000 suspects. Of the total, as many as 450 were internal staff working for banks, education institutions, telecommunications, couriers, securities, and e-commerce firms. They use their position to illegally collect customer information and sell the information for profits.
Apart from these moles, information is also stolen by hackers using technical means, or collected under the guise of job recruitment, sending gifts, and links to fake websites, among others.
A report by the Internet Society of China revealed personal information leaks caused an economic loss of RMB 91.5 billion to those victims last year (in Chinese). In the first quarter of this year, the number of calls marked up as crank ones rose by 65.8% from a year earlier, according to Chinese internet security firm Qihoo 360. Crank and fraud calls have been increasingly threatening cellphone users’ security.
Experts say iPhones users currently don’t have to worry about the information theft of their bank cards linked to their Apple IDs because the moles can only obtain data of users’ phone number or mailbox tied to their Apple IDs. But they suggest Apple users set up two-step verification for their Apple IDs to enhance account security protection (in Chinese).
Apple recently released a new policy specifying that beginning on June 15, app-specific passwords will be required to access your iCloud data using third-party apps such as Microsoft Outlook, Mozilla Thunderbird, or other mail, contacts and calendar services not provided by Apple.”
Educating Community Members
Better educated members make better customers. But, educating members is extremely hard.
Most don’t have the time to be educated beyond a useful tidbit or answer to their problem. Others don’t have the motivation. (A few might already consider themselves experts).
The challenge isn’t sourcing the knowledge in the first place. It’s easy to find experts and useful solutions in almost any field. The challenge is turning the knowledge into a format the audience can digest.
You can spend weeks on a comprehensive resource which only a tiny percentage of the audience sees.
For example, we wanted members to be better informed about community platforms available.
We can do this via:
- Replying to discussions about the topic.
- Writing short blog posts.
- Highlighting digestible tips each month.
- Developing a series of autoresponder emails.
- Having a live chat with implementation experts.
- Hosting a webinar going through each of the big platforms.
- Creating a wiki/eBook.
- Developing a video training series.
- Building an entire training course.
- Hosting a conference about community platforms.
You will notice the steadily rising level of commitment (and probably smaller audience) at each step. You have to decide which level your new knowledge should live.
The temptation is to go from the easiest, simplest, level through to the more intense. I’ve repeatedly found the opposite works better. Begin with something which requires a lot of commitment and make it exclusive. Perhaps a free training course, but only available to community veterans (scarcity overcomes the motivation problem).
Then turn the training course into a series of short videos followed by a webinar on the topic, a monthly ‘top tips’ on the topic shared by the community, and respond personally. As more people pick up the key elements, they become more likely to reply to other discussions.
If it’s a really big topic, you will also need to change the structure of the community so discussions on the topic appear in a prominent place (ideally above the fold on the homepage). This makes it far more likely the knowledge will spread.
Dear Wirecutter: What’s the Best Radio for Retirees?
Q: I am looking for a speaker or radio around $150 that my 86-year-old grandmother can use. I would love to have an SD card slot wherein I can load some of her favorite tunes, but I fear that might be too complex. It needs to be self-contained with a simple interface, preferably with only a few buttons.
A: If your grandmother has Wi-Fi in her house, I’d suggest a Google Home speaker. Technically it isn’t a radio, but it can receive most radio stations via TuneIn over a Wi-Fi network. Because it’s voice controlled, it has no real interface at all (you can control the volume by sliding your finger around the top, but it’s just as easy to say “Turn down the music”).
While you won’t find an SD or USB slot for adding music, you can add her music for free to a Google Play Music account. If she doesn’t have a Google account, you can easily set one up for her. Then all she has to do is ask the speaker to play her songs, and the Google Home will find the ones she wants to listen to. While we generally prefer the Amazon Echo speaker, I’m going to take a wild guess and assume your grandmother doesn’t need all the smart-home features we like about the Echo and Alexa, plus the Home is a bit cheaper.
If she doesn’t have Wi-Fi, your problem is a little more complicated. Several Wirecutter editors own Tivoli Model One radios. They sound great, look good, and use a very basic (even retro) tuning dial that’s easy to use. Unfortunately, the Tivoli doesn’t offer a way to add your grandmother’s music. If she happens to have a smartphone, you might get her the Bluetooth version so that she can stream her music, but that may be adding too much complexity.
Want a sneak peek at what we're working on?
A weekly roundup of new guides, picks, and a preview of what’s to come.
The Wirecutter’s editors answer reader questions all the time (much more than once a week). Send an email to notes@thewirecutter.com, or talk to us on Twitter and Facebook. Published questions are edited for space and clarity.
New OnePlus 5 Teaser Image Confirms Dual Camera Setup and iPhone 7-like Design
Ahead of its official unveiling on June 20 later this month, OnePlus today teased the dual camera setup of the OnePlus 5 and even gave a glimpse of its design.
Continue reading →
Alexander Street – unit block

We’re looking east along Alexander with our back to Maple Tree Square. Our image is undated, but that’s a 1980 VW Golf on the right, so initially we estimated this was probably shot around 30 years ago. Today the trees are bigger, there’s a bike rack, and some new housing on the north side of the street completed in 1999, but the south side is almost unchanged.
Off in the distance the yellow building is one a building looked at earlier – but with a ‘before’ image that showed a locomotive instead of the building that’s there today. It’s the Four Sisters Housing Co-op, completed in 1988, so the picture must have been taken a little under 30 years ago. Closer to us, on the west side of Columbia Street is the City Hotel, built in 1905, expanded a couple of times (one major expansion was by Sam Kee in 1910, designed by W F Gardiner costing $55,000), and most recently called Alexander Court, a 59 unit privately owned SRO. That building has recently been restored, and now has the original brick façade rather than the painted upper floors in both these images.
Next door is another rooming house, but this one was purpose built. W F Gardiner designed this simple four storey building, three windows across and three storeys high, above a retail unit. The developer was Peter Drost, who also developed Hartney Chambers on West Pender a few years earlier. (At least, we’re reasonably certain of that; the permit is to E G Drost, but there was nobody with those initials in the city, and the architect and builder were the same as for Mr Drost’s earlier project). He was from Ontario, but worked his way westwards with several years as a grocer and flour merchant in Hartney, Manitoba and then Brandon. This rooming house cost him $21,000 to build, and he hired Adkinson and Dill (originally of Seattle) to build it in 1911, with completion the year after. In 1979 it became non-market housing and is owned by the City of Vancouver, known today as the Alexander Residence. When it was first built it was known as the Old City Lodging House.
Next door is the Grand Trunk Rooms, which today is addressed to Powell Street, like several buildings on this block. (The buildings are sandwiched between the two streets, and taper to a point to the right of the picture). The building, which sits on two lots, dates from 1906, and was initially the Grand Trunk Pacific Hotel, addressed to Alexander. In 1908 and 1909 it was run by Fiddes & Thomson – there was no identified proprietor in 1907, the year it first appeared. Both proprietors had run other hotels in the city, and both soon moved on to take over different establishments. In 1910 it was run by Borio & Berto; a year later it was Naismith & Campbell.
There’s no clear record of who built this structure, but there are some hints. There’s a permit for these lots in the right time frame that was issued to G D McConnell. Gilbert McConnell was an early developer in the city, completing buildings in 1889 and 1890. He was an Alderman in 1888 and 1889, and challenged David Oppenheimer for the mayoral position in 1890, but failed to get many votes. He started out in 1887, listed as ‘speculator’ and in 1888 as a builder, and by 1892 had become a clothing wholesaler with a home in the West End. By 1895 he was listed as “boots, shoes and gents clothing”. He continued to live on Haro Street, usually listed as manufacturer’s agent or commission agent until 1912. In 1913 he had moved to Barclay Street, where he was still living in the early 1920s.
Most census records suggest Gilbert Smythe McConnell was born in Quebec around 1857, (although his death certificate said it was 1855) and his wife, Nettie Agnes from Ontario was ten years younger. They married in Woodstock, Ontario in 1886, and their children were born in British Columbia; William in 1888 and Florence in 1890. Gilbert died in 1934.
The odd thing is that the Contract Record described the building to be designed by Parr and Fee here as a warehouse, but it was clearly a hotel from the day it was opened. The other curious thing is the name – Although it was the Grand Trunk Pacific Hotel, it doesn’t appear to be associated with either the Grand Trunk Pacific Steamship Co, (whose wharf was nearby) or the Grand Trunk Pacific Railway. In fact the name didn’t last long; in 1914 the building was vacant, but that year Vancouver Breweries, Ltd. carried out repairs and a year later the Main Junk Co were on the main floor, and the Powell Rooms were upstairs (a name now attached to a building in the 500 block of Powell). In 1916 the retail unit was again vacant. In the 1920s the rooms were still the Powell Rooms, and there were two stores, both with Japanese businesses. They retained that name until 1932 when they were being run by a Japanese proprietor, then the building was vacant for two years before reopening as the Grand Trunk Rooms in 1935 (with a different Japanese operator). The Grand Trunk name has returned again (after briefly becoming The Warwick Hotel), attached to a building that nominally is an SRO Hotel but which offers the rooms at significantly higher rents than welfare rates. In 2013 these were $849 a room, to “students or people with student loans or work visas only,”
The single storey structure started life as a blacksmith’s shop for H Critch & Sons, built and designed by builder G Dunlap. The Crich business had been based here for some years, and in 1908 Kendrick & Dittberner, coppersmiths shared the lot. Improved in 1923, more recently the building has been a restaurant – in the late 1980s it was the Jewel of India, more recently it was a tapas bar called Salida 7 and currently Jack’s Taphouse & Grill.
The building on the right of the picture is the original Europe Hotel, originally built around 1887 with ‘brick additions’ in 1899 to the designs of W T Dalton.
Announcing Release Phase: Automatically Run Tasks Before a New Release is Deployed
You’re using a continuous delivery pipeline because it takes the manual steps out of code deployment. But when a release includes updates to a database schema, the deployment requires manual intervention and team coordination. Typically, someone on the team will log into the database and run the migration, then quickly deploy the new code to production. It's a process rife with deployment risk.
Now with Release Phase, generally available today, you can define tasks you need to run before a release is deployed to production. Simply push your code and Release Phase will automatically run your database schema migration, upload static assets to a CDN, or any other task your app needs to be ready for production. If a Release Phase task fails, the new release is not deployed, leaving the production release unaffected.
To get started, view the release phase documentation.

A Release Phase Example
Let’s say you have a Node.js app, using Sequelize as your ORM, and want to run a database migration on your next release. Simply define a release command in your Procfile:
release: node_modules/.bin/sequelize db:migrate
web: node ./bin/www
When you run git push heroku master, after the build is successful, Release Phase begins the migration via a one-off dyno. If the migration is successful, the app code is deployed to production. If the migration fails, your release is not deployed and you can check your Release Phase logs to debug.
$ git push heroku master
...
Running release command….
--- Migrating Db ---
Sequelize [Node: 7.9.0, CLI: 2.7.9, ORM: 3.30.4]
Loaded configuration file "config/config.json".
Using environment "production".
== 20170413204504-create-post: migrating ======
== 20170413204504-create-post: migrated (0.054s)
V23 successfully deployed
Check out the video to watch it in action:
Heroku Flow + Release Phase
Heroku Flow provides you with a professional continuous delivery pipeline with dev, staging, and production environments. When you promote a release from staging to production, Release Phase will automatically run your tasks in the production environment.

With Heroku Flow you always knows where a particular feature is on the path to production. Now -- with Release Phase -- the path to production has even fewer manual steps.
James Comey’s statement is totally believable, but it won’t matter
In advance of his testimony before the Senate today, former FBI head James Comey released a written statement. In it, he describes his interactions with President Trump regarding the FBI’s investigations into Russian interference in the US election. The statement is vivid, consistent, and appears free from bias. Comey wrote memos after each interaction with Trump, … Continued
The post James Comey’s statement is totally believable, but it won’t matter appeared first on without bullshit.
What Tesla and Trump have in common

Other than beginning with the letter “T,” there’s something that both Tesla and Donald Trump have in common. They both created movements. Here's how they did it -- and what organizations eager to disrupt their industries need to master.
The post What Tesla and Trump have in common appeared first on Charlene Li.
Legacy IT: Like a Horse on the Autobahn
I remember once seeing an old, black-and-white photo of a horse pulling an automobile.
The owner of the car gripped the horse’s reins, seemingly oblivious to the fact that he could have used the steering wheel. People stood along the sides of the road, watching him lurch past.
The driver seemed to think everyone was admiring his shiny new car—but most of the onlookers appeared puzzled, likely wondering why the driver was plodding along using single horsepower instead of the dozens in his engine.
Here in 2017, many companies attempting digital transformation strategies are unwittingly re-enacting this scene. The driver in that photo relied on a horse even though he was literally sitting on superior technology—and likewise, too many of today’s enterprises cling to long-in-the-tooth business models instead of fully embracing what comes next.
These companies have often attempted to hire their way out of challenges—but increasing headcount won’t solve anything when what you actually need is a fundamental organizational overhaul.
It’s like if the driver in the photo had added a second horse— or even a third, fourth, or fifth—instead of finally learning to drive.
Banking on the wrong horse: organizational silos and monolithic IT
A couple years ago, I encountered a prime manifestation of this “car vs. horse” dilemma while visiting the CIO of a bank in Australia.
During our meeting, I listened as the bank’s technology teams explained that they didn’t need any help navigating the switch to the digital economy. The CIO then proudly showed me their new iPhone app. It was pretty decent for a first app—I’d seen much worse.
I complimented the CIO and his team on the nifty app and said I had just one little question.
“The iPhone has been out for seven years,” I said. “And you are just getting your first app out the door now? How can you tell me with a straight face that you are okay? This sounds very, very broken.”
Maybe I spoke a little harshly, but it was all in the spirit of helping them realize that even if they felt like they were speeding along in a shiny new automobile, they were really just plodding along behind a horse. Their organization contained abundant horsepower—most organizations do—but it was locked into silos that mirrored corporate budget codes.
Each group tried to hire their way into agility and innovation, potentially adding a few horses to the stable but never transforming the business from “horse-pulled” to “engine-driven.”
“Out of your huge IT staff, how many are iOS programmers?” I asked.
The CIO shrugged. Not many. I didn’t need to ask about video game consoles, smart watches or any other modern form factor. The answer was obvious. The bank had an engine full of enterprise horsepower across its data and services—but it had never turned that engine on.
APIs: shifting from horse-drawn carriage to high-speed supercar
As I continued talking with the bank’s leaders, they began to recognize the scope of their challenges. Luckily, the conversations also helped them recognize possible solutions—namely, that to turn the engine on, they needed to put interfaces between all of the budget code-driven silos around the organization.
By interfaces, I’m talking about APIs. APIs are important because the goal of digital and connected business strategies isn’t merely to release an iPhone app. Rather, the goal is to deliver products and services wherever the end user is—when the user wants it, on the device the user prefers, and through whatever interaction model the user chooses. APIs facilitate this goal because they break complex enterprise systems into discrete services, enabling developers to create new digital products and services much more quickly.
Those complex legacy systems have typically led to slow development cycles because so many process were baked together. This limited developers’ ability to pull data across different silos, and meant that when developers tried to update one part of the system, they stood a good chance of unintentionally breaking a process somewhere else.
By adopting an API-centric approach, in contrast, enterprises liberate developers from that old world complexity. Instead, developers become free to mix and match different services, using APIs like building blocks to quickly assemble new apps and services.
For the Australian bank execs, this awakening to APIs was a big shift. Fundamentally, they had been fooled into thinking that the old stuff was new stuff. They’d developed smartphone apps in the same way they’d developed internal enterprise apps, saddling shiny new technologies with antiquated techniques in the same way the driver from the photo sacrificed his vehicle’s speed by hitching the car to a horse.
By using APIs to create easily consumable layers of abstraction between parts of its organization, the bank was able to leave behind these old obstacles, and to start moving faster. Crucially, this transformation wasn’t just about internal productivity but also about extending the bank’s business to new partners.
By employing APIs to simplify on-boarding, for example, the bank gained all of the accumulated skills and experience of people outside of its organization—some of whom leveraged the bank’s APIs to build exquisite smart phone apps and game console apps and wearable device apps and ... you get the idea. The old horse-drawn IT model could never have accommodated this barrage of external contributors and was a thus a barrier between the bank and the network and platform strategies it hoped to achieve.
Digital transformation means embracing agility
In short, by shifting from a legacy approach to an API-centric one, the Australian bank unleashed the horsepower of its organization plus the horsepower of experts from outside the organization. The bank’s leaders stopped confusing the old with the new and started moving like a sleek sports car into their digital future.
Enterprises from all industries have much to learn from this example—chiefly that successful digital businesses don’t just release new apps and websites, and they don’t just port existing business models to new places. Rather, they embrace agility as a core strategic and operational principle.
For more on streamlining IT to accelerate innovation, check out the free eBook, "APIs and IT Rationalization: Cost Avoidance and Cost Savings for Enterprise IT."
This post originally appeared on Medium.
Image: Wikimedia Commons
We Need a Course on Mundane Data Types
Earlier this month, James Iry tweeted:
Every CS degree covers fancy data structures. But what trips up more programmers? Times. Dates. Floats. Non-English text. Currencies.
I would like to add names to Iry's list. As a person who goes by his middle name and whose full legal name includes a suffix, I've seen my name mangled over the years in ways you might not imagine -- even by a couple of computing-related organizations that shall remain nameless. (Ha!) And my name presents only a scant few of the challenges available when we consider all the different naming conventions around the world.
This topic would make a great course for undergrads. We could call it "Humble Data Types" or "Mundane Data Types". My friends who program for a living know that these are practical data types, the ones that show up in almost all software and which consume an inordinate amount of time. That's why we see pages on the web about "falsehoods programmers believe" about time, names, and addresses -- another one for our list!
It might be hard to sell this course to faculty. They are notoriously reluctant to add new courses to the curriculum. (What would it displace?) Such conservatism is well-founded in a discipline that moves quickly through ideas, but this is a topic that has been vexing programmers for decades.
It would also be hard to sell the course to students, because it looks a little, well, mundane. I do recall a May term class a few years ago in which a couple of programmers spent days fighting with dates and times in Ruby while building a small accounting system. That certainly created an itch, but I'm not sure most students have enough experience with such practical problems before they graduate.
Maybe we could offer the course as continuing education for programmers out in the field. They are the ones who would appreciate it the most.
OnePlus shows off OnePlus 5, confirms dual camera

OnePlus is gearing up for the release of its next “flagship killer,” the OnePlus 5 on June 20th. While many rumoured specs and images have surfaced of the upcoming smartphone, OnePlus has revealed its design and camera feature.
On Twitter, OnePlus noted the OnePlus 5 will feature “dual camera” that will give users “clearer photos.” Specific details of its specs were not listed, but early rumours indicate the device will be comparable to Apple’s iPhone 7 Plus camera setup.

In addition, OnePlus confirmed an earlier leak from this week of its design, which is again similar to the iPhone and also the Oppo R11, and be available in black. Other than these details, the OnePlus 5 is expected to be powered by a Snapdragon 835 processor.
Source: OnePlus
The post OnePlus shows off OnePlus 5, confirms dual camera appeared first on MobileSyrup.
Android O Developer Preview 3 is now available

Three weeks after Google announced its second developer preview of Android O, it is now rolling the third developer preview of its latest OS version with the final Android O APIs and the newest system images.
Those who are already enrolled in the Android Beta Program should receive an over-the-air update to Developer Preview 3 shortly. The Mountain View tech giant notes that the third preview brings hundreds of bug fixes and optimizations along with the final API level 26.
Google says to watch out for one more preview update coming in July that will bring the near-final system images.
Those who are not yet enrolled can visit android.com/beta and opt-in if they have an eligible Android phone or tablet — namely, a Pixel, Pixel XL, Pixel C, Nexus 5X, Nexus 6P or Nexus Player. The update is also available to download and flash immediately.
Android O will be known as Android 8.0 has yet to be officially given its proper dessert name, but its features have so far been well-detailed. Notification dots, autofill and battery and performance improvements are just a few of things users can expect when the OS update finally touches down.
The post Android O Developer Preview 3 is now available appeared first on MobileSyrup.
Want a competitive edge? Do nothing every day.

Have you heard about the new magic pill that can reduce work stress, boost energy, improve focus, and help you be more productive? This amazing breakthrough is legal, has no side effects, doesn’t require special equipment, and—best of all—doesn’t involve breaking a sweat.
OK, it’s not actually a pill. It’s meditation. 40% of us say we already meditate at least once a week, but whether or not you’re on board, you’ve probably seen a slew of headlines about the benefits.
Multiple studies show that meditation has a positive effect on anxiety and stress, and subjects in one study showed improvements in focus and cognitive function after just a few weeks of mindfulness training. Research even suggests that long-term meditators have brains that age better than those of non-meditators.
Many of meditation’s perks are as relevant to your 9–5 as they are to your after-hours life, which is why it makes sense to meditate at work. “Wait, what?” you might be asking, “stop and do nothing in the middle of a hectic, everything-has-to-be-done-20-minutes-ago kind of day?”
Yes, exactly.
Companies like Google, Ford, Target, and Adobe—hip to the benefits of meditation for their employees (and their bottom lines)—have begun offering corporate mindfulness programs. Aetna, whose CEO personally championed their yoga and mindfulness programs, estimates it has reaped productivity benefits worth about $3,000 per employee. And participating staff members report an average 28% reduction in stress levels and 20% improvement in sleep quality.
With benefits like that, meditation is worth investigating, even if you’re not lucky enough to have a corporate mindfulness program at work. Here’s what to think about as you’re designing your own regimen:
Find the right spot
The ideal space is quiet and private. We all have enough trouble focusing inward without the addition of background noise—or self-consciousness about being observed while we’re, seemingly, doing nothing at work. If you have an office, you’re in luck. If not, a small conference room will do. Either way, give yourself some uninterrupted time by silencing your phone and alerts—and maybe putting a note on the door about when you’ll be available again.
Grow bigger, brighter ideas with Dropbox Paper. Find out how
Commit to it
There’s a reason they call it a meditation practice. The more consistent you are, the more effective it can be—and the more mindfulness can become an ingrained habit. So block out time in your calendar every day, and treat it like the important meeting it is. If something critical comes up that overrides your meditation time, do your best to re-schedule it for later in the day. Fully commit for a set time, say two weeks, so you have time to get into a groove and notice the benefits.
Meditation 101
In a nutshell, meditation is about tuning in to your breath and the physical sensations in your body, noticing when thoughts arise—”should I have included the quarterly numbers in that email?”—and then letting them go. Your aim is to keep bringing your attention back to the breath and the body.
Trying counting each time you breathe out, going up to five and starting over at one. Sometimes you’ll get to 12—or even 23—before you realize you’re on autopilot. Don’t judge yourself for thinking or worrying—that’s what the mind does. When you realize you’ve been captured by a thought, just label it “thinking,” and gently let it go. Start over at one.
If you have little to no experience with meditation, you might find one of the hundreds of meditation apps helpful. Insight Timer is a popular option that offers—you guessed it—a meditation timer, along with ambient and nature sounds, discussion groups, and over 5,000 guided meditations that range from the secular to the religious.
It’s OK to start with five minutes a day
Recommendations about the optimal length of meditation time can vary. As an old Zen adage has it, “you should sit in meditation for 20 minutes every day—unless you’re too busy; then you should sit for an hour.” But however long you sit, consistency is key. If you can stick with five minutes daily, that’s still a great start. Like your music teacher used to say, it’s better to practice a little bit every day than for a long stretch once a week.
Make any activity a meditation
You can also decrease anxiety and increase focus throughout the day by bringing mindfulness to almost any activity. Take a one-minute break at your desk to notice your breath. As you walk to your next meeting, focus on the sounds around you and the physical sensations of walking rather than thoughts about how the meeting might go. Mindfully drink some water, noticing the temperature and the feel of the glass in your hand. This is one kind of meditation where alerts and notifications can be helpful—schedule in a few daily reminders on your phone or work calendar.
Enlist your co-workers
It’s always easier to stick to something when you have support, so think about inviting your co-workers to join you. Whether you’re just looking for a small group or trying to start a company-wide program, your HR department or office manager might be a helpful resource, especially if you make a case about the potential benefits to your company.
It takes patience and persistence to create any new habit, and mindfulness meditation is no different—especially if you’re trying to do it in a work environment that doesn’t seem particularly conducive to slowing down. But don’t let that stop you—start small, be consistent, and notice which practices seem to work best for you. Got five minutes and some privacy right now? There’s no time like the present.

Everyone Is Freaking Out About iPhone’s New Video Screen Capture Feature
|
mkalus
shared this story
from |
We’re all used to snapping a screen shot to document whatever is on the phone screen — a text from an ex so you can send it to your friends, a photo of a receipt for business expenses, whathaveyou. But now that the newest version of iOS allows users to capture video recordings of what’s happening on the screen, people are totally freaking out.
This means you could be video chatting with someone and recording it at the same time to watch later, with the other person none the wiser, pointed out one Twitter user who showed how the function works (he upgraded to iOS 11 with a beta version, but it won’t roll out to the general public until the fall):
So you can screen record on iOS 11
pic.twitter.com/yR9jadNrWP
— Faiz (@fvizs) June 6, 2017
He noted to Buzzfeed that there are some benefits, like showing someone who needs help learning how to do something on their phone with a handy how-to video.
But other internet denizens aren’t so sure this is a good thing.
Y'all remember that Black Mirror episode where everyone had the ability to playback RECEIPTS?
Lord.
https://t.co/zkAZL9076A
— moe (they/them) (@moepriester) June 7, 2017
— JayFromFinance
️
(@Applejacks_77) June 7, 2017
People who send nudes on Snapchat are shaking pic.twitter.com/3oxPK2xiJZ
— EliMinaj
🦄 (@TheElijahprint) June 6, 2017
Mess. https://t.co/EKrVx4SOpe
— tiny (@_JustTiny) June 7, 2017
This will incite so many fights and whatnot pic.twitter.com/f9etprX98g
— Toby (@neftombi) June 6, 2017
This finna start so many fights and untrustworthiness, I ain't for it.
— aub (@aubreyrodri13) June 6, 2017
This brings a whole new meaning to " I have the receipts" https://t.co/1NCm4Bmq8Q
— Icarus (@ColdGoldie) June 7, 2017
this is the beginning of the end
Receipts have upgraded from paper to video. I repeat…NO ONE IS SAFE. https://t.co/ZW6fETrALS
— queen quen (@quenblackwell) June 6, 2017
It’s worth noting that he wasn’t able to successfully record a FaceTime video call with a friend. As for Snapchat, it’s unclear — so you might need to be on your best behavior.

Creative vs. Transactional Collaboration
Rolandtj
Asha Curran,
Stanford Social Innovation Review,
Jun 10, 2017
This post essentially distinguishes between collaboration (which it calls 'creative collaboration') and cooperation (which it calls transactional collaboration) and then asserts that only the former is good. "Collaboration that builds organizational capacity, moves people to take part, and propels the sector forward, by contrast, involves true co-creation and uses the unique strengths of each partner as building blocks." I don't agree with this, and more to the point, I don't think Stanford does either. What they are actually saying, I think, is that they will work only with people who already agree with their sense of what the mission is and how it should be approached.
[Link] [Comment]
"Physicians can’t operate on themselves, therapists can’t cure their own neuroses, and intellectuals..."
- John Feffer | Splinterlands
Twitter Favorites: [rtanglao] this is the your best possible tweet for today :-) https://t.co/jCctAi3dsd
this is the your best possible tweet for today :-) twitter.com/sillygwailo/st…
Twitter Favorites: [rtanglao] i still don't read email newsletters :-) they go to /dev/null ! RSS is more fun for me because it's not email!
i still don't read email newsletters :-) they go to /dev/null ! RSS is more fun for me because it's not email!
Twitter Favorites: [marksiegal] It's possible that I like debating which computer to buy more than I like actually owning the new computer.
It's possible that I like debating which computer to buy more than I like actually owning the new computer.
Write a Program, Not a Slide Deck
From Compress to Impress, on Jeff Bezos's knack for encoding important strategies in concise, memorable form:
As a hyper intelligent person, Jeff didn't want lossy compression or lazy thinking, he wanted the raw feed in a structured form, and so we all shifted to writing our arguments out as essays that he'd read silently in meetings. Written language is a lossy format, too, but it has the advantage of being less forgiving of broken logic flows than slide decks.
Ask any intro CS student: Even less forgiving of broken logic than prose is the computer program.
Programs are not usually the most succinct way to express an idea, but I'm often surprised by how little work it takes to express an idea about a process in code. When a program is a viable medium for communicating an idea, it provides value in many dimensions. You can run a program, which makes the code's meaning observable in its behavior. A program lays bare logic and assumptions, making them observable, too. You can tinker with a program, looking at variations and exploring their effects.
The next time you have an idea about a process, try to express it in code. A short bit prose may help, too.
None of this is intended to diminish the power of using rhetorical strategies to communicate at scale and across time, as described in the linked post. It's well worth a read. From the outside looking in, Bezos seems to be a remarkable leader.


️
(@Applejacks_77)
🦄 (@TheElijahprint) 
