Welcome guys I am Matze, 26 years old and from Stuttgart (Germany). I am currently doing my masters degree in Computer Science (main focus Software Engineering) so I get a lot of insights in software architecture, programming techniques, software quality, algorithms and network technology. Through my achievements in study I got awarded with the Germany Scholarship for highly talented students. Besides studying I am an iOS and Android freelancer which allows me to apply my theoretical knowledge in a practical way. In this RU-vid channel I will mainly focus on Android and iOS development techniques. Currently I am just creating videos about stuff which comes into my mind but I would be also very happy if you ask me for an interesting topic which I should explain :-). I am also a big fan of explaining details, so forgive me if some of my videos might get too long :-D. LinkedIn: www.linkedin.com/in/matthias-kerat-772153223/
This video provides so much clarity and I can say that now I can make a modular application. However, I still confused with uni-directional data flow between each layer. Please make a video about it.
Hi I receive this error when I try to RUN the application: java.lang.IllegalAccessError: class org.jetbrains.kotlin.kapt3.base.KaptContext (in unnamed module @0x70db1019) cannot access class com.sun.tools.javac.util.Context (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.util to unnamed module @0x70db1019 at org.jetbrains.kotlin.kapt3.base.KaptContext.<init>(KaptContext.kt:28) at org.jetbrains.kotlin.kapt3.KaptContextForStubGeneration.<init>(KaptContextForStubGeneration.kt:40) at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.contextForStubGeneration(Kapt3Extension.kt:287) at org.jetbrains.kotlin.kapt3.AbstractKapt3Extension.analysisCompleted(Kapt3Extension.kt:171) at org.jetbrains.kotlin.kapt3.ClasspathBasedKapt3Extension.analysisCompleted(Kapt3Extension.kt:102) at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$invokeExtensionsOnAnalysisComplete(TopDownAnalyzerFacadeForJVM.kt:112) at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.kt:122) at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$default(TopDownAnalyzerFacadeForJVM.kt:86) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:252) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:243) at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:113) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:243) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:90) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli$default(KotlinToJVMBytecodeCompiler.kt:56) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:169) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:52) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:92) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44) at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98) at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:412) at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:112) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally(IncrementalCompilerRunner.kt:358) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally$default(IncrementalCompilerRunner.kt:300) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl$rebuild(IncrementalCompilerRunner.kt:119) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:170) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:81) at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:607) at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:96) at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1658) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360) at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200) at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197) at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196) at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840)
Hi, i just have one question, do you just thinking about all those calculations or you did some search and asked some persons about how you can make all this calculations stuff, because i strugger to do something like this or even easer
I really like the way you teach clean architecture. I would say it is the best content I have seen so far please continue making great videos! One thing you can improve is that when you are writing code add some empty lines and the end of the file so the code would not be in the bottom of screen and covered by subtitles!
Hello Sir ! I liked your work. Thanks ! I have a question: Do we need any kind of data from Device with BLE to be able to connect and share data with it ?
In Clean Architecture, it's not typical to send use cases to the repository constructor. The repository's responsibility is to provide an abstraction over data access, not to interact directly with business logic or use cases.
Great video, thank you for your job! Can you help me please? May i connect Tuya BLE THB2 sensor using this app, the fact is that when ble sensors are scanned, it does not see them, although these sensors are ble devices :(
Hi Matze, your videos are outstanding and explained. Do you plan any whole Jetpack Compose course (free or paid), on RU-vid or Udemy? Do you suggest any books on Jetpack Compose? Thanks in advance for your content!!!
Simply amazing....the best part is that everything is a Wrapper, 1 drag helper class of all type of draggable Views. Perfect! P.S :- Please try to sound a little more awake 😄
SOS! First step- first Problem! compose_version and classpath are red, Gradle sync failed. Is there anything I should have done before? How did you all do this?
I have been using canvas and then drawRect. Can you explain how the drawConterxt.cavas.nativeCanvas.apply and Paint().apply works? This looks mor advanced. Thanks a lot for sharing, the canvas thing is difficult to figure out. Grüße aus Frankfurt.
Stumbled across this channel as i was searching for a video to understand the Disposable Effects . Ended up watching all the videos in this playlist. Time really well spent. Thank you very much for the effort put in to create such videos
Good explanation, thanks. So basically it means that a LaunchedEffect used with Unit as a key is similar to a SideEffect, except that a LaunchedEffect gives a suspend block, am I right?
Thank you for this tutorial, by the way i have a question , if for example I want to add a deleverer to the list of Deliverer selection , do I have to create another AddDelivererViewModel or use the existing OrderChooseDelivererViewModel ? thank you.
hi Sir, thank you for the best tutorial, is it possible to create another tutorial where we actually write to Arduino or Esp32 to control a simple LED to turn ON and Turn Off?
Thanks for sharing. However, for the tip #5, I believe Composable2 is not recomposed even before Composable1 is optimized. This fun is marked as skippable because it receives an immutable (primitive type) parameter. Here, because the value of its parameter remains the same, this fun is skipped when Column is re-executed on recomposition.