HNHacker News
TopNewBestAskShowJobs

afidrya

60 karma · joined August 29, 2019

submissionscomments
afidrya··on Ask HN: Who wants to be hired? (October 2026)

  Location: Georgia
  Remote: Yes
  Willing to relocate: Yes
  Technologies: C, C++, Swift, TypeScript, Python, Objective-C, React, React Native, Electron, WebGL, SwiftUI, UIKit, Node.js, Fastify, Hono, NestJS, OpenAPI, WebSockets, GraphQL, Qt, QML, Cocoa, STL, Boost, PostgreSQL, SQLite, Docker, gVisor, Firecracker, AWS
  Résumé/CV: https://drive.google.com/file/d/1FuZfiurvsvhgjK4RXYGJrL3X3afz9R86/view
  Email: afidrya81@gmail.com
Hi, I'm Andrii. I'm looking for a developer role at the intersection of low-level programming and application development. I have experience in video processing and streaming, network driver development, and desktop application development for macOS, Windows, and Linux. I've also worked extensively with iOS since the platform's early days. I'm also proficient in modern web development with React and Node.js. Open to full-time roles and project-based collaborations.
afidrya··on Ask HN: Who wants to be hired? (September 2026)

  Location: Georgia
  Remote: Yes
  Willing to relocate: No
  Technologies: TypeScript, Swift/Objective-C, C/C++, React/React Native, Node.js, Qt/QML, PostgreSQL
  Résumé/CV: https://drive.google.com/file/d/1FuZfiurvsvhgjK4RXYGJrL3X3afz9R86/view 
  Email: afidrya81@gmail.com
Over 20 years of experience in software development. I have built web, desktop, and mobile applications, backend services, and system-level software. I enjoy working in startups, building products from scratch, and solving complex technical problems. Hands-on experience with AI integrations and local inference.
afidrya··on Ask HN: Who wants to be hired? (August 2026)

  Location: Georgia (country)
  Remote: Yes
  Willing to relocate: Maybe
  Technologies: TypeScript, Node.js, React, Swift, SwiftUI, C++, C, Electron
  Résumé/CV: https://drive.google.com/file/d/1FuZfiurvsvhgjK4RXYGJrL3X3afz9R86/view
  Email: afidrya81@gmail.com
Full-stack engineer with 20+ years of experience, looking for a founding or first-engineer role. I build products from scratch and can work across frontend, backend, mobile, and infrastructure.

Particularly interested in small teams where I can take ownership and ship complete products.

Based in Georgia and accustomed to working US Pacific hours.

afidrya··on SwiftUI After 7 Years
It's licensing is expensive though unless the app is opensource.
afidrya··on Show HN: Pg-typesafe – Strongly typed queries for PostgreSQL and TypeScript
Is there a way to make this work with https://github.com/porsager/postgres ? It's very close to raw SQL but with safe substitutions. I use it with Zod, but it would be great to have the types derived automatically.
afidrya··on Ask HN: Is Express still "de-facto" for building Node back ends?
Fastify is absolutely fantastic. It has the concept of "type providers", allowing you to pair it with fastify-type-provider-json-schema-to-ts (for JSON schemas) or another typing system of choice, such as Zod, to obtain strongly typed queries, request bodies, and responses in handlers with TS types derived on the fly at compile time. It also validates data returned from handlers to conform to schemas, reducing the likelihood of accidentally leaking sensitive information. And it's faster than Express, even with validation.
afidrya··on Play Leisure Suit Larry free in DOS running in browser
Al Lowe was not involved with the latest two.
afidrya··on Ask HN: How do I improve my answer to “Tell me about a project you worked on”
If the interview is structured in a way that overloads your short-term memory, which is often the case, you'll have problems remembering things from a long time ago. Ask someone questions about recent events for a few minutes, and they won't even be able to remember not only what they worked on in projects many years ago but also their grandfather's name. Everyone has this problem; it's just how memory works, and poorly structured interviews trigger this effect. A workaround is to prepare beforehand and keep a list of things to talk about nearby.

Another approach that can work is to give your memory a bit of time to adapt. For instance, if you're asked to share a story from the past and you don't have one prepared and can't recall anything, suggest starting by discussing your past in general. For example, list the projects you've worked on and briefly describe them. You will feel how, during this process, the ability to recall events returns.

afidrya··on Ask HN: Best Practices Guides You're Aware Of
https://cheatsheetseries.owasp.org
afidrya··on Introducing react.dev
It's Docusaurus 2 + TwoSlash: https://docusaurus.io/blog/2022/08/01/announcing-docusaurus-...
afidrya··on Ask HN: How do you protect your eyes while coding for long hours?
Eyedrops name of which I don't remember, but I can try find if needed as they're commonly prescribed in Russia for this condition. I wouldn't recommend them though as turning a single clot into long wormy things was scary and annoying. I seen similar complaints from others who were prescribed these eyedrops. I'm not sure if they helped with dissolving the floaters, as I had smaller recurrence recently and not used any eyedrops and it's still slowly going away. Btw, if floaters are in the center, try moving the eyes up and down 10 times in succession - most of them should stick outside of vision.
afidrya··on Ask HN: How do you protect your eyes while coding for long hours?
I think mine were. I strained my eyes really bad over days of work, and then one day before going to sleep rubbed them. When I opened the eyes, I seen a brown clot in the middle of vision which after a month of treatment with eyedrops fell apart into lots of floaters / worms. 2 years later most of them dissolved, but some remain and vision is blurred a bit. It also turned out that most people I asked have floaters too, but if there aren't many, they're filtered out by brain. If you aren't looking for them specifically, they aren't visible. They are hard to unsee though once you seen them, so better not to try. )
afidrya··on Shell script best practices, from a decade of scripting things
I also think so. Often script needs to access a file in actual current dir (for example a config file) or process files with relative paths supplied by user and changing working dir makes this hard.

I think an easier way is to find script's location and construct paths for accessing script dependencies, for example (works on Linux & macOS):

  script_root="$(cd "$(dirname "$(readlink "$([[ "${OSTYPE}" == linux* ]] && echo "-f")" "$0")")"; pwd)"
  source "${script_root}/common.sh"
  source "${script_root}/packages.sh"
  source "${script_root}/colors.sh"
afidrya··on Ask HN: Who wants to be hired? (October 2022)

  Location: Europe (PST is also fine)
  Remote: Yes
  Willing to relocate: Yes
  Technologies: TypeScript, React, React Native, NodeJS; Swift, ObjC, C++
  Résumé/CV: Upon request
  Email: afidrya81@gmail.com
Hello! My name is Andrey, I'm full-stack dev with systems programming background. Nowadays, I specialize in web app development and native apps for iOS and macOS, can adapt to your stack or do something very niche / low level (write a device driver etc). Please let me know what you're working on and I'll describe my relevant experience.

Looking to join a team as a full-time contractor on a 3+ mo project. Small teams / early stage startups preferred. Relocation is possible if needed.

afidrya··on Did I just lose half a million dollars?
In simple words, he should have called a smart contract's function which would withdraw his tokens and send real ETH to his address. Instead, he sent tokens to smart contract's address and they will stay there forever, not associated with any account. This complexity should be abstracted away by wallet's UI. Users don't have to call APIs directly. Also, this whole situation could be prevented by trying to send a smaller amount first.
afidrya··on How to Squash and Rebase in Git
Downside of squashing as opposed to making a merge commit (without fast forward) or merging by rebasing, however, is losing granularity. Later it'll be hard to roll back a small part of PR while keeping rest of the changes.

Also it'll be harder to go back and review changes when troubleshooting issues because formatting changes were squashed together with business logic changes. With merges at least there are still original commits available, and it'll be possible to either rollback everything or a single commit.

afidrya··on Ask HN: Who wants to be hired? (November 2021)

  Location: Russia (UTC+3, but any TZ is fine)
  Remote: Yes
  Willing to relocate: No
  Technologies: TypeScript, Swift, C, C++, ObjC, React, Electron, Node, Docker, Docker Compose, PostgreSQL, Qt
  Résumé/CV: On request, please email me
  Email: afidrya81@gmail.com
Hey! My name is Andrey, I'm full-stack dev with more than 10 years of remote work experience (20 overall) and specialize primarily in web app development (React + Node) and native apps for iOS and macOS. Ideally I'm looking for a full-time job or 3+ mo project.

Previously I've worked on wide variety of projects such as multi-tiered web apps with SSO, Shopify / WooCommerce plugins for delivery services, Linux device drivers, video streaming apps, mobile banking apps and so on.

I'm always open to learn something new, particularly interested in Rust and Go.

afidrya··on Launch HN: Gather.Town (YC S19) – Spatial video chat for remote teams
Firefox dropped H264 support 1 year ago because of Google Play Store policies. This codec was required for interacting with iOS devices which did not have VP8. However, VP8 has been added since iOS 12.1, so it might be possible to use it now across all platforms.

- https://bugzilla.mozilla.org/show_bug.cgi?id=1548679

- https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Rel...

afidrya··on React v17.0 Release Candidate: No New Features
It contains a very serious breaking change: cleanup in useEffect is now being executed asynchronously. I might not be seeing something, but I think this means all patterns like the one below will now have hard to catch racing conditions.

  const [x, setX] = useState()
  useEffect(() => {
    let isMounted = true
    someAsyncFunc(result => {
      if (isMounted) {
        setX(result) // should not be called on dismounted component
      }
    })
    return () => { isMounted = false }
  }, [])
  return <MyComponent x={x} />
In this example it's possible that component will be unmounted, then completion handler will run and try to modify state before cleanup function will be able to set the flag.

Imo choosing a different name for new useEffect would be better (like useAsyncEffect or introducing a parameter), because just changing its behavior won't even result in compilation errors or guaranteed run-time errors, only make old code unstable.

Is there a way to reliably detect if component is still mounted before updating it when doing async operations in effects?

afidrya··on A Surprise AWS Bill
I don't recommend them. We used to host an online text game there (MUD) and when one of the players decided to DDOS it, Hetzner just pulled the plug. I moved to soyoustart.com (it's OVH brand) - in following month they sent a couple emails about the server being attacked and that they're trying to mitigate the attack, but game kept working.
afidrya··on $14M in ETH stolen from Upbit were laundered in May through well-known exchanges
For example which ones? For past few years I'm using Mail-in-a-Box hosted on soyoustart and can't remember any problems when sending mail to big providers. I only had to check that IP is not in spam lists initially and asked to remove it from one of them.