Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Should I learn Java or Kotlin in order to develop Android apps?
Learn Java if: ✅ You want to work on enterprise applications. ✅ You are interested in cloud computing, web services, and microservices. ✅ You prefer a well-established language with strong community support. Learn Kotlin if: ✅ You want to specialize in Android development. ✅ You prefer a modern, conRead more
Learn Java if:
✅ You want to work on enterprise applications.
✅ You are interested in cloud computing, web services, and microservices.
✅ You prefer a well-established language with strong community support.
Learn Kotlin if:
✅ You want to specialize in Android development.
✅ You prefer a modern, concise syntax.
✅ You want to explore functional programming & modern backend frameworks.
Can You Learn Both?
Yes! Java and Kotlin are interoperable, meaning you can use them together in the same project. Many companies use Java for backend and Kotlin for Android development.
If you have time, learning both will make you a more versatile developer.
Final Thoughts
Both Java and Kotlin have their strengths. In 2025:
🚀 Best approach? Start with Java if you’re new, then explore Kotlin to expand your skill set. 🚀
See lessWill AI replace programmers?
AI is getting smarter, but replacing programmers entirely? That’s not happening anytime soon. What AI Can Do AI can already generate code, debug simple problems, and automate repetitive tasks. Tools like GitHub Copilot and ChatGPT can speed up development by suggesting solutions, writing boilerplateRead more
AI is getting smarter, but replacing programmers entirely? That’s not happening anytime soon.
What AI Can Do
AI can already generate code, debug simple problems, and automate repetitive tasks. Tools like GitHub Copilot and ChatGPT can speed up development by suggesting solutions, writing boilerplate code, and even fixing errors. This means junior-level, repetitive coding tasks are becoming more automated.
What AI Can’t Do
Programming isn’t just about writing code—it’s about solving complex problems, understanding user needs, designing scalable systems, and making strategic decisions. AI lacks:
The Future of Programming
Instead of replacing programmers, AI will enhance them. Future programmers will spend less time on repetitive coding and more time on high-level design, debugging, and decision-making. AI will become a powerful assistant, not a replacement.
Who Should Be Worried?
Who Will Thrive?
Bottom Line
AI won’t replace programmers—it will replace bad programmers. The best developers will learn to work alongside AI, using it as a tool to build even better software.
See lessWhat is the difference between Promises and Observables?
Promise A Promise handles a single event when an async operation completes or fails. Note: There are Promise libraries out there that support cancellation, but ES6 Promise doesn't so far. Observable An Observable is like a Stream (in many languages) and allows you to pass zero or more events where tRead more
Promise
A
Promise
handles a single event when an async operation completes or fails.Note: There are
Promise
libraries out there that support cancellation, but ES6Promise
doesn’t so far.Observable
An
Observable
is like aStream
(in many languages) and allows you to pass zero or more events where the callback is called for each event.Often
Observable
is preferred overPromise
because it provides the features ofPromise
and more. WithObservable
it doesn’t matter if you want to handle 0, 1, or multiple events. You can utilize the same API in each case.Observable
also has the advantage overPromise
to be cancellable. If the result of an HTTP request to a server or some other expensive async operation isn’t needed anymore, theSubscription
of anObservable
allows you to cancel the subscription, while aPromise
will eventually call the success or failed callback even when you don’t need the notification or the result it provides anymore.While a
Promise
starts immediately, anObservable
only starts if you subscribe to it. This is why Observables are called lazy.Observable provides operators like
map
,forEach
,reduce
, … similar to an arrayThere are also powerful operators like
retry()
, orreplay()
, … that are often quite handy. A list of operators shipped with rxjsLazy execution allows you to build up a chain of operators before the observable is executed by subscribing, to do a more declarative kind of programming.
See lessCan’t bind to ‘ngModel’ since it isn’t a known property of ‘input’?
Yes, that's it. In the app.module.ts file, I just added: import { FormsModule } from '@angular/forms'; [...] @NgModule({ imports: [ [...] FormsModule ], [...] })
Yes, that’s it. In the app.module.ts file, I just added:
See lessHow to programmatically navigate using React Router?
The useHistory() hook is now deprecated. If you are using React Router 6, the proper way to navigate programmatically is as follows: import { useNavigate } from "react-router-dom"; function HomeButton() { const navigate = useNavigate(); function handleClick() { navigate("/home"); } return ( <buttRead more
The
useHistory()
hook is now deprecated. If you are using React Router 6, the proper way to navigate programmatically is as follows:There is a new
useHistory
hook in React Router >5.1.0 if you are using React >16.8.0 and functional components.With v4 of React Router, there are three approaches that you can take to programmatic routing within components.
withRouter
higher-order component.<Route>
context
.React Router is mostly a wrapper around the
history
library.history
handles interaction with the browser’swindow.history
for you with its browser and hash histories. It also provides a memory history which is useful for environments that don’t have a global history. This is particularly useful in mobile app development (react-native
) and unit testing with Node.A
history
instance has two methods for navigating:push
andreplace
. If you think of thehistory
as an array of visited locations,push
will add a new location to the array andreplace
will replace the current location in the array with the new one. Typically you will want to use thepush
method when you are navigating.In earlier versions of React Router, you had to create your own
history
instance, but in v4 the<BrowserRouter>
,<HashRouter>
, and<MemoryRouter>
components will create a browser, hash, and memory instances for you. React Router makes the properties and methods of thehistory
instance associated with your router available through the context, under therouter
object.1. Use the
withRouter
higher-order componentThe
withRouter
higher-order component will inject thehistory
object as a prop of the component. This allows you to access thepush
andreplace
methods without having to deal with thecontext
.2. Use composition and render a
<Route>
The
<Route>
component isn’t just for matching locations. You can render a pathless route and it will always match the current location. The<Route>
component passes the same props aswithRouter
, so you will be able to access thehistory
methods through thehistory
prop.3. Use the context*
But you probably should not
The last option is one that you should only use if you feel comfortable working with React’s context model (React’s Context API is stable as of v16).
1 and 2 are the simplest choices to implement, so for most use cases, they are your best bets.
See lessError message "error:0308010C:digital envelope routines::unsupported"
The error comes from your dependency relying on an obsolete version of SSL, so you have two good, and two questionable-at-best options: 1. Try to just reinstall your dependency Delete your node_modules folder and rerun npm install. If your dependency relies on compiling against whatever version of NRead more
The error comes from your dependency relying on an obsolete version of SSL, so you have two good, and two questionable-at-best options:
1. Try to just reinstall your dependency
npm install
. If your dependency relies on compiling against whatever version of Node you have installed, this may immediately fix the problem. This is the least likely solution to work, but may fix the problem without any “real” work on your part so is always worth trying.2. Update your dependency
This is, really, the only proper solution: update your dependencies, because just like Node.js itself, they can leave your project vulnerable to attacks and exploits.
3. Downgrade to Node.js v16.
(You can either do that using the official Node installers, or you can use something like
nvm
. For Windows, usenvm-windows
.)This is, obviously, a bad idea. As is the next one:
4. Tell Node to use the legacy OpenSSL provider
On Unix-like (Linux, macOS, Git bash, etc.):
On Windows command prompt:
On PowerShell:
When Node 18 had just become the active LTS options 1 and 2 weren’t really available, but for anyone still finding this answer, 3 and 4 should no longer be considered serious options in any way.
See lessHow to configure port for a Spring Boot application?
Option 1: s said in docs either set server.port as system property using command line option to jvm -Dserver.port=8090 or add application.properties in /src/main/resources/ with server.port=8090 For a random port use: server.port=0 Similarly add application.yml in /src/main/resources/ with: server:Read more
Option 1:
s said in docs either set
server.port
as system property using command line option to jvm-Dserver.port=8090
or addapplication.properties
in/src/main/resources/
withFor a random port use:
Similarly add
application.yml
in/src/main/resources/
with:Option 2:
You can configure the port programmatically.
For Spring Boot 2.x.x:
For older versions:
See less