HNHacker News
TopNewBestAskShowJobs

jeremija

83 karma · joined October 16, 2016

submissionscomments
jeremija··on Snaps. Why? Please Stop
Oh don't let me get me started on this. I use Firefox on a work machine and I spent a number of hours troubleshooting why it couldn't access the Internet when I was connected on VPN.

I suspected it had something to do with snapd, so I downloaded the .tar.gz release of Firefox and it worked. I kept investigating and figured it must have something to do with snap.firefox.firefox apparmor profile because the VPN client was symlinking the /etc/resolv.conf to /opt/.../resolv.conf

However, updating the apparmor profile didn't help so I ultimately realized that snap has a hardcoded list of paths that get mounted into the app container [1] and there's no way to change this.

There are a number of reasons to hate on snapd, but this almost made me flip the table.

Also, as a bonus point, if you look at the apparmor profile I mentioned it has a ton of comments about chrome, so someone must've just copy pasted it and modified to work with Firefox. GrEaT SeCuRiTy!

[1]: https://github.com/snapcore/snapd/blob/3a88dc38ca122eba97192...

jeremija··on I’ve spent my Easter break customizing Neovim
I've been using ALE for years and even contributed to it: https://github.com/dense-analysis/ale
jeremija··on Let web applications be file handlers
I hear you, I've been working on peercalls.com, a video conferencing app, for the past few years and it works on all major browsers and platforms, including Firefox.

That said, I'm bummed out that E2EE using insertable streams / SFrame transform is only currently supported in Chrome.

I've also noticed that very few devs in the WebRTC community actually test stuff in Firefox.

jeremija··on Winamp Skin Museum
I just run audacious when I feel nostalgic - it has support for old Winamp v2 skins. Most of the time i just use cmus though.
jeremija··on Local-first software (2019)
I've been developing Peer Calls since 2016. It's an open source WebRTC group conferencing solution, doesn't require a user account, has a full-mesh P2P and SFU mode (streaming through central server). Works on Android, iOS, Firefox, Chrome, Safari, latest Edge and there is no app - only a link that you need to share: https://peercalls.com/
jeremija··on YouTube will opt-in all existing videos (over 8mins) for mid-roll ads
I don't like that I have to use their web player to listen to music. Also if their licensing deals change, the music that used to be there can disappear. I don't like that and therefore I continue to support bands via Bandcamp, from where I can download FLAC files. Unfortunately not all bands are there and some keep focusing on streaming platforms/YouTube and it's becoming harder and harder to get the music files locally.
jeremija··on Peer-to-Peer Communications with WebRTC
Author of Peer Calls here, an open source, anonymous WebRTC multi-user conferencing solution. I recently ported the app that Go and added an SFU (thanks to pion/webrtc) to make support for 3+ users better. Works on all recent major browsers (including Safari on iOS).

See https://github.com/peer-calls/peer-calls for more information.

You can host it yourself or use peercalls.com

Happy to answer any questions in this thread.

jeremija··on Ask HN: What are some open source alternative to Zoom
I'm the creator of Peer Calls [1], a peer to peer video conferencing web app using WebRTC, and it has a basic chat functionality (sending files is a little quirky). The first release was back it in 2016. Users create a room and share the link.

It's built in NodeJS/React/TypeScript, and I just recently ported the backend to Go because I wanted to build a Selective Forwarding Unit using pion/webrtc. You can test this in the alpha release on peercalls.com/alpha [2].

Would love to get more feedback and/or bug reports! Open source, available on GitHub [3].

[1]: https://peercalls.com

[2]: https://peercalls.com/alpha

[3]: https://github.com/peer-calls/peer-calls

jeremija··on Free software tools for staying in touch
Thanks for reporting the bug! I thought I'd fixed this issue. Which version of MacOS/iOS/Safari are you using?

Edit: I just realized that I just hadn't pushed the latest version which contained this fix. v3.0.17 is up and running now (was v3.0.15). Please let me know if you continue to experience this or any other issue!

jeremija··on Free software tools for staying in touch
I've been developing peercalls.com on and off on since 2015. It's an open source peer to peer WebRTC audio/video calling service, allows the users to chat, share their desktop and send files (sending files is a little buggy at the moment, works best in Firefox).

It has gotten a lot of interest in the past month and I noticed a spike in web traffic so I'm actively working on making it more scalable. I'm planning on implementing an SFU to support calls with more than 3-4 people. Right now the peers establish a mesh network and it quickly gets expensive to send video to more users.

I've also been paying attention to the criticisms of Zoom and other WebRTC conferencing services and am hoping to implement end to end encryption for intermediate servers using Insertable Streams once the functionality is supported in most browsers.

jeremija··on Does your video call have End-to-End Encryption? Probably not
I believe it is the HTML canvas. It is very simple to capture a video frame using canvas - see this commented out code: https://github.com/jeremija/peer-calls/blob/6b865a78bbb4e64e...
jeremija··on Show HN: A privacy-friendly publishing/blogging platform with votes and comments
For the past few months I've been building a platform for posting articles with tree-style comments out of the box. It is written in Golang, fully rendered server-side, has no tracking, works without JavaScript, supports GitHub Flavored Markdown, code is automatically highlighted when language is specified, has a light and a dark theme (right now only on browsers that support `prefers-color-scheme` CSS feature).

Feel free to check it out and drop a comment here!

jeremija··on Ask HN: Who wants to be hired? (February 2020)
Location: Croatia (previously Amsterdam and New York)

Remote: Yes

Willing To Relocate: No, but occasional travel is OK

Technologies: Golang, TypeScript, JavaScript, React/Redux, Python, Java, PostgreSQL, MySQL, Linux, Docker, Ansible, gRPC, TDD, unit/integration/end-to-end testing, Android

Resume / CV: rondomoon.com - I can provide more info if asked by email

Email: hello at rondomoon.com

I am a full stack developer with over a decade of experience looking for remote contracting work for my company. I mostly do web app development (PWA, SPA, MPA, SSR) and am equally happy to write frontend and/or backend code. My development flow follows the 12-factor app principles, and I like automating stuff.

If a project is uses an unfamiliar technology, I am alaways keen on grokking the code base and learning something new.

jeremija··on Ask HN: How do you manage app secrets?
I usually have a base config file that's committed and serves as an example or for developing with local services that I (or any other dev) can run easily via docker compose. Additionally, any setting can be overridden with an appropriate environment variable.

For test/production environments I have a separate config file that is not committed to the repository.

Continuous integration tools like GitLab CI, Drone CI, and I believe Travis CI have support for application secrets so that can be used for automated deployment. Alternatively, these config files can live on the servers.

Some automation tools like Ansible have the ability to encrypt the secrets so they can be pushed to the repository, but I've never done it. Docker swarm also has support for defining secrets, and I'm sure Kubernetes does too.

jeremija··on Ask HN: Who wants to be hired? (January 2020)
Location: Europe

Remote: Preferred

Willing to relocate: No

Technologies: JavaScript, TypeScript, Python, Go, Java, Docker, MySQL and PostgreSQL

Resume/CV: https://rondomoon.com

Email: hello at rondomoon dot com

jeremija··on Sonos requires access to your location to install a Sonos system
Yes, thank you! I've been travelling so much lately I forgot I had it!
jeremija··on Sonos requires access to your location to install a Sonos system
You can try to set it up using a fork of mpd. I've tried it a few years ago but it didn't work that well.
jeremija··on An account is now required to read Reddit comment threads?
I have a feeling they will disable 3rd party apps soon. That will be the day I stop using Reddit.
jeremija··on Sonos requires access to your location to install a Sonos system
About 6 years ago I bought a Sonos Connect as a gift for my father. This was the first and only smart home device I had bought at the time and I wasn't really thinking about the privacy implications at the time. Years have passed and he was not using so he gave it back to me. I was surprised by the permissions required to setup a device, and appalled by the lack of support for streaming from a Linux system. They could've made it so simple by have the server run a web app. They also made it so hard to play local music. Luckily there's BubbleUPNP so that works, otherwise it's totally not worth it if you have a local music library and do not want to pay for Deezer or Spotify; Chromecast Audio works just as well and it's 10x cheaper - the only thing missing is Gapless playback via DLNA. However, Chromecasts also require location during setup. I wish there was a non-Google privacy-friendly alternative for Chromecast.
jeremija··on Making Games with Kotlin
Thanks a lot for all the info! :)
jeremija··on Making Games with Kotlin
What's the status of Kotlin Native for writing backend apps? I really like it but I wouldn't want to get dragged into Gradle, JARs and JDBC again...
jeremija··on Firefox Preview 3.0
IIRC extensions are on their roadmap
jeremija··on Ask HN: Do you write tests before the implementation?
I've always found it easier to write the skeleton of a module first (or an interface, depending on the language), and then write the tests to cover the main functionality, then the tests for the edge cases, and then finish the implementation.

I usually finish by checking the test coverage and trying to make it reach 100% branch coverage if I have the time. The coverage part is important because it usually makes me realize things could be made simpler, with fever if/else cases.

I could never get used to writing only the tests first simply because all the compilation errors get in the way (because the module doesn't exist yet).

jeremija··on PHP-FPM remote code execution bug exploited in the wild
Thanks for the link! The example in the link does not contain the

   set $path_info $fastcgi_path_info;
line after the `fastcgi_split_path_info` directive.

My old configuration used the `$fastcgi_path_info`, and the new one uses the `$path_info` variable, so I got the following error while starting nginx:

    nginx emerg unknown "path_info" variable
Might be worth checking out the sample from the Nextcloud Admin Manual[1]

[1]: https://docs.nextcloud.com/server/17/admin_manual/installati...

jeremija··on Google Chrome Keystone is modifying /var symlink on non SIP Macs causing k-panic
I've been thinking about migrating away from GMail for a while now. Are you self hosting your email now, or are you using a provider like ProtonMail? Just curious
jeremija··on Show HN: A website speed test tool to compare uBlock Origin with plain Chrome
My wife and I decided to donate one year. Guess what happened next? They sold our data to their partners and we ended receiving so much spam mail in the following few years, we couldn't believe it. These organizations generate so much paper waste, it made us so angry we simply stopped our subscriptions. But we had to wait until we moved out for the spam to stop.
jeremija··on A Gentle introduction to Kubernetes with more than just the basics
IIRC, if you use docker swarm it wil handle the routing for you. So if an app is running on port 8080 on two swarm nodes, if you access port 8080 on each node, you might actually be accessing another node.

Since docker swarm knows if an instance is down, it will know to not use that instance.

See https://docs.docker.com/engine/swarm/ingress/

jeremija··on The boring technology behind a one-person Internet company (2018)
Haha, I guess it is not at the moment, but it keeps me amused. In the first post I was just referring to using JSONRPC over standard REST endpoints as the time saver.
jeremija··on The boring technology behind a one-person Internet company (2018)
I'm currently working on various projects at work that I cannot discuss here, but in parallel I've been working on an express / TypeORM / React (SPA & SSR) framework that I hope to release one day as an open source project.

The main focus is to:

- easily share React components that use Redux state and actions between projects

- rapidly develop new server-side services and immediately use them in React components (by removing code duplication when it comes to creating action creators and action types)

- have type safety

- provide basic server-side and client-side components for basic user actions such as login, user profile, etc

- make it easy to write tests

And at some point in the future, I hope to make it generic enough so the libraries mentioned above can be swapped for other libraries, but that might be too much work :)

jeremija··on The boring technology behind a one-person Internet company (2018)
I've started to use TypeScript and React on the front end, with a JSON RPC middleware on an express server with helpers that automatically implement service interfaces for API calls, action creators and reducer handlers. And all of them are type-safe.

I've spent a lot of time building CRUD APIs and GraphQL interfaces, and this is the simplest solution that has saved me so much development time. JSON RPC gets so much hate, but it's made my life so much simpler.

Page 1 of 2Next →