I wrote a blog post about the differences between JavaScript and iOS developers, from a hippy-dippy "we're all the same, but also different, let's learn from each other" angle. I hope you like it.
https://ashfurrow.com/blog/learning-from-other-programming-communities/
@ashfurrow " Take the new Xcode extensions API: it's very limited."
Oh at least there's an official Xcode extension API now. For years, you had to reverse-engineer Xcode and swizzle some methods.
@ashfurrow "Remember Xcode's awesome project templates? No such thing exists on JavaScript. At all. There is literally no defined starting place 😱"
But, but, but, create-react-app?
@bugaevc yeah, but you can’t anymore without unsigning the Xcode app :/
@bugaevc haha, why are you using xcodebuild instead of Xcode? 🤔
@ashfurrow CI, for one thing, but I'm not even talking about the xcodebuild CLI, I'm talking about the whole Xcode build system, the obscure unmanageable thing with a weird undocumented config format (.xcproj)
Compare this to buildsystems used on other platforms like Meson, Gradle and NPM/Webpack.
@ashfurrow I mean just look at this shit: https://raw.githubusercontent.com/peter-iakovlev/Telegram/public/Telegraph.xcodeproj/project.pbxproj compared to this: https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/build.gradle
@bugaevc it's totally bonkers. JS projects don't even _have_ a project file, they just have the source files and config files for specific tools. Xcode project files are backwards compatible to Xcode 3.2 for crying out loud.
@ashfurrow
I would say package.json/webpack/gulp or whatever files are the project files like gradle is for java
@bugaevc
@wakingrufus @bugaevc Yes, but every file in an Xcode project has _at least_ two lines in the project file. It doesn't match the directory structure at all, introducing a whole unnecessary layer of abstraction :(
@ashfurrow @bugaevc
Yeah. Sometimes I wonder if people who love to hate on gradle, etc have ever used these cruder tools.
@wakingrufus @ashfurrow I have a love/hate relationship with Gradle. It's great when it works, but it can be a pain to set up (there can never be enough docs), and it's dog slow for projects.
But then I remind myself that iOS folks have *this* to deal with...
@bugaevc I agree completely, I was being facetious. Apple's response would probably be "just use Xcode." And as for CI, well... Apple cares less about CI than it does about unit testing :\
@ashfurrow OK, but I had to view source rather than put up with your fauxcratic dialogue chat.
Which is one advantage of JS dev, it's like old-timey BASIC where I can hit Break and screw with the code. But that's also terrible.
Lack of dev tools ecosystem outside of Apple, and disagreement with this Swift marketing language, is why I quit (very profitably) sharecropping for them.
@mdhughes I am an artist, and this blog is my canvas
@ashfurrow And I'm a vandal with a can of turpentine!
@ashfurrow @mdhughes Just wanted to echo this, except I was mobile at the time so I gave up. Got tired of pinch zooming and scrolling for each line. I'll read it on desktop later, though. :)
@ashfurrow @mdhughes One thing I find funny is the "slow" complaint. But I'm doing Lambda/Gateway work, so I guess it makes sense that my POV would be different. I find doing anything at all in Javascript infuriating in terms of development speed, and not because of Javascript.
@tewha @ashfurrow Right, I mostly work in Electron, I change code, ⌘S, ⌘Tab to the app, ⌘R, and it's loaded. I could even make it watch for file changes and reload itself.
@tewha @ashfurrow Also my View Source bookmarklet https://mdhughes.tech/bookmarklets/ works great on mobile Safari.
@ashfurrow I love the header on your that post! It looks like a screenshot from Rise to Ruins
@edwardloveall thanks! It’s based on Conway’s Game of Life, and I use a script to download them from a generative art twitter account: https://github.com/ashfurrow/blog/blob/master/Rakefile#L199
@ashfurrow "Apple's tools for common development workflows are exceptionally well-polished"
(laughs in xcodebuild)