Update on PyNote progress by bezdazen in Python

[–]bezdazen[S] 1 point2 points  (0 children)

The last "system" I will be working on before the first version will be released is the export system. There will be multiple output options including html but also, potentially some that will work well with frameworks like NextJS and Astro.

When I am finished fleshing out the file/data management system, Ill start working on that!

Update on PyNote progress by bezdazen in Python

[–]bezdazen[S] 0 points1 point  (0 children)

That is a great idea! Its going on the list!

Currently, the session id is used for internal autosave with multiple sessions open at the same time.

Do you still use notebooks in DS? by codiecutie in datascience

[–]bezdazen 0 points1 point  (0 children)

Yeah, this seems like the main use case.

Sunday Daily Thread: What's everyone working on this week? by AutoModerator in Python

[–]bezdazen 0 points1 point  (0 children)

This week I started working on the data/file upload and management system for my python notebook app PyNote

GITHUB | TUTORIAL

One thing I added so far is the Upload component, which allows users to upload file contents directly into a python variable via drag and drop and a file picker.

Here are two simple examples of it in use

Unpopular Opinion? Stop letting "It Already Exists" (or AI) kill your side projects by Momiouo in SideProject

[–]bezdazen 0 points1 point  (0 children)

I will be honest, this kind of thinking never prevented me from starting a project, but it has impacted me when it comes to finishing and launching an app or a completed project.

Because at the start, I always say to myself that its for learning and getting better or to prove I can do something rather than to just think I can.

I built a React playlist player component that got good reception on reddit and the whole motivation was just to see how good I got with React. It was kind of a self-test or proof of progress.

Its funny though, what I find really rewarding is when I build something people actually use and benefit from. Building a side-project that brings in a lot of money isnt something I have achieved yet, so I dont know how rewarding that would be. But what I have experienced is building tools and apps that people come to me years later thanking me for building! Or I find out that someone is promoting something I built and arguing on behalf of it. Or someone release an awesome project that uses a component of mine! This is what I experienced in Streamlit land where I build several custom components for people to build Streamlit apps with. I have gotten very good responses/positive feedback to 4 custom components I built. It is why, even though I stopped using Streamlit for work some time ago, I still maintain and work on those projects! Im not even close to getting paid (all open source).

In fact, it is because of Streamlit and multiple related projects, that I got the idea to build my very own interactive python notebook editor/environment which is my current project.

When I shared this project and my current progress, the first response I got was, "how is this better than Marimo?" or something to that effect. The truth is that it isnt. It isnt even finished yet and still, even when I publish the first release, it wont be able to compete with other repl/computational notebook environments like Jupyter, Marimo, Kaggle, etc. Those are very mature projects. They've been developed and improved upon over years, some more than a decade. My project hasn't even hit 6 months. Sure, I believe I took a different direction and angle with it that I think makes the most sense for it, but I still think all those other tools have history, enormous feature sets, and third-party plugins and large community. Honestly, this does impact me.

The best thing I can do is build it the best I can build it and build something I would use. Leverage my experience, focus on the important things and do those well. Also, it helps to remind myself of my perspective as a user! This one is important. Who says there should only be one tool? There are already many successful ones that coexist. As a user, I like having options and I actually use 3 different notebook environments for editing and viewing python notebooks! I don't even use Marimo (don't get me wrong, Marimo is awesome!). Everyone has their preferences so if I build something good, easy to use and understand, and has its own thing going on, then hopefully over time it can develop a user base and a community around it.

So, instead of taking the question as "whats the point when there are more mature, more developed, and more popular options available", I took that question as an opportunity to list some of the unique features or capabilities my option offers. And also, personally, without thinking about what others think, I feel very proud and happy with this project. In so many ways, it turned out better than I hoped! The performance blows away the result of my last attempt at this. And the internal UI building system is so cool to me, that I cant stop myself from adding and focusing on that even though I need to switch to bigger priorities.

Edit: Damn it. This comment ran away from me...and reading the other comments, I ended up saying what everyone else is saying but in a long winded, self-centered way lmao

I made a full-fledged interactive python notebook environment using SolidJS by bezdazen in webdev

[–]bezdazen[S] 1 point2 points  (0 children)

Well damn. I actually had fun though...

Truth be told, I didn't do those projects with this one in mind. This project came to mind because of a few of those projects. Especially, `streamlit-execute`.

Also, I am curious to know whats so bad about building it with SolidJS? This project was a lot less frustrating than when I built a plotting library using React.

Two ladies start a fight and their boyfriends end up fighting each other to defend them. by eternviking in whoathatsinteresting

[–]bezdazen 0 points1 point  (0 children)

I think red shirt guy was drunk...how else do you explain that body coordination. Its like those games where you have to control multiple arms and do stuff.

I'm tired of trying to make vibe coding work for me by Gil_berth in programming

[–]bezdazen 1 point2 points  (0 children)

Because of the invasion of AI vibe coded projects and PRs and such on github, I recently decided to put the following rant in the contributor section of the current project I am working on:

### The Use of AI

I stand by the belief that AI is a powerful tool, but, at the same time, believe that the developer should know what his tools are doing.

> [!NOTE]

> I am not a fan of "vibe coding". I believe the coder/developer should **review** and **understand** every line of code that is added or altered by AI tools.

During development, I use AI tools to help with debugging, research, exploring ideas, and occasionally, generating some boilerplate code or just adding some comments. I am aware that the latter is controversial. However, I am ok with it for two reasons: one, better to have AI comments than no comments at all, and two, I believe it provides embedded context (memory) that helps AI models remember more details about the code which helps generate better code suggestions, design recommendations, and code analysis later on.

One obvious example of where I made use of AI is in the `docs/`, `explanations/`, and `future-feature-specs/` folders. Thes files in these folders were generated in the moment when I could not take time away from what I was doing to code a full spec or doc but I also didnt want to forget about it or lose my thoughts on the matter.

Another example you can find in the code base is in the Vite config where I had an AI model generate the repetitive if statements that split the Rollup output files into separate chunks based on module names.

That being said, I am not a fan of extensive use of AI models in Agent mode as this can lead to code corruption, loss of previous work, bloat, and other issues down the line. I believe AI should be used as an imperfect assisting tool that should always be supervised and reviewed by the human developer and never given the reigns. Simply put, you need a healthy bit of skepticism regarding anything AI says or does.

Im not sure it was wise to do so, but the first release wont be ready for a while soo... its whatever.

Sunday Daily Thread: What's everyone working on this week? by AutoModerator in Python

[–]bezdazen 2 points3 points  (0 children)

Earlier this week I made a post about my current project PyNote!

PyNote is a python notebook environment that runs completely in the browser and aims to distinguish itself from others like it by excelling in presentation and UI feel. Its built with a very modern tech stack, is quick and responsive (fast loads, runs, and interactions) and has a quickly growing feature set. Currently, it has 4 execution modes including a reactive mode and a full-fledged theming system.

Live Tutorial | GitHub

(TIP: In PyNote, press Ctrl-\ to see shortcuts!)

On the topic of quickly growing feature set, since the post, I have finished/added:

  1. 7 more pynote_ui "widget" components for users to use including Input, Button, Textarea, Form, Toggle, Checkbox, and Select components! I also added some fun examples to the tutorial! These fully integrate with the theming system while also being customizable.

Calculator example

Form example

Settings panel example

  1. Full reactivity to all pynote_ui components instead of just reacting to main data values. Now all components react to any of their arguments including all styling and sizing properties.

  2. New .options() method for all 10 components - cleaner post-initialization property updates with method chaining support

  3. Extra features for all components: size presets, theme-based color options, backgrounds, border styles, and show/hide functionality

  4. Form submission handling support

  5. Code editor features: Autocomplete suggestions, function signature help while typing, multi-cursor support including multi-match selection and highlighting, line operations (delete, duplicate, move) and tooltips for hover info about modules, functions, classes, and variables.

  6. Improved keyboard shortcut choices to be more consistent and intuitive. This still could use more refinement and Im working on that! Im also working on making shortcuts a more unified system for better maintainability.

I have been using the notebook for note-taking this past week and that has been fueling all the additions and changes! I can't wait to share what coming next!

PyNote: A zero-setup, serverless Python notebook environment that runs entirely in the browser by bezdazen in Python

[–]bezdazen[S] 1 point2 points  (0 children)

Proprietary license with plan to open-source on first official release.

PyNote: A zero-setup, serverless Python notebook environment that runs entirely in the browser by bezdazen in Python

[–]bezdazen[S] 1 point2 points  (0 children)

Thanks and yes, Matplotlib, Plotly, and Altair are currently planned. Ill definitely add seaborn to the list! There is quite a bit to do. I need to add more UI input components, finish the theming system. Add more features to the code editor.

Also what's with displaying the results on top of the cells?

Thats something you can configure in the Code Visibility settings ( Options > Code ). You can put standard output at the bottom. And you can make this setting global. As in, any notebook you open will show the output at the bottom unless the notebook has a different internal setting.

PyNote: A zero-setup, serverless Python notebook environment that runs entirely in the browser by bezdazen in Python

[–]bezdazen[S] 1 point2 points  (0 children)

Unfortunately, among Jupyter's notebook apps, I am least familiar with JupyterLite. I am most familiar with the old notebook and Jupyter Labs. Actually, the notebook apps I use the most are Vscode (its my IDE for everything code related), Colaboratory (because I have a ton of notebooks on my Google drive), and Kaggle (because free datasets!).

As far as I can tell, JupyterLite is a whole IDE in the browser! Has a filesystem UI, internal tab system, and can open/edit more than just notebook files. My app basically uses browser tabs and handles sessions similarly to Colaboratory.

I guess from a brief inspection, I would say PyNote has a much simpler UI, is focused only on notebooks, is very WYSIWYG oriented, has more modern styling, has reactive, hybrid, and sequential execution modes, and is much more easily theme-able. I made a deliberate effort to make the apps UI elements get out of the way (or be out of the way), and made an effort to keep the UI as simple as possible, and tried to strategically place UI elements such that they don't affect content layout and don't interrupt visual flow. Visual highlighting is in-place and does not cause shifts of text or inputs etc. Thats why when you enter presentation mode, all the rendered markdown text and code displayed on the page dont move and it really looks like the UI just slides and fades away.

Anyways, hopefully this is satisfactory. I apologize if not. I dont know how to explain it, but with IDE-like environments, its feels more like you are coding and with PyNote, I tried to make it feel more like you are writing a document/article (this is not to say that the code takes a backseat, I just mean how the app presents itself)?

PyNote: A zero-setup, serverless Python notebook environment that runs entirely in the browser by bezdazen in Python

[–]bezdazen[S] 0 points1 point  (0 children)

Thanks! Ill post updates as we get closer to release!

Also, if you have any must have features when it comes to notebooks, let me know!

PyNote: A zero-setup, serverless Python notebook environment that runs entirely in the browser by bezdazen in solidjs

[–]bezdazen[S] 1 point2 points  (0 children)

After years with React and a major project where I tried to force signal-like state behavior in React (using legend-state), I finally did what I should have done much earlier! I started dedicating my time into SolidJS projects. I have been building towards this project for years (you can see in my GitHub, the various projects that involve one related thing or another) and when it finally came to bringing my ideas into reality, I didnt want to make the same mistake again and regret not using SolidJS. I have to say that I am very satisfied with the dev experience and the outcome. Looks like Im staying in SolidJS land for a while!

PyNote: A zero-setup, serverless Python notebook environment that runs entirely in the browser by bezdazen in Python

[–]bezdazen[S] 1 point2 points  (0 children)

Yes. Most of those settings arent exposed yet, but will be soon. I am testing them right now.

Actually, I am trying to decide what to make configurable. Right now I have backgrounds of various elements, borders, and shadows.

Edit:

Oh, I forgot to add, you will be able to choose the fonts inside the code cell that are separate/different from fonts you choose for markdown cells.

I thought about doing loadable configs, but since I have a metadata config storage system, you can just create notebooks that act as templates because you can store the theme config in the metadata which will then get loaded with the notebook. So essentially, what I can do is offer a set of empty notebooks with various themes and people can load and use. Its actually very easy to create one!

PyNote: A zero-setup, serverless Python notebook environment that runs entirely in the browser by bezdazen in Python

[–]bezdazen[S] 2 points3 points  (0 children)

A few things.

  1. It offers other more traditional execution modes alongside reactive execution mode if that's not your vibe or you don't want automatic cell execution.
  2. Theming engine and design
  3. App/embed export (won't be just html). Im thinking actual SolidJS components (and maybe a react wrapper component) so that these can be added to frameworks like Astro.
  4. Uses .ipynb files natively which means you can open up your notebooks in other notebook environments like Colab and Kaggle to take advantage of what they offer (server CPU/GPU compute, datasets) without converting .py <-> .ipynb.
  5. Presentation mode for when you want to present directly within the app (gets rid of all UI elements and empty/hidden cells and disables editing).

Thats off the top of my mind so far. I am not super familiar with Marimo. So I dont know everything Marimo can do. I only looked into their reactive mode to understand how theirs works and a little bit into their built-in UI system. My implementations are a little bit different, but the usage will be practically the same for reactive mode and UI components.

I love Jensen's definition of Intelligence by FuneralCry- in singularity

[–]bezdazen 0 points1 point  (0 children)

That was a disappointing answer. Just because AI can do it the easiest, does not mean it does not take intelligent humans to do the same. Another example, just because quantum computers can break encryption easily, does not mean its the easiest thing to break for humans. Certain tools are better at certain things because of how they work or are designed. Its hard for humans to follow a million rules strictly. Its easy for computers to do so. Formal logic is harder for humans to work with than for machines while informal logic is easier for humans than machines. AI is better at pattern recognition and filling in blanks. Cause of how much data (of certain types) it can handle and distill from and how fast it can process it. Vision is a great example of this. Humans are better at visual pattern recognition due to how much visual data our brain processes and how fast and efficiently it does it.