se

Dying of whiteness: how the politics of racial resentment is killing America's heartland / Jonathan M. Metzl

Browsery RA563.M56 M48 2019




se

The desert and its seed / Jorge Barón Biza ; translated from the Spanish by Camilo Ramirez ; afterword by Nora Avaro

Browsery PQ7798.12.A678 D4713 2018




se

Society elsewhere: why the gravest threat to humanity will come from within / Francis Sanzard

Browsery HM846.S26 2018




se

Falter: has the human game begun to play itself out? / Bill McKibben

Browsery CB428.M43 2019




se

Skeleton keys: the secret life of bone / Brian Switek

Browsery QM101.S5487 2019




se

Seventeen / Hideo Yokoyama ; translated from the Japanese by Louise Heal Kawai

Browsery PL877.5.O369 K8713 2018




se

Canned: the rise and fall of consumer confidence in the American food industry / Anna Zeide

Browsery TX552.Z45 2018




se

The atlas of disease: mapping deadly epidemics and contagion from the plague to the zika virus / Sandra Hempel

Browsery RA649.H46 2018




se

Seeing race again: countering colorblindness across the disciplines / edited by Kimberlé Williams Crenshaw, Luke Charles Harris, Daniel Martinez HoSang, and George Lipsitz

Browsery LC212.42.S44 2019




se

Saladish: a crunchier, grainier, herbier, heartier, tastier way with vegetables / Ilene Rosen with Donna Gelb ; photographs by Joseph de Leo ; illustrations by Emma Dibben

Browsery TX807.R7845 2018




se

Sweet Home Cafe cookbook: a celebration of African American cooking / Albert G. Lukas and Jessica B. Harris, with contributions by Jerome Grant ; foreword by Lonnie G. Bunch III ; introduction by Jacquelyn D. Serwer ; in association with the National Muse

Browsery TX715.2.A47 L85 2018




se

Infinite powers: how calculus reveals the secrets of the universe / Steven Strogatz

Browsery QA303.2.S78 2019




se

The social construction of difference and inequality: race, class, gender, and sexuality / Tracy E. Ore

Browsery HN59.2.S585 2019




se

In vivo: a phenomenology of life-defining moments / Gabor Csepregi

Browsery BD431.C74 2019




se

Hacking life: systematized living and its discontents / Joseph M. Reagle Jr

Browsery HM851.R432 2019




se

Reckoning: the epic battle against sexual abuse and harassment / Linda Hirshman

Browsery HQ1237.5.U6 H57 2019




se

Reviving Ophelia: saving the selves of adolescent girls / Mary Pipher, Ph.D., and Sara Pipher Gilliam

Browsery HQ798.P57 2019




se

Lesser dragons: minority peoples of China / Michael Dillon

Browsery DS730.D55 2018




se

Searching for Sylvie Lee: a novel / Jean Kwok

Browsery PS3611.W65 S43 2019




se

Basque country: a culinary journey through a food lover's paradise / Marti Buckley ; photographs by Simon Bajada

Browsery TX723.5.B36 B83 2018




se

Genetics in the madhouse: the unknown history of human heredity / Theodore M. Porter

Browsery HQ755.35.P67 2018




se

The chicken: a natural history / Joseph Barber with Janet Daly, Catrin Rutland, Mark Hauber & Andy Cawthray

Browsery SF487.B185 2018




se

Unnatural selection / Katrina van Grouw

Browsery SF105.V24 2018




se

The House of Government: a saga of the Russian Revolution / Yuri Slezkine

Browsery DK601.S57 2017




se

Searching for inter-racial, interstitial, intersectional, and interstates meeting spaces: Africa vs North America / edited by Tendai Rinos Mwanaka

Browsery PN6071.A45 S437 2018




se

Tambora and the year without a summer: how a volcano plunged the world into crisis / Wolfgang Behringer ; translated by Pamela Selwyn

Browsery QE523.T285 B4413 2019




se

The new mind readers: what neuroimaging can and cannot reveal about our thoughts / Russell A. Poldrack

Browsery RC349.D52 P65 2018




se

New browser on the block: Flow

2020 is only three weeks old, but there has been a lot of browser news that decreases rendering engine diversity. It’s time for some good news on that front: a new rendering engine, Flow. Below I conduct an interview with Piers Wombwell, Flow’s lead developer.

This year alone, on the negative side Mozilla announced it’s laying off 70 people, most of whom appear to come from the browser side of things, while it turns out that Opera’s main cash cow is now providing loans in Kenya, India, and Nigeria, and it is looking to use 'improved credit scoring' (from browsing data?) for its business practices.

On the positive side, the Chromium-based Edge is here, and it looks good. Still, rendering engine diversity took a hit, as we knew it would ever since the announcement.

So let’s up the diversity a notch by welcoming a new rendering engine to the desktop space. British company Ekioh is working on a the Flow browser, which sports a completely new multi-threaded rendering engine that does not have any relation to WebKit, Gecko, or Blink.

The last new rendering engine to come to the desktop was KHTML back in 2000 in the form of the Konqueror browser. Later Apple adapted KHTML into WebKit. And then Google forked WebKit to become Blink. And ... well, almost everyone browses with a KHTML descendant now. Let’s not forget how it all began.

It is far too early to tell if Flow will have a similar impact, but the news was reason enough for me to conduct an interview with lead developer Piers Wombwell.

PPK: Hi Piers, could you please introduce yourself?

PW: I’m Piers Wombwell, the co-founder of Ekioh, the company behind the Flow browser. I’m also the architect of the project and one of the software engineers on it.

Why did Ekioh decide to create a new browser?

In 2006 we started developing an SVG engine for user interfaces in the set-top box market. No existing browser was full-featured, or was fast enough on the low-powered set-top box chips available at the time. User interface developers wanted HTML, but couldn’t get the performance they needed, especially in animations. SVG seemed better suited to user interfaces as there was no time spent in complex box model layout.

A user interface running on our SVG engine was much faster than any of the HTML browsers at the time and was very popular in this niche market with millions of STBs running it across most continents.

Over the next six or so years, STB chips started to move to multi-core GPUs, at the same as TV resolutions were moving to 4K. HTML was becoming fast enough on set-top boxes. On the other hand, a 4K TV has four times as many pixels as an HD TV, and a multi-core GPU doesn't make each individual core any faster. Thus, a single threaded browser won’t really see any significant speed improvements. That's why we decided to make Flow multi-threaded.

Dabbling with HTML/CSS layout seemed equally fun technically as building an SVG browser, so that’s been the main focus since. It started off being an XHTML/CSS layout engine on top of SVG, but we got carried away and over time moved to full HTML.

But, really, I suppose we did it because it would be fun to do it.

How far along is Flow? Can people download it and use it right now?

Well, it can render and interact with Gmail quite well. It’s pretty much perfect on a few sites we’ve targeted as focuses during development, but it struggles with many others. We only started implementing HTML forms in the last few months in order to log into Gmail.

It’s not yet available for download as I think we need to address the usability of it first. It currently needs a configuration file tailored to your computer, and has no toolbar. You don't want a toolbar for TV interfaces, so we never implemented one.

For which platforms is Flow currently available?

For Mac, Linux, and Android. Plus, of course, for the set-top boxes that are our main market, most of which run Linux. As to Windows, none of us run Windows so its development is untested and lags behind a bit, but I’ve just compiled a version and it seems to work.

Is Flow open source?

It’s not. There’s no current plan for that as we don’t have a large corporation backing our development.

Which JavaScript engine do you use?

We chose Spidermonkey in 2006, and as far as I recall it was because of both licensing and a documented embedding API. It was around the time that TiVo were having arguments over the GPL. The paranoia over that also ruled out use of LGPL licensed libraries for a few years.

The core browser code is abstracted away from any Spidermonkey APIs, largely so we could handle upgrades over the years - we can still handle its legacy garbage collection model quite happily.

What are your long-term goals with Flow?

The primary goal is stability, followed by getting more websites rendering perfectly in Flow. They generally fail because of either layout bugs or missing JavaScript APIs in Flow, so we have to solve those. Even for the embedded market, getting as many websites working as possible improves our confidence that a new HTML user interface will function correctly, first time.

Our roadmap is very flexible, usually because of commercial needs, but also we prioritise what’s interesting to a developer at that given time.

You said Flow is multi-threaded. Which tasks exactly are divided among the multiple threads?

HTML and CSS parsing is single-threaded, as is JavaScript (if you ignore WebWorkers). It’s the layout, primarily word wrap of text, that is done in parallel. Several caveats apply, but in general, two paragraphs can be laid out in parallel since they don’t impact each other apart from their vertical position.

We wrote some technical papers on this process.

Is the word wrap of paragraphs the computationally most expensive part of laying out an HTML page?

Yes. Each letter is a separate rectangle, plus you have word wrap rules for groups of letters. It’s also probably the hardest to achieve, so it's a good place to start. Desktop browsers haven’t touched layout, and have instead concentrated on making whole components run in separate threads.

Is Flexbox one of the caveats you mentioned?

There are multiple passes across the tree, all in parallel. We first calculate, in parallel, essentially the min-content and max-content widths of each paragraph, flexbox or table cell. Once we have those constraints, a relatively quick pass (not in parallel for that one flex box) works out the final widths of each box.

But we can handle multiple flexboxes in parallel, or one flex box and a paragraph outside the flexbox, and so on.

How integral is multi-threading to Flow and its architecture? Could you remove it? Would other browsers be able to copy Flow's multi-threading?

Multithreading can be turned off with a config setting. I suspect it’s always going to be easier to rewrite the layout code with multithreading in mind than rework existing layout algorithms - Mozilla took that approach that with Servo, rather than rework Gecko. The new layout engine could then, in theory, be combined with the rest of an existing browser.

Can you give an example of tricky problems you encountered while creating this browser?

Many sites, Gmail being a good example, were very frustrating as the JavaScript can be so large and obfuscated. It’s almost impossible to tell what they are doing, and much of the debugging was educated guesses as to what it was trying to do. Thankfully, the web platform tests help us make sure we are compatible with other browsers once we figured out the blocking bug or missing feature.

We can’t realistically pass these tests 100% as they test such a huge set of APIs - it would take us years to catch up with other browsers so we can only focus on what is used by priority websites.

And something that was much easier to implement than you thought?

The HTML parser. I first wrote an HTML parser back in 2002, and back then there was no detailed specification of how to handle badly-nested elements. We spent so much time writing test cases to figure out what desktop browsers did in each situation, and trying to behave the same. Ten years later, the detail in the WHAT-WG specification was amazing, and it was perfectly possible to write an HTML parser that is completely compatible with all other browsers.

And a feature you decided not to implement for now?

HTML forms. A TV user interface doesn’t use most, if any, of the features of HTML forms so it was a very low priority. We started adding them because they are needed for general web browsing, but they are not complete.

We haven’t yet implemented WebGL or IndexedDB because they are not used on most of the websites we’ve tried. Obviously Google Maps uses WebGL and Google Docs uses IndexedDB but both have fallbacks. Implementing more features to allow a larger number of websites to work is a priority.

What is Flow's UA string?

For the Mac version, it's the following:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) EkiohFlow/5.7.4.30559 
Flow/5.7.4 (like Gecko Firefox/53.0 rv:53.0)

The strings vary depending on the device, but the "EkiohFlow" and "Flow" strings should always occur.

Why do you emulate Firefox? I assumed it'd be Chrome.

We’ve spent ages on that UA string… I could probably write a blog post about it. Essentially, I copied Chrome. Things mostly worked. Then I hit the Instagram site, which decided to use ES6 features based on the UA string. I changed it to FireFox’s, using the version of SpiderMonkey that we were using (53 in the build you have), and the site worked. Then I added more afterwards (the rc:53) to get us to the more modern Google login box.

The UA string isn’t final at all but its choice is full of compromises.

Ekioh creates browsers for set-top boxes. What is Flow’s main purpose on set-top boxes?

It is used to render the UIs created by the box’s vendors, and not for actually surfing the web. But we don’t always get to see the UIs the vendors create, so being able to render all HTML flawlessly is the goal. That way, UI developers can do as they please.

Does the average set-top box have a browser meant for surfing the web?

Sort-of, but not really. I have a 2012 Sony TV with that functionality, but it was useless then and is useless now. IR has a significant lag, and that makes TV remotes far too painful to control a TV browser with. I don’t recall any modern TV/STBs that let you have open internet, but they probably exist. I can’t imagine anyone seriously using them.

Flow also runs on TVs and embedded devices. Could you give a few examples of embedded browsers? And TV browsers?

Back before we started our SVG engine, there were many HTML 4 browser engines for the TV market, such as ANT Fresco and Galio (which I also worked on), Access’s NetFront, Oregan, Espial and Opera. For the non-TV market, we have replaced Internet Explorer Mobile on a line of Windows CE devices. These days, almost all embedded browsers are based on Blink or WebKit.

What are your main competitors in the TV and embedded browser markets?

The main competitors to Flow are Blink and WebKit. Most STB providers often do their own port of one of these browsers. WebKit can be optimised for these low-powered devices, but Flow is usually able to out perform other browsers, and in the areas it’s not as fast, we can usually optimise it.

In a strange way, we also compete with ourselves - we offer our own embedded WebKit-based browser that is more feature-complete than Flow. The same developers work on maintaining and improving that.

Thanks for this interview!

You’re welcome.




se

Discrete Morse theory / Nicholas A. Scoville

Dewey Library - QA612.7.S36 2019




se

Mathematical topics on representations of ordered structures and utility theory: essays in honor of Professor Ghanshyam B. Mehta / Gianni Bosi, María J. Campión, Juan C. Candeal, Esteban Indurain, editors

Online Resource




se

Stochastic processes: an introduction / Peter W. Jones, Peter Smith

Online Resource




se

Elementary theory of analytic functions of one or several complex variables / Henri Cartan

Online Resource




se

Statistical theory: a concise introduction.

Online Resource




se

Polynomial one-cocycles for knots and closed braids / Thomas Fiedler

Dewey Library - QC20.7.K56 F54 2020




se

Selected exercises in algebra. Rocco Chirvì, Ilaria Del Corso, Roberto Dvornicich

Online Resource




se

Stochastic processes with applications to finance.

Online Resource




se

Stochastic processes in science, engineering, and finance / Frank Beichelt

Online Resource




se

Probability theory and statistical inference: empirical modelling with observational data / Aris Spanos

Dewey Library - QA273.S6875 2019




se

Stochastic game strategies and their applications / by Bor-Sen Chen

Online Resource




se

Morse index of solutions of nonlinear elliptic equations / Lucio Damascelli and Filomena Pacella

Dewey Library - QA614.5.D36 2019




se

Inequivalent representations of canonical commutation and anti-commutation relations: representation-theoretical viewpoint for quantum phenomena / Asao Arai

Online Resource




se

The cryptoclub: using mathematics to make and break secret codes / Janet Beissinger, Vera Pless

Online Resource




se

Decision making theories and methods based on interval-valued intuitionistic fuzzy sets Shuping Wan, Jiuying Dong

Online Resource




se

From Lambda Calculus to cybersecurity through program analysis: essays dedicated to Chris Hankin on the occasion of his retirement / Alessandra Di Pierro, Pasquale Malacaria, Rajagopal Nagarajan (eds.)

Online Resource




se

Lectures in classical mechanics: with solved problems and exercises / Victor Ilisie

Online Resource




se

Numerical computations: theory and algorithms: Third International Conference, NUMTA 2019, Crotone, Italy, June 15-21, 2019, Revised selected papers. / edited by Yaroslav D. Sergeyev, Dmitri E. Kvasov

Online Resource




se

Continuous semigroups of holomorphic self-maps of the unit disc Filippo Bracci, Manuel D. Contreras, Santiago Díaz-Madrigal

Online Resource




se

Continuous and discontinuous piecewise-smooth one-dimensional maps: invariant sets and bifurcation structures / Viktor Avrutin (University of Stuttgart, Germany), Laura Gardini (University of Urbino, Italy), Irina Sushko (National Academy of Sciences of U

Dewey Library - QA614.8.A97 2019




se

Reinforcement learning and optimal control / by Dimitri P. Bertsekas

Dewey Library - QA402.5.B465 2019




se

Discrete mathematical structures: a succinct foundation / authored by B.V. Senthil Kumar and Hemen Dutta

Dewey Library - QA297.4.K86 2020