HN user

hooksfordays

72 karma

My name's Joseph Roque

I'm an iOS Developer in Vancouver, Canada.

[GitHub] autoreleasefool [Twitter] autoreleasefool

Posts1
Comments25
View on HN

Replying to verify I see the same app almost at the top of search result. Based in Canada and searching “Bitcoin Wallet”, it was the 2nd non-promoted result.

I have only 1 other app of this variety on my phone currently and haven’t used it or searched for anything crypto related including months.

As a complete beginner, you don’t need to spring for a $50+ cube magnet GAN some other comments are recommending. You’ll get just as far with a YuXin[1] as a beginner, or a Valk[2], which was my primary cube for over a year, and carried me under an 18s average time. There may be better middle-of-the-road cubes since 2016 though!

[1] https://speedcubeshop.com/collections/3x3-speed-cubes/produc... [2] https://speedcubeshop.com/collections/3x3-speed-cubes/produc...

100% test coverage 3 years ago

Branch coverage means something different. If you have a function with 2 if statements, there are 4 branches. 100% code coverage could be 1 test and would run the code before + after the if statements, and enter each if statement block. 100% branch coverage would test this code 4 times: once without entering either if statement, once only entering the first, once only entering the second, and once entering both.

Shopify acquired Tictail, a Swedish e-commerce company that had their flagship app written in React Native. They worked on porting Shopify’s Shop app to React Native, with great success. Subsequently, a 12-16 week experiment took place during which a small team explored rewriting one of the larger apps in both Flutter, then React Native. React Native was settled on primarily due to pre-existing knowledge of React and React Native in the company.

As someone who worked on the Shopify iOS and Android codebases, I would argue they weren’t all necessarily so broken. The flagship mobile app (the one primarily discussed in the article) was in good shape on iOS (and arguably better shape on Android). There was some fragmentation in architecture among teams, but overall things were reasonable and I didn’t personally find it difficult to jump into unfamiliar sections of the codebase..

Shopify’s other apps that migrated first were either much older, and therefore had much more tech debt, making the rewrite more enticing, or were much smaller in scope, making the rewrite much faster to get to feature parity. Once all the other apps had migrated or decided to migrate, it made a lot more sense to explore it in the flagship app discussed here.

Some disclaimers, I’m no longer at Shopify, and while I worked in the very early iterations of the port of the flagship app, I wasn’t necessarily a vocal proponent of migrating it to RN. I enjoy RN, but I enjoyed working on the native Shopify apps.

I think the trolley problem is generally the other way around. 1 life is lost if you pull the lever, >1 if you don’t.

In your situation, you do the least harm by doing nothing. You want to create the moral quandary that taking action causes arguably less harm, but implies the action-taker now has some responsibility in the result.

That might also explain its contradiction at the end, since it’s probably had more examples of the trolley problem in the reverse of how you’ve described it to train on.

Interesting! Yeah, it’s maybe a little bold to claim we’re the cause for Amazon’s change, the timeline just lines up so well. Could be different laws, could also be that Shopify (Shop’s parent company) is still very US-centric and perhaps they didn’t feel as threatened by us or other similar products in Germany as they did in the US. I can’t say anything for sure, but it’s fun to hypothesize!

Slightly unrelated, we noticed this happening _before_ we renamed the app in the App Store from Arrive to Shop, but after the rename happened in, I think, March of 2020, negative reviews about the missing Amazon data started flooding in. People associated the name/design change with the degraded experience, when really the experience had already been degraded for a couple months by that point. The initial rebrand only changed mostly superficial things, like colours and the name!

Another explanation I’m predisposed to, due to personal involvement: I was on the Shop[1] team when it was transitioning from Arrive to Shop, and shifting from a package tracking application to a shopping cart. If you gave the app access to read your emails, we’d scan for tracking #s but also parse through emails from Amazon to pull data about what you ordered straight into the app, so you could track everything from one place. Shortly after Shop started gaining major traction in late 2019/early 2020, Amazon started pulling more and more details from their order confirmation emails, and we were less and less able to provide actionable info on your Amazon orders until they finally put the entire order behind a login, and all we could tell you in the Shop app was you had placed an order at Amazon.

[1] https://apps.apple.com/ca/app/shop-package-order-tracker/id1...

“zmessenger-dev” is, I believe, the “alt account” they lost the login info to. Their main account, presumably tied to their identity, was used to author a commit that was pushed the DMCA’d repo. They later lost access to the alt (zmessenger) and so cannot remove the repo.

This is possible since GitHub attributes commits to certain accounts based on the email that authors the commit, so they used an email tied to their main account to author the commit. Only the email is actually attached to the commit though, GitHub just associates the account based on a lookup. They then push the commit to the repo using their ssh or password authentication for zmessenger, which they later lose, and so they can no longer alter the repository and remove the offending commit/email

Agreed. I think naming generic types makes the most sense with multiple types, or when more specific names make sense. For example, if a generic argument must inherit from a certain type: `class SomeView<ViewState extends BaseViewState>` or some such.

`Element` is as non-descriptive as `T` in the author’s example and, IMO, doesn’t add any tangible benefit.

As someone who is a runner, Strava has ingrained itself as the de facto running and biking social app. You can certainly use other (better) apps for tracking and insights, but there’s no replacement for its community offering. They’ve put themselves in a position that demands better thought and attention to details like this.

When FB/Twitter/whoever dropped it, they open sourced the platform completely — they just weren’t offering managed hosting anymore, and they weren’t maintaining it. This looks like a maintenance effort by the community that has formalized itself

This is what I currently do with my app. The code is open source, it's free for anybody to build and install, the build steps are simply clone and build with Android Studio. I upload the debug .apk as a GitHub release with no valid keys (so no ads), but there are ads at the bottom of the screen on the play store version.

It makes a little change every month and I've not had any complaints about the ads, except to offer a pay-to-remove option, which I mostly just haven't gotten around to yet.

Mostly off topic, but has anybody been able to get hot reload working with TypeScript and React Native? I’m not sure if I screwed something up along the way in my set up when I made the switch about 8 months ago, but I feel like hot reload worked for a bit, and then stopped. Or maybe, my memory is just overlapping between having hot reload with plain JS and not at all with TypeScript

My first experience with programming was my 7th grade teacher, a woman who inspired me so thoroughly, I still try to make regular visits to see her when I'm in town (10 years later). She had my class use Adobe Flash to create animations for some of our projects, and for presentations, if we were so inclined. Doing so required a knowledge of ActionScript to start and stop the animation, and that was the first I had ever heard of programming.

From there, she pointed me towards a camp offered by our school to improve my animating skills, but the senior student leading the program happened to be quite efficient at ActionScript. Most of the other students in the camp were beginners, so while they learned to animate, I learned more extensive ActionScript, and that had me hooked.