Varjo | AI / Computer vision / 3d reconstruction | REMOTE (EU) | Full time
Varjo makes the highest-immersion virtual and mixed reality products and services for advanced VR users. Our retinal resolution devices are used to train astronauts, pilots, and nuclear power plant operators, design cars, and conduct pioneering research.
Our vision is that the next step of mixed reality is empowered by cloud-based platforms and applications. Varjo Teleport is one such application, which allows your friends and colleagues with VR headsets to join your physical space. You can learn more about our vision in this video: https://varjo.com/blog/varjo-teleport/
For Varjo Teleport we are expanding our team and looking to hire:
- Machine learning _experts_ in the field of generative AI, bonus points for 3d reconstruction
- Computer vision experts in the field of 3d reconstruction
Varjo offers a no-nonsense workplace where the business strategy is focused on solving real-world problems for businesses. We care about product-market fit and bringing in revenue. You will not find much "metaverse hype" at Varjo.
Interested? Email me at knut.nesheim at varjo.com to learn more and apply
Varjo | Machine learning / Computer vision / 3d reconstruction, iOS, Backend, Unity | REMOTE (EU timezones) | Full time
Varjo makes the highest-immersion virtual and mixed reality products and services for advanced VR users. Our retinal resolution devices are used to train astronauts, pilots, and nuclear power plant operators, design cars, and conduct pioneering research.
Our vision is that the next step of mixed reality is empowered by cloud-based platforms and applications. Varjo Teleport is one such application, which allows your friends and colleagues with VR headsets to join your physical space. You can learn more about our vision in this video: https://varjo.com/blog/varjo-teleport/
For Varjo Teleport we are expanding our team and looking to hire:
- Machine learning experts with a focus on computer vision, 3d reconstruction and "generative AI"
- iOS engineers with experience of using ARKit
- Unity engineers with experience building multi-player games or collaborative applications
- Backend engineers with experience in Python, Rust, AWS and for bonus points: multi-player games
Varjo offers a no-nonsense workplace where the business strategy is focused on solving real-world problems for businesses. We care about product-market fit and bringing in revenue. You will not find much "metaverse hype" at Varjo.
Interested? Email me at knut.nesheim at varjo.com to learn more and apply
Varjo | Engineering Director | REMOTE (EU timezones) | Full time
Varjo makes the highest-immersion virtual and mixed reality products and services for advanced VR users. Our retinal resolution devices are used to train astronauts, pilots, and nuclear power plant operators, design cars, and conduct pioneering research.
Our vision is that the next step of mixed reality is empowered by cloud-based platforms and applications. The Engineering Director of Varjo Reality services will lead the engineering group building this vision.
They will lead the effort that transforms Varjo from a world-class hardware company into a world-class software-and-hardware company. We have a significant chance at changing how people work and to do this we need a world-class team, which we believe is a diverse mix of people located anywhere they want to be.
To succeed in this role, you need heaps of empathy and to be an excellent leader of people. As you build up your organisation, you'll hire a diverse team, create rituals and processes that fosters a great workplace (engineering town halls, IC career track, etc) and be an example that inspire others.
The livestock sector emerges as one of the top two or three most
significant contributors to the most serious environmental
problems, at every scale from local to global. The findings of
this report suggest that it should be a major policy focus when
dealing with problems of land degradation, climate change and air
pollution, water shortage and water pollution and loss of
biodiversity.
Thanks for your feedback. Always good to have an extra set of eyes!
To check if the numbers make sense, I dumped the raw data used to compute these stats and compared elli_stats with the same functions in R and they match up.
I feel I need to address this, as your two points about why there is a performance difference is false.
I just implemented and released a middleware to add the Date header, it's available here: https://github.com/knutin/elli_date. When running the "Hello World!" micro-benchmark where I'm only testing the performance of the webserver itself, there is no significant difference in performance. I used the same approach as in Cowboy and Yaws and cache the date string in an ETS-table and read it on every request.
As for routing, Cowboy offers very nice routing that makes writing applications easier. Elli does not offer any explicit facility to do this, but pushes it to the user, which in our case typically means function clauses matching on the url as can be seen in this example: https://github.com/knutin/elli/blob/master/src/elli_example_... The Erlang VM can nicely optimize matching on these clauses especially with HiPE. Claiming that Elli and the benchmark does not do any routing is false.
I have studied Cowboy closely and taken ideas from it. I'm very thankful of everybody in the community and you in particular who offers up their projects and ideas for general consumption. It makes the community richer. Building on the shoulders of giants makes projects like Elli easier.
I'm happy that with Ranch, Cowboy will see a performance improvement. I hope that there are some ideas in Elli that can be used by other projects to improve performance and robustness.
Elli is similar to Mochiweb, in that there is a pool of processes all accepting on the socket (doesn't work on Windows, I'm told). When an "acceptor" gets a connection, it handles that client for the lifetime of the connection, which might mean multiple requests if keep alive is used. Unlike Cowboy, Misultin and Yaws, no process is spawned after accepting and no process is spawned to run the user callback. This makes for better performance and it is more robust, as the processes cannot get out of sync. I could not make any of the existing projects work this way without completely rewriting the core.
The biggest difference between Elli and the other Erlang webservers however is the programming model. Mochiweb, Yaws, Misultin and Cowboy give you helper functions for writing a response on the socket. This makes it easy to send the body before you send the headers, send multiple bodies, etc. In fact, it makes it so easy that Cowboy tries really hard to help you avoid this with the cost of higher complexity in the user code (need to pass the return value from every helper function into the next calls).
The programming model offered in Elli is similar to the "rack" model of request-response. You get a request and return a response which is serialized by Elli into the actual HTTP response. This makes it very very easy to reason about and test the controller logic by creating a fake request with your paths, body, etc, then checking the response, no sockets or processes involved. This model breaks when you want to do streamed and chunked responses, which is handled differently. At Wooga, we use the chunked responses to send real-time notifications.
Another big upside of the request-response model is that you can write pluggable middlewares to extend and customize Elli. For example, you can add access logging, real-time stats dashboard (https://github.com/knutin/elli_stats), basic auth, compression, basic media serving and when I get around to it, even the "Date" header. If you don't want these features, you can simply turn them off. This might sound complex, but in practice it is very powerful. We are running out of CPU and being able to turn off features completely is a big win. You also don't need to deal with unused features causing problems on the critical path.
Starting from scratch allowed me to make some tough choices in the name of robustness and performance, at the cost of sacrificing features considered essential in a more complete server.
It is very hard to create real and meaningful benchmarks. The "Hello world" benchmarks are very useful when writing a webserver and you are curious about where to optimize it, if necessary. Even though they are very superficial, they can also help you compare two webservers.
It is very easy to run the benchmarks on your own hardware. Get elli, then run "elli:start_link()" and hit "/hello?name=john" with apachebench or your tool of choice.
Elli is only useful if you want to write an Erlang application that exposes a HTTP API. If you want raw performance, Haskell has some servers which does 300k+ rps.
Varjo makes the highest-immersion virtual and mixed reality products and services for advanced VR users. Our retinal resolution devices are used to train astronauts, pilots, and nuclear power plant operators, design cars, and conduct pioneering research.
Our vision is that the next step of mixed reality is empowered by cloud-based platforms and applications. Varjo Teleport is one such application, which allows your friends and colleagues with VR headsets to join your physical space. You can learn more about our vision in this video: https://varjo.com/blog/varjo-teleport/
For Varjo Teleport we are expanding our team and looking to hire:
- Machine learning _experts_ in the field of generative AI, bonus points for 3d reconstruction - Computer vision experts in the field of 3d reconstruction
Varjo offers a no-nonsense workplace where the business strategy is focused on solving real-world problems for businesses. We care about product-market fit and bringing in revenue. You will not find much "metaverse hype" at Varjo.
Interested? Email me at knut.nesheim at varjo.com to learn more and apply