The most important questions have nothing to do wi...
# announcements
a
The most important questions have nothing to do with what tech you utilize. It’s how you architect your application. Your choice of template language, IDE, DB, etc, has no impact on that. Kotlin-React would not use templates. Generally with React style frameworks, everything is in one language (JS, Kotlin, Typescript, whatever). Separation of Concerns and adherence to other SOLID principles, etc. are totally in your hands. It sounds like you want: • An Android App • An iOS App • A Server Application • A Web Application Is that correct? I don’t see why this couldn’t be completely implemented in Kotlin if you really wanted to, there just might be some hiccups with Kotlin Native (but it is getting better all the time). KTOR for server, Kotlin multiplatform for mobile. There’s more to it than that, but honestly I’d start with one single aspect of what you’re trying to accomplish and build that out FIRST and then move on from there. Don’t try to learn every little piece of tech at once. Take your time.
👍 1
g
That is correct. And these are all good points. Most importantly your right, these decisions have nothing to do with architecture... funny thing I think I know what architecture I want, mainly folder structure I mean... but I haven't found tools that provide what I want. I've started just about every kind of project template possible in IntelliJ and some confuse me. Spring, gradle, multiplatform, native... I guess in the end, where I am at currently, I am building a kotlin multiplatform app that will either be native or JVM... but even there... I mean... I've heard you can run a JVM app on IOS right? But it would still have platform specific code?
Gradle has been kicking my but
I feel like I've come to the conclusion I should either build the backend with ktor + exposed + kotlin-styled + kotlin-react OR just do it all with spring boot... when I use a package I generally like to use it all, and stick with the recommendation for that package... otherwise it defeats the purpose. I'm leaning toward spring, but not sure if can do some of the things I want to try... like kotlin to css.
I actually stopped developing in Java many years ago... if I recall, Java was great and you could even compile it to run without the JVM... but I think Oracle baught it or something and eliminated that feature... but I really hate the JVM. That being said, so much development has gone into it since then, I get the impression everything is easy peasy in java cause there are so many libraries..
a
I’m unsure about JVM on iOS, but that sounds like you’d be required to ship with some kind of VM which would definitely bloat your application. Best way forward with iOS in my opinion is core business logic written in Kotlin (since you’re implementing an Android app / web as well) and then writing the UI in SwiftUI (which looks / is awesome).
ktor
is probably the more kotlin-ish way forward, but I’d make a list of exactly what features you’re looking for or plan to implement, and then compare spring and ktor from there.
g
Thank you... really helps... I'm glad I found this chat room.
t
It’s not Kotlin, but have you considered Flutter for your mobile app? It’s quite easy to pick up and all the cross platform stuff should be handled for you
g
I have heard of it, and I'll consider it more tonight... I don't know why I'm using kotlin anymore, lol, but that was probably the reason I didn't look deeper. What is really tough for me to get over... these decisions are so fundamental, they affect everything that follows... but I can't get over the fact the decisions seem arbitrary and I can't stop frantically aganizing over it, lol. It just goes against my engineer instinct that such important decisions are quite this arbitrary... it's like if an engineer built a bring and decides, hmmm... aluminum vs steele... hmm... I'll use aluminum for this bridge and try steele on the next. I've always beleive that every application has the best most right set of tools, but there are just too many options, too many options overlapping in everyway imaginable an infinite number of times... us developers should really start demanding contiguous tool sets... don't get me wrong, I'm all about new tech...
a
That bridge is going to last for decades. Your code will not. No one’s does. (Unless like, you’re a bank?) Software is malleable and should be disposable. Instead of focusing on tooling particulars, focus on your general understanding of platforms and ways to make the software you write better. You’ll pull less hair out 😉
g
Your right alex... but one last gripe about the current ecosystem, lol. We should stop comming up with silly names for this stuff... kotlin, angular, C++, exposed, styled, flutter, spring... it's crazy, no other technical field does this... could you imagine if doctors named thier tools like this? Naming conventions could be so freaking useful... I should be able to hear a tool and know what it is... we could use latin if necessary, but just an accurate descriptor would work... like, a screw driver is a screw driver... if a new company wants to make a new screwdriver, they think they can do it better or think they can take over the market... they don't call it a thingamagig or a netty or a flutter, lol
I mean... ANT... Another Neat Tool... give me a break guys...
You are right though alex... I'm a computer/electrical engineer... so I do build things for the ages, always have... but that's not the world most programmers live it.
a
I’m in the same field 🙂 (CEng). Most of these flashy names come down to marketing and trying to gain user-share. When it comes down to brass-tax, we have language to let us talk about software principles in a contiguous way. These are Design Patterns, Architectures, etc. The Visitor Pattern in C# is the same as it is in Java, for example. And we can explain languages by their paradigm, syntax structure, and type system. For example, Kotlin is a multi-paradigm statically typed C-like programming language. (Can do OOP/FP/Procedural, has static typing, and has {} block structures).
g
See... now your talking a language I understand 😃... Flutter, mindmap, jira, idea, spring bullshit is unnecessary, lol... thanks for the emotional support man, I think I can move forward in the next steps without so much obsessing.
t
I think your familiarity with engineering is biasing you towards the naming there. Surely a hammer should be called a “nail driver”? What about a phillips screw? Or Monkey Wrench? Is that a wrench for monkeys? If you had no familiarity with these things and someone asked for a “chisel”, would you really know what it is and what it’s for?
🙈 1
💯 1