News for hackers. Stuff that matters.

eugene-khyst

Show HN: I made a free painting assistant web app – ArtistAssistApp

https://artistassistapp.com/en/

https://ArtistAssistApp.com is the best ever free painting assistant tool that allows traditional artists to see the reference photo more clearly and mix colors more accurately.ArtistAssistApp provides various tools for artists for accurate color mixing from a photo based on real paints that you have on hand, tonal value study, grid method for drawing, simplified sketching, color mixing with...

( Read More... | no comments | on HN )
Great idea. I've thought to do LaTeX to PDF resume tool. But YAML to PDF is much better. The only feature I miss, is possibility to convert YAML to PDF from CLI (globally installed npm package, or Docker image). This way, it will be possible to have YAML in GitHub repository and export it to PDF on each modification using GitHub Actions. Then up to date PDF resume will always be available on GitHub.
plpgsql is good language. But in my experience Java and .NET developers tend to choose solutions that do not use plpgsql, PL/SQL, T-SQL. And these developers is the main audience for the project.
Thanks for suggestions. I will add @Transactional(readOnly = true) annotation. I will mention in the README the possibility of using two data sources.
I can definitely recommend EventStoreDB. I used it in production and most colleagues like this DB. I have a sample Java Spring Boot + EventStoreDB project <https://github.com/eugene-khyst/eventstoredb-event-sourcing>.
Yes, Debezium is an implementation of the Transaction log tailing pattern an alternative to Transactional outbox pattern.
Thanks for sharing.

> My linked code works with involving the MVCC snapshot's xip_list as well, to avoid this gotcha.

I will definitely take a look. It would be great to fix this problem. This problem really concerns me, although in most cases it is not critical.

The "little trick" in the Citus approach is very inventive. SHARE ROW EXCLUSIVE mode protects a table against concurrent data changes, and is self-exclusive so that only one session can hold it at a time. Thus, when such lock is obtained, we can be sure that there are no more pending transactions with uncommited changes. It's a protection from loosing data of the pending transactions. Throwing the exception immediately releases the lock. Thus, the exclusive table lock is held for milliseconds. I like the general idea, but I don't want to add plpgsql functions/procedures. I'll see if this can be elegantly implemented in Java+SQL (without plpgsql) and perhaps add it as alternative approach to my project. Such approach may be even more effective because it focuses on a single table and not on all transactions like the one described in my project, thus, locks on irrelevant tables have no effect on event handlers. Thanks for sharing.
Thanks for noticing. I will add Apache License 2.0.
I tried to evaluate Kafka usage for event sourcing: <https://github.com/eugene-khyst/ksqldb-event-souring>. More out of curiosity. But never tried it in production.
No doubt audit tables are a popular alternative to event sourcing. But if the current state and changes history of the entity are stored in different tables, someone may say: "Prove me that your audit log is correct". Because you are not using audit table for the business logic, you may not immediately notice the problem with it that corrupts the audit log. Event Sourcing provides other advantages, not only audit log. For example, a service command typically needs to create/update/delete aggregates in the DB (JDBC/R2DBC) and send messages to a Kafka. Without using the two-phase commit (2PC), sending a message in the middle of a transaction is not reliable. There is no guarantee that the transaction will commit. With Event Sourcing you have to subscribe to the event and send the message to Kafka from listener. The delivery guarantee is "at least once". Anyway, there is a demand for Event Sourcing on the market
The illustrations are made with PlantUML.
Great idea. But I tried it on two photos, and the cartoon avatars generated don't look anything like the people in those photos.

Show HN: Light implementation of Event Sourcing using PostgreSQL as event store

https://github.com/eugene-khyst/postgresql-event-sourcing

Hi everyone,If you have a Java Spring Boot application with a PostgreSQL database, you can implement Event Sourcing without introducing new specialized databases or frameworks.If you have an application dealing with an entity called Order, you should adopt Event Sourcing to keep track of all changes, and know how the Order got into the current state.Event Sourcing gives you:1. the true history...

( Read More... | 47 comments | 3 points | on HN )

Show HN: Nginx and Let's Encrypt in 3 minutes using Docker Compose and CLI tool

https://github.com/eugene-khyst/letsencrypt-docker-compose

The open source project &lt;https://github.com/eugene-khyst/letsencrypt-docker-compose&gt; provides a Docker Compose project and a CLI configuration management tool to automatically obtain and renew free Let's Encrypt SSL/TLS certificates and set up HTTPS in Nginx for multiple domain names.Nginx is configured to support IPv4, IPv6, HTTP/1.1, HTTP/2, and optionally, WebSocket, and can be...

( Read More... | no comments | 2 points | on HN )
I've just recorded a video tutorial on using color mixing and palette without photos <https://youtu.be/fmQO177shoQ?feature=shared>.
I've just added 3 sample photos, so people can play with the app without uploading anything.
I've just added acrylic paints to the ArtistAssistApp.
Thanks! I'm not sure that realistic color mixing or tonal value sketch can be improved in any way by AI. It's a pure math. A math models can be improved. For example, in color mixing instead of relying on sRGB color space which has limited color gamut, adopt CIE LAB color space. Paint reflectance charts can be measured with higher precision. Probably, with the help of AI simplified sketch can be done. But I'm not sure that the simplified sketch made with AI will be better than the one made by applying the median blur.
These are really great features but they are not easy to implement. Sometimes I take a photo of my painting and convert to greyscale to compare with the reference tonal values. Automating this process will be very useful. Thanks for sharing this.
Sounds fantastic. Here is the relevant source code on GitHub: <https://github.com/eugene-khyst/artistassistapp/blob/main/sr...> and reflectance chart visualization demo on YouTube <https://youtu.be/jC1HAeegm2I?feature=shared&t=157>.
The app doesn't use AI. Just good old math.
I don't have an iPhone to check it myself. But zooming works in Safari on Mac. Do you try to zoom a photo on the Colors tab using pinch?
Glad to hear that. I launched the app on the right time.
The source code is available on GitHub. You can use it as an inspiration. Also, feel free to contribute to improve something in the app.
BTW it's possible to see the "Reflectance chart". It shows reflectance curves of the paints and the mix. Here is a demo video on YouTube: <https://youtu.be/jC1HAeegm2I?feature=shared&t=157>.
I am very pleased to hear that.
Thanks for the idea. I will think how to implement it.
The resulting color of a paint mix is a weighted geometric mean of the paints' reflectance curves. The code is available on GitHub: <https://github.com/eugene-khyst/artistassistapp/blob/main/sr...>.

Older »