HN user

tschiller

281 karma

Currently working on https://www.pixiebrix.com

PixieBrix is a browser extension anyone can use to customize websites and SaaS to fit the way they work. (Think userscripts, but lego blocks)

https://toddschiller.com/ https://www.linkedin.com/in/tschiller/

Posts11
Comments49
View on HN

PixieBrix | REMOTE | https://www.pixiebrix.com

What if you could customize any web app to provide the perfect user experience?

Make an impact on a small, growing, team that's open-source, post-revenue, and VC-backed by NEA

Open positions (learn more at https://careers.pixiebrix.com/positions):

  - Head of UX/Product Design
  - Senior Front-end Engineer
  - Lead Browser Extension Engineer (must ♥ reverse engineering)
Stack: Typescript, React/Redux, Python, Django/DRF, PostgreSQL

Email careers@pixiebrix.com. We're fully remote within ±3 hours of ET

PixieBrix | REMOTE | https://www.pixiebrix.com

Our mission is to give everyone the power to customize their technology to have the perfect UX. Our first product is a low-code browser extension builder (open-source under AGPLv3)

We recently raised a 3.5M seed from New Enterprise Associates (NEA)

Open positions (learn more at https://careers.pixiebrix.com/positions):

  - Product UI/UX lead
  - Developer Advocate 
  - Lead Web Engineer (must like reverse engineering)
  - Lead Backend Engineer
Stack: Typescript, React, Redux, Python, Django, PostgreSQL, DRF, Heroku, GitHub

Email careers@pixiebrix.com. We're remote within ±3 hours of ET

PixieBrix | REMOTE | https://www.pixiebrix.com

Our mission is to give everyone the power to customize their technology to have the perfect UX. Our first product is a low-code browser extension builder (open-source under AGPLv3)

We recently raised a 3.5M seed from New Enterprise Associates (NEA) and some incredible angel investors including Tableau co-founder Chris Stolte and DataRobot CEO Dan Wright

Open positions:

  - Product UI/UX lead (UI/UX designer who can code)
  - Community/education lead
  - Senior Backend Engineer - API/platform lead 
  - Senior Front-end Engineer
Stack: Typescript, React, Redux, Python, Django, PostgreSQL, DRF, Heroku, GitHub

Email careers@pixiebrix.com. We're remote within ±3 hours of ET

PixieBrix | REMOTE | https://www.pixiebrix.com

Our mission is to make it possible for everyone to customize the web to fit the way they work. (Think browser extensions and userscripts, but using sharable lego blocks)

Come be a founding engineer at a company backed by a leading VC and execs of major AI, business intelligence, and edutech companies

Open positions:

  - Senior Front-end Engineer
  - Senior Backend Engineer - Platform Lead 
  - Mid-Level Web Designer/Developer
Stack: Typescript, React, Redux, Python, Django, PostgreSQL, DRF, Heroku, GitHub

More information at https://careers.pixiebrix.com. We're remote within ±3 hours of ET

Author of the blog post here! If you comment with corrections/milestones I missed, I'll try to incorporate them

I'll also be attempting to update the augmented browsing/browser extension Wikipedia page in the coming weeks

Not an expert on this part, but I'd imagine that problem isn't having an API, it's more that running native executables is the problem if you can't sandbox them or limit their resource consumption. Also, relative to running Javascript, their base resource utilization per tab is significantly worse (especially for Java or .NET-based ones that have a base resource utilization from the VM)

The timeline of browser extensibility is quite fascinating. There's really not a single place that covers all of it, so I decided to research my own timeline/history:

  - Consumer web browsers (1993-)
  - Plug-ins (1995-2015ish)
  - User Style Sheets (1998-2019)
  - Bookmarklets (1998–)
  - Browser Extensions (1999–)
  - Mozilla XUL (1997–2017)
  - Alternative Browser Distributions (2004–)
  - Userscripts (2005–)
  - Converging on the WebExtensions API (2017–)
  - Manifest V3 (2021–)
  - No/Low-Code Browser Extension Builders (2021–)
Here's a link to the blog post with my research: https://medium.com/brick-by-brick/a-brief-history-of-browser...

Also, if you care about browser extensibility, join the w3 group (it's free) and watch the GitHub repo!

PixieBrix | REMOTE | https://www.pixiebrix.com

Our mission is to give everyone the ability to customize the websites they use to have the perfect UX. (Think browser extensions / userscripts, but using sharable lego blocks)

Come be a founding engineer at a company backed by a leading VC and execs of major AI, business intelligence, and edutech companies

Open positions:

  - Senior Front-end Engineer - Authoring Tools Lead
  - Senior Web Engineer - Browser Extension Lead
  - Senior Backend Engineer - Platform Lead 
  - Mid-Level Web Designer/Developer
  - Mid-Level Full Stack Engineer
Stack: Typescript, React, Redux, Python, Django, PostgreSQL, DRF, Heroku, GitHub

More information at https://careers.pixiebrix.com. We're remote within ±3 hours of ET

Great question. Our general approach is to look up the devtools browser extension for the framework, and use that as a reference point for determining how to interface with the framework

The most popular framework we haven't implemented support for yet is Angular. (AngularJS, the old version, is straightforward.) Any of the compiled frameworks, e.g., Google Closure Compiler are difficult because they mangle identifiers. I suspect Svelte might also be tricky, but we haven't tried that yet

At the end of the day though, every framework has to write to the DOM and be accessible. So you can use selectors, or in the worst case OCR/computer vision. (IIRC, FB actively inserts dummy elements to try to prevent structural scraping).

For React and similar frameworks, the component names get minimized. In practice, JS compilers/bundlers can't mangle property names because 1) alias analysis is hard, and 2) property name string logic is ubiquitous in JS 3) the data often flows from APIs, and mangling would make API maintenance hard. Google's closure compiler and other static compilers are an issue.

As I mentioned in the post, dynamic CSS classnames are also tricky depending on how much gets mangled. We have some techniques in the pipeline for better handling those

Thanks for the links! Will check them out

As far as selectors go, we're currently working through how to support more specific selection when there's multiple HTML element alternatives for a single visual element (e.g., nested tags with no padding/margin).

This isn't too big of an issue for scraping text, but comes into play when pulling attributes, or when using the selectors to modify the page structure. (Our tool lets you place buttons, panels, etc., copying the style/structure from existing elements)

Author here, happy to answer any questions

For our product (PixieBrix) we actually generally grab the data directly from the front-end framework (e.g., React props). It's a bit less stable since it's effectively an internal API, but it means you can grab a lot of data with a single selector and can generally avoid parsing values out of text

Yep, if your company is having leadership/strategy problems you're not going to go far.

But as a hiring manager in that situation, you can select for team members who excel at dealing with ambiguity, internal locus of control, vision, etc. Additionally, you would look for people who value learning vs. psychological safety, etc.

You're in a known situation, and that situation is constant change and churn

If you know what kind of company/situation you're in, you can certainly select for candidates that are more likely to thrive in that environment.

As you mentioned, people gravitate toward their strong suits. So by asking behavioral questions, you can learn how they approached situations in the past and whether their strengths/weaknesses are the right mix for your needs.

All teams should be selective. But if you don't have a Google-sized brand and budget, you need to develop a clearer understanding of your teams strengths/weaknesses and needs.

This understanding will enable you to figure out which hiring criteria do you need to maximize vs. which do you need to satisfy and where the bar is.

Also, by interviewing more effectively, you punch above your weight by spending more face-to-face time selling your company/team/role.

Great points - there are things we're trying to address over at Interview GPS. We're building a Wikipedia/Stack Overflow-style knowledge base of the best interviewer guides/rubrics: come join the cause at https://www.interviewgps.com/community/

We tag questions in 3 areas:

Personal Values: instead of "culture" we help you assess shared values. For example: do you value fun vs. achievement?

Competencies: does your software developer need attention to detail and critical thinking? Or creativity and collaboration?

Skills: what skills are necessary vs. what can be learned on the job? E.g., should you assess for React skills? Or assess for programming/debugging skills in general?

Also, P.S. you have to be careful/thoughtful when asking about what developers work on outside of work. Worst case, you end up breaking the law by discriminating against protected groups. I'd suggest only looking to that if their work history is relatively lacking and you're trying to develop a positive case for the candidate