HN user

joshavant

565 karma

iOS Developer

https://joshavant.com

https://x.com/joshavant

https://github.com/joshavant

https://linkedin.com/in/joshavant

<the_same_handle>@gmail.com

Posts6
Comments113
View on HN

I want to build a large format, real-time, physical music visualizer that could orchestrate an artistic light symphony for any song.

I'm imagining physical visualizers that are columns of multiple, discrete light nodes, each able to have variable brightness and color.

The real-time music processing is the hard part (for me) to crack.

There's some standard tricks here: FFTs, bandpass filters, etc.

But I want to do more: Real-time stem separation, time signature and downbeat tracking, etc.

Imagine hearing Sweet Caroline and, when the horns kick in, the whole installation 'focuses' on the horns and bright yellow light jumps between each column on each horn note, before returning to tracking the bass line or something.

I've been noodling on this idea for a long time and slowly digging into the music and CS fundamentals. The rise of LLMs might finally be the piece that enables me to close my intelligence gap and finally build this thing...

Here's my strategy:

- Setup VMs locally, on your development machine. (This eliminates the cost of hosting but gives you all the technical learning opportunities). My development machine is macOS and UTM has been an excellent app to manage these VMs. You can eventually model your VM's configuration around what resources your VPS will have on AWS/DO (e.g. 1GB RAM, 2 vCPUs, etc).

- Learn the basics of Ansible, in order to provision a server (local or remote). I did the course on KodeKloud.com and found it great to getting me going quickly.

- Write Ansible playbooks to provision your local VM as you would want your VPS on AWS/DO/etc to work. Ansible Galaxy is a repository of many community-supplied roles for common tasks/services. You could consult these for best practices on building your own playbooks or totally offload provisioning onto those roles.

- Once you're comfortable getting your local VM setup, point your Ansible playbook at an AWS/DO VM and put it online!

My high-level roadmap has been to build my own Ansible playbook to provision a Ubuntu server to CIS Level 2.

CIS benchmarks define security controls for a few of the more common aspects of DevOps work (e.g. Ubuntu OS hardening, AWS account security, Docker host, etc). They're freely available and there's many well-maintained scripts that can both audit and provision your host to the standard. I've been using the benchmarks as an easy to way to self-teach security aspects (and validate I've done it correctly). Level 2 is the standard used to handle financial information and medical records, so it's probably the most secure you'll ever need to go.

Once I have a provisioning playbook to stand up a secure host with some services (Nginx, Redis, etc), the next goal on my roadmap is learn Terraform to configure + deploy a personal cloud of services to AWS/DO/etc.

Looking at the Beeper Mini announcement [1], they clearly state that a user doesn't need an Apple ID to register their phone number and send/receive iMessages. Also, they describe direct, device-to-Apple interactions.

However, this article says:

IDS is used as a keyserver for iMessage...

The first step in registering for IDS is getting an authentication token. This requires giving the API your Apple ID Username and Password.

After registering with IDS, you will receive an “identity keypair”. This keypair can then be used to perform public key lookups.

So how does the Beeper Mini app take an arbitrary Android phone number, register public keys for it with IDS, and perform public key lookup of recipients... all without ever using an Apple ID?

[1] https://blog.beeper.com/i/139416474/security-and-privacy

EDIT - It looks like the answer here is the 'SMS Gateway' which is virtually undescribed in the OP article or anywhere on [1]. Guess that's the secret sauce.

I've hesitated to ever attempt this because every residential ISP I've had refuses to offer static IP addresses.

As well, deploying a server in a Google/Amazon/Microsoft datacenter which could be surreptitiously monitored defeats the theoretical privacy aspects of on-premises mail server hosting inside one's personal residence.

However, today, I looked into the newish movement of 'confidential computing' in the cloud (where data in motion - e.g., in memory - is encrypted and cannot be observed from the OS or hypervisor).

I openly wonder if one solution, then, is to build a secure VM that acts as a simple forwarding proxy to one's home server, gets assigned a static IP from a datacenter, and is deployed on one of these confidential computing instances, ensuring full E2E data privacy and data control?

Any guesses?

SEEKING WORK | Austin, TX or Remote | iOS

Hi, I'm Josh. I've been developing iOS apps for the last 7 years including Tinder, CrowdRise, and LivingSocial. I've also spent time at Apple, Google, Microsoft, and an acquired startup. (I'm most proud of rebuilding the Tinder card stack and watching it spend over a year in production (2015-2016).)

I can help your team with...

- Designing and developing stable iOS features, quickly

- Mentoring developers on best practices in mobile app development

- Setting up a CI pipeline, code reviews, and unit testing

- Advising on development process inefficiencies

Check out some of my previous work here: https://iamjo.sh/work/

I'm available locally in Austin, TX or remotely during normal hours for any US timezone.

My standard rate is $150 per hour and non-negotiable.

josh@iamjo.sh | https://iamjo.sh

When I worked at Apple, it was fun to walk in some buildings and notice the California 'cancer warning' sign posted in the lobby. From that, you knew there was probably a hardware engineering lab somewhere in that building, because I believe they had to post those due to carcinogens released from soldering. (And, inside of Apple, that kind of knowledge would only be shared on a need-to-know basis, otherwise.)

I'm a front-end developer.

I'd like an OSS solution that will allow me to deploy an arbitrary server-side service - be it a Ruby, Python application or even a package like OpenVPN - to some cloud infrastructure, easily.

This solution should spin up a hardened OS distro (CIS-compliant, maybe?), provision it with my arbitrary services (using Ansible or Chef or something), and deploy it to AWS or some cloud infrastructure for me (using Terraform or something).

All these component pieces exist, but nothing ties all of them together for an easy deploy for a front-end developer like me.

(And, I know things like Heroku and CodeDeploy exist, but I dislike lock-in and they nearly universally come with their own restrictions, like lack of support for server-side Swift applications or custom services like OpenVPN or git-annex.)

EDIT - I'm strongly considering taking some time off to write this soon, so get in touch if this is something you're interested in! Contributing or using!

I'm moving to Austin soon and currently trying to get a grasp on local salaries.

Would you mind adding your years of experience ?

I'd appreciate the update!

I'm moving to Austin soon and currently trying to get a grasp on local salaries.

Would you mind adding your years of experience and what parts of the stack you're working in (iOS, Rails, 'full stack')?

I'd appreciate the update!

SEEKING WORK - Los Angeles - Remote OK

Hi! I'm Josh. I've been an iOS developer for 5+ years. Recently, I finished leading the development of a ground-up Swift app. Prior to this, I used to work at Apple, Google, Microsoft, and an acquired startup. I'm focused on building things people love to use.

For more on my background, please see my portfolio: https://iamjo.sh

Or don't hesitate to contact me directly: josh@iamjo.sh

I'm also on Twitter at: https://twitter.com/joshavant

Alamofire (an all-Swift library) is linked in 31% more of the top 200 free apps than AFNetworking (an all-Objective C library). I guess Swift is still making headway into Big Apps...

Also, 6 apps are still using ASIHTTPRequest, despite the last release being 5 years ago.

Worse still, 3 apps use a combination of ASIHTTPRequest, AFNetworking, and Alamofire - that's a library that was abandoned 5 years ago, an Objective-C library, and a Swift library. Oh man.

I thought I once read that, since Touch ID relies on fingerprints, a US court order can compel you to provide those, thus forcing you to unlock an iPhone in question.

This, as opposed to a passcode-only configuration, which a court order cannot compel you to give (I believe since this would fall in the category of 'forcing you to testify against yourself').

If that is indeed the case, I imagine it would make better sense to leave Touch ID disabled, unlike what this article suggests.

IANAL, but, for the _California_ readers, I'm fairly certain a contract with a clause like 'losing all intellectual rights to ANYTHING done/written/created ANYTIME and ANYWHERE' will NEVER hold up in California court, assuming said projects are done with the employee's own time + materials.

...Which is also a strong reason why you should always avoid using/making/doing anything personal on your employer's laptop/equipment.

I've done a small amount of work for a Swift-based project that was packaged as CLI program. FWIW, it was a really difficult project to develop for.

This mainly had to do with the fact that the project had to be built from a hacky Rakefile, not Xcode. This was because Xcode would embed the Swift runtime only into an .app or .ipa file (because projects need to be shipped with the same Swift version used to build it, thanks to lack of ABI stability). But, as a CLI tool, there was no .app bundle - only a single executable. One downfall.

So, now that you're not using the Xcode IDE to build + run the project, you can't use the debugging IDE tooling in Xcode, making the development process that much harder. Another downfall.

I haven't checked if this has been fixed in recent builds (this all happened back in January), but figure that these are the kind of issues you're going to encounter, until the Swift language is a little more stable + proper tooling evolves.

That said, it seems pretty clear the future is Swift, so it would be better to start building experience with it sooner rather than later!

CrowdRise | Onsite | Downtown Los Angeles, CA

CrowdRise allows anyone to raise money online for personal causes and charities. Right now, we're looking for a senior-level iOS Developer to join me as iOS Developer #2!

Technical Background: 100% Swift codebase, including 362 test cases (and growing!). The codebase is only 11 months old and has been built from the ground up on patterns like reactive design + MVVM. We have plans to open-source as much as possible, too!

Company Background: We're a gang of folks on an awesome mission: We raise money for good causes. At CrowdRise, you'll regularly get emails in your inbox that the thing your working on has helped people get a surgery they needed or shelter they couldn't afford. It's quite a fulfilling job. As far as org structure goes, the LA office is all engineering so it's a bit of a nerd oasis. We're about 35 people in our Downtown LA office, near Bottega Louie and Seven Grand. (We're across the street from One Wilshire, so we have a 1-2ms ping which is fun, too.)

Hiring Process: First, we'd like to talk on the phone and ask you some light technical questions and give you the chance to ask us questions. Next, we'll ask you to come into the office and meet the team. For the iOS part of the interview, I've been keeping a Playground in the project repo with some interview questions. I'd like to pair with you in the Playground on those questions, and generally just talk iOS. There will be no reverse binary tree sorting.

If this sounds like your kinda place, please email me personally with your resume and, if you happen to have any, some work samples: (my-first-name-which-is-the-first-four-letters-of-my-HN-handle)@crowdrise.com. I promise a reply to everyone who emails!

I seem to remember someone telling me how there are a couple of cottage industries that center around the fact that the US Government has to buy goods that are US-made.

I think ceiling fans are one example. (i.e. There's relatively few US-based ceiling fan manufacturers. For one of them, I think the large chunk of their business is the US Government.)

I have a feeling this may be an example of that.

This has always been a difficult challenge when job hunting for me, and I'd be curious to hear how you dealt with this in your application process.

Nearly every job offer I've encountered expects a response within a few days. In practice, I'm usually interviewing at multiple places and at different stages of the interview process at each.

When engaging with so many companies, how in the world do you synchronize all the offers + interviews?

For nearly every offer I've received, I feel that the company might take objection or even not allow me more than 3-4 days to decide on an offer.

Also, how do you manage other companies sensing that you're 'playing the field' with them (which can easily become apparent, when you're employing these tactics)? That's generally not positive for goodwill with someone you might eventually be working directly + closely with.

CrowdRise | Onsite (Los Angeles, CA)

CrowdRise allows anyone to raise money online for personal causes and charities. Right now, we're looking for iOS Developer #2 to join me, iOS Developer #1.

Technical Background: 100% Swift codebase, including 362 test cases (and growing!). The codebase is only 10 months old and has been built from the ground up on patterns like reactive design + MVVM. This week we're launching the first internal beta build to the whole company! We'd like to open-source as much as possible, too, once we get a chance to breathe.

Company Background: We're a gang of folks on an awesome mission: We raise money for good causes. At CrowdRise, you'll regularly get emails in your inbox that the thing your working on has helped people get a surgery they needed or shelter they couldn't afford. It's quite a fulfilling job. As far as org structure goes, the LA office is all engineering so it's a bit of a nerd oasis. We're about 35 people in our Downtown LA office, near Bottega Louie and Seven Grand. (We're across the street from One Wilshire, so we have a 1-2ms ping which is fun, too.)

Hiring Process: First, we'd like to talk on the phone and ask you some light technical questions and give you the chance to ask us questions. Next, we'll ask you to come into the office and meet the team. For the iOS part of the interview, I've been keeping a Playground in the project repo with some interview questions. I'd like to pair with you in the Playground on those questions, and generally just talk iOS. There will be no reverse binary tree sorting.

If this sounds like your kinda place, please email me personally with your resume and, if you happen to have any, some work samples: (my-first-name-which-is-in-my-HN-handle)@crowdrise.com. I promise a reply to everyone who emails!

This has always been a difficult challenge when job hunting for me, and I'd be curious to hear how others deal with this in their careers.

Nearly every job offer I've encountered expects a response within a few days. In practice, I'm usually interviewing at multiple places and at different stages of the interview process at each. The 'exploding offer' system makes applying to multiple companies near impossible for the job seeker.

Sure, I see how it creates leverages for the job offerers to get candidates to accept. However, the flip side is that turns the hiring process into a game of forced, snap decision making, which doesn't necessarily seem to be in everyone's interest, either.

Hi folks!

I graduated from a moderately-ranked undergrad program with a 3.0 in Computer Engineering (the HW-centric flavor of CS), going on 6 years ago.

After graduation, I wanted to get into the embedded field, but was discouraged by the employment options (hardware hadn't yet made the comeback it has been making over the last 3-5 years... 'old' players like Intel still dominated, which wasn't particularly attractive to a bright-eyed 21 year old).

In the interim 6 years, I've been doing iOS development, and believe I've amassed a CV that speaks well to my dedication and work ethic (and is moderately accomplished, at that!).

My question is... how far off am I from being a viable candidate for embedded job opportunities? What kinds of projects/side-work would you like to see to prove that I 'still have it' and/or could sufficiently think on my feet, and get back into embedded development?

FWIW, I have resume experience at Apple, Microsoft, and Google (I actually was hired at Apple out of college to do hardware QA but, once I realized the path from QA to embedded development would be a near impossible feat, I quickly moved on to iOS development).

Thanks! And good luck with your respective products!!

I find these first-party interop libraries from Microsoft really interesting, in light of the fact that Oracle v. Google is still ongoing.

Depending on how that case finally comes back, I'd expect that could really affect Microsoft's strategy, here.