RSSAmplifier

Blog

Liam Kaufman

Recent content on Liam Kaufman

liamkaufman.comRSS feed ↗35 posts

Latest posts

What comes after the DDT pathway?

The drug development tool pathway was added to the FDA act, however, key provisions of the 21st Century cure act are set to expire in September 2026 including what looks like funding for this program. In the process of renewing the program, it could provide a good opportunity to rethink the DDT pathway. Recently released guidelines for artificial intelligence use in drug development could provide…

Is the Drug Development Pathway worth pursuing?

I was recently discussing the FDA’s Drug Development Tool (DDT) qualification program with a colleague. They questioned the utility of the pathway and I’ve heard similar sentiment from others over the past year or two. For people not deeply familiar with the DDT pathway here’s some additional context: The pathway was created in 2016 as part of the 21st Century Cures Act and outlined 3 streams: 1)…

FDA released a draft guidance on the use of AI to support regulatory decision-making for drugs

Last week the FDA released a draft guidance on the use of AI to support regulatory decision-making for drugs . Overall the guidance covers the basics for model development, training and testing and the special considerations based on the level of risk associated with the model. Reassuringly the guidance doesn’t deviate from many best practices that the industry has developed over the last decade.…

FDA Guidance on Assessment of Abuse Potential of Drugs

An important consideration for the development of new drugs is whether they can be abused - the FDA released a guidance document in January 2017 - detailing considerations in the assessment of abuse potential for drugs . The document defines drugs that have CNS activity and produce euphoria (or other changes in mood), hallucinations, and effects consistent with CNS depressants or stimulants as…

Rough Notes: Us Against Alzheimer's: Measure What Matters Most (WMM)

From 2023 to 2024 Us Against Alzheimer’s published a number of publications and abstracts covering their “Alzheimer’s Disease Patient and Caregiver Engagement (AD PACE)” What Matters Most (WMM) research program. AD PACE was a collaborative effort that included not only people from Us Against Alzheimer’s, but also representatives from Biogen, Lundbeck, Otsuka, BI, Takeda and more. The objective of…

FDA's Guidance on Patient-Focused Outcome Measurement in Clinical Trials

With more and more digital health drug development tools (DDT) being used in clinical research I’m increasingly interested in understanding how we can differentiate these tools from status quo “gold standard” measures. What’s a sponsor’s incentive to use something other than the gold standard? Focusing on DDT’s objectivity, reliability, etc are important but I believe that focusing on what’s…

FDA Committee meeting for generative AI-enabled mental health medical devices

Today the FDA held their “Digital Health Advisory Committee Meeting” to get feedback from industry experts (payers, providers, startups, etc), academics and clinicians on “Generative Artificial Intelligence-Enabled Mental Health Medical Devices.” There were a few clear themes across the sessions: There is a large unmet need for mental health services and therapy. This is caused by many issues: too…

NHS AI Trial Delivers Savings

This week the UK Government unveiled the results of an AI pilot that they conducted with Microsoft 365 Copilot . The government notes that it is the largest study of its kind and it involved more than 30,000 NHS workers. The focus of the pilot was on time savings and productivity. They found that “AI-powered administrative support” could save an average of 43 minutes per staff member per day. The…

Smiley Faces in Linux Source Code and Token Statistics

Github uses Linguist , a Ruby library, to help detect which programming language is in a given file. Recently, an issue was filed that indicated that Linguist incorrectly classifies Mercury (a programming language) files as Objective-c since they both use the same extension (.m). Linguist’s primary method for language detection is a file’s extension - a method that fell short for Mercury. If…

Understanding AngularJS Directives Part 2: ngView

In a previous article I explored ng-repeat, it's implementation, and how to create a custom repeater . In this article I'll first delve into the inner workings of ngView and then walk through the creation of an "ngMultiView" directive. To get the most out of this article you'll need an intermediate understanding of creating directives (via the previous article on ng-repeat and reading the the…

Using AngularJS Promises

In my previous article I discussed the benefits of using dependency injection to make code more testable and modular. In this article I’ll focus on using promises within an AngularJS application. This article assume some prior knowledge of promises ( a good intro on promises and AngularJS' official documentation ). Promises can be used to unnest asynchronous functions and allows one to chain…

How AngularJS Made Me a Better Node.js Developer

Over the past 6 years I’ve used Ruby on Rails, Backbone.js, Node and AngularJS. RoR reinforced my knowledge of Model View Controller (MVC) while Backbone.js did the same for my knowledge of Publish/Subscribe. Like many who made the switch to Node, my first instinct was to try and apply MVC to my Node.js apps - however, it felt unnatural. Taking a "class"-based approach, using CoffeeScript, didn’t…

Understanding AngularJS Directives Part 1: ng-repeat and compile

My first impression of Angular.js was one of amazement. A small amount of code could do a lot. My worry with Angular, and other magical frameworks, is that initially you are productive, but eventually you hit a dead end requiring full understanding of how the magic works. In my quest to master Angular.js, I wanted to learn everything about creating custom directives - a goal that I’d hope would…

Adding Real-Time To A RESTful Rails App

After rewriting Understoodit several times I’ve spent a lot of time thinking about building real-time web applications. While I elected to rewrite 100% of Understoodit in Node, there are many existing Rails and Sinatra applications that can’t be completely rewritten, but could still benefit with the addition of real-time updates. The tutorial below starts with a traditional web-app written in…

Three Important Conversion Metrics You Should Watch

You’ve created an app that your beta testers use and your launch was a huge success . Every day the number of registered users increases and you feel like you’re making progress and moving closer to your goals. It would be a mistake to hunker down and focus singularly on hammering out new features. Now that you’ve launched you have significantly more people visiting your homepage, creating…

Are You Ready To Launch?

Last Week : Before Launching, Build Software People Use You’ve created a product that people want to use, and now you’re eager to launch. From my experiences launching Understoodit , in May 2012, I’ve compiled a set of steps that helped Understoodit get on several big sites including TechCrunch , Toronto Star , and BetaKit . If you have a large budget hiring a PR firm might be your best bet,…

Before Launching Build Software People Use

You’re a talented developer and have a great idea for a startup. You’ve read The Lean Startup , you’ve attended entrepreneur events, and you read Hacker News . At this point you’re confident that you’ll be able to build a compelling product while avoiding common startup mistakes. Unfortunately, that pretty much summed up my (immodest) perception of myself prior to launching Understoodit.com .…

Why You Should Be Nice To Your Customers

Being nice to your customers seems like a no brainer. It makes perfect business sense: happy customers are less likely to stop using your service and more likely to refer your service to their friends. However, there is another significant reason that being nice pays off. Running a startup can be a tough slog. You’re unsure if people like what you're building enough for it to be successful. If you…

Stripe Would Be Perfect If...

I was among many Canadian developers who where happy to hear that Stripe had come to Canada. We were planning on adding subscriptions to Understoodit.com , so the timing couldn’t have been better. We assumed that it would take a couple of days to integrate Stripe, but it actually took @davidmisshula and me 7 days. The process gave me some insights that I thought I’d share. I’ve heard that Stripe…

Common JavaScript Errors

With the rise of thick client-side applications, and Node.js, JavaScript has become an increasingly important programming language. Despite its simplicity, JavaScript presents some difficulties for those new to the language. I thought it would be useful to outline several JavaScript errors that I commonly made when I was learning the language. Scope: this, that and window Like many programming…

Redis and Relational Data

UPDATE: Based on the feedback in the comments (Phineas), I've added an index to the comments table and updated the results. Using the right tool for the job is a basic tenant amongst programmers. However, with all the currently available database options it's increasingly difficult to figure out what the right tool is. Sometime it's nice to have a very simple tool that can be used for many…

Adding Authentication, Waiting Lists and Sign Ups to an Express App Using Drawbridge.js and Redis

There are several popular modules for adding password-based user authentication to an Express.js app. Unfortunately, they require writing lots of code to get started. I prefer the approach that authentication libraries like Devise take: they generate code and views, and you’re free to modify, or delete, what’s created. Given the authentication options for Express.js I wanted to create a module…

From Digg to Reddit to Hacker News: What's Next?

Dustin Curtis, the creator of Svbtle , recently mentioned on Twitter : I miss the Hacker News from four years ago. It was awesome. The discussions there are not even worth reading anymore. It's sad. Based on the number of retweets and favorites, I suspect that others agree. In fact the idea that Hacker News is degrading is common enough that it has been addressed on HN’s guidelines : If your…

Making Hacker News Faster: Two Approaches

Over the years traffic to Hacker News (HN) , "a social news website about computer hacking and startup companies" (Wikipedia) , has grown consistently, with an average of 150,000 daily uniques . The growth in traffic may explain why load times seem increasingly variable. I couldn’t help but wonder if some optimizations could be made to decrease both variability and load times. I'll propose two…

Scraping Web Pages with jQuery, Node.js and Jsdom

I always found it odd that accessing DOM elements with Ruby, or Python, wasn't as easy as it was with jQuery. Many HTML parsing libraries employ Simple API for XML (SAX) that can handle extremely large XML documents, but is cumbersome and adds complexity. Other parsing libraries use XML Path Language (XPath), which is conceptually simpler than SAX, but still more of an effort than jQuery. I was…

Why Riak and Node.js Make a Great Pair

In the last few years there has been a proliferation of noSQL databases. Searching on Google for site:news.ycombinator.com nosql yields over 2,500 hits, many of which include include posts asking when you'd want to use a noSQL database. If you're used to a relational database it might seem like an unnecessary burden to learn another database paradigm, but there's one open source noSQL database…

Adding Real-Time To Rails With Socket.IO, Node.js and Backbone.js (With Demo)

UPDATE: see my new article on adding real-time to your Rails application . Despite the recent distaste for Rails , I still think its a nice framework for developing websites (e.g. devise & active record). However, if you want real-time communication Socket.IO and Node.js seem to be the best options. If you already have an existing Rails application porting the entire application to Node.js is…

Integrating Backbone Boilerplate with Rails 3

Despite making several small Backbone.js apps in the past year, Backbone.js had never really clicked with me. I wasn't crazy about having to spend time thinking about file and folder organizing for JavaScript and template files. I was also unsure how all the pieces would fit together. Thanks to Tim Branyen's Backbone Boilerplate those issues have been significantly reduced. According to Backbone…

Pushing Files to the Browser Using Delivery.js, Socket.IO and Node.js

Recently I've been working with both the HTML 5 File API and Socket.IO and it occured to me that those technologies could be used to send, and push, files between the client and server. Immediately I set about making delivery.js, a simple node module that makes it extremely easy to send and push files between the client and the server via Socket.IO. I should note that this is my first node module,…

Testing Socket.IO with Mocha, Should.js and Socket.IO Client

I’m currently in the midst of creating an application that utilizes Socket.IO for real-time communication between users. Using mocha and should.js I was able to test objects within my node app. However, I quickly found that there were some odd synchronization issues between clients that the test cases couldn't cover. To test the interaction between clients I needed a way to programatically…

Examples I Want to See in JavaScript Frameworks.

With the public release of ember.js , I excitedly poured over the examples hoping to find a framework that would make Creating, Reading, Updating and Deleting (CRUD) easier. When push comes to shove, the vast majority of apps that I've worked on involve CRUD. I want to see the following (excuse the pseudo code): ``` javascript Model model({ validation: function(m){...} }); ``` ``` javascript…

What is the best way of Mastering JavaScript?

I want to master JavaScript. Before humbly doing so, I think it’s important to define what I think mastering JS consists of. In my opinion there are two parts to mastering a programming language. The first is mastering the language itself: syntax, important functions, classes, idioms, etc. The second part is mastering the programming paradigm, or paradigms, that the language falls in. This second…

Liamkaufman.com gets a new look

After 3 years without change, I've redone my personal website using Jekyll and Bootstrap. The previous version of liamkaufman.com was hosted on Google App Engine and consisted of a very basic CMS that I made before I knew what I was doing. I was both unhappy with the look of the site, and the code behind it. At the same time I was interested in using Jekyll, as I wanted to avoid the hassles…

pyItunes, a Python iTunes Library Parser

In an effort to add some personality to this site I thought I'd list my favourite songs. iTunes provides a mechanism for users to rate songs, by giving a song 0 to 5 stars. After years of listening to music, and rating it, I have a large collection of rated songs. Manually copying and pasting each song into an HTML file seemed inefficient and time consuming, enter Python. In an effort to learn…

(untitled)

Liam Kaufman currently leads product at Cambridge Cognition, a company that specializes in computerized cognitive assessments and speech-based biomarkers. From time to time Liam writes about AI, medicine and product. The intention of this site is to help him learn about these topics through writing. Prior to Cambridge Cognition, Liam was the cofounder and CEO of Winterlight Labs. Winterlight…