HN user

jackhodkinson

277 karma
Posts4
Comments31
View on HN
[dead] 1 year ago

Some notes on how to ship fast and why it matters. This is from my perspective as a indie dev and a startup founder, but I think some lessons here for everyone.

When the engineering department of a company is not the major lever in the company's growth this philosophy might be fine. That's the case of many large enterprise and probably many startups too.

When the competitive advantage is not the technology, it is probably smart to make the engineering department dumb.

Clearly that leaves the company exposed to challengers who will outcompete them with technology. But not all markets work like that.

[dead] 2 years ago

Creating and using virtual environments in Jupyter has always felt a little painful. Now thanks to uv things can be so much better. I've integrated uv into my Jupyter notebook client, Satyrn. It makes quick experiments in a fresh virtual environment so much easier.

Great feedback, thank you. I've heard this before. I'm thinking of keeping the default but adding an option in settings to "ask before installation" for users who prefer that behaviour (similar to VS Code).

Thanks! I just used the builtin MacOS screenshot tool to take the screenshots. I used Tailwind to style the page. I really like the default shadow that the "selected window" screenshot adds, but since there are also "selected area" screenshots I decided to take them without the default shadow (by holding option) and then add it in using Tailwind.

The logo was done with ChatGPT and my friend editing it with some graphic design software :)

This project is unrelated to those others. I like the branching code idea tho, would love to have something like that. I'd love it if you could rewind your code execution to a point in time and then play it forward differently. I suppose that would be a pretty big memory overhead tho.

Even as a command line power user, I still wish it were easier to install dependencies while working in a notebook. If I'm working on a project I don't want to have to switch to my terminal if I can solve the problem in one command from my notebook.

With a little careful thought into good UX I don't see why it can't be easy for a beginner at the same time useful to a pro user (and still compatible with any virtual environment).

When I learned to program I was working as a scientist. I was relying on OriginLab (a scientific version of Excel) for my data analysis and it was a real pain. I decided to start using python for analysis and plotting and started with scripts and terminal interactivity, but found it too clunky. Jupyter feels more interactive when you are working with data because you need to explore the data and experiment with data manipulation in a way I found quite natural to do in a notebook.

Since then I've moved into software development where I rely on my IDE for any coding that involves working with more than a few modules. And as I got better working with an IDE I did gravitate toward making a script for certain kinds of tasks where I use to reach for a notebook, but there are still many data analysis tasks that I would much prefer a notebook for.

It's also quite nice to share a notebook with someone to show them how you arrived at your conclusions, and it's nice for them to be able to take your analysis and modify it or test their own ideas on top of yours. Obviously the notebooks are not great for collaboration without some fiddling around with git, but they are still very good for this kind of collaboration.

It can be confusing. The key is that you probably have multiple versions of python installed on your computer (that's normal). Secondly, the default "kernel" in Jupyter was probably not the one you used to install torch.

I'd suggest 2 things to help: 1. Try `pyenv` for python version management 2. See this tutorial for how to create a virtual environment and add it as a Jupyter kernel: https://selvamsubbiah.com/run-jupyter-notebook-in-a-virtual-...

Satyrn makes it easier to add virtual environments as a kernel, but you still will need to create the virtual environment and install torch there yourself.

That's a really great point you made about how confusing it is to pip install stuff with `!pip` when working in the notebook. Right now Satyrn does not support the `!` commands, but I will add this soon and try to make it so `!pip` works with the expected virtual environment you are working with.

I'll work on making them easier to configure.

At the moment you press `g` (for generate) while in command-mode to create a "prompt cell". I'll think of ways to make this more obvious.

Appreciate you spending the time to try it out and share your feedback.

Thanks for your feedback!

If you'd be happy to share: I'm curious to know what scientific field you work in? Do you do 100% computational work, or is it a mixture of experimental and computational?

There aren't many great production-ready open-source frameworks for code-editor components in Swift. I assessed quite a few but found that the feature completeness was far from what I needed. I tried to fork [CodeEditSourceEditor](https://github.com/CodeEditApp/CodeEditSourceEditor) and add the extra features I wanted, but I think it would have taken me 6-12 months to get it to an acceptable state, meanwhile not spending any time focusing on the rest of the product experience.

I decided to play around with Typescript and Electron over a weekend and ended up getting a really solid prototype so I made the heart wrenching decision to move over.

I'm messing around with writing my own text editor component in Swift now, but it's quite a big endeavour to get the standard expected for a production ready product.

I'm assuming a pure-swift CAD UI would be equally difficult. Would be really cool to see that tho.

Thanks for checking out my project. I'd love your feedback in the comments.

I'm not sure if the post text above is visible (I can't see it on my phone's HN reader) so I'm going to repost it here as a comment too:

I love Jupyter – it's how I learned to code back when I was working as a scientist. But I was always frustrated that there wasn't a simple and elegant app that I could use with my Mac. I made do by wrapping JupyterLab in a chrome app, and then more recently switching to VS Code to make use of Copilot. I've always craved a more focused and lighter-weight experience when working in a notebook. That's why I created Satyrn. It starts up really fast (faster time-to-execution than VS Code or JupyterLab), you can launch notebooks right from the Finder, and the design is super minimalist. It's got an OpenAI integration (use your own API key) for multi-cell generation with your notebook as context (I'll add other LLMs soon). And many more useful features like a virtual environment management UI, Black code formatting, and easy image/table copy buttons.

Full disclosure: it's built with Electron. I originally wrote it in Swift but couldn't get the editor experience to where I wanted it. Now it supports autocomplete, multi-cursor editing, and moving the cursor between cells just like you'd expect from JupyterLab or VS Code.

Satyrn sits on top of the jupyter-server, so it works with all your existing python kernels, Jupyter configuration, and ipynb files. It only works with local files at the moment, but I'm planning to extend it to support remote servers as well.

I'm an indie developer, and I will try to monetize at some point, but it's free while in alpha. If you're interested, please try it out!

I'd love your feedback in the comments, or you can contact me at jack-at-satyrn-dot-app.

Curious how other people run these kinds of experiments on their production data in a safe way that does not affect performance of prod. Eg how do you avoid CPU spikes in prod that might effect users?

I like where you are going with this. What would that business look like?

Would this be a new journal with a different way of making money or some kind of aggregator service?

Seems like an aggregator service would be the most appealing way to access the data for the end user.

I'd say these entrenched journals are being very cautious with an aggregator because the raw text data would be super valuable to companies, so they are probably going to try their hardest to limit usage of the data for individual access and bulk access. That's not to say an aggregator is not going to happen.

His point about "simplicity may be a requirement of rapid and broad diffusion" goes a long way in explaining why the SW was so slow to take off. We are fortunate that search is encouraging many people to adopt some SW protocol (via json-ld or similar).

We are also fortunate that we can do real inference, entity detection & disambiguation these days. Perhaps one day we will have intelligent tools that all web publishers will have at their fingertips allowing them to press a button to confirm detected entities and relationships they present in their webpages (kind of like photos apps these days allow you to confirm known peoples faces). There will likely be an incentive for making their content easier to find. That would be awesome.

However, I do take his point that world views differ for a good reason. I hope we won't be constrained by some limited ontology that these tools might present.

Elasticsearch has some amazing features including a built in English language analyzer and a search term highlighter. Both of are incredibly useful, however, some information is lost when you use them together. I have explored a method to recover this information.

QuantCopy | London | Onsite (remote-flexible)

We are a well-funded pre-seed stage startup with an aim to reorganize the world's information.

The search engines we know and love are well-suited for consumer application, but they are not designed for enterprise use cases. Too many office hours are spent doing repetitive web research which requires basic reading and writing comprehension. Up until now, these tasks have been just out of reach from automation, but with the recent advancements in language modeling they are now possible.

Our first product is a customer analysis platform for enterprise revenue teams. Our customers love our product because it saves them hours of tedious work reading through text to find the insights they need. As such, we've been able to grow organically through word-of-mouth referrals. We are currently preparing for 10X users to onboard.

On a high level - our data pipeline takes a configuration from our users about target companies and questions they need answered, ingests natural language data from the web, and extracts snippets of information about the target companies that answer our users' research questions.

The engineering roadmap for the next 6 months includes implementation of more sophisticated text analytics and processing features, improving the efficiency and scalability of our data pipeline, and exposing more filters and controls to our users via our UI. Our stack is postgreSQL, Python, GraphQL, React & Typescript.

We are a small team of physicists and computer scientists (Cambridge, Imperial, Palantir, CERN) based in London. We will be operating remotely until it is safe to consider an alternative. We intend to open an office in London when it is safe to do so, but we will be flexible to remote.

If you are an experienced software engineer who is interested to learn more please email me at jack{at}quantcopy{dot}com (include HN in the subject pls).