Since our core technology is a React app, I realized that we could just mount the React app directly on any path at the customer's domain. I won't get into the exact implementation, but it worked, and our customers' product pages started being indexed just fine. We even ranked competitively with the upstarts who used server-side rendering. We had a prototype in a few months, and then a few months after that we had the version that scaled to 100s of customers.
We then decided to build a new version of our product on Remix (SSR framework similar to nextjs). It required us to basically start over from scratch since most of our technologies weren't compatible with Remix. 2 years later, we still aren't quite done. When all is said and done, I'm really curious to see how this new product SEOs compared to the existing one.
WebAI is building the future of Human-AI interaction and we’re a community committed to building the future of decentralized artificial intelligence. We believe that democratizing AI is key to unlocking its full potential and creating a better world for all. Our new product Navigator enables users to create custom AI models to meet their needs, while our WebAI Intelligence Network is critical infrastructure required for a decentralized AI future.
Senior and Staff roles available.
Desirable experience for our various roles:
- Full-stack Python, Go or Rust
- iOS (Swift)
- P2P, encryption, or cryptography
- Managing multi-cloud and/or on-prem infrastructure
- Distributed training
- Custom DNN architectures (pytorch/tensorflow/mxnet/burn)
- Optimization via quantization/compression techniques
Apply here: https://boards.greenhouse.io/webai (company name change in progress from Iris to WebAI)WebAI is building the future of Human-AI interaction and we’re a community committed to building the future of decentralized artificial intelligence. We believe that democratizing AI is key to unlocking its full potential and creating a better world for all. Our new product Navigator enables users to create custom AI models to meet their needs, while our WebAI Intelligence Network is critical infrastructure required for a decentralized AI future.
Senior and Staff roles available.
Desirable experience for our various roles:
- P2P, encryption, or cryptography
- Managing multi-cloud and/or on-prem infrastructure
- Distributed training
- Custom DNN architectures (pytorch/tensorflow/mxnet/burn)
- Optimization via quantization/compression techniques
- Rust
Apply here: https://boards.greenhouse.io/webai (company name change in progress from Iris to WebAI)- early June: a Meta employee submits my referral
- mid June: talk to Meta recruiter
- late July: screening interview with hiring manager
- mid August: still scheduling an interview-planning meeting with the hand-off recruiter.
I'm guessing that on their side, either the recruiters are super busy, or there's no sense of urgency.
Maybe a blessing in disguise, since it gives me more time to work on their coding-practice problems. Which are great, btw.
There was a limit based on years with the company but a new employee got 3 weeks paid leave and up to 9 weeks unpaid. You pay the company the unpaid time x salary and then they give it back to you when you use it.
It worked out pretty well so if I was sick I could take the day off or if a coworker was sick and came to work, I could leave. I tend to keep a cold twice as long as other people.
I was able to take 3 one month vacations or every Friday off for a long time or somewhere in between.
In this (still contrived) example, we end up having to do nested try/finally blocks.
Before:
let totalSize = 0;
let fileListHandle;
try {
fileListHandle = await open("file-list.txt", "r");
for await (const line of fileListHandle.readLines()) {
let lineFileHandle;
try {
lineFileHandle = await open(lineFileHandle, "r");
totalSize += await lineFileHandle.read().bytesRead;
} finally {
await lineFileHandle?.close();
}
}
} finally {
await fileListHandle?.close();
}
console.log(totalSize);
After: let totalSize = 0;
try {
await using fileListHandle = getFileHandle("file-list.txt", "r");
for await (const line of fileListHandle.readLines()) {
await using lineFileHandle = getFileHandle(lineFileHandle, "r");
totalSize += await lineFileHandle.read().bytesRead;
}
}
console.log(totalSize);I think it really comes down to what APIs or packages you need. I have had trouble with projects such as Prisma and wouldn’t do that in production as the generated output is slightly different for some reason (haven’t had time to inspect).
Having said all this: nobody should be using crypto/fips140 unless they know specifically why they're doing that. Even in its 140-3 incarnation, FIPS 140 is mostly a genuflection to FedGov idiosyncrasies.
What should folks use then?