You are hereFeed aggregator

Feed aggregator

  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.
  • warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/thor/Sites/modules/aggregator/aggregator.pages.inc on line 259.

Thorarin Bjarnason committed [r165]

AnalyzeNNLS - 2017, March 8 - 18:58

Modified PAR/REC file handling to accommodate V...

Categories: Blogs

Logical indexing

Matlab Image processing blog - 2017, March 7 - 14:01

One of my favorite aspects of MATLAB for image processing is how I can use a binary image to index directly into a grayscale image. The technique is called logical indexing, and I'm going to show you how it works today.

Note: this is an update of a post I originally wrote in 2008.

Let me start with a small example. (As regular readers know, I like to use magic squares for small matrix examples.)

A = magic(5) A = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9

Every MATLAB user is familiar with ordinary matrix indexing notation.

A(2,3) ans = 7

A(2,3) extracts the 2nd row, 3rd column of the matrix A. You can extract more than one row and column at the same time:

A(2:4, 3:5) ans = 7 14 16 13 20 22 19 21 3

When an indexing expression appears on the left-hand side of the equals sign, that's an assigment. You are changing one or more of the values of the variable on the left-hand side.

A(5,5) = 100 A = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 100

Here is a frequently-asked MATLAB question: How do I replace all the NaNs in my matrix B with 0s?

An experienced MATLAB user will immediately answer:

B(isnan(B)) = 0;

For example:

B = rand(3,3); B(2, 2:3) = NaN B = 0.2217 0.3188 0.0855 0.1174 NaN NaN 0.2967 0.5079 0.8010

Replace the NaNs with zeros:

B(isnan(B)) = 0 B = 0.2217 0.3188 0.0855 0.1174 0 0 0.2967 0.5079 0.8010

The expression B(isnan(B)) is an example of logical indexing. Logical indexing is a compact and expressive notation that's very useful for many image processing operations.

Let's talk about the basic rules of logical indexing, and then we'll reexamine the expression B(isnan(B)).

If C and D are matrices, then C(D) is a logical indexing expression if D is a logical matrix.

Logical is one of the fundamental data types for MATLAB arrays. Relational operators, such as == or >, produce logical arrays automatically.

C = hilb(4) C = 1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429 D = C > 0.4 D = 4×4 logical array 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0

If we use D as an index into C with the expression C(D), then we will extract all the values of C corresponding to nonzero values of D and returns them as a column vector. It is equivalent to C(find(D)).

C(D) ans = 1.0000 0.5000 0.5000

Now we know enough to break down the B(isnan(B)) expression to see how it works.

B = rand(3,3); B(2, 2:3) = NaN; nan_locations = isnan(B) nan_locations = 3×3 logical array 0 0 0 0 1 1 0 0 0 B(nan_locations) ans = NaN NaN B(nan_locations) = 0 B = 0.0292 0.4886 0.4588 0.9289 0 0 0.7303 0.2373 0.5468

Functions in the Image Processing Toolbox, as well as the MATLAB functions imread and imwrite, follow the convention that logical matrices are treated as binary (black and white) images. For example, when you read a 1-bit image file using imread, it returns a logical matrix:

bw = imread('text.png'); whos bw Name Size Bytes Class Attributes bw 256x256 65536 logical

This convention, together with logical indexing, makes it very convenient and expressive to use binary images as pixel masks for extracting or operating on sets of pixels.

Here's an example showing how to use logical indexing to compute the histogram of a subset of image pixels. Specifically, given a grayscale image and a binary segmentation, compute the histogram of just the foreground pixels in the image.

Here's our original image:

I = imread('rice.png'); imshow(I)

Here's a segmentation result (computed and saved earlier), represented as a binary image:

url = 'http://blogs.mathworks.com/images/steve/192/rice_bw.png'; bw = imread(url); imshow(bw)

Now use the segmentation result as a logical index into the original image to extract the foreground pixel values.

foreground_pixels = I(bw); whos foreground_pixels Name Size Bytes Class Attributes foreground_pixels 17597x1 17597 uint8

Finally, compute the histogram of the foreground pixels.

figure imhist(foreground_pixels)

As another example, you could complement the binary image to compute something based on the background pixels.

imhist(I(~bw))

PS. I expect that this will be the last blog post that I write using R2016b. Keep an eye on the downloads page!

\n'); d.write(code_string); // Add copyright line at the bottom if specified. if (copyright.length > 0) { d.writeln(''); d.writeln('%%'); if (copyright.length > 0) { d.writeln('% _' + copyright + '_'); } } d.write('\n'); d.title = title + ' (MATLAB code)'; d.close(); } -->


Get the MATLAB code (requires JavaScript)

Published with MATLAB® R2016b

_. % % Let me start with a small example. (As regular readers know, I like % to use magic squares for small matrix examples.) A = magic(5) %% % Every MATLAB user is familiar with ordinary matrix indexing % notation. A(2,3) %% % |A(2,3)| extracts the 2nd row, 3rd column of the matrix |A|. You % can extract more than one row and column at the same time: A(2:4, 3:5) %% % When an indexing expression appears on the left-hand side of % the equals sign, that's an assigment. You are changing one or more of the % values of the variable on the left-hand side. A(5,5) = 100 %% % Here is a frequently-asked MATLAB question: _How do I replace all the % NaNs in my matrix B with 0s?_ % % An experienced MATLAB user will immediately answer: % % B(isnan(B)) = 0; % % For example: B = rand(3,3); B(2, 2:3) = NaN %% % Replace the NaNs with zeros: B(isnan(B)) = 0 %% % The expression |B(isnan(B))| is an example of _logical indexing_. % Logical indexing is a compact and expressive notation that's very useful % for many image processing operations. % % Let's talk about the basic rules of logical indexing, and then % we'll reexamine the expression |B(isnan(B))|. % % If |C| and |D| are matrices, then |C(D)| is a logical indexing % expression if |D| is a _logical_ matrix. % % _Logical_ is one of the fundamental data types for MATLAB arrays. % Relational operators, such as |==| or |>|, produce logical % arrays automatically. C = hilb(4) %% D = C > 0.4 %% % If we use |D| as an index into |C| with the expression |C(D)|, then we % will extract all the values of |C| corresponding to nonzero values of |D| % and returns them as a column vector. It is equivalent to |C(find(D))|. C(D) %% % Now we know enough to break down the |B(isnan(B))| expression to see % how it works. B = rand(3,3); B(2, 2:3) = NaN; nan_locations = isnan(B) %% B(nan_locations) %% B(nan_locations) = 0 %% % Functions in the Image Processing Toolbox, as well as the % MATLAB functions |imread| and |imwrite|, follow the convention that % logical matrices are treated as binary (black and white) % images. For example, when you read a 1-bit image file using % |imread|, it returns a logical matrix: bw = imread('text.png'); whos bw %% % This convention, together with logical indexing, makes it very % convenient and expressive to use binary images as pixel masks % for extracting or operating on sets of pixels. %% % Here's an example showing how to use logical indexing to % compute the histogram of a subset of image pixels. % Specifically, given a grayscale image and a binary % segmentation, compute the histogram of just the foreground % pixels in the image. % % Here's our original image: I = imread('rice.png'); imshow(I) %% % Here's a segmentation result (computed and saved earlier), % represented as a binary image: url = 'http://blogs.mathworks.com/images/steve/192/rice_bw.png'; bw = imread(url); imshow(bw) %% % Now use the segmentation result as a logical index into the % original image to extract the foreground pixel values. foreground_pixels = I(bw); whos foreground_pixels %% % Finally, compute the histogram of the foreground pixels. figure imhist(foreground_pixels) %% % As another example, you could complement the binary image to compute % something based on the background pixels. imhist(I(~bw)) %% % _PS. I expect that this will be the last blog post that I write using % R2016b. Keep an eye on the _ ##### SOURCE END ##### e286582d3ff74f9f8ff5c3de3b9c3809 -->

Categories: Blogs

Fill Your Boots: my column on how technology could let us work like artisans and live like kings

Cory Doctorow - 2017, March 3 - 06:39

My latest Locus column is “Fill Your Boots,” in which I talk about how scientists, sf writers, economists and environmental activists have wrestled with the question of abundance — how the “green left” transformed left wing politics from the promise of every peasant living like a lord to the promise of every lord living like a peasant.


One thing everyone can agree on is that market competition and technology has made material abundance a lot less material: the labor, energy, and resources in a car, a house, or a shirt are a mere fraction of what they were a couple of generations ago, and continue to fall with no end in sight. Another point of commonality is that computers make it easier to coordinate your work with other people, whether that’s Github providing the scaffold for building out an open source project or Slack giving people scattered all over the world the power to plan a product launch or a birthday party.

The combination of reduced material inputs to goods and cheap coordination presents us with the possibility of a new, better kind of abundance: a world where we leave behind the demands of the assembly line and the anxiety of whether the light-switch will always turn on the lights, for one where we treat sunny days a jubilees, when we can use as much unbankable and infinite solar energy as we want, leaving the doors open and the air conditioners running. It’s the best of both worlds, freeing work from the tyranny of other peoples’ schedules without giving up the fantastic comforts of material abundance.

The limits to labor/energy/material efficiency are speculative. We don’t know what the hard limits are on how little material can go into a car, how little fuel can propel an airplane, or how much of the labor embodied in your house could be performed by robots.

We don’t need to speculate to understand how sweet our lives could be if they were re-tuned to the rhythms of the natural world, if every time the sun shone we stopped having to worry about closing the door, if every time it rained we stopped worrying about whether the toilet really needs flushing, or whether it can mellow for one more yellow.

My next novel, Walkaway, includes an entire subculture called ‘‘the bumblers.’’ These are the survivors of a speculative investment bubble in zeppelins, a global phenomenon that left millions around the world with the knowledge and capacity to build airships, and networks of friends, fellow travellers, and potential couch-surfing hosts all over the world. These sky-hobos go aloft in their minimally steerable zeppelins and literally go wherever the wind blows them, knowing that they will almost certainly meet someone interesting, wherever the zeppelin happens to take them. It’s not jet travel. You can’t decide where you’re going. But if you don’t care where you end up – because all you want is to get somewhere – then bumbling is superior to conventional aviation on every metric.

Here is where the green left and the bright green left can meet: using bright green, high tech coordina­tion tools, we can restore the pastoral green, artisanal autonomy that privileges mindful play over mindless work. The motto of Magpie Killjoy’s Steampunk zine was ‘‘love the machine, hate the factory.’’ Love the dividends of coordinated labor, hate the loss of freedom we suffer when we have to coordinate with others. Have your cake and eat it too.

The Jubilee: Fill Your Boots [Cory Doctorow/Locus Magazine]

Categories: Blogs

This season was our last at the Kelowna Farmers Market.

Green City Acres - 2016, September 30 - 07:53

Some of you may have noticed that we’ve skipped a few farmers markets this season. This has been the result of the farm taking a new direction in an effort to grow the business without actually growing the size of the farm. In order to do this we have specialized our selection of produce to include more greens, microgreens, cherry tomatoes, and drop a lot of other crops that you may know us for. Because of this, it’s meant that we have less variety to offer at the market. Even though we have been specialized to some degree for many years, we’re even more so now and that makes it difficult to bring a volume of product to the market that makes it economical for us. Because of this we will be finishing our season early this year and it will also be our last year at the market. 

 On top of the farm changing in regards to our products, we will also be moving towards more education on the farm. The success of my book, online course, and YouTube channel has brought a lot of international attention and many opportunities. Next season, I will be running one week long programs on farm to help train the next generation of small scale market gardeners and urban farmers. 

 I would like to thank all of you for your continued support over the years. The farmers market was the first place I started selling and it was also the first place I was exposed to other farmers and customers who became mentors and friends. The community at the market has been like a family to me and a huge positive influence in my life. 

I’m sure you’ll still see me around. As long as I live in Kelowna, I will always be a weekly shopper and advocate of the Kelowna Farmers Market. 

You can continue to find the products you know us for at Choices Markets and Nesters Market in Kelowna. 

Thank you.

Curtis Stone.

Categories: Blogs

5 things Google doesn’t want you to know about Play Music

DVD Jon - 2015, June 16 - 13:23

  1. When you buy an MP3 on Google Play from your Android phone, Google prevents competing apps and 3rd party developers from accessing the file using technical and legal means. It can only be played in Google’s Play Music app. If you thought DRM was dead, think again.
  2. Google Play Music limits the number of devices you can use to listen to your own music and only allows you to “deauthorize” 4 devices per year, including phones and tablets. In addition, each time you flash your device with a popular custom ROM such as CyanogenMod, you use up one of your authorizations.
  3. Google Play Music degrades the sound quality of lossless files such as FLAC and Apple Lossless by transcoding them to lossy MP3s.
  4. Google Play Music doesn’t allow you to share your music library with other members of your household.
  5. Once your music library is on Google’s servers, you can only download a song twice from the Play Music website back to your PC or Mac. Until the end of time.

Our philosophy at doubleTwist has always been to break down the walls that large corporate entities build around their platforms to lock you down. To further that goal, we’ve released a new Android app called CloudPlayer that turns your favorite cloud storage service into a giant jukebox. Your music — no limits!

Categories: Blogs

Kakapo chick imminent?

Another Chance to See - 2014, March 2 - 18:12

Sirocco Kakapo (@Spokesbird) tweeted at 1:31 PM on Sun, Mar 02, 2014: Boom! Cheeping can be heard from inside Lisa's crushed-but-taped-up egg! Claws crossed for some good news today: (https://twitter.com/Spokesbird/status/440192597105971201)

--- Originally published at http://www.anotherchancetosee.com

Categories: Blogs

Kakapo chick hatched!

Another Chance to See - 2014, March 2 - 18:09

Sirocco Kakapo (@Spokesbird) tweeted at 7:43 PM on Sun, Mar 02, 2014:Skraaarrrk! I'm so very pleased to introduce you to the very first kākāpō chick of 2014: (https://twitter.com/Spokesbird/status/440286273073201152)
--- Originally published at http://www.anotherchancetosee.com

Categories: Blogs

2014 Douglas Adams Memorial Lecture

Another Chance to See - 2014, February 26 - 10:18

This year's lecture is March 11th at 7:30pm. For more information please visit this page at Save The Rhino: The Science of Harry Potter and the Mathematics of The SimpsonsThis year's lecture will explore a theme close to the hearts of many of Douglas' fans. We will be exploring science in fiction, taking a closer look at two popular fictional worlds - Harry Potter and the Simpsons - and exploring the science within.--- Originally published at http://www.anotherchancetosee.com

Categories: Blogs

Kakapo nesting on Codfish Island

Another Chance to See - 2014, February 4 - 14:27

Exciting news from the DOC blog. The first kakapo eggs in three years have been discovered by rangers on Codfish Island/Whenua Hou. The two nests that have been found so far belong to Lisa, an experienced kākāpō mum, and Tumeke who has bred before but had infertile eggs.--- Originally published at http://www.anotherchancetosee.com

Categories: Blogs

<a href="http://www.google.com">Google<

Another Chance to See - 2014, January 16 - 07:57

Google is honouring Dian Fossey's 82nd birthday with a Google Doodle today.
--- Originally published at http://www.anotherchancetosee.com

Categories: Blogs

Supreme Court Says: You Can Copy That Floppy DNA Material

slyck - 2013, June 12 - 22:09

Pharmaceuticals suffer patent setback.

Categories: Blogs

Five highlights of RSNA 2012

CSI - 2012, December 14 - 03:43

Author Mark Wagner, Director Strategic Partnerships

This was the eighth RSNA event for Calgary Scientific but my fourth experience at the show billed as the place where the finest breakthroughs in medical imaging emerge each year. It was a chance for our team to spend time with our partners, observe competitors and talk to end users about shifting needs in healthcare informatics technologies.

After a couple days to rest up from a non-stop demo and discussion frenzy, here are 5 highlights of RSNA 2012 that stand out to me:

  1. Value is understood – Users are now serious about buying solutions to extend image access outside of DI reading room. At previous RSNAs they were thinking about extended image access and looking at it as an option. The value of accessing images outside the DI reading room is now understood and there is commitment to move forward. Meaningful Use, expanded circles of care and demand for efficiencies require delivery of images to all stakeholders:  radiologists, referring physicians / specialists, all healthcare professionals, payors and even patients themselves!
  2. Multi-source image access is now critical – Efficient workflow integration will deliver this value and will make mobile and web access to images critical components in an efficient healthcare environment. Users are looking for image access from a number of different interfaces and points in the healthcare continuum: from the patient record in the EMR / EHR, from the patient portal on the web, from the RIS, directly from the local archive with recent images in ER, from cloud based universal archives, from direct access on their mobile devices…solution flexibility will be a critical factor for any image viewing solution in this environment.
  3. Collaboration for superior care – Radiologists are not operating in isolation from other stakeholders in healthcare. Efficiency and superior care are delivered when quick and convenient and reliable mechanisms for closing communication loops and ensuring absolute clarity are in place. Reaching and connecting with others to review and share image information is critical.
  4. Security of patient data is paramount –Security continues as a table stake requirement. BYOD, enabling access for users outside the institution firewall and continued concern about losing patient healthcare information are causing users to carefully evaluate their technology options. Vendors are making the effort to address security concerns, but there remain some key differences in how data is being safeguarded and accredited within different solutions. It still pays for users to ask hard questions about how data is at risk of theft and whether a solution is FDA cleared for diagnosis or for review only.
  5. Convenience and productivity demand mobility – Mobile devices continue to proliferate and users will be looking at expanding where / how they use those devices based on the convenience and significantly enhanced quality that they now deliver. Users will want to do be able to do everything on their mobile devices that they do on their wired devices, but more simply and more conveniently. Mobile devices are driving the evolution, but efficiency, productivity and a higher standard of care are the resulting benefits.

I called these highlights of RSNA, not insights, as the themes here are not substantial new discoveries. These points do, however, reinforce our determination to lead with ResolutionMD in secure mobile healthcare, and support our focus on secure data exchange. We will continue to deliver a viewer which provides users with access to a complete and accurate patient record, with data from any source, and pair it with the industry’s most convenient collaboration. This focus is a vital way in which Calgary Scientific will advance the quality of global healthcare.

Categories: Blogs

Calgary Scientific joins the Calgary Food Bank Frontline and Donates with Heart

CSI - 2012, December 10 - 01:15

Written by Byron Osing

, Chair and CEO.

In 2011, more than 136,000 Calgarians received food from the Emergency Food Hamper Program delivered by the Calgary Food Bank. Every year more than 7 million kilograms of food gets distributed to Calgarians in need. And it takes more than 100 people volunteering every day at the food bank to make all that happen.

Calgary Scientific is a passionate supporter of the Calgary Food Bank. This year we are lending muscle, some money and a bounty of food donations to help those in need in our community.

 On December 5th, a crew of our staff volunteered for a shift at the food bank building hampers. It took teamwork, an eye on the conveyor belt and compliance to rigorous warehouse safety but we did our jobs well!

Back at our office, our team of almost 80 is building a tower of food that we’ll donate. We’ve also donated $5,000 to support YYC Tech Gives – a Calgary Tech Community initiative to rally giving. Last year YYC Tech Gives raised about $65,000 for the Calgary Food Bank. This year the aim is $100,000.

My special thanks to our team for giving time and food donations so generously in support of the Calgary Food Bank. Here’s wishing all of us a holiday where we cherish our good fortunes of family, friends and plentiful meals together.

Categories: Blogs

Why Can’t We all just Get Along…Technically?

CSI - 2012, December 3 - 08:48

Written by Randy Rountree, EVP of Global IT & Strategic Alliances

When Calgary Scientific was still just a nugget of thought in our founder’s mind, a doctor friend took our founder on a field trip that helped turn that thought into reality.

The expedition was to a radiology department of a Calgary hospital. Instead of watching doctors busily screen films and run off to diagnose patients, Byron Osing watched them wait around the way cranky office workers do at Starbucks every morning.

This was back in 2005, the early days of radiological digitization, when doctors would send each other patient images on CD-ROM. Now there’s a blast from the past that still continues in many markets today. Different hospitals used different software, so often times doctors had to reformat the image to see it. There were only so many reformatting machines, hence the waiting around. Beyond that, doctors could spend hours, yes hours, just logging in and out of different hospitals’ PACS in order to compare images of a patient that happened to be stored at two sites.

We’ve come a long way since then but it doesn’t mean the issues of interoperability and scalability have all been solved. In fact, much of the existing medical imaging technology is designed to avoid multi-system cooperation. Just like Apple, companies are designing products that only talk to other products they design. It works for a computer company, but it’s a nightmare in healthcare.

We admire the leadership companies such as Fujifilm, Dell and AT&T are taking on this front. Their commitment to finding the best solution for the end users is easing the frustration healthcare system providers feel when faced with the daunting task of making medical images readily available to doctors who aren’t on site.

After all, the mobility mountain is a tough one to climb in this industry. It represents issues of security, storage space, patient engagement and hospital autonomy. In a recent report for the National Patient Safety Foundation in the US, co-author Dr. David M. Lawrence suggests better coordinated IT systems are the key to success in the ever more complex world of medicine.

In an article written by InformationWeek.com, Lawrence suggests medical data and images are often still being sent to territorial silos that only serve to make the efficient practice of medicine more complicated. It makes the images harder to retrieve, manipulate and share at a time when cooperative medicine (ie. medicine that involves the diagnostic conclusions of a team not just an individual) is becoming more the norm.

The issue is so prevalent, some organizations have dedicated themselves to helping healthcare providers figure out how to best integrate their patient data across different IT systems. This kind of third-party oversight and guidance is a key component to establishing true interoperability.

The goal of Integrating the Healthcare Enterprise (IHE), for example, is to “to improve the quality, efficiency and safety of clinical care by making relevant health information conveniently accessible to patients and authorized care providers.”

It sounds like a simple, respectable goal but still, the path to success has yet to be cleared. Perhaps they, too, started their journey with the same question as our CEO: Why can’t we all just get along… technically?

This post is the last in a series on the Top 5 Trends Changing the Game in Global Healthcare IT. We encourage you to check out others in the series:

Categories: Blogs

Radiologists rank in the top 5 for mobile technology usage now that telemedicine fits in our pockets

CSI - 2012, November 20 - 14:15

Written by Randy Rountree, EVP of Global IT & Strategic Alliances.

As Dr. Shrestha, the Vice President of Medical Information Technology, University of Pittsburgh Medical Center, points out in his article Mobility in healthcare and imaging: Challenges and Opportunities, “Imagers are often earlier adopters of newer technologies, and radiologists have been quick to adopt mobile devices, for both personal and professional use.”

Case and point – among American physicians, radiologists rank in the top five for rapid adoption of mobile technology for medical practice according to a recent Jackson and Coker Associates study.

So beyond an ever present love of new imaging technologies, why are radiologists at the forefront among physicians pushing for mobile technologies? Smartphones can provide two critical benefits to radiologists – mobility and speed of access to do diagnostic work wherever they choose.
In October 2012, The Mayo Clinic confirmed the impact of Calgary Scientific’s mobile medical technology in a study titled: “Smartphone Teleradiology Application Is Successfully Incorporated Into a Telestroke Network Environment”

Profiled in Stroke magazine, the study drew the conclusion:

CT head interpretations of telestroke network patients by vascular neurologists using Calgary Scientific’s mobile diagnostics tool, ResolutionMD, on Smartphones were in excellent agreement with interpretations by stroke radiologists using a Picture Archiving and Communications System and those of independent telestroke adjudicators using a desktop viewer.

“Essentially what this means is that telemedicine can fit in our pockets,” Dr. Bart Demaerschalk, professor of neurology and medical director of Mayo Clinic Telestroke, said in a statement. Click here to see a video of Dr. Demaerschalk talking about the study.

Beyond reliability for diagnosis and patient impact, research with our luminary partners Mayo Clinic, Yale University and SUNY reveals that ResolutionMD on mobile devices is making life on-call livable for radiologists – decreasing drive time to hospitals, time away from families and lessening the grind of long shifts.

Watch our upcoming blog for use cases that are impacting radiologists:
• closing the distance to rural locations, and
• enabling specialists to collaborate from any location.

Visit Calgary Scientific at RSNA at Booth 6244, South Hall A and we’ll show you how ResolutionMD changes the way radiologists and other healthcare professionals can access, view and analyze information from anywhere.

Categories: Blogs

Calgary Scientific to showcase industry’s most accredited mobile healthcare technology at RSNA 2012

CSI - 2012, November 15 - 18:08

Written by Byron Osing, Chair and CEO.

Calgary Scientific was one of the first companies to be awarded FDA clearance for diagnosis on mobile devices just before RSNA in 2011. At RSNA 2012 the company will demonstrate how it has maintained its accreditation lead with FDA clearance, CE Mark and Health Canada support for its suite of mobile healthcare technology.

November 25 to 29 in Chicago at RSNA, the company will show healthcare professionals, current and future OEM partners how ResolutionMD and PureWeb combine in medical to deliver:

  • Accreditation – FDA cleared for diagnosis, CE Mark and Health Canada approved
  • Security – patient data is never transferred to the device
  • Accessibility – use on workstations, home computers, laptops or smartphones
  • Performance -  advanced 2D/3D viewing and collaboration over low-bandwidth
  • Global Capability – 10 global languages supported including Korean and Simplified Chinese

The company will also demonstrate an upcoming edition of ResolutionMD running in an HTML5 environment. This edition of ResolutionMD will be available to users in 2013 – useful for mass adoption of mobility in environments requiring 2D-only support.

To see Calgary Scientific’s technology in action book a demo and we’ll see you at booth 6244, South Hall A at RSNA.

Categories: Blogs