HN user

mfrisbie

962 karma

Personal site: mattfriz.com

Company: trackandtrace.tools

Posts17
Comments67
View on HN
mattfrisbie.substack.com 9mo ago

Everyone Should Sideload More Browser Extensions

mfrisbie
3pts0
www.buildingbrowserextensions.com 3y ago

Chrome's Manifest V3 Push Signals a Changing of the Guard

mfrisbie
1pts0
alwaystrend.in 8y ago

GitHub Reminds Companies Who's in Charge by Causing Temporary Service Outages

mfrisbie
1pts0
alwaystrend.in 9y ago

“What Happens When You Visit a URL?” Answers Including NSA, GFW Deemed Too Grim

mfrisbie
2pts0
alwaystrend.in 9y ago

Coursera Announces Pilot Course on Pedantic Criticism of Major JavaScript Frameworks

mfrisbie
1pts0
alwaystrend.in 9y ago

Open Home Office Raises $7M to Bring Office Distractions to Remote Workers

mfrisbie
20pts8
medium.com 9y ago

Postmortem: Someone Cloned My Book on Amazon

mfrisbie
3pts0
alwaystrend.in 9y ago

Office Tensions at All-Time High After Engineer Switches to Mechanical Keyboard

mfrisbie
4pts0
alwaystrending.io 9y ago

Study: 97% of Node.js Projects Use Package Containing Npm Creator's Shopping List

mfrisbie
23pts3
alwaystrending.io 9y ago

Feinstein Dependent on Encryption in Efforts to Pass Encryption-Destroying Law

mfrisbie
7pts0
www.mattfriz.com 9y ago

Startup Adopts JavaScript Framework in Effort to Rectify Insurmountable Technical Debt

mfrisbie
3pts0
www.mattfriz.com 10y ago

We Created the Perfect Technical Hiring Process

mfrisbie
2pts0
www.mattfriz.com 10y ago

The Tenacity of Tech Recruiters

mfrisbie
94pts75
blog.uber.com 11y ago

Uber launches UberEATS – food delivery in 10 minutes or less

mfrisbie
2pts0
www.thinkster.io 12y ago

AngularJS Tutorial: now real-time with no backend using Firebase

mfrisbie
17pts3
www.thinkster.io 12y ago

AngularJS Tutorial: Learn to Build Modern Web Apps

mfrisbie
326pts91
www.thinkster.io 13y ago

A Better Way to Learn AngularJS

mfrisbie
15pts4

I run Track & Trace Tools[1], an extension directly targeted at the legal cannabis industry's main compliance platform Metrc.

Since it's targeted at businesses and not consumers, word of mouth has been powerful for me. I've rapidly grown in the state of Michigan thanks to a few very enthusiastic operators.

I also went on a slate of podcasts last year to talk about (read: promote) my product. Podcast hosts are always looking for guests, and most of them didn't cost me a thing.

It's also been helpful to be a Google Developer Expert for web extensions, the Chrome team interviewed me and that gave me a platform to talk about what I was working on[2].

[1] https://trackandtrace.tools

[2] https://youtu.be/8P-Sc8ZaViY?si=tLhx3LMIlNqHBvfB

I've been self-employed for nearly two years. I work on a Chrome extension [1] that is used by a significant fraction of the US legal cannabis industry for compliance.

2/3 of my time is spent on consulting projects, which pay better, and the rest is spent maintaining the platform. At the moment, the platform is self-sustaining and the revenue from it is growing fast. I work some of the largest companies in the industry, which is great for network building. The flexibility in schedule it offers is terrific, and I have no need to fundraise or hire.

[1] https://www.trackandtrace.tools/

A big factor in my industry was scanning damaged barcodes, which was frequent since they're attached to indoor/outdoor plants and physical boxes that get moved around. They get weathered and scraped.

If there's even slight damage to the barcode, forget the browser scanners, you can scan that thing until the next Olympics and not get a read. HID scanners don't skip a beat.

The initial idea involved a low-friction onboarding that didn't require any extra hardware - "Just use your phone to scan!". Stupid.

Turns out that workers would rather manually key in the last 5 numbers of a barcode to look it up than screw around with a poorly behaved camera. For the current version of the platform, it's either dedicated hardware scanning or manual ID search, the phone scanning wastes everybody's time.

Resolution is certainly a major factor in the scanning acuity. The browser scanning issue is somewhat paradoxical: getting a clear and high-resolution image of the barcode improves scan accuracy, but to achieve this, the camera needs to get so close to the barcode that the autofocus starts to freak out and blur the barcode. Since the browser scanner is using the browser camera API, there's no good mechanism to control the autofocus. It's enough to make you want to throw your phone in the garbage.

QR codes are very easy to scan in-browser, but 1D barcodes are significantly more challenging. ~75% of the cannabis industry deals with Metrc, which forces companies to place 1D Code-128 barcode tags on everything they grow or manufacture. As a result, I've spent a lot of time investigating ways to scan these barcodes with a phone camera in a cross-browser webpage.

Ultimately, after much experimentation, the unavoidable conclusion is that the optical scanning solutions are junk. Connecting a crappy $20 HID bluetooth barcode scanner to a phone is so crazily better at scanning a 1D barcode than even the most massaged optical barcode scanning libraries. Industry workers that deal with these barcodes don't even bother with phone camera scanning, it's way too slow and temperamental.

My favorite Metrc API wart was submitting harvests when their API servers were bogged down. Sometimes, your "create harvest" request would get stuck in a transaction pool that wouldn't timeout for 10 minutes. You'd have to wait the full 10 minutes to see if it succeeded or not because setting a shorter timeout would risk double-submitting the harvest, thereby completely screwing up that cannabis business's compliance data.

Up until very recently there was plenty of federal support for tobacco farmers, and you can't eat that either.

If states are going to legalize and tax, then they're obligated to treat these businesses as legitimate - especially with respect to social equity programs that give priority to minority license applicants. If you're sending these licensees into a meat grinder, that's not social equity.

I was on Cannabis Talk 101 recently to talk about this issue specifically: https://www.youtube.com/watch?v=FwOmtBo8sBU

It is not hyperbolic to say that in many states, the cannabis industry is drowning. Far too much regulation, far too many taxes, and no access to capital yields an environment for cannabis SMBs that is effectively impossible to thrive in. The largest multi-state operators are the only businesses that are positioned to survive this downturn.

Contrast this with federal agricultural policy for the past 100 years, in which entire agencies are dedicated to ensuring the health of American agriculture through loans, subsidies, and economic policy. Even though cannabis is the 6th largest cash crop in the US - roughly the same size as cotton, and larger than rice or potatoes, it is being actively crushed underfoot.

Federal legalization is not close, and SAFE banking is not close. The industry as a whole is sliding into an enduring period of stagnation, and legislators are far too slow to act. For people who have been closely following the industry, all of this is completely unsurprising.

Fair point, multiple people have circled this snippet as problematic. I'll confess, I didn't spend much time testing this for performance.

My idea was that separate inputs should have separate debounced handlers, but it's likely you could do away with that and just listen for input events globally with no adverse effect on data collection.

Safari's extension support is great, I was keen to include that in the book. Having to develop extensions inside XCode and deploy them in the Apple App store felt a bit odd, but it's really interesting how the extension has a dedicated "app" on the phone, which allows for some interesting possibilities.

I'm a faithful Firefox Mobile user myself, it's the easiest way to use an adblocker on a mobile device. I don't think it's controversial to suggest that extensions are a desktop-first platform: things like popups, omnibox API, contextmenu API, or customizing developer tools either aren't applicable in a mobile format or don't translate very well.

I was enthusiastic enough about extensions that I decided to publish a book about building them: https://www.buildingbrowserextensions.com/

Browser extensions are severely underrated as a platform because they aren't sexy. For all that mobile devices have given us, so much of our work continues to be done using a desktop browser. Enhancements such as augmenting websites with widgets, supplying contextual information, and automating repetitive tasks using the authenticated session - when applied appropriately - can save someone hours every day.