HN user

ashdev

75 karma
Posts4
Comments32
View on HN

Interesting! Thanks for the responses. I'm not python native and haven't worked as extensively with python as some of you here.

That said, I'll change my mind here and agree on using std library, but I'd still have separate 'key' assignment here for more clarity.

Disagree.

In the first instance, the original code is readable and tells me exactly what's what. In your example, you're sacrificing readability for being clever.

Clear code(even if verbose) is better than being clever.

This is pretty impressive. A lot of people underestimate the amount of work required to make something available offline. Planning the syncing architecture alone is a monumental task, especially at the scale Notion operates. I built a custom sync solution for my own app, Brisqi (https://brisqi.com), and it took me weeks to get it right, albeit with some trade-offs.

Kudos to the Notion engineering team for achieving this milestone.

I didn't like Tailwind initially, but after using it for a week, it's hard to go back to regular CSS or even SCSS. I have a project that uses SCSS, and sometimes I wish I was using Tailwind instead, it makes the workflow so much easier.

I'd highly recommend people try out Tailwind for a week on their projects before giving up on it.

That said, I haven't tried DaisyUI so no opinions on that.

This might work for B2C startups, but not so much for B2B. In B2B, people need to see a working product that clearly saves them time or money. The sales cycle is longer, and landing page tactics alone usually aren’t effective.

A better approach is to talk to as many potential customers as possible early on. Collect emails, show a rough prototype, get feedback, and iterate. Then, when you’re ready to launch, go back to those same people, email them, show what’s changed, and demo how the product delivers real value.

If I were to do it all over again, I’d simplify things even further. I’d start by testing the idea with just the offline version. For syncing, I’d focus on syncing the data itself, just the database records and not the user actions. Instead of replaying every action, I’d track which records were modified and sync only those. No need to capture what changed, just that record got changed. Hopefully that makes sense.

The business is doing alright, but what really keeps me going is that the app is something I genuinely wanted for myself. I use it all the time, it's always open in the background, so that keeps me motivated.

This was refreshing to read! More apps should be local-first. If the user does not want to sync their data to cloud, they should have that option.

I’ve been building the offline-first (or local-first) app Brisqi[0] for a while now, it was designed from the ground up with the offline-first philosophy.

In my view, a local-first app is designed to function completely offline for an indefinite period. The local experience is the foundation, not a fallback and cloud syncing should be a secondary enhancement, not a requirement.

I also don’t consider apps that rely on temporary cache to be offline-first. A true offline-first app should use a local database to persist data. Many apps labeled as “offline-first” are actually just offline-tolerant, they offer limited offline functionality but ultimately depend on reconnecting to the internet.

Building an offline-first app is certainly more challenging than creating an online-only web app. The syncing mechanism must be reliable enough to handle transitions between offline and online states, ensuring that data syncs to the cloud consistently and without loss. I’ve written more about how I approached this in my blog post[1].

[0] https://brisqi.com

[1] https://blog.brisqi.com/posts/how-i-designed-an-offline-firs...

I built an offine-first task management app with Kanban setup called Brisqi because I needed an app that worked anywhere without relying on an internet connection. Whether you’re in a corporate setting, dealing with spotty Wi-Fi, or just prefer more privacy, staying productive shouldn’t depend on being online.

It’s lightweight, private, and gives you full control without relying on the cloud.

Would love to hear your thoughts!

Offline First 5 years ago

Offline-First is a software paradigm where the software must work as well offline as it does online.

I've been building offline-first apps[0] for quite a while in both desktop and mobile space.

I have a different definition[1] of what an offline-first app is:

Offline-first apps are apps which can run and function completely offline or without needing the internet for an indefinite amount of time. To offline-first apps, providing all functionality offline is the "primary objective" and any online functionality such as syncing to cloud is secondary.

Also, I personally don't consider an app using temporary cache to store data to be an offline-first app. It must use a local database. Sometimes the "offline-tolerant" apps are confused with offline-first apps. Offline-tolerant apps often provide partial functionality and eventually need an internet connection to sync data.

[0]https://brisqi.com

[1]https://dev.to/ash_grover/how-i-designed-an-offline-first-ap...

Pop_OS 21.04 5 years ago

Agreed, I came to the same conclusion. Both my PC laptop and MacBook Air have glossy displays but MacBook one reflects back less light which makes it easier to work with.

Pop_OS 21.04 5 years ago

I use to think along the same lines. However due to nature of my work, I switch between a MacBook and PC quite often. When I go from MacBook to a laptop with 1080p resolution, I could see why people prefer higher resolutions. Font rendering and entire experience of reading on a computer becomes so much better.

That's true, but if you compare the resale value of PCs and MacBooks, you'll find that MacBooks(even with outdated OS) have higher resale value. Therefore, this is a bit of a tricky situtation for PCs since they can't be sold for much.

Hey, thanks for the feedback and trying out Brisqi, I appreciate it. Brisqi is more of a personal app than the one made for teams so I don't have any team oriented features on the roadmap yet. May be in the future I'll come back to it.

Hi HN, I'm Ash, I'm excited to share with you what I've been working on since June last year. It started as a side project because I needed this tool for myself, but later on decided to put it out there for everyone.

I left corporate world last year where I worked as a software engineer in C# stack and since then I've have been working on this full time.

Here's my tech stack:

- React + BlueprintJS for desktop app.

- React Native + React native elements for Android/iOS app.

- NextJS + Bulma css for the website.

- Firebase Auth and Firestore for the database.

- Google cloud functions for handling some of the backend operations.

Brisqi is an offline-first personal Kanban app. It runs completely offline and can sync to cloud as well. I wrote my own sync solution to support full offline capabilities. Brisqi mobile app also runs fully offline - just need to login once. It also encrypts data on the client side before storing it on the servers.

Since many years, I had always wanted an offline Kanban tool but I didn't find any solution which would fit my needs. The goal of this project was to build a personal offline-first productivity tool with a focus on privacy. It does not compete with any other online alternatives out there since this more of a personal tool than others which are more team oriented. Check out the website for screenshots and features.

I had posted this on reddit and also had commented here on HN before and it had gotten positive feedback all around so I decided to make a proper post for it so others can find it as well. Try it, I think you might like the simplicity of it.

Thank you and feedback is welcome.

Sorry for the late response. Yes you can use it completely offline. It's an offline-first app, you're in complete control of your data. You don't need to store it in the cloud.

Only if you need to sync with other devices then you can choose to do so by getting a subscription, but it's not a requirement to use the app at all. It only syncs your data to cloud if you're signed in and have a subscription, otherwise it doesn't.

In section 2 it says - "In cloud apps, the data on the server is treated as the primary, authoritative copy of the data; if a client has a copy of the data, it is merely a cache that is subordinate to the server."

Exactly! Local copy is just treated as cache in those apps which offer offline support. They are called "Offline-also" apps, not Offline-first apps.

I miss those days when I could just buy the software and own it. Collaboration can happen in offline-first apps too, it's tricky but it can be done.

Everything is online-first web apps these days because of the reasons listed in section 3.2.1. There is one more reason for popularity of online-only web apps:

When startups are testing their idea, it's far easier to put together an online-first app than offline-first. It's easier to get traction comparatively because it just requires a browser. When they get some traction, then a desktop app is a low priority to them.

I want to bring back offline-first desktop apps back. I've already started with Brisqi[1] an offline-first personal Kanban app. Hope more people take an offline-first approach.

For similar reasons, I could write a whole essay on why we developers need to create a better open source cross-platform framework to develop offline-first desktop apps with permissive licensing.

[1] https://brisqi.com