. * * window.aa needs to exist and be usable by ANY module's script, * however early it runs - main-nav's script, for one, runs near * the top of

91̽»¨

, well before the real search-insights.js * so the download * begins as early as before. Repeat calls share the same downloads, a * failed load is retried on the next call, and the versions / SRI * hashes live only here. * * Algolia Insights is unaffected: window.aa above is still created in * on every page and queues events until search-insights loads. * * window.loadAlgoliaLibs({ priority: 'high' }) (Oct 2026): used by the * /search page, where the first results wait on these libraries. Chrome * gives async scripts low priority, behind images and fonts; this asks * for high instead (fetchpriority). Only the first call for a library * sets its priority - later calls share that download. */ (function (win, doc) { var LIBS = [ { ready: function () { return !!win['algoliasearch/lite']; }, src: 'https://cdn.jsdelivr.net/npm/algoliasearch@5.52.1/dist/lite/builds/browser.umd.js', integrity: 'sha256-I2oYUIvhx1g6l4lTP+yoERbzLIHKzw4AKaBRQPwIeDY=' }, { ready: function () { return !!win.instantsearch; }, src: 'https://cdn.jsdelivr.net/npm/instantsearch.js@4.98.0/dist/instantsearch.production.min.js', integrity: 'sha256-ngmqZk4WBxUw257aMYZayyNBd983INngagv0jI6Ecfs=' } ]; function loadOne(lib, options) { if (lib.ready()) return Promise.resolve(); // One download per library, shared by every caller; reset on // failure so the next call retries just the library that failed. if (lib.pending) return lib.pending; lib.pending = new Promise(function (resolve, reject) { var script = doc.createElement('script'); script.src = lib.src; script.integrity = lib.integrity; script.crossOrigin = 'anonymous'; script.async = true; if (options && options.priority === 'high') script.setAttribute('fetchpriority', 'high'); script.onload = function () { lib.ready() ? resolve() : reject(new Error('Loaded but not available: ' + lib.src)); }; script.onerror = function () { script.remove(); reject(new Error('Could not load ' + lib.src)); }; doc.head.appendChild(script); }); lib.pending.catch(function () { lib.pending = null; }); return lib.pending; } win.loadAlgoliaLibs = function (options) { return Promise.all(LIBS.map(function (lib) { return loadOne(lib, options); })); }; })(window, document); . */ window.hsConversationsSettings = window.hsConversationsSettings || {}; window.hsConversationsSettings.loadImmediately = false; (function (win) { var EVENTS = ['pointerdown', 'keydown', 'touchstart', 'scroll', 'mousemove', 'wheel']; var done = false; /* 19 Oct 2026 - chat widget layout shift (field CLS). Phones fail Core Web Vitals on CLS (p75 ~0.2 site-wide in CrUX for months). Biggest cause found: HubSpot's chat container is fixed to the bottom-right corner and changes size - 100x96 launcher to 282x253 when the welcome message pops up (~5 s after load), and to full screen when a visitor opens the chat. Its top-left corner moves, so Chrome scores it as a layout shift: 0.088 per page view at 360x640 (0.044 at 412x850), on every page. Taps happen inside the chat iframe, so the parent page never sees the input and the open/close shifts count too. Fix: whenever the container's size changes it is made transparent for 400 ms (Chrome doesn't score shifts of invisible elements), then shown again at its new size. Tested on live io1001 at 360x640 in a cookie-less frame: the 0.088 shift no longer appears. The chat itself is unchanged - it just appears 0.4 s later at each resize. Relies on HubSpot's container id; if that changes this does nothing (no error). */ function cloakChatResizes() { var ID = 'hubspot-messages-iframe-container'; function watch(c) { if (c.getAttribute('data-bb-cloak')) return; c.setAttribute('data-bb-cloak', '1'); var last = c.offsetWidth + 'x' + c.offsetHeight, timer = null; new MutationObserver(function () { var size = c.offsetWidth + 'x' + c.offsetHeight; if (size === last) return; last = size; c.style.setProperty('opacity', '0', 'important'); clearTimeout(timer); timer = setTimeout(function () { c.style.removeProperty('opacity'); }, 400); }).observe(c, { attributes: true, attributeFilter: ['style', 'class'], subtree: true, childList: true }); } var found = document.getElementById(ID); if (found) { watch(found); return; } if (!document.body || !('MutationObserver' in win)) return; var mo = new MutationObserver(function () { var c = document.getElementById(ID); if (c) { mo.disconnect(); watch(c); } }); mo.observe(document.body, { childList: true }); setTimeout(function () { mo.disconnect(); }, 30000); } function loadWidget() { var api = win.HubSpotConversations; if (api && api.widget && api.widget.status && api.widget.status().loaded) return; try { cloakChatResizes(); } catch (e) {} if (api && api.widget) api.widget.load(); } function onFirstInteraction() { if (done) return; done = true; EVENTS.forEach(function (type) { win.removeEventListener(type, onFirstInteraction, { passive: true }); }); var start = function () { if (win.HubSpotConversations) loadWidget(); else (win.hsConversationsOnReady = win.hsConversationsOnReady || []).push(loadWidget); }; if ('requestIdleCallback' in win) win.requestIdleCallback(start, { timeout: 1500 }); else setTimeout(start, 200); } EVENTS.forEach(function (type) { win.addEventListener(type, onFirstInteraction, { passive: true }); }); })(window);

91̽»¨

Skip to main content
Introducing Bit Bio — coding cells, the building blocks of life.

14.10.2019 | Published by Medium

Introducing Bit Bio — coding cells, the building blocks of life.

Featured Image

Over the past decades we have made tremendous progress in biomedical research. Scientists are now able to turn individual genes off or on, and edit them with CRISPR; soon we will be able to record the activity of all genes in a single cell. Therapies have progressed from small molecules to biologics; the first CAR-T cell therapies provide a glimpse of a future where cancer could be eradicated.

However, today cell therapies are expensive and not scalable, and the development of new drugs has not kept up with the progress in biology.  because the drugs turn out to be . Human biology often  and cell lines used for drug development. Given the lack of reliable human cells, pharmaceutical companies continue to depend on these models. To bridge the gap, a scalable source of consistent human cells is needed.

Widespread access to human cells will enable a new generation of medicine. But human cells are difficult to source . It is difficult to acquire sufficient numbers of cells from a individual, and some cell types are altogether impossible to obtain. The alternative, creating cells from stem cells, has been fraught with problems, such as inconsistency and long and complex protocols that are difficult to reproduce and scale.

(These same problems prevent the use of cells for other large scale applications, such as biomanufacturing meat or lab grown leather.)

. Cell reprogramming involves activating a new , skipping the usual intermediate steps that occur during development. It can be used to generate real stem cells from a blood draw or skin sample from any individual. This won Yamanaka a  and resolved the ethical issues surrounding the use of stem cells.

Reprogramming can also be used to convert stem cells back into any desired cell type, be it a , , or .

However, reprogramming has traditionally been . To overcome this hurdle, over the past five years, my research lab at The University of Cambridge has developed a gene engineering approach, . Applied to  it enables precise reprogramming of entire cultures of stem cells into any desired cell type. By overcoming this bottleneck of traditional stem cell approaches, we can unlock their full potential.

Today we are excited to announce the launch of Bit Bio. Bit Bio represents the two fields â€�coding and biologyâ€� that are core to our company. Bits are building blocks of code, just as cells are building blocks of life. Together, they illustrate what we do: precise reprogramming of human stem cells. Bit Bio is solely dedicated to producing functional human cells for research, drug discovery, and cell therapy.

Our moonshot goal is to develop a scalable technology platform capable of producing consistent batches of every human cell. Over the past 18 months, we have created a high throughput research platform to identify transcription factor combinations that make up cell type programs. In the next 18 months, we will leverage it with advanced deep learning algorithms to accelerate the discovery of every single cell type of the human body. Combining individual sub programs will enable us to produce cells with enhanced functions for therapeutic application. We will validate our cells and make them available for research, drug discovery, and cell therapy by working together with best in class institutions and industrial partners.

To achieve our goals, we have assembled a team of pioneers in the field of stem cells, cellular reprogramming, and cell therapy. , scientific advisor, is one of the founders of human stem cell biology and , also part of our SAB, a pioneer in cell reprogramming. Together with other members of our team they have not only been pivotal for creating the field but continue to push the envelope. Experts such as , a leader in Immuno-oncology, and  previously involved in growing a cell therapy company, have joined Bit Bio as scientific advisor and CFO/COO, respectively. Our commercial team is led by serial biotech entrepreneur and CBO, .

When Intel launched, the idea of a widespread use of computers was a remote fantasy. Today, there are few areas of our lives that have not been transformed by them. Creating a standard for semiconductor chips formed the basis of our entire IT industry. What Bit Bio is doing is similar: building a platform that, if it works, can transform biomedical research: enable scientists and innovators to focus on what they do best, and leverage  to provide the cells.

Related pages

About us Coding cells to advance the wellbeing of humanity
Careers See the latest openings
Blog See the latest blogs