HN user

AlexITC

664 karma

https://wiringbits.net | https://github.com/AlexITC | hn@wiringbits.net

Posts44
Comments275
View on HN
news.ycombinator.com 7mo ago

Ask HN: "Freelancer? Seeking freelancer?" threads gone?

AlexITC
4pts4
news.ycombinator.com 1y ago

Ask HN: Is there any encrypted portfolio tracker available?

AlexITC
9pts3
playcodeai.com 1y ago

Show HN: PlayCodeAI – A tool I created to let my kid create their own videogames

AlexITC
7pts0
news.ycombinator.com 2y ago

Tell HN: Be cautious with take-home challenges

AlexITC
5pts2
wiringbits.net 2y ago

Show HN: A guide to self-host AudioCraft demo

AlexITC
8pts1
wiringbits.net 3y ago

Sharing our default settings for GitHub repositories

AlexITC
1pts0
news.ycombinator.com 3y ago

Tell HN: Be aware of people trying to scam contractors

AlexITC
154pts104
wiringbits.net 3y ago

Replacing sbt with Scala-CLI in a simple project

AlexITC
2pts1
codepreview.io 3y ago

Show HN: Preview environments for projects that do not use K8s/Docker

AlexITC
31pts17
news.ycombinator.com 3y ago

Ask HN: How much is reasonable to charge for rescuing a web app?

AlexITC
20pts28
www.scala-lang.org 3y ago

10 Years of Scala.js

AlexITC
57pts22
github.com 3y ago

Show HN: PlantUML based collaborative UML editor is now open source

AlexITC
185pts51
wiringbits.net 3y ago

Gaining access to inherited AWS EC2 instances

AlexITC
9pts5
scala-lang.org 3y ago

Scala Developer Survey 2022 Results

AlexITC
2pts3
wiringbits.net 3y ago

macOS-like pinch to zoom on Ubuntu 22.04

AlexITC
2pts0
wiringbits.net 3y ago

Super simple admin app to restart applications on demand

AlexITC
2pts2
news.ycombinator.com 3y ago

Tell HN: Potential hashed password leaks from Slack workspace invitation links

AlexITC
3pts1
github.com 4y ago

Show HN: Simple games ported to Scala 3 – Try them in the browser

AlexITC
70pts25
wiringbits.net 4y ago

Notes about Loading Configuration

AlexITC
2pts0
wiringbits.net 4y ago

From Hibernate schema generation to Flyway in existing applications

AlexITC
1pts0
news.ycombinator.com 5y ago

Tell HN: Kismet – get an email introduction to a fellow HN member every day

AlexITC
4pts0
www.digitalocean.com 5y ago

How to Deploy from a Container Image on DigitalOcean

AlexITC
1pts0
discuss.circleci.com 5y ago

Authenticate with Docker to avoid impact of Nov. first rate limits

AlexITC
1pts0
www.digitalocean.com 5y ago

Hacktoberfest 2020

AlexITC
4pts0
github.com 5y ago

Show HN: A simple CLI app to organize photos by year/month locally

AlexITC
10pts15
developers.facebook.com 5y ago

Facebook App Review Improvements for Business Developers

AlexITC
1pts0
github.com 5y ago

Show HN: I built an extension to let my wife track discounts easily

AlexITC
5pts1
wiringbits.net 6y ago

Show HN: Writing a Discord bot for trying to ban scammers

AlexITC
2pts0
wiringbits.net 6y ago

A Raspberry Pi as a decent residential proxy

AlexITC
98pts46
collabuml.com 6y ago

Show HN: An online collaborative UML editor using PlantUML

AlexITC
116pts33

I have got a few but that was many years ago, I also have friends who have shared that they got nice gigs from hn threads.

If you look at the post history, there were barely any "SEEKING FREELANCER" messages which is likely the reason why this auto-post was stopped.

    Location: Spain
    Remote: Yes
    Willing to relocate: No
    Technologies: Scala, Java, Rust, JavaScript/TypeScript, React, Ruby, AWS, Postgres
    Résumé/CV: https://www.linkedin.com/in/alexis-hernandez
    Email: alexis+hn@alexitc.com

Senior engineer with 10+ years of experience, while Scala is my strongest language, I'm a generalist and have shipped production code in Rust, Java, TypeScript, Ruby, and more. I'm keen on picking up new tools.

I believe in using the right tool for each task. Strong infrastructure background (AWS, cloud-native, distributed systems). US C-Corp for contracting.

I've attempted to bootstrap products myself so I understand what it takes beyond writing code. I take full ownership end to end, I don't wait to be told what needs solving.

Immediate availability because my whole team was laid off recently, I'm used to work on US timezones. Open to senior IC or tech lead roles.

- GitHub: https://github.com/AlexITC

- Latest tech talk: https://www.youtube.com/watch?v=SJxEXAkxD3I

- Testimonials: https://alexitc.com/testimonials/

P.S: I also have decent experience leveraging AI to speed up my work, not vibe coding but holding AI-hands like I'd typically do with junior devs. I also have built multiple AI integrations.

My whole team got laid off recently and I have been in constant communication with them, I also have multiple friends who got laid off this year who shared the pain it has been to get a new role,

Market seems better than the last few years but it still does not feels right to me,

We have got multiple people reaching out but the majority of the roles are in-office or hybrid while I work fully remotely.

I posted on LinkedIn, with the help from friends I got quite a lot of visibility (most viral post I have ever had) but still, out of the ~10 recruiters that reached out, only 2 are remote roles, I also got a few offers to work for equity only.

I posted on the monthly "Who's wants to be hired?" thread, it has lead to a few offers to work for equity only + shady people that want me to attend calls and "delegate" the work to them while splitting the revenue.

I have also got a few referrals and even for these, they are moving slowly.

To put it in perspective, years before I'd easily get 10 recruiters in my inbox per week,

Market seems tough and I can't imagine what junior people are passing through while trying to get a job.

EDIT: I forgot mentioning the people reaching out with promising offers and the intention of getting me to run their malware hidden in coding challenges.

    Location: Spain
    Remote: Yes
    Willing to relocate: No
    Technologies: Scala, Java, Rust, JavaScript/TypeScript, React, Ruby, AWS, Postgres
    Résumé/CV: https://www.linkedin.com/in/alexis-hernandez
    Email: alexis+hn@alexitc.com

Senior engineer with 10+ years of experience, while Scala is my strongest language, I'm a generalist and have shipped production code in Rust, Java, TypeScript, Ruby, and more. I'm keen on picking up new tools.

I believe in using the right tool for each task. Strong infrastructure background (AWS, cloud-native, distributed systems). US C-Corp for contracting.

I've attempted to bootstrap products myself so I understand what it takes beyond writing code. I take full ownership end to end, I don't wait to be told what needs solving.

Immediate availability because my whole team was laid off recently, I'm used to work on US timezones. Open to senior IC or tech lead roles.

- GitHub: https://github.com/AlexITC

- Latest tech talk: https://www.youtube.com/watch?v=SJxEXAkxD3I

- Testimonials: https://alexitc.com/testimonials/

I have been running a company like this for ~6 years, we are only engineers, and, I'm the only one handling sales.

Getting started is the hardest part, like many are saying, its simpler when you can rely on your network.

Everything is about trust, by this, start reaching out to people who already trust you, there is a chance that this will get you either a project or a referral. Once you build a portfolio, you will keep getting these referrals.

In my case, I have got most of our contracts by sending cold emails, I have got a few customers through the "Who's looking for freelancers" posts + many others by just talking to people.

Lately, market is flooded with AI-generated stuff and fake job seekers which is causing people to distrust others, it seems harder to get contracts through cold outreach and the referrals we have got have done wonders.

Not everything needs K8s, over the years I have worked with many different deployment approaches, the way I do deploy hugely depends on the kind of work I'm doing but my rule is to keep it as simple as possible.

In my own projects I have stayed the longest with Ansible, once the scripts are built, you can use them to deploy most web apps in the same way and stuff rarely breaks.

For websites I have switched away from ansible to simple shell-scripts ("npm run build && scp ..."), I have also done this for web apps but it starts getting a bit more complex when doing healthchecks/rollbacks.

In general, most of my work involes web apps and I start with this and grow from there:

- Monolith backend + Postgres + same language for backend and frontend with shared code.

- Small Linux server within a cloud with fixed pricing (like DigitalOcean) with backups enabled.

- When the project allows it, postgres is installed in the VM (backups help to recover data and keep the price small).

- Use nginx as the entrypoint to the app, this is very flexible once you are used to it, for example, you can do caching + rate limit with simple configuration.

- Use certbot to get the SSL certificate.

- Use systemd to keep the app running.

- A cheap monitoring service to keep pinging my app.

- Deploys are triggered from my computer unless it is justified to delegate this to the CI.

It's been a while since I have found Ansible to be too slow and I have been willing to complete building my with a general-purpose tool for deploying webapps this way but I have no idea if I'll be ever done with this.

Perhaps the most important project I used to run with this approach is a custom block-explorer API which indexed Bitcoin + a few other cryptocurrencies and it scaled well with a single-VM (nginx aggressive caching for immutable data helped a lot), this means that the postgres storage required more than 1TB.

When I was younger I used to believe that nothing serious could happen because I don't use Windows and "I was smart enough" to not execute malware (yeah, I didn't care on downloading it; how wrong I was).

Someone already mentioned zero days but let me elaborate a bit on what can happen when visiting a website:

- Without zero days involved, you are already disclosing digital information, ip address, browser fingerprint, precise location access could be granted with relaxed browser settings, etc.

- As a dev, you may have services running locally, let's say, postgres, web servers, etc. -sometimes we install stuff and forget about it- the malicious website could access these.

- It could try using your sessions for other websites.

- It can also interact with your browser extensions, many of these do not take precautions for this.

- It can also try using your hardware, camera, microphone, bluetooth, we now even have webusb.

- It can also try to use your CPU/network for cryptocurrency mining or attacking other servers, it could even use you as a proxy while you are on the website.

- With zerodays, it could do just anything.

It definitely took a while for most libraries to catch-up with Scala 3, now, I don't see anything is missing in the main area I work with (web development), playframework already works for Scala 3.

While the tooling isn't perfect, it has improved considerably over the last years, I remember when IntelliJ couldn't deal with Scala 3 but now, it rarely complains.

Related to Python 2->3, I don't see how Scala 2->3 compares, there are clear migration guides + tools to help re-writing to switch between the new/old syntax, I have done many migrations and I have used these tools since the time when Scala 3 was launched (I admit that I reverted a migration at that time).

This is a super cool idea, in fact, its been a few months since I have been thinking on making something like meet.hn + findkismet.com, let the people share in which city they are and make introductions to people from the same city.

Thanks!

I have done this, it can work with some kids, still, its too much work.

At this age, I think it is more important to keep them motivated and find ways to use their creativity than to get them through the pains of debugging and learning too many technical concepts, even simple details like learning about image formats, how to reference them, case-sensitiveness are just obstacles against meeting their goals.

Not a job but I got a contract due to a webapp template I have in my github profile, my customer shared that he wanted someone that wouldn't start from scratch and my template looked good enough to get the job done.

My experience is the opposite, when people is unmotivated or not interested in the work, its unlikely for them to improve even if you give them enough chances.

I have the impression that people get in some kind of comfort zone when underperforming that's psychologically hard for them to improve until they move to another team/company.

So, you should catch these issues as soon as possible to let people know that this is not tolerated, in some way, this helps because people can take you more seriously.

A few years ago, I was involved in a team with less than 10 engineers, we decided to switch to bazel in order to improve the build times, specially the CI runtime.

On the good side:

- bazel forces you to have an acyclic architecture, still, this can feel annoying because every module needs to specify its dependencies.

- bazel does concurrent builds pretty well, optimizing the build times.

On the bad side:

- It took a considerable time to set everything up, we thought to be done but no, there was a weird stuff coming every week and most of the team ended up waiting for the bazel guy to fix it.

- IDE support was poor, in theory, we could just use intellij but most of the times it required help from the bazel-guy, in my case, I got frustrated about the needed maintenance and just accepted that an IDE wouldn't work. - Given the lack of IDE, it means that we couldn't easily execute a specific test from the UI, having to keep notes for the cli.

- In theory, you could use a shared cloud cache so that the builds are very effective but we could never set this up. - talking to engineers from other companies, they admitted that the bazel setup was hard and took a considerable amount of resources, they ended up writing many internal tools to get a effective usage.

Given that you plan to create a startup, do you plan to hire engineers? then, be prepared to the bazel-guy.

Also, as a startup, I bet your code will be small enough that the build times won't be very different with normal build tools.

I'd personally not use bazel unless my company offers a dedicated engineer just to maintain this integration, I think its overkill for small companies.

This is very helpful, in Mexico, we have a couple of government-provided services where you register to not get advertise/financial calls, when you do, you can report them, and, in theory, the organizations could get considerable bills due to this violation.

I have been thinking that we should make an app to automate the reporting process.

A fun detail is that the government sells the lists of people that do not want to get contacted.

Also, lately, I have been getting many calls that are supposedly coming from the UK.

We have developed a few tools, we try open sourcing these when possible, the latest being:

## 1. Vacation tracker

I used to track vacations in a spreadsheet but I had a couple of incidents where I was waiting for team members to do a task, and, I even called them just to be told that they are taking time off.

We built a vacation tracker webapp that notifies a discord channel a week before the time-off period starts (same for holidays).

I have been willing to add a feature that notifies our customers when one of our devs will be off. The site is public/free in case anyone wants to give it a try.

Why not to use existing services? The apps I found had integrations with every messaging app but discord.

## 2. Webapp preview service

It was annoying to ask devs for demo videos when they submitted PRs, it was slow to run the code locally, then, we developed a heroku-like app to automatically deploy the code from PRs to a temporal url, including backend/frontend and its dependencies.

This has been very helpful for us, we started integrating it with a few customers who love it but we haven't had much time to scale our customers base.

We did not used existing tools due to the huge pricing while considering the amount of projects we work on and the number of people, also, most of the existing services depend on dockerized services while we rarely follow this approach.

## 3. Discord scammer kicker

While I wasn't the founder, there was a time where I was involved in cryptocurrency projects, there was a common scam back them, scammers would join the discord channels and rename his nick to match one from the project maintainers, messaging the community to try stealing their coins.

I created a simple discord bot that would kick out people with nicknames similar to the ones from the team.

There is a post about this at https://wiringbits.net/wiringbits/2020/07/06/writing-a-disco...

The number of bans was surprising, eventually, people stopped trying this approach.

## 4. A simple website to restart services

In short, a 20 lines of HTML + nginx (no js, no backend) that would ssh into VMs to execute pre-defined commands (mostly to restart services) so that non-technical people could execute these.

This is described in https://wiringbits.net/general/2022/10/15/super-simple-admin...

There was a time I had a tricky bug to solve, a important email wasn't being delivered to customers, I had to do this to discover the 1-line change:

1. Simulate the email and check whether it was being received by the mail provider (Gmail), turns out that it was received by Google but Google spam filters rejected the email, we could see the sender/subject but we couldn't see the content.

2. Print the email content in the code just before sending it, all seem correct here.

3. Do monkey-patching to a Ruby library that was in charge of sending the email to the SNTP server, println says that we are sending the right data.

4. Capture the traffic (Wireshark) sent by the app to the SMTP server just to make sure we are sending what needs to be sent, turns out that the email content wasn't what I expected, it was something like a Ruby object's default hash + some weird characters.

Apparently, the library in use wasn't working with the object we were sending, which caused the email content to become a random string, this triggered Google spam filters causing it to reject the email, the solution was as simple as changing a line from `email.body` to `email.body.string`.

I have been involved in a few projects using postgres-bakend queues for a few years, scale hasn't been a problem so far.

On the other hand, I have done a few experiments with postgres LISTEN/NOTIFY, while the feature seems nice at first glance, I concluded that it wasn't worth it for our use cases, maybe it is different in other languages but in the JVM, you have to allocate 1-thread for polling these results, which also keeps a connection busy.

What I ended up doing is leveraging akka-stream to stream the queue data directly from the db, which makes it simple to define throttling rules, this is super simple and effective.

First of all, congrats on reaching $500 MRR, I have been running my own product for longer and I'm still not there yet, I also know many friends in a similar situation.

Related to sales strategies, have you considered talking directly to people? Try finding a niche where you product is well-received, then, ads could be better targeted.

Also, by trying your website bot, I typed "How much does it cost?" and the response was huge + some html tags, I can imagine that potential customers wouldn't be keen to get this in their website.

In any case, talking to people could help you to discover why people is not purchasing the product.

Good luck.