#c++ linker
Explore tagged Tumblr posts
machinelearningsite · 6 months ago
Text
3/100 Days of C++: Linking a Library in C++
A major project can consist of thousands of lines of code with several other libraries that are used as dependencies. The code, however, does not magically know the existence of functions or variables that are borrowed from those libraries. When we use any function from a library, the code needs to know its reference to understand how it is declared. In other words, the code wants to know what…
0 notes
resplendentoutfit · 6 months ago
Text
Japanese Insired Coats of the 1910s
Tumblr media
Maison Amy Linker • Paris
A coat with a silhouette like an outer robe for kimono was described as a “manteau japonais” by fashion magazines of the time, and the silhouette of this particular coat is reminiscent of the “uchikake” robe worn by kabuki actors or oiran courtesans in ukiyoe prints. The boldly striped collar is probably inspired by the “date-eri” collar style used in kabuki costume. The flower-like motifs executed in embroidered beads look like the traditional “hanakatsumi” motif that became popular in late Edo-period Japan when favored by kabuki actors. In contrast, the motifs on the bordered panel on the back resemble motifs used around the Mediterranean in ancient times, and could reasonably be called palmettes. This coat is an excellent example of oriental-style wear packed with eclectic elements that were fashionable early in the 1910s. Maison Amy Linker opened in Paris in 1900, specializing particularly in coats and suits. Its latest products were frequently seen in French fashion magazines early in the 20th century. The house is perhaps best known for introducing sporty fashions in the 1920s.
Many of the era's most prominent designers created manteau Japonais. Below are a few more examples of Japanese inspired cocoon coats of the era.
Tumblr media Tumblr media
Two Paul Poiret Japonaise manteau
Tumblr media
Jean-Philippe Worth • c. 1910
Tumblr media Tumblr media
Right: Jaques Ducet embellished house coat
Left: Mariano Fortuny kimono coat • 1910s
Tumblr media
Evening coat • French • c. 1912
58 notes · View notes
brightside-brigade · 1 year ago
Text
Dear all TMC Fictives, kins, irls, c-linkers... all of you.
I know. It hurts like hell. You're scared, and sick, and angry. But listen to me, you will be okay. Maybe not now, maybe not for a while. But it'll be okay.
You're strong. You've done no wrong. You are not him. YOU ARE NOT HIM. Anyone who says otherwise is a fool.
It'll be a while, before it stops hurting. Hell, it might not. But you will be okay. You are something powerful, and beautiful, and you've ascended your creation. You're something new, something better. Build yourselves up and hold eachother tight. I've been through this, I know what it's like.
I am sending you strength, and luck, and, well, everything else you need. I believe in you all. And I'm so, so glad you're here.
-Dr Jack Bright, scp foundation.
67 notes · View notes
milksockets · 1 year ago
Text
Tumblr media
amy linker coat c. 1913 in fashion: a history from the 18th to the 20th century - kyoto costume institute (2015)
65 notes · View notes
systemofmycelium · 1 month ago
Text
hiii this is a positive post for any pearl fictives/introjects/linkers/kins/etc etc etc. reminder u all rock and r epic and awesome and cool and i hope u all have a good day c:
5 notes · View notes
logi1974 · 1 year ago
Text
Namibia 2023/24 - Tag 16
Herrschaften und Oukies!!!
Wir verließen Lüderitz und die Pension "Zur Waterkant" heute wieder. Es stürmte immer noch, allerdings nicht mehr ganz so stark, wie bei unserer Anreise.
Tumblr media
Micha verarztete unseren Hilux dahingehend, indem er die Scheinwerfer mit Klarsichtfolie abklebte, damit sie nicht abgeschmirgelt und blind werden. Marion Schelkle erzählte uns gestern, dass sie pro Jahr 3 Windschutzscheiben benötigt. Respekt!
Tumblr media
So machten wir uns nach dem Frühstück auf und fuhren erst einmal die 125 Kilometer auf der prima Teerstraße zurück bis nach Aus. Es gibt keinen anderen Weg, da sich links und rechts das Diamantensperrgebiet erstreckt.
Tumblr media
Das Diamantensperrgebiet liegt mitten in der Namibwüste, aber es hätte auch genauso gut im Vorhof der Hölle liegen können.
Tumblr media
Die Namib ist eine der lebensfeindlichsten Wüsten der Erde, meist gibt es nur Sand und Felsen und dazu einen unbändigen Wind, der beinahe täglich in Küstennähe über das Land stürmt.
Tumblr media
Wir halten kurz an der ehemaligen Bahnstation "Grasplatz" der Aus-Lüderitz Linie, ganz in der Nähe der heutigen B 4. Die heißt jetzt nicht etwa so, weil es zwischen all dem Sand und der Steine, plötzlich GRAS gibt.
Tumblr media
Der Ort hieß ursprünglich Grasabladeplatz, da hier das Futterheu für die Ochsen gelagert wurde, die die langen Ochsenwagen, von Lüderitz ausgehend, durch die wasserlose Ödnis zogen.
Tumblr media
Der nächste Haltepunkt ist die alte Bahnstation von Garub, was in der Sprache der Nama „Leopard“ bedeutet.
Tumblr media
Garub liegt heute an der viel befahrenen Touristenroute zwischen Aus und Lüderitz im Süden des Landes. Das war natürlich nicht immer so.
Tumblr media
Garub begann in der Geschichte erst eine Rolle zu spielen, als 1906 die Eisenbahnlinie von Lüderitz ins Landesinnere gebaut wurde. Bei Garub wurde 1908 unterirdisches Wasser entdeckt – ein kostbares Gut in den extremen Verhältnissen der Wüste.
Tumblr media
Viele Jahre später wurde die Umgebung von Garub als Heimat der namibischen wilden Pferde bekannt.
Tumblr media
Nach weiteren 110 Kilometern erreichen wir wieder den Ort Aus. Hier besichtigen wir heute den Soldatenfriedhof, der etwas nördlich des Ortes liegt.
Tumblr media
Hier liegen Gräber von Soldaten verschiedener Nationen neben und hinter einander, etwas weiter vorne findet man Gräbern aus der heutigen Zeit.
Tumblr media
Nach der Kapitulation der Deutschen, am 9. Juli 1915, etablierte die südafrikanische Armee ein Internierungslager für mehr als 1500 deutsche Soldaten östlich von Aus.
Tumblr media
Das Lager wurde 1918 von der spanischen Grippe heimgesucht.
Tumblr media
Sowohl Gefangene als auch Bewacher erkrankten gleichermaßen – viele starben.
An zahlreichen Grabsteinen lässt sich ablesen, dass die Spanische Grippe etliche Opfer forderte.
Tumblr media
Gegen Mittag Uhr fuhren wir ganz kurz über die B 4, um dann auf die Piste C 13, in Richtung Norden einzubiegen.
Tumblr media
Wie wir noch von den letzten Malen in Erinnerung hatten, war die Strecke auch heute in sehr schlechtem Zustand.
Schon weit vorher konnten wir die Tiras-Berge und, linker Hand, die unglaublich rot leuchtenden Dünen erkennen.
Tumblr media
Das Gebiet der Tirasberge umfasst ca. 125.000 Hektar und befindet sich innerhalb des Dreiecks zwischen dem Fish River Canyon, dem Sossusvlei und der Lüderitzbucht.
Tumblr media
Die meisten Besucher sehen die Landschaft von der D 707 aus, die vielen als schönste Strecke in Namibia gilt. Dafür fehlt uns leider bei dieser Reise die Zeit.
Am späten Mittag kehrten wir im berühmten Hotel von Helmeringhausen ein. Nicht etwa das Helmeringhausen im Sauerland, sondern das in Namibia.
Tumblr media
Die Namensgleichheit mit dem Ort im Sauerland kam natürlich nicht zufällig zustande. Hubert Hester, Vorfahre des bekannten Autoverleihers aus Windhoek, wurde nämlich im sauerländischen Helmeringhausen geboren. Er war Mitglied der kaiserlichen Schutztruppen und ließ sich an eben diesem Ort, im damaligen Deutsch-Südwest, nieder.
Tumblr media
Das kleine Nest ist in seiner einsamen Verlorenheit eine echte Versorgungsoase. Hotel, kleiner Landhandel und eine Tankstelle - also, Tankstelle im wahrsten Sinne des Wortes: eine Stelle zum tanken!
Tumblr media
Im gleichnamigen Hotel mit großem Garten gibt es angeblich den besten Apfelkuchen Namibias - ich würde sogar sagen: südlich der Alpen!
Tumblr media
Bis vor einigen Jahren galt diese Ortschaft noch als ein Zentrum der Karakulzucht, jedoch ging auch hier der Niedergang nicht spurlos vorbei.
Tumblr media
Vor einigen Jahren gründete die örtliche Farmergemeinschaft ein landwirtschaftliches Mini-Museum, direkt neben dem Helmeringhausen Hotel und dem Campingplatz. Hier wurden interessante Nutzgeräte aus längst vergangener Zeit zusammengetragen und ausgestellt.
Tumblr media
Heutzutage ist Helmeringhausen vor allem durch sein Hotel, das von dem Ehepaar Björn und Katja Basler geführt wird, bekannt. Das Hotel ist eine grüne Oase in der sonst so staubigen Umgebung.
Tumblr media
Die recht übersichtliche Speisekarte bietet neben dem ausgezeichneten Apfelkuchen, noch selbst gebackenes Farmbrot, Leberkäse und Bratwurst.
Tumblr media
Alles ganz frisch, selbst gemacht und sehr lecker.
Tumblr media
Nach weiteren 90 Minuten, über die C 27, erreichen wir das Eingangstor zum Gelände der recht neuen At Kronenhof Lodge.
Tumblr media
Vom Tor sind es dann noch einmal 10 Kilometer über sandige Farmpisten bis zum Hauptgebäude der Lodge.
Tumblr media
Wir beziehen unser klimatisiertes Familienzimmer mit 2 Schlafzimmern, einem riesen Badezimmer, Carport und einer schönen Aussicht über das Gelände.
Lekker Slaap!
Angie, Micha, Mama und der Hasenbär
8 notes · View notes
shi1498912 · 1 year ago
Text
@unfug-bilder der Aiwanger fängt da jetzt schon an mit "des kann doch nicht sein!"
9 notes · View notes
hazyaltcare · 2 years ago
Text
Tumblr media Tumblr media
A neopronoun set for a Paul Leskowitz (Petscop) linker.
(Neopronouns ft. in the image are transcribed under the read more.)
Mod Haze (🧨Tate)
poly/gon/gons/polygonalselves
cau/caught/caughts/caughtselves
re/trace/traces/retraceselves
re/cord/cords/recordself
si/sim/sims/simself
P/C/Cs/PCself
7 notes · View notes
moleculardepot · 28 days ago
Text
Biotin-d(PEG)2-Preladenant Conjugate
Biotin-d(PEG)2-Preladenant Conjugate Catalog number: B2022094 Lot number: Batch Dependent Expiration Date: Batch dependent Amount: 1 mg Molecular Weight or Concentration: 1.046 kDa Supplied as: Solution Applications: a molecular tool for various biochemical applications Storage: 2-8°C Keywords: Biotin-d(PEG)2-Preladenant Adduct, Biotin-d(PEG)2-Preladenant Linker, Biotin-d(PEG)2-Preladenant…
0 notes
Text
Xamarin App Development: A Practical Guide
Tumblr media
In today’s fast-paced digital world, cross-platform app development with Xamarin has become a go-to solution for businesses and developers. Whether you’re an aspiring developer or an entrepreneur looking to build an app, understanding Xamarin mobile app development can give you a competitive edge.
In this guide, I’ll take you through everything you need to know about Xamarin app development—from what it is, why it’s popular, and a step-by-step development guide, to best practices and a comparison with other frameworks like Xamarin vs React Native. Let’s dive in!
What is Xamarin?
Xamarin is an open-source framework by Microsoft that allows developers to build cross-platform mobile applications using a single codebase. It integrates seamlessly with .NET and C#, enabling apps to run smoothly on iOS, Android, and Windows.
Key Features of Xamarin:
Single Codebase: Write once, deploy everywhere.
Native-Like Performance: Uses native APIs for a smooth experience.
Built-in UI Components: Supports Xamarin App UI/UX Design best practices.
Microsoft Support: Backed by a strong developer community.
Why Choose Xamarin for App Development?
Choosing the right development framework is crucial for building high-performing mobile apps. Here are some benefits of Xamarin app development:
Cross-Platform Compatibility: Develop for Android, iOS, and Windows with a single codebase.
Cost-Efficiency: Saves time and money compared to native development.
Seamless Integration: Works well with Azure, Visual Studio, and .NET Core.
Faster Development: Pre-built UI components speed up development.
High Performance: Offers near-native performance with minimal lag.
If you're working with an experienced Xamarin app development company, you can leverage these benefits to create scalable and future-proof apps.
Also Read: Xamarin App Development: A Practicle Guide @ Mobulous
Step-by-Step Xamarin App Development Guide
If you're ready to start Xamarin mobile app development, follow these steps:
Step 1: Set Up the Development Environment
Before you begin, install the necessary tools:
Visual Studio (Windows or Mac)
Xamarin SDK
.NET Core SDK
Android/iOS emulators
Step 2: Create a New Xamarin Project
Open Visual Studio and create a new project.
Select Xamarin.Forms for a cross-platform solution.
Set up the iOS and Android dependencies.
Step 3: Design the App UI
Good UI/UX design is essential for a smooth user experience. Use XAML for designing layouts and follow Xamarin app UI/UX design principles:
Use Material Design for Android.
Follow Apple's Human Interface Guidelines for iOS.
Optimize UI for different screen sizes.
Step 4: Implement Business Logic
Use MVVM (Model-View-ViewModel) architecture for code separation.
Implement API calls and data storage using SQLite or Firebase.
Optimize app navigation and user interactions.
Step 5: Test the App
Use Xamarin Test Cloud or built-in Visual Studio emulators to check performance, responsiveness, and functionality.
Step 6: Optimize Performance
Xamarin performance optimization techniques include:
Reducing app size using linker settings.
Optimizing memory usage and garbage collection.
Implementing lazy loading for images and data-heavy operations.
Step 7: Deploy and Maintain
Once your app is tested and optimized, publish it on the Google Play Store, Apple App Store, or Microsoft Store. Keep improving it based on user feedback and regular updates.
Xamarin Best Practices for High-Performance Apps
To build a robust Xamarin app, follow these best practices:
Use Dependency Injection: Improves scalability and testability.
Leverage Caching: Speeds up app performance and reduces API calls.
Optimize UI Rendering: Avoid unnecessary UI elements that slow down the app.
Use Native Code When Needed: Utilize platform-specific functionalities for better performance.
Monitor App Performance: Use tools like Xamarin Profiler and App Center.
Xamarin vs Other Cross-Platform Frameworks
When choosing a cross-platform framework, you might wonder how Xamarin vs React Native compares.
Tumblr media
Which One Should You Choose?
Choose Xamarin if you’re a .NET developer and need high performance with native UI.
Choose React Native for faster development and a strong JavaScript ecosystem.
Choose Flutter for beautiful custom UIs and Google-backed updates.
How Mobulous Can Help with Xamarin Development
As a leading Xamarin app development company, Mobulous specializes in building scalable, high-performance cross-platform apps. Our expert developers follow the best Xamarin development guide to create apps that are:
User-Friendly – Prioritizing UI/UX design for better engagement.
Performance-Optimized – Implementing best practices to ensure smooth functionality.
Scalable & Secure – Future-proof solutions tailored for your business.
Whether you need a business app, eCommerce solution, or enterprise software, Mobulous has got you covered!
FAQs
Q:1. Is Xamarin good for mobile app development?
Yes! Xamarin mobile app development is great for cross-platform applications, offering native performance, code reusability, and Microsoft support.
Q:2. How does Xamarin compare to React Native?
Both are great for cross-platform development, but Xamarin uses C# and .NET, while React Native is based on JavaScript. Xamarin is better for apps requiring high performance and native UI.
Q:3. What are the key benefits of Xamarin?
Code reusability (90%)
Near-native performance
Integration with .NET and Microsoft tools
Large developer community and support
Q:4. How can I optimize my Xamarin app for better performance?
Reduce app size with linker settings
Use lazy loading for images
Optimize memory management and garbage collection
Minimize UI overdraws
Conclusion
Xamarin app development is a powerful solution for businesses looking to build high-quality cross-platform apps efficiently. By following best practices for Xamarin developers, optimizing performance, and leveraging Microsoft’s robust ecosystem, you can create a scalable and high-performing application.
If you're looking for an experienced Xamarin app development company, Mobulous can help bring your ideas to life. Contact us today for a consultation!
Read Our Informative Blog’s:
https://negiseogaurav.weebly.com/blog/best-mobile-app-development-company-for-enterprises-in-india
https://sites.google.com/view/negiseogaurav/our-latest-blogs/best-mobile-app-development-company-for-enterprises-in-india
https://negiseogaurav.odoo.com/blog/our-latest-blog-1/best-mobile-app-development-company-for-enterprises-in-india-13
https://gauravnegi.godaddysites.com/f/best-mobile-app-development-company-for-enterprises-in-india
1 note · View note
atplblog · 3 months ago
Text
Price: [price_with_discount] (as of [price_update_date] - Details) [ad_1] Syllabus Programming in ‘C’ Language - (312009) Learning Scheme CreditsAssessment Scheme Actual Contact Hrs./Week SLH NLH Paper DurationTheoryBased on LL & TLBased on SLTotal Marks CL TL LLPractical FA-THSA-THTotalFA-PRSA-PRSLA MaxMaxMaxMinMaxMinMaxMinMaxMin 2-2263-----25102510251075 Sr. No.Theory Learning Outcomes (TLO's) aligned to CO's.Learning content mapped with Theory Learning Outcomes (TLO's) and CO's. 1.TLO 1.1 Write the basic structure of C program. TLO 1.2 Differentiate between keywords and identifiers. TLO 1.3 Use relevant data types as per the given situation. TLO 1.4 Construct algorithm and draw flowchart for the given problem. TLO 1.5 Use different types of operators in given situations. Unit - I Basics of C Programming 1.1 Algorithms and Flow Charts : 1.1.1 Steps for writing algorithm 1.1.2 Notations of flow charts. 1.2 Structure of C program, Introduction of Assembler, Linker, Compiler, Interpreter. 1.3 Character set, Keywords, identifiers, constants, Variables 1.4 Data Types : 1.4.1 Predefined Data types : integer-unsigned, signed, long, float, double, character, single, octal, hexadecimal 1.4.2 User defined Data Types : Arrays, Structures. 1.5 Operators and expressions : 1.5.1 Formatted input and output statements 1.5.2 Types of Operators : Arithmetic, logical, relational, increment and decrement, bitwise, special operators : unary, ternary operators, 1.5.3 Precedence, Associativity of Operators. (Chapters - 1, 2) 2.TLO 2.1 Implement branching and looping. TLO 2.2 Demonstrate control statements using “if-else”. TLO 2.3 Apply different types of loops as per the given problem. Unit - II Decision Control & Looping 2.1 Introduction to decision control, branching and looping 2.2 Decision Control statements : if, if-else, if-else-if ladder, switch case, 2.3 Looping and branching Statements : 2.3.1 while Loop, 2.3.2 for Loop, nested for loop 2.3.3 do-while loop, break, Publisher ‏ : ‎ TECHNICAL PUBLICATIONS, PUNE (26 December 2023); TECHNICAL PUBLICATIONS, PUNE HARSHWARDHAN : +91 77092 33099 Paperback ‏ : ‎ 212 pages ISBN-10 ‏ : ‎ 935585756X ISBN-13 ‏ : ‎ 978-9355857569 Reading age ‏ : ‎ 18 years and up Country of Origin ‏ : ‎ India Packer ‏ : ‎ TECHNICAL PUBLICATIONS, PUNE, NARHE GODOWN, PUNE [ad_2]
0 notes
machinelearningsite · 11 months ago
Text
1/100 Days of C++: Introduction to Compiler, Linker, and Libraries
Hello reader, welcome to 100 Days of C++ series. In my previous post on 4 Main Reasons Why I am moving to C++ from Python, I expressed my views on how C++ programming language is more convenient for me as an automobile engineer. Not that Python is bad, I am still a fan of Python. But when you need a real-time execution, when a delay of a few hundred milliseconds is of drastic significance, C++ is…
Tumblr media
View On WordPress
1 note · View note
learnsoftwaedevelopment · 3 months ago
Text
Software Development
Tumblr media
What is Software Development
Software development refers to a set of computer science activities that are dedicated to the process of creating, designing, deploying and supporting software .
 Software Development The process is more encompassing than programming, writing code, in that it is conceived the goal, evaluated feasibility, analyzed requirements, designed, tested and released.
 Developers use programming languages, tools, and frameworks to build software ranging from simple mobile apps to complex enterprise system .The process includes various stages, such as requirements gathering, planning, coding, testing, deployment, and ongoing maintenance.”
Types of Software Development
1-System Software 
System software  directly operates computer hardware and provides basic functionality to users as well as other software to ensure smooth operation. it provides core functions such as operating systems, disk management, utilities, hardware management and other operational necessities.
it is a type of software designed to manage and control computer hardware and provide a platform for running application software. System software ensures the smooth operation of the computer or device.
2-Application Software
Developers design application software for end -users to complete a specific task . it is a product or program that only aims to meet the needs of end users . it includes word processors , spreadsheets , database management, inventory and payroll software , among other things.
it refers to programs or applications designed to perform specific task or solve particular problems for users . it also refer to web and mobile applications such as those used to shop on retail websites or interact with content on social media sites.
3-Programming Software
It is also known as development tools .refers to software applications that help developers write, test, and debug code .Programming software, also known as development tools, refers to software applications that help developers write, test, and debug code. 
 These tools provide the necessary environment for creating software programs and can include Integrated Development Environments (IDEs) like Visual Studio, Eclipse, or PyCharm, which offer code editing, debugging, and project management features. Programming software gives programmers tools such as text editors, compilers, linkers, debuggers and other tools to create code.
4-Development Software
Software developers use tools and programs referred to as development software to create, test, and maintain applications. This includes Integrated Development Environments (IDEs), such as Visual Studio or Eclipse, that combine coding, debugging, and testing features in one platform.
Integrated Development Environments (IDEs), such as Visual Studio or Eclipse, combine coding, debugging, and testing features in one platform.”
5-Embedded Software
it is used to control devices not typically considered computers including telecommunications networks, cars, industrial robots and more .
Developers design embedded software to run on hardware devices but that are not traditional computers such as smartphones , smartTVs , medical devices, and industrial machines .Developers usually write embedded software in low-level programming languages like C or C++ to ensure efficient performance find passive voice
Features of Software Development
Collaborative Nature
It is a collaborative process that involves a diverse group of professionals, including developers, designers, project managers, and stakeholders. Software project success is heavily dependent on effective communication and seamless teamwork.
The collaborative nature of software development is a fundamental aspect that involves teamwork and cooperation among various stakeholders throughout the development process.
Continuous Learning
 In this it’s super important to keep learning because things are always changing. New ways of writing code, tools, and technologies are always popping up.
 To do well and keep up, programmers need to keep on learning and getting better at what they do .It’s like an ongoing adventure of picking up new skills to stay on top of the game.
Problem-Solving 
Deve­lopers play a crucial role as problem solve­rs. They actively identify and addre­ss issues, craft innovative solutions, and optimize code­ to achieve the de­sired outcomes. Problem-solving skills lie­ at the heart of the software­ development proce­ss. 
“Problem-solving in it refers to the process of identifying, analyzing, and resolving issues or challenges that arise during the creation of software. It involves critical thinking, creativity, and logical reasoning to find effective solutions.
Why is Software Development Important
It is crucial because it drives innovation, improves efficiency, and enables businesses and individuals to solve complex problems. Software development creates the applications, systems, and technologies that power nearly every aspect of modern life.
 In businesses,  enhances productivity by automating tasks, streamlining processes, and improving decision-making through data analytics. As technology continues to evolve, software development becomes more important
1 note · View note
gland2lait · 5 months ago
Text
Intro!
Yo la team! moi c'est Gland2lait, mais vous pouvez plus simplement m'appeller Gland, ou Finnegan Fevers! (il/iel/star)
j'suis le "créateur" de @sparklefrench (tout ce que je fais c'est poster mes trads mdrr le comic il est fait par kneeby)
ici c un blog un peu + perso pr pas avoir à linker mon main à mes projets, j'espère pouvoir faire découvrir SparkleCare à une nouvelle audience francophone grâce à mes traductions !
1 note · View note
trainsinanime · 6 months ago
Text
Had too much annoying stuff at my work the past few weeks, most of it my own fault, but also some caused by coworkers demanding things. Don't get me wrong, they're all nice people, and I actually love answering questions and helping folks, but there are ways to make it so, so, so much easier.
This is going to be all in the field of build problems with some code. So here are my unsorted rules:
Never tell me "it doesn't work". Or at least not just that. Tell me what doesn't work. Is there an error message? Where? What does it say? If you want me to come over to your computer to look at it, I can do that, but please say so.
Give me the full error message. Don't paraphrase it. Don't try to remember it. Copy and paste it.
If you want me to look at your computer, set it to light mode. I can't find bugs if I can't see the damn code and error messages. I know it's uncool, but trust me, being able to see what's going on is so useful when coding, you'll never believe how you managed to go without it! (This item is here as a reminder that this list is my subjective view of the world and should not be taken as gospel.)
Screenshots are only ever second-best, because I can't copy and paste them either into Google or into the search in our IDE. Please send me plain text if at all possible.
If the thing has a log, which build systems always do, send me the log. The full log. Not just the last line. Not just the line you found the most interesting. These can be useful, don't get me wrong, but allow me to search through the whole thing, please.
Have decades of experience. This is really crucial. If you don't, you're going to struggle with this. (This item is here as a reminder that it's okay not to know things, especially the ones in this list, that's why I'm making it in the first place. There are things that should be on this list that aren't because I don't have sufficient experience yet. But experience is the one thing that you get basically automatically, as long as you pay attention while working.)
If you have a build that failed, there are basically two ways to look through the log: From the start or from the finish. From the start, you go to the first item that says "error", and wonder about that. From the finish, you go to the last item that says "error" and wonder about that. Both of these have their values, especially if the log file is megabytes long and there are spurious "error" messages, but the bottom up is the one that is most likely to lead you astray.
You go up from the bottom, see "error", and that's it, you're done. Except in a sufficiently complex build system, which you shouldn't have but which we absolutely do, there is usually a series of nested stages. The log will typically be: benign shit error: You forgot a semicolon, you idiot, so I couldn't build this C++ file. You moron. hint: Maybe put it there? benign shit error: couldn't link the library because that one c++ file isn't there. benign shit error: couldn't build the installer because the one library wasn't there This is a contrived example that's much simpler than what my colleagues come to me with normally (it is in fact the kind of thing that I personally get wrong all the time), but you can see the problem here. A strict bottom-up approach will lead you to think the problem is the installer, or the linker, but actually it's a compile error further up. Seems obvious here, but now imagine the "benign shit" is several hundred or thousand lines each time. So look up, and try to see whether the real problem is there.
Actually read the log. Again, that's a thing I often struggle with myself, but over the years Clang and GCC have done a lot of work to create readable error messages for C++ that have sadly all ended up incredibly long, because C++ is a terribly overcomplicated language. It's not at all rare that you spend minutes looking for a thing, ask a colleague, and the colleague will tell you that the error and its solution are literally on the screen, in nice helpful text, right in front of them. That's not bad (unlike not giving me the log at all, which is always bad), it happens to everyone, but it's a useful reminder.
If you're in the middle of a complex multi-step process where you fix issue after issue after issue for weeks, write down what you've done, what errors you encountered and how you fixed them. That's something I don't do nearly often enough. That one error from two weeks ago will come back, and you will have forgotten how to fix it. This doesn't need to be a nice document, any text file will do, though putting it in a scratch section of your team wiki may be useful for others. It may also help with writing good commit messages.
Oh yeah, please write good commit messages. One line summary, then a quick explanation of what you changed and why. I like to type a lot (as you can see) so mine can get incredibly long, which is probably not ideal, but it should be something better than "Fix bug".
Seriously, the log and the error message. It may be garbage to you because it requires you to know the mind of a compiler developer to parse, but it is the main and often only starting point for any investigation.
0 notes
aanandh · 6 months ago
Text
Getting Started with Embedded Programming: Tools and Techniques
Embedded programming is an exciting field that combines hardware and software to create systems that control various devices and processes. From simple microcontrollers in household appliances to complex systems in automobiles and medical devices, embedded programming plays a vital role in modern technology. If you’re looking to dive into embedded programming, this guide will outline essential tools and techniques to help you get started.
Tumblr media
Understanding Embedded Programming
At its core, embedded programming involves writing software that runs on embedded systems—computers designed to perform dedicated functions within larger systems. Unlike traditional programming, which often runs on general-purpose computers, embedded programming requires a deep understanding of hardware constraints, real-time performance requirements, and low-level programming.
Essential Tools for Embedded Programming
Microcontrollers and Development Boards
Arduino: A popular platform for beginners, Arduino boards come with an integrated development environment (IDE) and a user-friendly programming language based on C/C++. The vast community support and numerous libraries make it easy to get started.
Raspberry Pi: Although primarily a single-board computer, Raspberry Pi can be used for embedded programming projects, especially those requiring more computational power. It supports various programming languages and operating systems.
ESP8266/ESP32: These Wi-Fi-enabled microcontrollers are ideal for IoT projects. They are programmable using the Arduino IDE or the Espressif IDF and offer great features for wireless applications.
Development Environments and IDEs
Arduino IDE: Specifically designed for Arduino programming, this IDE simplifies the process of writing and uploading code to the board.
PlatformIO: An open-source ecosystem for IoT development, PlatformIO supports multiple boards and frameworks, providing advanced features like libraries and debugging tools.
Keil uVision: A popular IDE for ARM microcontrollers, offering a comprehensive development environment, including simulation and debugging capabilities.
Eclipse with Embedded Plugins: Eclipse can be customized with plugins for embedded development, supporting various toolchains and microcontrollers.
Compilers and Toolchains
GCC (GNU Compiler Collection): Widely used for compiling C and C++ code for embedded systems. It supports various microcontroller architectures and is essential for low-level programming.
ARM Toolchain: A collection of tools used to develop applications for ARM-based microcontrollers. It includes a compiler, assembler, and linker, providing everything needed for embedded development.
Debugging Tools
JTAG/SWD Debuggers: Hardware debuggers like J-Link or ST-Link provide a means to debug embedded systems at the hardware level, allowing for real-time code execution and monitoring.
Serial Monitors: Tools that enable communication between your computer and the microcontroller via serial ports. They are useful for debugging and monitoring output during development.
Techniques for Embedded Programming
Start with a Simple Project Begin with a basic project that interests you, such as blinking an LED or reading a sensor. This hands-on experience will help you understand the fundamentals of embedded programming and familiarize you with the tools.
Learn C/C++ Basics Most embedded systems are programmed in C or C++, so having a strong grasp of these languages is essential. Focus on key concepts such as data types, control structures, and pointers, as these are frequently used in embedded programming.
Understand Hardware Basics Familiarize yourself with the hardware you are working with, including pin configurations, voltage levels, and peripheral interfaces (like I2C, SPI, UART). Knowing how to interact with the hardware is crucial for successful embedded programming.
Utilize Libraries and Frameworks Take advantage of existing libraries and frameworks to simplify your development process. Libraries can provide pre-written code for common functions, such as controlling motors or reading sensors, allowing you to focus on the logic of your application.
Implement Real-Time Operating Systems (RTOS) For more complex projects, consider using an RTOS to manage multitasking and timing constraints. An RTOS helps in scheduling tasks, ensuring that your application meets real-time requirements.
Practice Debugging and Testing Develop good debugging habits by regularly testing your code and using debugging tools. Learn to analyze errors, use breakpoints, and monitor variables during execution. Rigorous testing will ensure that your embedded application functions as intended.
Expanding Your Knowledge
Online Courses and Tutorials: Platforms like Coursera, Udacity, and edX offer various courses in embedded systems and programming. These courses can provide structured learning and hands-on projects.
Books and Resources: Consider reading books like "Programming Embedded Systems in C and C++" by Michael Barr or "The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors" by Joseph Yiu for deeper insights.
Join Communities and Forums: Engaging with online communities such as Arduino forums, Raspberry Pi forums, or Stack Overflow can provide support and inspiration. These platforms are valuable for asking questions and sharing your projects.
Conclusion
Getting started with embedded programming can be both challenging and rewarding. By leveraging the right tools and techniques, you can develop your skills and create innovative projects that bridge the gap between hardware and software. Whether you aim to build IoT devices, control robotics, or develop smart applications, the world of embedded programming offers endless possibilities. So, gather your tools, start coding, and unleash your creativity in this fascinating field!
0 notes