Learn Python programming from Harvard University. It dives more deeply into the design and implementation of web apps with Python, JavaScript, and SQL using frameworks like Django, React, and Bootstrap. Topics include database design, scalability, security, and user experience. You will learn how to write and use APIs, create interactive UIs, and leverage cloud services like GitHub and Heroku.
This course will teach you how to read and write code as well as how to test and “debug” it. It is designed for students with or without prior programming experience who’d like to learn Python specifically. Learn about functions, arguments, and return values (oh my!); variables and types; conditionals and Boolean expressions; and loops. Learn how to handle exceptions, find and fix bugs, and write unit tests; use third-party libraries; validate and extract data with regular expressions; model real-world entities with classes, objects, methods, and properties; and read and write files. Hands-on opportunities for lots of practice. Exercises inspired by real-world programming problems. No software required except for a web browser, or you can write code on your own PC or Mac.
Whereas CS50x (the original CS50 course) itself focuses on computer science more generally as well as programming with C, Python, SQL, and JavaScript, this course, aka CS50P, is entirely focused on programming with Python. You can take CS50P before CS50x, during CS50x, or after CS50x. But for an introduction to computer science itself, you should still take CS50x!
IEEE:n Spectrum-lehti on rankannut ohjelmointikielet järjestykseen jokavuotiseen tapaan. Python on listauksen kärjessä ja IEEE:n mukaan se on vain kasvattanut johtoaan. Python alkaa olla dominoiva kieli hyvin monilla ohjelmoinnin alueilla.
IEEE:n mukaan Pythonin dominanssi näyttää lisääntyneen suurelta osin pienempien, erikoistuneiden kielten kustannuksella. Siitä on tullut kaikkien aikojen huippukieli ja joillakin sektoreilla kuten tekoälyssä sen asema on kiistaton ykkönen.
Suosiota kasvattaa sekin, että markkinoilta löytyy jo 70 sentin hintaisia mikro-ohjaimia, joilla voidaan ajaa Python-koodia. Tämä nostaa kielen merkitystä kaikessa sulautetussa ohjelmoinnissa.
Python on eittämättä tämän hetken suosituin ohjelmointi työkalu, mutta sillä on omat puutteensa. Yksi niistä on hitaus. Tyypillisesti Python on 100-1000 kertaa muita kieliä hitaampi, mutta nyt amerikkalaistutkijat ovat kehittäneet työkalun, jonka avulla Pythoniin saadaan vauhtia.
Pythonin hitaus on joskus jopa surkuhupaisaa. Massachusettsin yliopiston Amherstin tutkimusryhmää johtaneen Emery Bergerin mukaan joissakin tapauksissa Pythonilla kirjoitetut ohjelmat ovat 60 000 kertaa hitaampia kuin muilla ohjelmointikielillä kirjoitettu koodi.
Tietenkään Pythonista ei saada yhtä nopeaa kuin käännetyt ns. konekielet, mutta suosion takia olisi tärkeää, että koodin suorituskyky olisi lähellä muiden tulkittujen kielten tasoa. Ohjelmoijat ovat tienneet tämän jo pitkään, ja Pythonin tehottomuutta vastaan he voivat käyttää työkaluja, joita kutsutaan “profiloijiksi”. Profiloijat suorittavat ohjelmia ja määrittävät sitten miksi ja mitkä osat ovat hitaita.
Valitettavasti nykyiset profiloijat auttavat yllättävän vähän Python-ohjelmoijia. Parhaimmillaan ne osoittavat, että jokin koodialue on hidas, ja jättävät ohjelmoijan tehtäväksi selvittää, mitä voidaan tehdä.
This C++ tutorial for beginners shows you how to get started with C++ quickly. Learn C++ basics in 1 hour and get ready to learn more!
TABLE OF CONTENT
0:00:00 Course Introduction
0:00:56 Introduction to C++
0:04:14 Popular IDEs
0:06:11 Your First C++ Program
0:13:36 Compiling and Running a C++ Program
0:16:01 Changing the Theme
0:17:16 Course Structure
0:18:48 Cheat Sheet
0:19:20 Section 1: The Basics
0:19:52 Variables
0:26:00 Constants
0:27:28 Naming Conventions
0:30:25 Mathematical Expressions
0:36:39 Order of Operators
0:39:49 Writing Output to the Console
0:49:06 Reading from the Console
0:53:41 Working with the Standard Library
0:58:19 Comments
1:00:51 Introduction to Fundamental Data Types
1:01:41 Section 2: Fundamental Data Types
1:04:45 Initializing Variables
1:09:29 Working with Numbers
1:13:03 Narrowing
1:15:17 Generating Random Numbers
C++ or C-plus-plus or Cpp is an extremely popular object-oriented programming language. Created in 1979, today it powers game engines, databases, compilers, embedded systems, desktop software, and much of our software infrastructure.
Python is arguably the world’s most popular programming language. It is easy to learn, yet suitable in professional software like web applications, data science, and server-side scripts.
Python is the #1 choice for Data Science, Data Analytics, Artificial Intelligence, Machine Learning, Computer Vision, Natural Language Processing and so much more as well as heavilly used in backend server side web development. It’s a nice language. Really having a fun time learning it compared to my most known languages like C, C++ and Java.
JavaScript is the the programming language that built the web. Learn how it evolved into a powerful tool for building websites, servers with Node.js, mobile apps, desktop software, and more
Dave builds the World’s Smallest Windows application live in x86 assembly using only a text editor and the command line to assemble the program using the Microsoft MASM assembler.
Whether you’re a professional programmer or just curious about how assembly language works, what makes it different from machine language, and why it can be faster and smaller than C you won’t want to miss it! Take your Windows Programming to the next level. Or the previous level, depending on how you look at it!
Learn Python programming from Harvard University. It dives more deeply into the design and implementation of web apps with Python, JavaScript, and SQL using frameworks like Django, React, and Bootstrap. Topics include database design, scalability, security, and user experience. You will learn how to write and use APIs, create interactive UIs, and leverage cloud services like GitHub and Heroku.
This course will teach you how to read and write code as well as how to test and “debug” it. It is designed for students with or without prior programming experience who’d like to learn Python specifically. Learn about functions, arguments, and return values (oh my!); variables and types; conditionals and Boolean expressions; and loops. Learn how to handle exceptions, find and fix bugs, and write unit tests; use third-party libraries; validate and extract data with regular expressions; model real-world entities with classes, objects, methods, and properties; and read and write files. Hands-on opportunities for lots of practice. Exercises inspired by real-world programming problems. No software required except for a web browser, or you can write code on your own PC or Mac.
Many people, one way or another, got started programming computers using some kind of Basic. The language was developed at Dartmouth specifically so people could write simple programs without much training. However, Basic found roots in small computers and grew to where it is today, virtually unrecognizable. Writing things in something like Visual Basic may be easier than some programming tasks, but it requires a lot of tools and some reading or training. We aren’t sure where the name EndBasic came from, but this program — written in Rust — aims to bring Basic back to a simpler time. Sort of.
At first, string processing might seem very hard to optimize. If you’re looking for a newline in some text, you have to check every character in the string against every type of newline, right? Apparently not, as [Abhinav Upadhyay] tells us how CPython does some tricks in string processing.
The trick in question is based on bloom filters, used here to quickly tell whether a character possibly matches any in a predefined set. A bloom filter works by condensing a set of more complex data to a couple of bits in an array. When an element is added, a bit is set, the index of which is determined by a hash function. To test whether an element might be in the filter, the same is done but by testing the bit instead of setting it. This effectively allows a fast check of whether an element might be in the filter.
If you’re programming on a modern computer, you typically make use of lots of work done by other people. There’s operating systems to abstract away the complexities of modern hardware, standard libraries to implement common tasks, and tons of third-party libraries that prevent you from having to reinvent the wheel all the time: you’re definitely not the first one trying to draw graphics onto a screen or store data in a file.
But if it’s the wheels you’re most interested in, then there’s nothing wrong with inventing new ones now and then. [Michal Zalewski], for instance, has made a beautiful Tetris clone in just 1000 lines of C, without using anyone else’s code.
Fiber, a less known concept compared with coroutine, is a pretty powerful addition to cooperative multitasking.
In this blog post, I will put down some of my learnings about fiber basics. Everything mentioned in this post will be specifically about C++ even though similar concept exist in other languages as well. Readers who have zero knowledge about fibers will be learning what it is and how we can take advantages of it in graphics rendering.
Basics about Fibers
Apart from Coroutine, Fiber is an interesting addition as a solution to cooperative multi-tasking. Fiber is quite a lightweight thread of execution. Like coroutine, fiber allows yielding at any point inside it. To some degree, we can regard fiber as a form of stackful coroutine, which is not available in C++ programming language. By not available, I mean there is no native language support for that. There are certainly libraries like boost that support this kind of coroutine or even fiber.
Don’t be intimidated by its fancy name, fiber really is just a method that allows programmers to jump between different stack memory without regular return command. Since it offers the ability for us to jump between different call stacks, we can allocate our own stack memory and use it as our fiber stack.
[John Earnest]’s passion project Decker is creative software with a classic MacOS look (it’s not limited to running on Macs, however) for easily making and sharing interactive documents with sound, images, hypertext, scripted behavior, and more to allow making just about anything in a WYSIWYG manner.
Decker creates decks, which can be thought of as a stack of digital cards that link to one another. Each card in a deck can contain cozy 1-bit art, sound, interactive elements, scripted behavior, and a surprisingly large amount of other features.
Decker builds on the legacy of HyperCard and the visual aesthetic of classic MacOS. It retains the simplicity and ease of learning that HyperCard provided, while adding many subtle and overt quality-of-life improvements, like deep undo history, support for scroll wheels and touchscreens, more modern keyboard navigation, and bulk editing operations.
There are many questions that can be asked for software projects, with most of these questions starting with ‘Why…?’. This is true for the challenge of proving that cascading stylesheets are Turing-complete, or that you don’t need all those fancy ISA bits of an ARM processors when you already got the LDM and STM commands in the 32-bit ISA. What originally started off as a bit of a running gag in a group of developers led to [Kellan Clark] implementing a Turing-complete computer and a functioning interpreter using nothing but these two opcodes.
What is generative AI?
What generative AI can do.
What generative AI can’t do.
Artificial intelligence (AI), machine learning (ML) and generative AI are all the rage and the terms everyone is using. Unfortunately, they’re now being used to describe a wide range of items and implementations that often have minimal relationship to each other. Those who don’t deal with the details of various platforms like ChatGPT tend to oversimplify what they think is going on and overestimate the capabilities or actual operation of these systems.
AI/ML covers a lot of ground from rule-based systems to large language models (LLMs). The latter is where generative AI comes from—more on that later. The challenges faced by AI researchers early on involved training or how to get information into the system so that it could be used to respond to inputs. Artificial neural networks (ANNs) took an approach modeled on biological neural networks; however, ANNs and their bio counterparts are different. Like most approximations, things work the same if you don’t look too closely.
It turns out that training neural networks is possible, but it takes a good bit of input. And the computations required to make this work are significant as one progresses from the simple idea of ANNs to production. Likewise, a whole host of neural-network type systems have been implemented, many tailored for specific input flows or analysis like image pattern recognition. Generative AI is one such area, but even here, generative AI covers a lot of ground.
C++ 23 is coming. While much of the focus is on the features being added to the programming language, there are a few being removed as well. One such feature is garbage collection, a staple of rival language Java, whose removal had swathes of engineers saying “wait… C++ had GC?”
Garbage collection is a feature of code operating through a virtual machine, expected of a language like Java. Its function is to delete code no longer in use by the machine. C++ meanwhile, is a low-level language that speaks directly to hardware, making the need for this seemingly obsolete. But Spotify engineer Sandor Dargo says its most effective implementation “is having virtual machines written in C++ for other languages that are garbage collected.”
Engineers on Hacker News were more shocked at its inclusion in the first place than its removal. “At first glance, I thought this was satirical,” one said.
Did you know C++ had garbage collection?
Comments:
Geodesic Systems, a long defunct company, built and sold a C++ garbage collector, and pushed to get programmatic support into the language. They were bought out by Symantec around that time. https://dl.acm.org/doi/abs/10.1145/1542431.1542437
We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.
We are a professional review site that has advertisement and can receive compensation from the companies whose products we review. We use affiliate links in the post so if you use them to buy products through those links we can get compensation at no additional cost to you.OkDecline
1,042 Comments
Tomi Engdahl says:
https://hackaday.com/2023/07/09/reviving-interlisp-with-the-medley-interlisp-project/
Tomi Engdahl says:
https://www.facebook.com/100064470498902/posts/pfbid02UwLoVopa3gfE6HWYQYrdfxJYHpTc9kmcPbPiP4NqSCJEWyNa6sVzRNN2iv37nAsvl/
A new revision of Fortran, Fortran 2023, is about to drop and it includes an HTTP client.
fortran-lang.org
Tomi Engdahl says:
Harvard CS50’s Introduction to Programming with Python – Full University Course
https://www.youtube.com/watch?v=nLRL_NcnK-4
Learn Python programming from Harvard University. It dives more deeply into the design and implementation of web apps with Python, JavaScript, and SQL using frameworks like Django, React, and Bootstrap. Topics include database design, scalability, security, and user experience. You will learn how to write and use APIs, create interactive UIs, and leverage cloud services like GitHub and Heroku.
This course will teach you how to read and write code as well as how to test and “debug” it. It is designed for students with or without prior programming experience who’d like to learn Python specifically. Learn about functions, arguments, and return values (oh my!); variables and types; conditionals and Boolean expressions; and loops. Learn how to handle exceptions, find and fix bugs, and write unit tests; use third-party libraries; validate and extract data with regular expressions; model real-world entities with classes, objects, methods, and properties; and read and write files. Hands-on opportunities for lots of practice. Exercises inspired by real-world programming problems. No software required except for a web browser, or you can write code on your own PC or Mac.
Whereas CS50x (the original CS50 course) itself focuses on computer science more generally as well as programming with C, Python, SQL, and JavaScript, this course, aka CS50P, is entirely focused on programming with Python. You can take CS50P before CS50x, during CS50x, or after CS50x. But for an introduction to computer science itself, you should still take CS50x!
Tomi Engdahl says:
Jos haluat töitä, opiskele Pythonia
https://etn.fi/index.php/13-news/15260-jos-haluat-toeitae-opiskele-pythonia
IEEE:n Spectrum-lehti on rankannut ohjelmointikielet järjestykseen jokavuotiseen tapaan. Python on listauksen kärjessä ja IEEE:n mukaan se on vain kasvattanut johtoaan. Python alkaa olla dominoiva kieli hyvin monilla ohjelmoinnin alueilla.
IEEE:n mukaan Pythonin dominanssi näyttää lisääntyneen suurelta osin pienempien, erikoistuneiden kielten kustannuksella. Siitä on tullut kaikkien aikojen huippukieli ja joillakin sektoreilla kuten tekoälyssä sen asema on kiistaton ykkönen.
Suosiota kasvattaa sekin, että markkinoilta löytyy jo 70 sentin hintaisia mikro-ohjaimia, joilla voidaan ajaa Python-koodia. Tämä nostaa kielen merkitystä kaikessa sulautetussa ohjelmoinnissa.
Tomi Engdahl says:
The Top Programming Languages 2023
Python and SQL are on top, but old languages shouldn’t be forgotten
https://spectrum.ieee.org/the-top-programming-languages-2023
Tomi Engdahl says:
https://etn.fi/index.php/13-news/15275-naein-python-koodista-tulee-merkittaevaesti-nopeampaa
Python on eittämättä tämän hetken suosituin ohjelmointi työkalu, mutta sillä on omat puutteensa. Yksi niistä on hitaus. Tyypillisesti Python on 100-1000 kertaa muita kieliä hitaampi, mutta nyt amerikkalaistutkijat ovat kehittäneet työkalun, jonka avulla Pythoniin saadaan vauhtia.
Pythonin hitaus on joskus jopa surkuhupaisaa. Massachusettsin yliopiston Amherstin tutkimusryhmää johtaneen Emery Bergerin mukaan joissakin tapauksissa Pythonilla kirjoitetut ohjelmat ovat 60 000 kertaa hitaampia kuin muilla ohjelmointikielillä kirjoitettu koodi.
Tietenkään Pythonista ei saada yhtä nopeaa kuin käännetyt ns. konekielet, mutta suosion takia olisi tärkeää, että koodin suorituskyky olisi lähellä muiden tulkittujen kielten tasoa. Ohjelmoijat ovat tienneet tämän jo pitkään, ja Pythonin tehottomuutta vastaan he voivat käyttää työkaluja, joita kutsutaan “profiloijiksi”. Profiloijat suorittavat ohjelmia ja määrittävät sitten miksi ja mitkä osat ovat hitaita.
Valitettavasti nykyiset profiloijat auttavat yllättävän vähän Python-ohjelmoijia. Parhaimmillaan ne osoittavat, että jokin koodialue on hidas, ja jättävät ohjelmoijan tehtäväksi selvittää, mitä voidaan tehdä.
Tomi Engdahl says:
https://etn.fi/index.php/13-news/15275-naein-python-koodista-tulee-merkittaevaesti-nopeampaa
Tomi Engdahl says:
https://etn.fi/index.php/13-news/15276-yksi-menestyneimmistae-suomalaissoftista-taeyttaeae-40-vuotta
Tomi Engdahl says:
https://hackaday.com/2023/09/01/on-vim-modal-interfaces-and-the-way-we-interact-with-computers/
Tomi Engdahl says:
C++ Tutorial for Beginners – Learn C++ in 1 Hour
https://www.youtube.com/watch?v=ZzaPdXTrSb8
This C++ tutorial for beginners shows you how to get started with C++ quickly. Learn C++ basics in 1 hour and get ready to learn more!
TABLE OF CONTENT
0:00:00 Course Introduction
0:00:56 Introduction to C++
0:04:14 Popular IDEs
0:06:11 Your First C++ Program
0:13:36 Compiling and Running a C++ Program
0:16:01 Changing the Theme
0:17:16 Course Structure
0:18:48 Cheat Sheet
0:19:20 Section 1: The Basics
0:19:52 Variables
0:26:00 Constants
0:27:28 Naming Conventions
0:30:25 Mathematical Expressions
0:36:39 Order of Operators
0:39:49 Writing Output to the Console
0:49:06 Reading from the Console
0:53:41 Working with the Standard Library
0:58:19 Comments
1:00:51 Introduction to Fundamental Data Types
1:01:41 Section 2: Fundamental Data Types
1:04:45 Initializing Variables
1:09:29 Working with Numbers
1:13:03 Narrowing
1:15:17 Generating Random Numbers
Tomi Engdahl says:
C++ in 100 Seconds
https://www.youtube.com/watch?v=MNeX4EGtR5Y
C++ or C-plus-plus or Cpp is an extremely popular object-oriented programming language. Created in 1979, today it powers game engines, databases, compilers, embedded systems, desktop software, and much of our software infrastructure.
Tomi Engdahl says:
Lua in 100 Seconds
https://www.youtube.com/watch?v=jUuqBZwwkQw
Tomi Engdahl says:
C# in 100 Seconds
https://www.youtube.com/watch?v=ravLFzIguCM
Tomi Engdahl says:
Python in 100 Seconds
https://www.youtube.com/watch?v=x7X9w_GIm1s
Python is arguably the world’s most popular programming language. It is easy to learn, yet suitable in professional software like web applications, data science, and server-side scripts.
Python is the #1 choice for Data Science, Data Analytics, Artificial Intelligence, Machine Learning, Computer Vision, Natural Language Processing and so much more as well as heavilly used in backend server side web development. It’s a nice language. Really having a fun time learning it compared to my most known languages like C, C++ and Java.
Tomi Engdahl says:
Learn PYTHON in 5 MINUTES
https://www.youtube.com/watch?v=I2wURDqiXdM
Tomi Engdahl says:
JavaScript in 100 Seconds
https://www.youtube.com/watch?v=DHjqpvDnNGE
JavaScript is the the programming language that built the web. Learn how it evolved into a powerful tool for building websites, servers with Node.js, mobile apps, desktop software, and more
Tomi Engdahl says:
React in 100 Seconds
https://www.youtube.com/watch?v=Tn6-PIqc4UM
React is a little JavaScript library with a big influence over the webdev world. Learn the basics of React in 100 Seconds
Tomi Engdahl says:
React JS Explained In 10 Minutes
https://www.youtube.com/watch?v=s2skans2dP4
A list of the core concepts every React developer should have a solid grasp on.
Tomi Engdahl says:
Hello, Assembly! Retrocoding the World’s Smallest Windows App in x86 ASM
https://www.youtube.com/watch?v=b0zxIfJJLAY
Dave builds the World’s Smallest Windows application live in x86 assembly using only a text editor and the command line to assemble the program using the Microsoft MASM assembler.
Whether you’re a professional programmer or just curious about how assembly language works, what makes it different from machine language, and why it can be faster and smaller than C you won’t want to miss it! Take your Windows Programming to the next level. Or the previous level, depending on how you look at it!
Tomi Engdahl says:
The Worst Programming Language Ever – Mark Rendle – NDC Oslo 2021
https://www.youtube.com/watch?v=vcFBwt1nu2U
Tomi Engdahl says:
Harvard CS50’s Introduction to Programming with Python – Full University Course
https://www.youtube.com/watch?v=nLRL_NcnK-4&t=15432s
Learn Python programming from Harvard University. It dives more deeply into the design and implementation of web apps with Python, JavaScript, and SQL using frameworks like Django, React, and Bootstrap. Topics include database design, scalability, security, and user experience. You will learn how to write and use APIs, create interactive UIs, and leverage cloud services like GitHub and Heroku.
This course will teach you how to read and write code as well as how to test and “debug” it. It is designed for students with or without prior programming experience who’d like to learn Python specifically. Learn about functions, arguments, and return values (oh my!); variables and types; conditionals and Boolean expressions; and loops. Learn how to handle exceptions, find and fix bugs, and write unit tests; use third-party libraries; validate and extract data with regular expressions; model real-world entities with classes, objects, methods, and properties; and read and write files. Hands-on opportunities for lots of practice. Exercises inspired by real-world programming problems. No software required except for a web browser, or you can write code on your own PC or Mac.
Tomi Engdahl says:
https://hackaday.com/2023/09/19/normal-users-dont-code-on-their-mac-but-apple-keeps-trying/
Tomi Engdahl says:
https://hackaday.com/2023/09/17/the-end-of-basic/
Many people, one way or another, got started programming computers using some kind of Basic. The language was developed at Dartmouth specifically so people could write simple programs without much training. However, Basic found roots in small computers and grew to where it is today, virtually unrecognizable. Writing things in something like Visual Basic may be easier than some programming tasks, but it requires a lot of tools and some reading or training. We aren’t sure where the name EndBasic came from, but this program — written in Rust — aims to bring Basic back to a simpler time. Sort of.
https://www.endbasic.dev/
Tomi Engdahl says:
Faster String Processing With Bloom Filters
https://hackaday.com/2023/09/21/faster-string-processing-with-bloom-filters/
At first, string processing might seem very hard to optimize. If you’re looking for a newline in some text, you have to check every character in the string against every type of newline, right? Apparently not, as [Abhinav Upadhyay] tells us how CPython does some tricks in string processing.
The trick in question is based on bloom filters, used here to quickly tell whether a character possibly matches any in a predefined set. A bloom filter works by condensing a set of more complex data to a couple of bits in an array. When an element is added, a bit is set, the index of which is determined by a hash function. To test whether an element might be in the filter, the same is done but by testing the bit instead of setting it. This effectively allows a fast check of whether an element might be in the filter.
https://codeconfessions.substack.com/p/cpython-bloom-filter-usage
Tomi Engdahl says:
The game engine you’ve been waiting for.
https://godotengine.org/
The Godot Engine is a free, all-in-one, cross-platform game engine that makes it easy for you to create 2D and 3D games.
Tomi Engdahl says:
Tetris Clone Uses 1000 Lines Of Code, And Nothing Else
https://hackaday.com/2023/09/25/tetris-clone-uses-1000-lines-of-code-and-nothing-else/
If you’re programming on a modern computer, you typically make use of lots of work done by other people. There’s operating systems to abstract away the complexities of modern hardware, standard libraries to implement common tasks, and tons of third-party libraries that prevent you from having to reinvent the wheel all the time: you’re definitely not the first one trying to draw graphics onto a screen or store data in a file.
But if it’s the wheels you’re most interested in, then there’s nothing wrong with inventing new ones now and then. [Michal Zalewski], for instance, has made a beautiful Tetris clone in just 1000 lines of C, without using anyone else’s code.
https://lcamtuf.substack.com/p/mcu-land-part-10-blocks-all-the-way
Tomi Engdahl says:
https://hackaday.com/2023/09/25/processes-threads-and-fibers/
Tomi Engdahl says:
Fiber in C++: Understanding the Basics
https://agraphicsguynotes.com/posts/fiber_in_cpp_understanding_the_basics/
Fiber, a less known concept compared with coroutine, is a pretty powerful addition to cooperative multitasking.
In this blog post, I will put down some of my learnings about fiber basics. Everything mentioned in this post will be specifically about C++ even though similar concept exist in other languages as well. Readers who have zero knowledge about fibers will be learning what it is and how we can take advantages of it in graphics rendering.
Basics about Fibers
Apart from Coroutine, Fiber is an interesting addition as a solution to cooperative multi-tasking. Fiber is quite a lightweight thread of execution. Like coroutine, fiber allows yielding at any point inside it. To some degree, we can regard fiber as a form of stackful coroutine, which is not available in C++ programming language. By not available, I mean there is no native language support for that. There are certainly libraries like boost that support this kind of coroutine or even fiber.
Don’t be intimidated by its fancy name, fiber really is just a method that allows programmers to jump between different stack memory without regular return command. Since it offers the ability for us to jump between different call stacks, we can allocate our own stack memory and use it as our fiber stack.
Tomi Engdahl says:
Decker Is The Cozy Retro Creative Engine You Didn’t Know You Needed
https://hackaday.com/2023/09/22/decker-is-the-cozy-retro-creative-engine-you-didnt-know-you-needed/
[John Earnest]’s passion project Decker is creative software with a classic MacOS look (it’s not limited to running on Macs, however) for easily making and sharing interactive documents with sound, images, hypertext, scripted behavior, and more to allow making just about anything in a WYSIWYG manner.
Decker creates decks, which can be thought of as a stack of digital cards that link to one another. Each card in a deck can contain cozy 1-bit art, sound, interactive elements, scripted behavior, and a surprisingly large amount of other features.
https://beyondloom.com/decker/index.html
Decker builds on the legacy of HyperCard and the visual aesthetic of classic MacOS. It retains the simplicity and ease of learning that HyperCard provided, while adding many subtle and overt quality-of-life improvements, like deep undo history, support for scroll wheels and touchscreens, more modern keyboard navigation, and bulk editing operations.
Tomi Engdahl says:
https://hackaday.com/2023/09/17/the-end-of-basic/
Tomi Engdahl says:
Suomalaisia on yritetty kuluvalla viikolla huijata tuhansilla pankkitunnuksia kalastelevilla viesteillä, kertoo Traficom tiedotteessaan.
Tomi Engdahl says:
https://hackaday.com/2023/09/29/turing-complete-programming-on-arm-with-two-instruction
There are many questions that can be asked for software projects, with most of these questions starting with ‘Why…?’. This is true for the challenge of proving that cascading stylesheets are Turing-complete, or that you don’t need all those fancy ISA bits of an ARM processors when you already got the LDM and STM commands in the 32-bit ISA. What originally started off as a bit of a running gag in a group of developers led to [Kellan Clark] implementing a Turing-complete computer and a functioning interpreter using nothing but these two opcodes.
https://github.com/KellanClark/armfuck
Tomi Engdahl says:
https://hackaday.com/2023/09/29/building-a-weather-display-in-rust/
Tomi Engdahl says:
Google Open Sources Binary File Comparison Tool BinDiff
Google has released the source code of BinDiff, a binary file comparison tool popular within the security research community, on GitHub
https://www.securityweek.com/google-open-sources-binary-file-comparison-tool-bindiff/
Tomi Engdahl says:
GENERATING AI
Generative artificial intelligence (AI) like chatbots are changing the way many use AI.
https://www.electronicdesign.com/magazine/51584
Trying to Understand Generative AI
Oct. 2, 2023
The rise of generative AI has been explosive, but unknowns remain. And what exactly are its capabilities? I took a deeper dive to find out.
https://www.electronicdesign.com/blogs/altembedded/article/21274753/electronic-design-trying-to-understand-generative-ai
What you’ll learn:
What is generative AI?
What generative AI can do.
What generative AI can’t do.
Artificial intelligence (AI), machine learning (ML) and generative AI are all the rage and the terms everyone is using. Unfortunately, they’re now being used to describe a wide range of items and implementations that often have minimal relationship to each other. Those who don’t deal with the details of various platforms like ChatGPT tend to oversimplify what they think is going on and overestimate the capabilities or actual operation of these systems.
AI/ML covers a lot of ground from rule-based systems to large language models (LLMs). The latter is where generative AI comes from—more on that later. The challenges faced by AI researchers early on involved training or how to get information into the system so that it could be used to respond to inputs. Artificial neural networks (ANNs) took an approach modeled on biological neural networks; however, ANNs and their bio counterparts are different. Like most approximations, things work the same if you don’t look too closely.
It turns out that training neural networks is possible, but it takes a good bit of input. And the computations required to make this work are significant as one progresses from the simple idea of ANNs to production. Likewise, a whole host of neural-network type systems have been implemented, many tailored for specific input flows or analysis like image pattern recognition. Generative AI is one such area, but even here, generative AI covers a lot of ground.
Tomi Engdahl says:
https://hackaday.com/2023/10/17/linux-fu-deep-git-rebasing/
Tomi Engdahl says:
https://hackaday.com/2023/09/14/find-that-obscure-function-with-this-interactive-map-of-the-linux-kernel/
Tomi Engdahl says:
https://www.cisa.gov/sites/default/files/2023-09/CISA-Open-Source-Software-Security-Roadmap-508c%20%281%29.pdf
Tomi Engdahl says:
https://www.pcworld.com/article/2091349/the-best-open-source-tools-at-a-glance.html
Tomi Engdahl says:
https://nibblestew.blogspot.com/2023/10/the-road-to-hell-is-paved-with-good.html
Tomi Engdahl says:
https://muropaketti.com/tietotekniikka/tietotekniikkauutiset/suosituimmat-ohjelmointikielet-listattiin-c-sharpin-ja-javan-valinen-ero-ei-ole-koskaan-ollut-nain-pieni/
Tomi Engdahl says:
https://www.phoronix.com/news/Rust-Coreutils-uutils-0.0.22
Tomi Engdahl says:
OK, so ChatGPT just debugged my code. For real
Not only can ChatGPT write code, it can read code. On the one hand, that’s very helpful. On the other hand, that’s truly terrifying.
https://www.zdnet.com/article/ok-so-chatgpt-just-debugged-my-code-for-real/
Tomi Engdahl says:
https://hackaday.com/2023/10/13/because-you-can-linux-on-an-arduino-uno/
Tomi Engdahl says:
Sebastian Urban’s Rust Library Makes It Easier to Experiment with a Raspberry Pi’s USB Gadget Mode
Library comes with predefined network, serial, Human Interface Device, and Mass Storage Device functions, and you can add your own too.
https://www.hackster.io/news/sebastian-urban-s-rust-library-makes-it-easier-to-experiment-with-a-raspberry-pi-s-usb-gadget-mode-eadf85f3b885
Tomi Engdahl says:
https://thenewstack.io/webassembly-isnt-software-its-a-computer/
Tomi Engdahl says:
https://dev.to/ambasador/tiny-3d-renderer-in-python-with-z-bufferingin-less-than-200-lines-of-code-3h82
Tomi Engdahl says:
https://www.hackster.io/news/angel-cabello-s-galdeano-handheld-is-a-pocket-micropython-calculator-with-hidden-capabilities-00e10207dc21
Tomi Engdahl says:
Koodausta opetettiin englannin kielellä – karu lopputulos
3.11.202310:03|päivitetty3.11.202310:03
Kannattaako koodausta opettaa äidinkielellä vai englanniksi? Tutkimuksessa alkeistason koodauskurssin osallistujat jaettiin satunnaisesti ryhmiin, joissa oli eri opetuskieli.
https://www.mikrobitti.fi/uutiset/koodausta-opetettiin-englannin-kielella-karu-lopputulos/ffe1c16a-c08c-49a4-a094-c5c885d3d8b7
Tomi Engdahl says:
C++ is removing a Java feature that nobody knew it had
https://www.efinancialcareers.co.uk/news/2023/11/c-vs-java
C++ 23 is coming. While much of the focus is on the features being added to the programming language, there are a few being removed as well. One such feature is garbage collection, a staple of rival language Java, whose removal had swathes of engineers saying “wait… C++ had GC?”
Garbage collection is a feature of code operating through a virtual machine, expected of a language like Java. Its function is to delete code no longer in use by the machine. C++ meanwhile, is a low-level language that speaks directly to hardware, making the need for this seemingly obsolete. But Spotify engineer Sandor Dargo says its most effective implementation “is having virtual machines written in C++ for other languages that are garbage collected.”
Engineers on Hacker News were more shocked at its inclusion in the first place than its removal. “At first glance, I thought this was satirical,” one said.
Did you know C++ had garbage collection?
Comments:
Geodesic Systems, a long defunct company, built and sold a C++ garbage collector, and pushed to get programmatic support into the language. They were bought out by Symantec around that time. https://dl.acm.org/doi/abs/10.1145/1542431.1542437