Programming tool for profiling, memory debugging and memory leak detection
POPULARITY
This is a recap of the top 10 posts on Hacker News on August 28th, 2024.This podcast was generated by wondercraft.ai(00:36): Air Con: $1697 for an on/off switchOriginal post: https://news.ycombinator.com/item?id=41386319&utm_source=wondercraft_ai(01:45): OpenAI is good at unminifying codeOriginal post: https://news.ycombinator.com/item?id=41389185&utm_source=wondercraft_ai(02:52): Bypassing airport security via SQL injectionOriginal post: https://news.ycombinator.com/item?id=41392128&utm_source=wondercraft_ai(04:01): Low Cost Mini PCsOriginal post: https://news.ycombinator.com/item?id=41389931&utm_source=wondercraft_ai(05:15): UK rail minister got engineer sacked for raising safety concernsOriginal post: https://news.ycombinator.com/item?id=41388888&utm_source=wondercraft_ai(06:34): HDMI Forum rejects AMD's HDMI 2.1 open-source driverOriginal post: https://news.ycombinator.com/item?id=41386667&utm_source=wondercraft_ai(07:45): A post by Guido van Rossum removed for violating Python community guidelinesOriginal post: https://news.ycombinator.com/item?id=41385546&utm_source=wondercraft_ai(08:57): Twenty Years of Valgrind (2022)Original post: https://news.ycombinator.com/item?id=41384118&utm_source=wondercraft_ai(10:17): Judges rule Big Tech's free ride on Section 230 is overOriginal post: https://news.ycombinator.com/item?id=41391868&utm_source=wondercraft_ai(11:27): New 2GB Raspberry Pi 5 has 33% smaller die, 30% idle power savingsOriginal post: https://news.ycombinator.com/item?id=41392142&utm_source=wondercraft_aiThis is a third-party project, independent from HN and YC. Text and audio generated using AI, by wondercraft.ai. Create your own studio quality podcast with text as the only input in seconds at app.wondercraft.ai. Issues or feedback? We'd love to hear from you: team@wondercraft.ai
Guest Daniel Stenberg Panelists Richard Littauer | Leslie Hawthorne Show Notes Hello and welcome to Sustain! The podcast where we talk about sustaining open source for the long haul. On this episode, Richard and Leslie are super excited to have as their guest, Daniel Stenberg, Lead Developer of the cURL project. Today, Daniel shares his journey of how he got involved with cURL, its development over the years, the community behind it, and funding the development. Our conversation also touches on the upcoming release of cURL, the future of cURL, Daniel's desire to grow the project, the benefits of people to collaborate with and provide support, and the role of cURL in the broader landscape of internet protocols and digital infrastructure. Press download to hear more! [00:01:24] Daniel shares the story of how he became involved with the cURL project. [00:03:55] We hear about the community behind cURL and the number of maintainers involved. He mentions having over 1,100 commit authors in the current repository. [00:05:29] The discussion shifts to funding cURL's development. He tells us for the first twenty one years he had it as a spare time project while having a separate job. [00:06:28] He explains the challenge monetizing a free software project but emphasizes the value he provides to customers in terms of support and expertise. [00:08:40] Leslie raises the topic of Daniel's positive and generous attitude despite giving away free software and not always receiving equal support in return. He explains as long as he has enough customers to sustain his work, he remains calm and relaxed. [00:11:46] Daniel discusses the development of his mindset and how he acquired a positive outlook over the past 25 years. He attributes his confidence to proven success, test cases that validate code functionality, and feedback form the large install base of cURL. [00:12:45] Richard asks Daniel about his plans for the future of cURL, and Daniel expresses a desire to expand the team and highlights the benefits of having additional people to collaborate with and provide support. [00:13:56] Leslie takes the opportunity to promote wolfSSL, the company Daniel collaborates with to support cURLS's growth and provide services to more users, and he explains why he's working with wolfSSL. [00:17:02] Richard raises the topic funding individual maintainers with the broader open source ecosystem, and Daniel acknowledges that his support contract model might not work for all projects, as it requires a certain project size, importance, and ecosystem. [00:19:04] Security issues, particularly zero-day exploit is brought up, and Daniel emphasizes the significance of security and mentions that maintaining cURL involves devoting a considerable amount of time to fixing bugs, addressing support questions, and handling security concerns. [00:20:32] We hear how cURL fits into the wider landscape of internet protocols and digital infrastructure. Daniel talks about the importance of maintaining backward compatibility in cURL, and how he sees cURL as a tool that enables users to transfer data over the internet effectively. [00:22:53] We hear about Uncurled, which is a book by Daniel. [00:24:32] Daniel tells us what many companies would rather not say, such as companies that choose not to disclose their support or donations to cURL. They prefer to remain anonymous and keep their contributions private. [00:28:02] He acknowledges that extracting significant value solely from donations can be challenging and offering support contracts provides a way to generate more revenue and provide additional value to companies. [00:29:19] What's hard for Daniel? He attributes his optimistic and positive mindset to his personality and outlook on life, but he also mentions facing struggles. [00:34:24] Find out where you can follow Daniel on the web. Quotes [00:07:35] “My biggest way in is when my customers run into a bug. So, I have this weird incentive to not do it too good.” [00:10:32] “When you've been around for a long time and you know if things go well, I can be around for a long time further as well.” [00:21:24] “We haven't done a breaking change in 16 years.” [00:30:09] “The hard part is the humans, the community, interacting with others, all the cultures, languages, and people.” Spotlight [00:35:03] Leslie's spotlight is The Swedish Internet Foundation. [00:35:47] Richard's spotlight is WC and Cat. [00:36:10] Daniel's spotlight is Valgrind. Links SustainOSS (https://sustainoss.org/) SustainOSS Twitter (https://twitter.com/SustainOSS?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor) SustainOSS Discourse (https://discourse.sustainoss.org/) podcast@sustainoss.org (mailto:podcast@sustainoss.org) SustainOSS Mastodon (https://mastodon.social/tags/sustainoss) Richard Littauer Twitter (https://twitter.com/richlitt?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor) Leslie Hawthorne Twitter (https://twitter.com/lhawthorn) Daniel Stenberg Website (https://daniel.haxx.se/) Daniel Stenberg Twitter (https://twitter.com/bagder?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor) Daniel Stenberg Mastodon (https://mastodon.social/@bagder) cURL (https://curl.se/) wolfSSL (https://www.wolfssl.com/) Uncurled (https://un.curl.dev/) Everything curl (https://everything.curl.dev/) The Swedish Internet Foundation (https://internetstiftelsen.se/en/) wc (Unix) (https://en.wikipedia.org/wiki/Wc_(Unix)) Valgrind (https://valgrind.org/) Credits Produced by Richard Littauer (https://www.burntfen.com/) Edited by Paul M. Bahr at Peachtree Sound (https://www.peachtreesound.com/) Show notes by DeAnn Bahr Peachtree Sound (https://www.peachtreesound.com/) Special Guest: Daniel Stenberg.
Antony Peacock joins Timur and Phil. After rounding up the news, we chat with Antony about what it's like to work in finance as a C++ developer, the similarities and differences to games dev and how you can break in to a role in finance. We also discuss what it's like to work in tech as someone with dyslexia. Show Notes News Visual Studio 17.6 released Valgrind 3.21 released Snitch 1.1 Meeting C++ Call for Speakers (until June 18) CppCon Call for Speakers (until June 25) Links P2547R1 - "Language Support for Customisable Functions" Maven on C++ "How to get into the tech industry" (Maven's blog) Interview question at Maven "C++ 20 Techniques for Algorithmic Trading" (webinar) "C++ Concepts and Fireside Chat on Algorithmic Trading" (webinar) "C++ and Python for Algorithmic Trading" (webinar) Example algo trading code from webinar series (1) Example algo trading code from webinar series (2) Antony's article on Neurodiversity and Dyslexia Diversita (UK) P0201R6 - "polymorphic_value: A Polymorphic Value Type for C++" P1950R2 - "indirect_value: A Free-Store-Allocated Value Type For C++" EVE - the Expressive Vector Engine P1385R7 - "Linear Algebra" P1935R2 - "A C++ Approach to Physical Units" mp-units - Mateusz Pusz' implementation of physical units P2547R0 - "Language support for customisable functions" "Why tag_invoke is not the solution I want" - Barry Revzin
Rob and Matt are joined by Justin Meiners. They first talk about a big boost library update, and whether Valgrind is still useful compared to sanitizers. Then they talk to Justin Meiners about Alex Stepanov, his contribution to the STL and some of his courses that are still relevant to today's C++ programmers. News Boost v1.77.0 Intel C/C++ compilers complete adoption of LLVM Valgrind - A neglected tool from the shadows or a serious debugging tool? Links Efficient Programming with Components - YouTube Playlist Efficient Programming with Components - Notes by Justin Meiners Merge with fewer comparisons (using goto) Sponsors C++ Builder
Hi everyone! We had a great time with Thorsten Lorenz. In this episode, Thorsten introduced to us how RID works by integrating Rust into your Dart or Flutter app by annotating it; we found the entire idea fascinating! Watch the video now and share it with your friends!You can find Thorsten here:Twitter: https://twitter.com/thlorenzGithub: https://github.com/thlorenzHis website: https://thlorenz.comFurther Links:Rid Docs: https://thlorenz.com/rid-site/Sponsors: https://github.com/sponsors/thlorenz Poker App PWA: https://youtu.be/bKxtwzr0sy0 Batufo Flutter Game: https://thlorenz.com/batufo/ Sponsorware Explained: https://github.com/sponsorware/docs Flame Engine: https://flame-engine.org/docs/#/Seed: https://seed-rs.org/Rust Nomicon: https://doc.rust-lang.org/nomicon/Valgrind: https://valgrind.org/JS Interop in Flutter/Dart: https://pub.dev/packages/jsWASM: https://webassembly.org/Todo App: https://thlorenz.com/rid-site/docs/examples/flutter-todo-app/Credits:
From Hopper, a classroom queueing platform used across the CSE school, to GDB Tools and Valgrind, which help students decipher their debugging programs, our next Project Showcase guest has worked on an impressive range of projects that make the day-to-day life of a CSE student a little bit easier. Join Angeni and Julian as they chat with CSESoc’s very own Grievance Officer Tom Kunc, to find out what motivates him, his advice for students looking to start their own projects (including perhaps an invitation into his DMs!), and whether Hopper might have anything to do with Minecraft.
PHP Internals News: Episode 20: Test Infrastructure Improvements London, UK Thursday, July 25th 2019, 09:20 BST In this episode of "PHP Internals News" I chat with Nikita Popov (Twitter, GitHub) about improvements he and others have made to test PHP on many more platforms and in many more configurations. The RSS feed for this podcast is https://derickrethans.nl/feed-phpinternalsnews.xml, you can download this episode's MP3 file, and it's available on Spotify and iTunes. There is a dedicated website: https://phpinternals.news Show Notes Valgrind GCC sanitisers Credits Music: Chipper Doodle v2 — Kevin MacLeod (incompetech.com) — Creative Commons: By Attribution 3.0
Sean and Sam talk about debugging a memory leak with Crates.io when upgrading to Rust 1.32 that could only be reproduced in production. The problem was related to the jemalloc memory allocator being used in the newer version of Rust. Such an issue causes an impact, regardless of the language being used. Many memory allocators exist, but you're usually not forced to utilize a specific one or library. Sean was able to find allocations from three places: Libgit 2, OpenSSL, and MIME-types. Is there a single culprit? Or, just a ton of tiny paper cuts? The last resort would be to run Valgrind in production. In addition, Sam expresses his frustration when giving an update on progress with fixtures and script repositories for Ruby autoformatter (Rubyfmt). Merb Jemalloc Sidekiq Heroku ephemeral file system Cargo release build Libgit2 Rust mime types library Generational garbage collection Rubyfmt Swift formatter proposal The Yak Shave on twitter Sam on twitter Sean on twitter
Kommer Hels Tjänare klara av att ta grinden? Kommer Adam lyckas fly undan hans resa till Hels Rike? En strid väntar Valkyrierna och du vill inte missa den! --- CAST & CREW Amy Deasismont som Sigrun, Saga Becker som Mist, Karin Bertling som Modgunn, Edvin Endre som Adam, Sara Kennedy som Befälhavaren, Adina Romare som Modgunns närmste syster, Victor Beer som Vålnaden. Ida Gyllensten, Olle Cardell, Jeanette Hultner, Pernilla Romare, och Gabriel Klints ungdomsgrupp är också med i serien. Manus och regi: Hillevi Gustafson Ljuddesign: Mathias Schlegel Producent: Amanda Romare Projektledare: Adina Romare Projektassistent: Maja Lindberg Valgrind är en del av DenAndaSidan.se, ett projekt om ångest, död och annan shit kring livet. Följ oss gärna på Instagram @den_andra_sidan Valgrind skapades med hjälp av Allmänna Arvsfonden, Region Skånes Sociala Investeringsfond, Film i Skåne, and BoostHbg.
Adam tappar hoppet precis när Sigrun hittar honom. Det är dags att acceptera att han är död. Modgunn försöker hålla hennes systrars mod uppe. --- CAST & CREW Amy Deasismont som Sigrun, Saga Becker som Mist, Karin Bertling som Modgunn, Edvin Endre som Adam, Sara Kennedy som Befälhavaren, Adina Romare som Modgunns närmste syster, Victor Beer som Vålnaden. Ida Gyllensten, Olle Cardell, Jeanette Hultner, Pernilla Romare, och Gabriel Klints ungdomsgrupp är också med i serien. Manus och regi: Hillevi Gustafson Ljuddesign: Mathias Schlegel Producent: Amanda Romare Projektledare: Adina Romare Projektassistent: Maja Lindberg Valgrind är en del av DenAndaSidan.se, ett projekt om ångest, död och annan shit kring livet. Följ oss gärna på Instagram @den_andra_sidan Valgrind skapades med hjälp av Allmänna Arvsfonden, Region Skånes Sociala Investeringsfond, Film i Skåne, and BoostHbg.
Adam försöker desperat komma tillbaka till livet, men stöter istället på en hemsökelse. Sigrun försöker hitta Adam innan Hels Tjänare tar honom igen. Och mist konfronterar befälhavaren men ödesdigra konsekvenser. --- CAST & CREW Amy Deasismont som Sigrun, Saga Becker som Mist, Karin Bertling som Modgunn, Edvin Endre som Adam, Sara Kennedy som Befälhavaren, Adina Romare som Modgunns närmste syster, Victor Beer som Vålnaden. Ida Gyllensten, Olle Cardell, Jeanette Hultner, Pernilla Romare, och Gabriel Klints ungdomsgrupp är också med i serien. Manus och regi: Hillevi Gustafson Ljuddesign: Mathias Schlegel Producent: Amanda Romare Projektledare: Adina Romare Projektassistent: Maja Lindberg Valgrind är en del av DenAndaSidan.se, ett projekt om ångest, död och annan shit kring livet. Följ oss gärna på Instagram @den_andra_sidan Valgrind skapades med hjälp av Allmänna Arvsfonden, Region Skånes Sociala Investeringsfond, Film i Skåne, and BoostHbg.
Mist och Sigrun försöker rädda Adam från Hels Tjänare, fast att Befälhavaren sa till dem att gå till Malmö. Modgunn försöker desperat få hennes systrar att förstå vikten av hennes plan. --- CAST & CREW Amy Deasismont som Sigrun, Saga Becker som Mist, Karin Bertling som Modgunn, Edvin Endre som Adam, Sara Kennedy som Befälhavaren, Adina Romare som Modgunns närmste syster, Victor Beer som Vålnaden. Ida Gyllensten, Olle Cardell, Jeanette Hultner, Pernilla Romare, och Gabriel Klints ungdomsgrupp är också med i serien. Manus och regi: Hillevi Gustafson Ljuddesign: Mathias Schlegel Producent: Amanda Romare Projektledare: Adina Romare Projektassistent: Maja Lindberg Valgrind är en del av DenAndaSidan.se, ett projekt om ångest, död och annan shit kring livet. Följ oss gärna på Instagram @den_andra_sidan Valgrind skapades med hjälp av Allmänna Arvsfonden, Region Skånes Sociala Investeringsfond, Film i Skåne, and BoostHbg.
Deras befälhavare är inte helt nöjd med deras insats och ger Mist och Sigrun strikta order om att hämta den försvunna själen nu. Själen, Adam, befinner sig i en farlig situation med Modgunn och de andra av Hels tjänare. --- CAST & CREW Amy Deasismont som Sigrun, Saga Becker som Mist, Karin Bertling som Modgunn, Edvin Endre som Adam, Sara Kennedy som Befälhavaren, Adina Romare som Modgunns närmste syster, Victor Beer som Vålnaden. Ida Gyllensten, Olle Cardell, Jeanette Hultner, Pernilla Romare, och Gabriel Klints ungdomsgrupp är också med i serien. Manus och regi: Hillevi Gustafson Ljuddesign: Mathias Schlegel Producent: Amanda Romare Projektledare: Adina Romare Projektassistent: Maja Lindberg Valgrind är en del av DenAndaSidan.se, ett projekt om ångest, död och annan shit kring livet. Följ oss gärna på Instagram @den_andra_sidan Valgrind skapades med hjälp av Allmänna Arvsfonden, Region Skånes Sociala Investeringsfond, Film i Skåne, and BoostHbg.
Mist och Sigrun har sen Vikingatider tagit hand om själarna av de som dör i Sverige. Och det har alltid gått bra, fram tills idag när en av deras själar försvinner. --- CAST & CREW Amy Deasismont som Sigrun, Saga Becker som Mist, Karin Bertling som Modgunn, Edvin Endre som Adam, Sara Kennedy som Befälhavaren, Adina Romare som Modgunns närmste syster, Victor Beer som Vålnaden. Ida Gyllensten, Olle Cardell, Jeanette Hultner, Pernilla Romare, och Gabriel Klints ungdomsgrupp är också med i serien. Manus och regi: Hillevi Gustafson Ljuddesign: Mathias Schlegel Producent: Amanda Romare Projektledare: Adina Romare Projektassistent: Maja Lindberg Valgrind är en del av DenAndaSidan.se, ett projekt om ångest, död och annan shit kring livet. Följ oss gärna på Instagram @den_andra_sidan Valgrind skapades med hjälp av Allmänna Arvsfonden, Region Skånes Sociala Investeringsfond, Film i Skåne, and BoostHbg.
Ny svensk seriepodd! Historien följer de två valkyriorna Mist och Sigrun vars uppgift är att hämta avlidna människors själar och föra dem till grinden som leder till Valhalla. De saknar ofta den gamla tiden då de hämtade hjältar på slagfälten, men kan ändå stoltsera med en helt fläckfri meritförteckning av perfekt utförda uppdrag. Det vill säga tills en dag då de får i uppgift att åka till Malmö och till sin förskräckelse upptäcker att själen de ska hämta är spårlöst försvunnen. Detta är början på en febril och kaosartad jakt med ett enda mål – att hitta själen innan den går sönder och förvandlas till en vålnad. --- CAST & CREW Amy Deasismont som Sigrun, Saga Becker som Mist, Karin Bertling som Modgunn, Edvin Endre som Adam, Sara Kennedy som Befälhavaren, Adina Romare som Modgunns närmste syster, Victor Beer som Vålnaden. Ida Gyllensten, Olle Cardell, Jeanette Hultner, Pernilla Romare, och Gabriel Klints ungdomsgrupp är också med i serien. Manus och regi: Hillevi Gustafson Ljuddesign: Mathias Schlegel Producent: Amanda Romare Projektledare: Adina Romare Projektassistent: Maja Lindberg Valgrind är en del av DenAndaSidan.se, ett projekt om ångest, död och annan shit kring livet. Följ oss gärna på Instagram @den_andra_sidan Valgrind skapades med hjälp av Allmänna Arvsfonden, Region Skånes Sociala Investeringsfond, Film i Skåne, and BoostHbg.
Hah! Sunday bloody sunday. Here's some unexpected finish brutality, italian floridian-isch death metal, swedish elite black metal, deathbore and masterful italian vintage black magic. A sunday to remember! Disclaimer: It's 'June 44', not June 44th. I apologize to all affected by this mispronunciation. Whole lotta dissatisfaction! Playlist: Blood Chalice - Sepulchral Chants of Self-Destruction Valgrind - Third and Last Marduk - June 44 A Scar For The Wicked - A Place Where Death Resides Abysmal Grief - Maleficence
In the dramatic finale to Grimnismal, Odin reveals some of his deepest wisdom of life and the world. Hear more about Valhalla, the hall of Odin, and Yggdrasil, the World Tree. Find out how the story from Episode 7 ends, and hear Odin reveal his true form. This is the Northern Myths Podcast, an archetypal exploration of the myths and legends of Northern Europe, including Norse mythology, the Finnish Kalevala, and more. If you'd like to support the show you can support us on Patreon here: Northern Myths Podcast Patreon The Poetic Edda is the primary original source for the myths and legends of Norse Mythology. The Poetic Edda includes everything from the creation of the world to its destruction in Ragnarok, from the adventures of Thor to the wisdom of Odin. We are exploring these timeless stories to learn how the Norse people understood the world, and how we can apply their worldview to life today. Check out our YouTube channel for videos of all episodes and interesting clips of the show: Northern Myths Podcast YouTube Channel If you'd like to follow along with our reading of the Poetic Edda you can pick up the great translation of the Poetic Edda we're reading by Jackson Crawford, you can purchase it here: The Poetic Edda by Jackson Crawford It is also available as an audiobook which we highly recommend. Dr. Crawford has a great voice for it, and actually pronounces everything properly. It's a must have if you like our show! Available here: The Poetic Edda Audiobook You can find us on Facebook, Twitter, and Instagram:FacebookTwitterInstagram Show Outline: 0:00:00 - Introduction and Recap of Grimnismal 10:04:54 - Stanza 22: Valgrind, a holy hall with holy doors0:17:34 - Stanza 23: Bilskirnir, hall of Thor, has many rooms0:24:48 - Stanza 24: The number of doors and warriors in Valhalla0:31:27 - Stanza 25: Heidrun the goat and the unlimited mead in Valhalla0:40:46 - Stanza 26: Eikthyrnir the stag and Hvergelmir0:54:36 - Stanza 27-28: The names of many rivers1:02:19 - Stanza 29: Thor wading rivers and Bifrost bridge burning1:09:24 - Stanza 30: Rivers the Gods ride over to Yggdrasil the World Tree1:14:27 - Stanza 31: Roots below Yggdrasil the World Tree, the known, unknown, and chaos1:32:28 - Stanza 32: Ratatosk carrying insults between the Eagle and Nidhogg1:43:52 - Stanza 33: The four deer knawing on Yggdrasil the World Tree1:49:18 - Stanza 34: The snakes beneath Yggdrasil the World Tree1:54:57 - Stanza 35: The pain that Yggdrasil the World Tree endures1:59:41 - Stanza 36: List of Valkyries2:08:52 - Stanza 37-39: The horses that pull the sun, the sun's shield, and the wolves that chase the sun.2:17:29 - Stanza 40-41: The formation of the world from the parts of Ymir2:24:47 - Stanza 42: The reward for Odin being taken down from the fire2:28:36 - Stanza 43-44: All the best things2:39:00 - Stanza 45: Odin reveals himself to Agnar2:45:45 - Stanza 46-48: The many names of Odin2:53:38 - Stanza 49-50: More names of Odin3:00:55 - Stanza 51-54: Odin reveals himself to Geirroth and sees Geirroth's death3:10:54 - Prose Outtro3:17:30 - Recap, conclusion, and acknowledgments If you'd like to follow along with us or learn more about the ideas we talk about on the show, we have a list of recommended books on our website. Included are our recommended copies of the Poetic Edda and the Kalevala, as well as books about archetypal narrative, comparative religion, and more: Recommended Books We also have Northern Myths Podcast merchandise available at our official shop. You can find us on Facebook, Twitter, and Instagram:FacebookTwitterInstagram
New ZFS features landing in FreeBSD, MAP_STACK for OpenBSD, how to write safer C code with Clang’s address sanitizer, Michael W. Lucas on sponsor gifts, TCP blackbox recorder, and Dell disk system hacking. Headlines [A number of Upstream ZFS features landed in FreeBSD this week] 9188 increase size of dbuf cache to reduce indirect block decompression With compressed ARC (6950) we use up to 25% of our CPU to decompress indirect blocks, under a workload of random cached reads. To reduce this decompression cost, we would like to increase the size of the dbuf cache so that more indirect blocks can be stored uncompressed. If we are caching entire large files of recordsize=8K, the indirect blocks use 1/64th as much memory as the data blocks (assuming they have the same compression ratio). We suggest making the dbuf cache be 1/32nd of all memory, so that in this scenario we should be able to keep all the indirect blocks decompressed in the dbuf cache. (We want it to be more than the 1/64th that the indirect blocks would use because we need to cache other stuff in the dbuf cache as well.) In real world workloads, this won't help as dramatically as the example above, but we think it's still worth it because the risk of decreasing performance is low. The potential negative performance impact is that we will be slightly reducing the size of the ARC (by ~3%). 9166 zfs storage pool checkpoint The idea of Storage Pool Checkpoint (aka zpool checkpoint) deals with exactly that. It can be thought of as a “pool-wide snapshot” (or a variation of extreme rewind that doesn’t corrupt your data). It remembers the entire state of the pool at the point that it was taken and the user can revert back to it later or discard it. Its generic use case is an administrator that is about to perform a set of destructive actions to ZFS as part of a critical procedure. She takes a checkpoint of the pool before performing the actions, then rewinds back to it if one of them fails or puts the pool into an unexpected state. Otherwise, she discards it. With the assumption that no one else is making modifications to ZFS, she basically wraps all these actions into a “high-level transaction”. More information 8484 Implement aggregate sum and use for arc counters In pursuit of improving performance on multi-core systems, we should implements fanned out counters and use them to improve the performance of some of the arc statistics. These stats are updated extremely frequently, and can consume a significant amount of CPU time. And a small bug fix authored by me: 9321 arcloancompressedbuf() can increment arcloanedbytes by the wrong value arcloancompressedbuf() increments arcloanedbytes by psize unconditionally In the case of zfscompressedarcenabled=0, when the buf is returned via arcreturnbuf(), if ARCBUFCOMPRESSED(buf) is false, then arcloanedbytes is decremented by lsize, not psize. Switch to using arcbufsize(buf), instead of psize, which will return psize or lsize, depending on the result of ARCBUF_COMPRESSED(buf). MAP_STACK for OpenBSD Almost 2 decades ago we started work on W^X. The concept was simple. Pages that are writable, should not be executable. We applied this concept object by object, trying to seperate objects with different qualities to different pages. The first one we handled was the signal trampoline at the top of the stack. We just kept making changes in the same vein. Eventually W^X came to some of our kernel address spaces also. The fundamental concept is that an object should only have the permissions necessary, and any other operation should fault. The only permission separations we have are kernel vs userland, and then read, write, and execute. How about we add another new permission! This is not a hardware permission, but a software permission. It is opportunistically enforced by the kernel. the permission is MAPSTACK. If you want to use memory as a stack, you must mmap it with that flag bit. The kernel does so automatically for the stack region of a process's stack. Two other types of stack occur: thread stacks, and alternate signal stacks. Those are handled in clever ways. When a system call happens, we check if the stack-pointer register points to such a page. If it doesn't, the program is killed. We have tightened the ABI. You may no longer point your stack register at non-stack memory. You'll be killed. This checking code is MI, so it works for all platforms. Since page-permissions are generally done on page boundaries, there is caveat that thread and altstacks must now be page-sized and page-aligned, so that we can enforce the MAPSTACK attribute correctly. It is possible that a few ports need some massaging to satisfy this condition, but we haven't found any which break yet. A syslog_r has been added so that we can identify these failure cases. Also, the faulting cases are quite verbose for now, to help identify the programs we need to repair. **iXsystems** Writing Safer C with the Clang Address Sanitizer We wanted to improve our password strength algorithm, and decided to go for the industry-standard zxcvbn, from the people at Dropbox. Our web front-end would use the default Javascript library, and for mobile and desktop, we chose to use the C implementation as it was the lowest common denominator for all platforms. Bootstrapping all of this together was done pretty fast. I had toyed around with a few sample passwords so I decided to run it through the test suite we had for the previous password strength evaluator. The test generates a large number of random passwords according to different rules and expects the strength to be in a given range. But the test runner kept crashing with segmentation faults. It turns out the library has a lot of buffer overflow cases that are usually "harmless", but eventually crash your program when you run the evaluator function too much. I started fixing the cases I could see, but reading someone else's algorithms to track down tiny memory errors got old pretty fast. I needed a tool to help me. That's when I thought of Clang's Address Sanitizer. AddressSanitizer is a fast memory error detector. It consists of a compiler instrumentation module and a run-time library Let's try the sanitizer on a simple program. We'll allocate a buffer on the heap, copy each character of a string into it, and print it to standard output. + The site walks through a simple example which contains an error, it writes past the end of a buffer + The code works as expected, and nothing bad happens. It must be fine… + Then they compile it again with the address sanitizer actived So what can we gather from that pile of hex? Let's go through it line by line. AddressSanitizer found a heap buffer overflow at 0x60200000ef3d, a seemingly valid address (not NULL or any other clearly faulty value). + ASAN points directly to the line of code that is causing the problem We're writing outside of the heap in this instruction. And AddressSanitizer isn't having it. This is definitely one of my favorite indications. In addition to telling which line in the code failed and where in the memory the failure happened, you get a complete description of the closest allocated region in memory (which is probably the region you were trying to access). + They then walk through combining this with lldb, the Clang debugger, to actually interactively inspect the state of the problem when an invalid memory access happens Back to my practical case, how did I put the address sanitizer to good use? I simply ran the test suite, compiled with the sanitizer, with lldb. Sure enough, it stopped on every line that could cause a crash. It turns out there were many cases where zxcvbn-c wrote past the end of allocated buffers, on the heap and on the stack. I fixed those cases in the C library and ran the tests again. Not a segfault in sight! I've used memory tools in the past, but they were usually unwieldy, or put such a toll on performance that they were useless in any real-life case. Clang's address sanitizer turned out to be detailed, reliable, and surprisingly easy to use. I've heard of the miracles of Valgrind but macOS hardly supports it, making it a pain to use on my MacBook Pro. Coupled with Clang's static analyzer, AddressSanitizer is going to become a mandatory stop for evaluating code quality. It's also going to be the first tool I grab when facing confusing memory issues. There are many more case where I could use early failure and memory history to debug my code. For example, if a program crashes when accessing member of a deallocated object, we could easily trace the event that caused the deallocation, saving hours of adding and reading logs to retrace just what happened. News Roundup On sponsor gifts Note the little stack of customs forms off to the side. It’s like I’ve learned a lesson from standing at the post office counter filling out those stupid forms. Sponsors should get their books soon. This seems like an apropos moment to talk about what I do for print sponsors. I say I send them “a gift,” but what does that really mean? The obvious thing to ship them is a copy of the book I’ve written. Flat-out selling print books online has tax implications, though. Sponsors might have guessed that they’d get a copy of the book. But I shipped them the hardcover, which isn’t my usual practice. That’s because I send sponsors a gift. As it’s a gift, I get to choose what I send. I want to send them something nice, to encourage them to sponsor another book. It makes no sense for me to send a sponsor a Singing Wedgie-O-Gram. (Well, maybe a couple sponsors. You know who you are.) The poor bastards who bought into my scam–er, sponsored my untitled book–have no idea what’s coming. As of right now, their sensible guesses are woefully incomplete. Future books? They might get a copy of the book. They might get book plus something. They might just get the something. Folks who sponsor the jails book might get a cake with a file in it. Who knows? It’s a gift. It’s my job to make that gift worthwhile. And to amuse myself. Because otherwise, what’s the point? TCP Blackbox Recorder ``` Add the "TCP Blackbox Recorder" which we discussed at the developer summits at BSDCan and BSDCam in 2017. The TCP Blackbox Recorder allows you to capture events on a TCP connection in a ring buffer. It stores metadata with the event. It optionally stores the TCP header associated with an event (if the event is associated with a packet) and also optionally stores information on the sockets. It supports setting a log ID on a TCP connection and using this to correlate multiple connections that share a common log ID. You can log connections in different modes. If you are doing a coordinated test with a particular connection, you may tell the system to put it in mode 4 (continuous dump). Or, if you just want to monitor for errors, you can put it in mode 1 (ring buffer) and dump all the ring buffers associated with the connection ID when we receive an error signal for that connection ID. You can set a default mode that will be applied to a particular ratio of incoming connections. You can also manually set a mode using a socket option. This commit includes only basic probes. rrs@ has added quite an abundance of probes in his TCP development work. He plans to commit those soon. There are user-space programs which we plan to commit as ports. These read the data from the log device and output pcapng files, and then let you analyze the data (and metadata) in the pcapng files. Reviewed by: gnn (previous version) Obtained from: Netflix, Inc. Relnotes: yes Differential Revision: https://reviews.freebsd.org/D11085 ``` **Digital Ocean** Outta the way, KDE4 KDE4 has been rudely moved aside on FreeBSD. It still installs (use x11/kde4) and should update without a problem, but this is another step towards adding modern KDE (Plasma 5 and Applications) to the official FreeBSD Ports tree. This has taken a long time mostly for administrative reasons, getting all the bits lined up so that people sticking with KDE4 (which, right now, would be everyone using KDE from official ports and packages on FreeBSD) don’t end up with a broken desktop. We don’t want that. But now that everything Qt4 and kdelibs4-based has been moved aside by suffixing it with -kde4, we have the unsuffixed names free to indicate the latest-and-greatest from upstream. KDE4 users will see a lot of packages moving around and being renamed, but no functional changes. Curiously, the KDE4 desktop depends on Qt5 and KDE Frameworks 5 — and it has for quite some time already, because the Oxygen icons are shared with KDE Frameworks, but primarily because FileLight was updated to the modern KDE Applications version some time ago (the KDE4 version had some serious bugs, although I can not remember what they were). Now that the names are cleaned up, we could consider giving KDE4 users the buggy version back. From here on, we’ve got the following things lined up: Qt 5.10 is being worked on, except for WebEngine (it would slow down an update way too much), because Plasma is going to want Qt 5.10 soon. CMake 3.11 is in the -rc stage, so that is being lined up. The kde5-import branch in KDE-FreeBSD’s copy of the FreeBSD ports tree (e.g. Area51) is being prepped and polished for a few big SVN commits that will add all the new bits. So we’ve been saying Real Soon Now ™ for years, but things are Realer Sooner Nower ™ now. Dell FS12-NV7 and other 2U server (e.g. C6100) disk system hacking A while back I reviewed the Dell FS12-NV7 – a 2U rack server being sold cheap by all and sundry. It’s a powerful box, even by modern standards, but one of its big drawbacks is the disk system it comes with. But it needn’t be. There are two viable solutions, depending on what you want to do. You can make use of the SAS backplane, using SAS and/or SATA drives, or you can go for fewer SATA drives and free up one or more PCIe slots as Plan B. You probably have an FS12 because it looks good for building a drive array (or even FreeNAS) so I’ll deal with Plan A first. Like most Dell servers, this comes with a Dell PERC RAID SAS controller – a PERC6/i to be precise. This ‘I’ means it has internal connectors; the /E is the same but its sockets are external. The PERC connects to a twelve-slot backplane forming a drive array at the front of the box. More on the backplane later; it’s the PERCs you need to worry about. The PERC6 is actually an LSI Megaraid 1078 card, which is just the thing you need if you’re running an operating system like Windows that doesn’t support a volume manager, striping and other grown-up stuff. Or if your OS does have these features, but you just don’t trust it. If you are running such an OS you may as well stick to the PERC6, and good luck to you. If you’re using BSD (including FreeNAS), Solaris or a Linux distribution that handles disk arrays, read on. The PERC6 is a solution to a problem you probably don’t have, but in all other respects its a turkey. You really want a straightforward HBA (Host Bus Adapter) that allows your clever operating system to talk directly with the drives. Any SAS card based on the 1078 (such as the PERC6) is likely to have problems with drives larger than 2Tb. I’m not completely sure why, but I suspect it only applies to SATA. Unfortunately I don’t have any very large SAS drives to test this theory. A 2Tb limit isn’t really such a problem when you’re talking about a high performance array, as lots of small drives are a better option anyway. But it does matter if you’re building a very large datastore and don’t mind slower access and very significant resilvering times when you replace a drive. And for large datastores, very large SATA drives save you a whole lot of cash. The best capacity/cost ratio is for 5Gb SATA drives Some Dell PERCs can be re-flashed with LSI firmware and used as a normal HBA. Unfortunately the PERC6 isn’t one of them. I believe the PERC6/R can be, but those I’ve seen in a FS12 are just a bit too old. So the first thing you’ll need to do is dump them in the recycling or try and sell them on eBay. There are actually two PERC6 cards in most machine, and they each support eight SAS channels through two SFF-8484 connectors on each card. Given there are twelve drives slots, one of the PERCs is only half used. Sometimes they have a cable going off to a battery located near the fans. This is used in a desperate attempt to keep the data in the card’s cache safe in order to avoid write holes corrupting NTFS during a power failure, although the data on the on-drive caches won’t be so lucky. If you’re using a file system like that, make sure you have a UPS for the whole lot. But we’re going to put the PERCs out of our misery and replace them with some nice new LSI HBAs that will do our operating system’s bidding and let it talk to the drives as it knows best. But which to pick? First we need to know what we’re connecting. Moving to the front of the case there are twelve metal drive slots with a backplane behind. Dell makes machines with either backplanes or expanders. A backplane has a 1:1 SAS channel to drive connection; an expander takes one SAS channel and multiplexes it to (usually) four drives. You could always swap the blackplane with an expander, but I like the 1:1 nature of a backplane. It’s faster, especially if you’re configured as an array. And besides, we don’t want to spend more money than we need to, otherwise we wouldn’t be hot-rodding a cheap 2U server in the first place – expanders are expensive. Bizarrely, HBAs are cheap in comparison. So we need twelve channels of SAS that will connect to the sockets on the backplane. The HBA you will probably want to go with is an LSI, as these have great OS support. Other cards are available, but check that the drivers are also available. The obvious choice for SAS aficionados is the LSI 9211-8i, which has eight internal channels. This is based on an LSI 2000 series chip, the 2008, which is the de-facto standard. There’s also four-channel -4i version, so you could get your twelve channels using one of each – but the price difference is small these days, so you might as well go for two -8i cards. If you want cheaper there are 1068-based equivalent cards, and these work just fine at about half the price. They probably won’t work with larger disks, only operate at 3Gb and the original SAS standard. However, the 2000 series is only about £25 extra and gives you more options for the future. A good investment. Conversely, the latest 3000 series cards can do some extra stuff (particularly to do with active cables) but I can’t see any great advantage in paying megabucks for one unless you’re going really high-end – in which case the NV12 isn’t the box for you anyway. And you’d need some very fast drives and a faster backplane to see any speed advantage. And probably a new motherboard…. Whether the 6Gb SAS2 of the 9211-8i is any use on the backplane, which was designed for 3Gb, I don’t know. If it matters that much to you you probably need to spend a lot more money. A drive array with a direct 3Gb to each drive is going to shift fast enough for most purposes. Once you have removed the PERCs and plugged in your modern-ish 9211 HBAs, your next problem is going to be the cable. Both the PERCs and the backplane have SFF-8484 multi-lane connectors, which you might not recognise. SAS is a point-to-point system, the same as SATA, and a multi-lane cable is simply four single cables in a bundle with one plug. (Newer versions of SAS have more). SFF-8484 multi-lane connectors are somewhat rare, (but unfortunately this doesn’t make them valuable if you were hoping to flog them on eBay). The world switched quickly to the SFF-8087 for multi-lane SAS. The signals are electrically the same, but the connector is not. Please generate and paste your ad code here. If left empty, the ad location will be highlighted on your blog pages with a reminder to enter your code. Mid-Post So there are two snags with this backplane. Firstly it’s designed to work with PERC controllers; secondly it has the old SFF-8484 connectors on the back, and any SAS cables you find are likely to have SFF-8087. First things first – there is actually a jumper on the backplane to tell it whether it’s talking to a PERC or a standard LSI HBA. All you need to do is find it and change it. Fortunately there are very few jumpers to choose from (i.e. two), and you know the link is already in the wrong place. So try them one at a time until it works. The one you want may be labelled J15, but I wouldn’t like to say this was the same on every variant. Second problem: the cable. You can get cables with an SFF-8087 on one end and an SFF-8484 on the other. These should work. But they’re usually rather expensive. If you want to make your own, it’s a PITA but at least you have the connectors already (assuming you didn’t bin the ones on the PERC cables). I don’t know what committee designed SAS cable connectors, but ease of construction wasn’t foremost in their collective minds. You’re basically soldering twisted pair to a tiny PCB. This is mechanically rubbish, of course, as the slightest force on the cable will lift the track. Therefore its usual to cover the whole joint in solidified gunk (technical term) to protect it. Rewiring SAS connectors is definitely not easy. I’ve tried various ways of soldering to them, none of which were satisfactory or rewarding. One method is to clip the all bare wires you wish to solder using something like a bulldog clip so they’re at lined up horizontally and then press then adjust the clamp so they’re gently pressed to the tracks on the board, making final adjustments with a strong magnifying glass and a fine tweezers. You can then either solder them with a fine temperature-controlled iron, or have pre-coated the pads with solder paste and flash across it with an SMD rework station. I’d love to know how they’re actually manufactured – using a precision jig I assume. The “easy” way is to avoid soldering the connectors at all; simply cut existing cables in half and join one to the other. I’ve used prototyping matrix board for this. Strip and twist the conductors, push them through a hole and solder. This keeps things compact but manageable. We’re dealing with twisted pair here, so maintain the twists as close as possible to the board – it actually works quite well. However, I’ve now found a reasonably-priced source of the appropriate cable so I don’t do this any more. Contact me if you need some in the UK. So all that remains is to plug your HBAs to the backplane, shove in some drives and you’re away. If you’re at this stage, it “just works”. The access lights for all the drives do their thing as they should. The only mystery is how you can get the ident LED to come on; this may be controlled by the PERC when it detects a failure using the so-called sideband channel, or it may be operated by the electronics on the backplane. It’s workings are, I’m afraid, something of a mystery still – it’s got too much electronics on board to be a completely passive backplane. Plan B: SATA If you plan to use only SATA drives, especially if you don’t intend using more than six, it makes little sense to bother with SAS at all. The Gigabyte motherboard comes with half a dozen perfectly good 3Gb SATA channels, and if you need more you can always put another controller in a PCIe slot, or even USB. The advantages are lower cost and you get to free up two PCIe slots for more interesting things. The down-side is that you can’t use the SAS backplane, but you can still use the mounting bays. Removing the backplane looks tricky, but it really isn’t when you look a bit closer. Take out the fans first (held in place by rubber blocks), undo a couple of screws and it just lifts and slides out. You can then slot and lock in the drives and connect the SATA connectors directly to the back of the drives. You could even slide them out again without opening the case, as long as the cable was long enough and you manually detached the cable it when it was withdrawn. And let’s face it – drives are likely to last for years so even with half a dozen it’s not that great a hardship to open the case occasionally. Next comes power. The PSU has a special connector for the backplane and two standard SATA power plugs. You could split these three ways using an adapter, but if you have a lot of drives you might want to re-wire the cables going to the backplane plug. It can definitely power twelve drives. And that’s almost all there is to it. Unfortunately the main fans are connected to the backplane, which you’ve just removed. You can power them from an adapter on the drive power cables, but there are unused fan connectors on the motherboard. I’m doing a bit more research on cooling options, but this approach has promising possibilities for noise reduction. Beastie Bits Adriaan de Groot’s post FOSDEM blog post My First FreeNAS smart(8) Call for Testing by Michael Dexter BSDCan 2018 Travel Grant Application Now Open BSD Developer Kristaps Dzonsons interviews Linus Torvalds, about diving Twitter vote - The secret to a faster FreeBSD default build world... tmate - Instant terminal sharing Tarsnap Feedback/Questions Vikash - Getting a port added Chris Wells - Quarterly Ports Branch FreeBSD-CI configs on Github Jenkins on the FreeBSD Wiki Gordon - Centralised storage suggestions Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv
How the term open source was created, running FreeBSD on ThinkPad T530, Moving away from Windows, Unknown Giants, as well as OpenBSD and FreeDOS. This episode was brought to you by Headlines How I coined the term 'open source' (https://opensource.com/article/18/2/coining-term-open-source-software) In a few days, on February 3, the 20th anniversary of the introduction of the term "open source software" is upon us. As open source software grows in popularity and powers some of the most robust and important innovations of our time, we reflect on its rise to prominence. I am the originator of the term "open source software" and came up with it while executive director at Foresight Institute. Not a software developer like the rest, I thank Linux programmer Todd Anderson for supporting the term and proposing it to the group. This is my account of how I came up with it, how it was proposed, and the subsequent reactions. Of course, there are a number of accounts of the coining of the term, for example by Eric Raymond and Richard Stallman, yet this is mine, written on January 2, 2006. It has never been published, until today. The introduction of the term "open source software" was a deliberate effort to make this field of endeavor more understandable to newcomers and to business, which was viewed as necessary to its spread to a broader community of users. The problem with the main earlier label, "free software," was not its political connotations, but that—to newcomers—its seeming focus on price is distracting. A term was needed that focuses on the key issue of source code and that does not immediately confuse those new to the concept. The first term that came along at the right time and fulfilled these requirements was rapidly adopted: open source. This term had long been used in an "intelligence" (i.e., spying) context, but to my knowledge, use of the term with respect to software prior to 1998 has not been confirmed. The account below describes how the term open source software caught on and became the name of both an industry and a movement. Meetings on computer security In late 1997, weekly meetings were being held at Foresight Institute to discuss computer security. Foresight is a nonprofit think tank focused on nanotechnology and artificial intelligence, and software security is regarded as central to the reliability and security of both. We had identified free software as a promising approach to improving software security and reliability and were looking for ways to promote it. Interest in free software was starting to grow outside the programming community, and it was increasingly clear that an opportunity was coming to change the world. However, just how to do this was unclear, and we were groping for strategies. At these meetings, we discussed the need for a new term due to the confusion factor. The argument was as follows: those new to the term "free software" assume it is referring to the price. Oldtimers must then launch into an explanation, usually given as follows: "We mean free as in freedom, not free as in beer." At this point, a discussion on software has turned into one about the price of an alcoholic beverage. The problem was not that explaining the meaning is impossible—the problem was that the name for an important idea should not be so confusing to newcomers. A clearer term was needed. No political issues were raised regarding the free software term; the issue was its lack of clarity to those new to the concept. Releasing Netscape On February 2, 1998, Eric Raymond arrived on a visit to work with Netscape on the plan to release the browser code under a free-software-style license. We held a meeting that night at Foresight's office in Los Altos to strategize and refine our message. In addition to Eric and me, active participants included Brian Behlendorf, Michael Tiemann, Todd Anderson, Mark S. Miller, and Ka-Ping Yee. But at that meeting, the field was still described as free software or, by Brian, "source code available" software. While in town, Eric used Foresight as a base of operations. At one point during his visit, he was called to the phone to talk with a couple of Netscape legal and/or marketing staff. When he was finished, I asked to be put on the phone with them—one man and one woman, perhaps Mitchell Baker—so I could bring up the need for a new term. They agreed in principle immediately, but no specific term was agreed upon. Between meetings that week, I was still focused on the need for a better name and came up with the term "open source software." While not ideal, it struck me as good enough. I ran it by at least four others: Eric Drexler, Mark Miller, and Todd Anderson liked it, while a friend in marketing and public relations felt the term "open" had been overused and abused and believed we could do better. He was right in theory; however, I didn't have a better idea, so I thought I would try to go ahead and introduce it. In hindsight, I should have simply proposed it to Eric Raymond, but I didn't know him well at the time, so I took an indirect strategy instead. Todd had agreed strongly about the need for a new term and offered to assist in getting the term introduced. This was helpful because, as a non-programmer, my influence within the free software community was weak. My work in nanotechnology education at Foresight was a plus, but not enough for me to be taken very seriously on free software questions. As a Linux programmer, Todd would be listened to more closely. The key meeting Later that week, on February 5, 1998, a group was assembled at VA Research to brainstorm on strategy. Attending—in addition to Eric Raymond, Todd, and me—were Larry Augustin, Sam Ockman, and attending by phone, Jon "maddog" Hall. The primary topic was promotion strategy, especially which companies to approach. I said little, but was looking for an opportunity to introduce the proposed term. I felt that it wouldn't work for me to just blurt out, "All you technical people should start using my new term." Most of those attending didn't know me, and for all I knew, they might not even agree that a new term was greatly needed, or even somewhat desirable. Fortunately, Todd was on the ball. Instead of making an assertion that the community should use this specific new term, he did something less directive—a smart thing to do with this community of strong-willed individuals. He simply used the term in a sentence on another topic—just dropped it into the conversation to see what happened. I went on alert, hoping for a response, but there was none at first. The discussion continued on the original topic. It seemed only he and I had noticed the usage. Not so—memetic evolution was in action. A few minutes later, one of the others used the term, evidently without noticing, still discussing a topic other than terminology. Todd and I looked at each other out of the corners of our eyes to check: yes, we had both noticed what happened. I was excited—it might work! But I kept quiet: I still had low status in this group. Probably some were wondering why Eric had invited me at all. Toward the end of the meeting, the question of terminology was brought up explicitly, probably by Todd or Eric. Maddog mentioned "freely distributable" as an earlier term, and "cooperatively developed" as a newer term. Eric listed "free software," "open source," and "sourceware" as the main options. Todd advocated the "open source" model, and Eric endorsed this. I didn't say much, letting Todd and Eric pull the (loose, informal) consensus together around the open source name. It was clear that to most of those at the meeting, the name change was not the most important thing discussed there; a relatively minor issue. Only about 10% of my notes from this meeting are on the terminology question. But I was elated. These were some key leaders in the community, and they liked the new name, or at least didn't object. This was a very good sign. There was probably not much more I could do to help; Eric Raymond was far better positioned to spread the new meme, and he did. Bruce Perens signed on to the effort immediately, helping set up Opensource.org and playing a key role in spreading the new term. For the name to succeed, it was necessary, or at least highly desirable, that Tim O'Reilly agree and actively use it in his many projects on behalf of the community. Also helpful would be use of the term in the upcoming official release of the Netscape Navigator code. By late February, both O'Reilly & Associates and Netscape had started to use the term. Getting the name out After this, there was a period during which the term was promoted by Eric Raymond to the media, by Tim O'Reilly to business, and by both to the programming community. It seemed to spread very quickly. On April 7, 1998, Tim O'Reilly held a meeting of key leaders in the field. Announced in advance as the first "Freeware Summit," by April 14 it was referred to as the first "Open Source Summit." These months were extremely exciting for open source. Every week, it seemed, a new company announced plans to participate. Reading Slashdot became a necessity, even for those like me who were only peripherally involved. I strongly believe that the new term was helpful in enabling this rapid spread into business, which then enabled wider use by the public. A quick Google search indicates that "open source" appears more often than "free software," but there still is substantial use of the free software term, which remains useful and should be included when communicating with audiences who prefer it. A happy twinge When an early account of the terminology change written by Eric Raymond was posted on the Open Source Initiative website, I was listed as being at the VA brainstorming meeting, but not as the originator of the term. This was my own fault; I had neglected to tell Eric the details. My impulse was to let it pass and stay in the background, but Todd felt otherwise. He suggested to me that one day I would be glad to be known as the person who coined the name "open source software." He explained the situation to Eric, who promptly updated his site. Coming up with a phrase is a small contribution, but I admit to being grateful to those who remember to credit me with it. Every time I hear it, which is very often now, it gives me a little happy twinge. The big credit for persuading the community goes to Eric Raymond and Tim O'Reilly, who made it happen. Thanks to them for crediting me, and to Todd Anderson for his role throughout. The above is not a complete account of open source history; apologies to the many key players whose names do not appear. Those seeking a more complete account should refer to the links in this article and elsewhere on the net. FreeBSD on a Laptop - A guide to a fully functional installation of FreeBSD on a ThinkPad T530 (https://www.c0ffee.net/blog/freebsd-on-a-laptop) As I stated my previous post, I recently dug up my old ThinkPad T530 after the embarrassing stream of OS X security bugs this month. Although this ThinkPad ran Gentoo faithfully during my time in graduate school at Clemson, these days I'd much rather spend time my wife and baby than fighting with emerge and USE flags. FreeBSD has always been my OS of choice, and laptop support seems to be much better than it was a few years ago. In this guide, I'll show you the tweaks I made to wrestle FreeBSD into a decent experience on a laptop. Unlike my usual posts, this time I'm going to assume you're already pretty familiar with FreeBSD. If you're a layman looking for your first BSD-based desktop, I highly recommend checking out TrueOS (previously PC-BSD): they've basically taken FreeBSD and packaged it with all the latest drivers, along with a user-friendly installer and custom desktop environment out of the box. TrueOS is an awesome project–the only reason I don't use it is because I'm old, grumpy, and persnickety about having my operating system just so. Anyway, if you'd still like to take the plunge, read on. Keep in mind, I'm using a ThinkPad T530, but other ThinkPads of the same generation should be similarly compatible. Here's what you'll get: Decent battery life (8-9 hours with a new 9-cell battery) UEFI boot and full-disk encryption WiFi (Intel Ultimate-N 6300) Ethernet (Intel PRO/1000) Screen brightness adjustment Suspend/Resume on lid close (make sure to disable TPM in BIOS) Audio (Realtek ALC269 HDA, speakers and headphone jack) Keyboard multimedia buttons Touchpad/Trackpoint Graphics Acceleration (with integrated Intel graphics, NVIDIA card disabled in BIOS) What I haven't tested yet: Bluetooth Webcam Fingerprint reader SD Card slot Installation Power Saving Tweaks for Desktop Use X11 Fonts Login Manager: SLiM Desktop Environment: i3 Applications The LLVM Sanitizers stage accomplished (https://blog.netbsd.org/tnf/entry/the_llvm_sanitizers_stage_accomplished) I've managed to get the Memory Sanitizer to work for the elementary base system utilities, like ps(1), awk(1) and ksh(1). This means that the toolchain is ready for tests and improvements. I've iterated over the basesystem utilities and I looked for bugs, both in programs and in sanitizers. The number of detected bugs in the userland programs was low, there merely was one reading of an uninitialized variable in ps(1). A prebuilt LLVM toolchain I've prepared a prebuilt toolchain with Clang, LLVM, LLDB and compiler-rt for NetBSD/amd64. I prepared the toolchain on 8.99.12, however I have received reports that it works on other older releases. Link: llvm-clang-compilerrt-lldb-7.0.0beta_2018-01-24.tar.bz2 The archive has to be untarballed to /usr/local (however it might work to some extent in other paths). This toolchain contains a prebuilt tree of the LLVM projects from a snapshot of 7.0.0(svn). It is a pristine snapshot of HEAD with patches from pkgsrc-wip for llvm, clang, compiler-rt and lldb. Sanitizers Notable changes in sanitizers, all of them are in the context of NetBSD support. Added fstat(2) MSan interceptor. Support for kvm(3) interceptors in the common sanitizer code. Added devname(3) and devname_r(3) interceptors to the common sanitizer code. Added sysctl(3) familty of functions interceptors in the common sanitizer code. Added strlcpy(3)/strlcat(3) interceptors in the common sanitizer code. Added getgrouplist(3)/getgroupmembership(3) interceptors in the common sanitizer code. Correct ctype(3) interceptors in a code using Native Language Support. Correct tzset(3) interceptor in MSan. Correct localtime(3) interceptor in the common sanitizer code. Added paccept(2) interceptor to the common sanitizer code. Added access(2) and faccessat(2) interceptors to the common sanitizer code. Added acct(2) interceptor to the common sanitizer code. Added accept4(2) interceptor to the common sanitizer code. Added fgetln(3) interceptor to the common sanitizer code. Added interceptors for the pwcache(3)-style functions in the common sanitizer code. Added interceptors for the getprotoent(3)-style functions in the common sanitizer code. Added interceptors for the getnetent(3)-style functions in the common sanitizer code. Added interceptors for the fts(3)-style functions in the common sanitizer code. Added lstat(3) interceptor in MSan. Added strftime(3) interceptor in the common sanitizer code. Added strmode(3) interceptor in the common sanitizer code. Added interceptors for the regex(3)-style functions in the common sanitizer code. Disabled unwanted interceptor __sigsetjmp in TSan. Base system changes I've tidied up inclusion of the internal namespace.h header in libc. This has hidden the usage of public global symbol names of: strlcat -> _strlcat sysconf -> __sysconf closedir -> _closedir fparseln -> _fparseln kill -> _kill mkstemp -> _mkstemp reallocarr -> _reallocarr strcasecmp -> _strcasecmp strncasecmp -> _strncasecmp strptime -> _strptime strtok_r -> _strtok_r sysctl -> _sysctl dlopen -> __dlopen dlclose -> __dlclose dlsym -> __dlsym strlcpy -> _strlcpy fdopen -> _fdopen mmap -> _mmap strdup -> _strdup The purpose of these changes was to stop triggering interceptors recursively. Such interceptors lead to sanitization of internals of unprepared (not recompiled with sanitizers) prebuilt code. It's not trivial to sanitize libc's internals and the sanitizers are not designed to do so. This means that they are not a full replacement of Valgrind-like software, but a a supplement in the developer toolbox. Valgrind translates native code to a bytecode virtual machine, while sanitizers are designed to work with interceptors inside the pristine elementary libraries (libc, libm, librt, libpthread) and embed functionality into the executable's code. I've also reverted the vadvise(2) syscall removal, from the previous month. This caused a regression in legacy code recompiled against still supported compat layers. Newly compiled code will use a libc's stub of vadvise(2). I've also prepared a patch installing dedicated headers for sanitizers along with the base system GCC. It's still discussed and should land the sources soon. Future directions and goals Possible paths in random order: In the quartet of UBSan (Undefined Behavior Sanitizer), ASan (Address Sanitizer), TSan (Thread Sanitizer), MSan (Memory Sanitizer) we need to add the fifth basic sanitizer: LSan (Leak Sanitizer). The Leak Sanitizer (detector of memory leaks) demands a stable ptrace(2) interface for processes with multiple threads (unless we want to build a custom kernel interface). Integrate the sanitizers with the userland framework in order to ship with the native toolchain to users. Port sanitizers from LLVM to GCC. Allow to sanitize programs linked against userland libraries other than libc, librt, libm and libpthread; by a global option (like MKSANITIZER) producing a userland that is partially prebuilt with a desired sanitizer. This is required to run e.g. MSanitized programs against editline(3). So far, there is no Operating System distribution in existence with a native integration with sanitizers. There are 3rd party scripts for certain OSes to build a stack of software dependencies in order to validate a piece of software. Execute ATF tests with the userland rebuilt with supported flavors of sanitizers and catch regressions. Finish porting of modern linkers designed for large C++ software, such as GNU GOLD and LLVM LLD. Today the bottleneck with building the LLVM toolchain is a suboptimal linker GNU ld(1). I've decided to not open new battlefields and return now to porting LLDB and fixing ptrace(2). Plan for the next milestone Keep upstreaming a pile of local compiler-rt patches. Restore the LLDB support for traced programs with a single thread. Interview - Goran Mekic - meka@tilda.center (mailto:meka@tilda.center) / @meka_floss (https://twitter.com/meka_floss) CBSD website (https://bsdstore.ru) Jail and VM Manager *** News Roundup Finally Moving Away From Windows (https://www.manios.ca/blog/2018/01/finally-moving-away-from-windows/) Broken Window Thanks to a combination of some really impressive malware, bad clicking, and poor website choices, I had to blow away my Windows 10 installation. Not that it was Window's fault, but a piece of malware had infected my computer when I tried to download a long lost driver for an even longer lost RAID card for a server. A word of advice – the download you're looking for is never on an ad-infested forum in another language. In any case, I had been meaning to switch away from Windows soon. I didn't have my entire plan ready, but now was as good a time as any. My line of work requires me to maintain some form of Windows installation, so I decided to keep it in a VM rather than dual booting as I was developing code and not running any high-end visual stuff like games. My first thought was to install Arch or Gentoo Linux, but the last time I attempted a Gentoo installation it left me bootless. Not that there is anything wrong with Gentoo, it was probably my fault, but I like the idea of some sort of installer so I looked at rock-solid Debian. My dad had installed Debian on his sweet new cutting-edge Lenovo laptop he received recently from work. He often raves about his cool scripts and much more effective customized experience, but often complains about his hybrid GPU support as he has an Intel/Nvidia hybrid display adapter (he has finally resolved it and now boasts his 6 connected displays). I didn't want to install Windows again, but something didn't feel right about installing some flavour of Linux. Back at home I have a small collection of FreeBSD servers running in all sorts of jails and other physical hardware, with the exception of one Debian server which I had the hardest time dealing with (it would be FreeBSD too if 802.11ac support was there as it is acting as my WiFi/gateway/IDS/IPS). I loved my FreeBSD servers, and yes I will write posts about each one soon enough. I wanted that cleanliness and familiarity on my desktop as well (I really love the ports collection!). It's settled – I will run FreeBSD on my laptop. This also created a new rivalry with my father, which is not a bad thing either. Playing Devil's Advocate The first thing I needed to do was backup my Windows data. This was easy enough, just run a Windows Image Backup and it will- wait, what? Why isn't this working? I didn't want to fiddle with this too long because I didn't actually need an image just the data. I ended up just copying over the files to an external hard disk. Once that was done, I downloaded and verified the latest FreeBSD 11.1 RELEASE memstick image and flashed it to my trusty 8GB Verbatim USB stick. I've had this thing since 2007, it works great for being my re-writable “CD”. I booted it up and started the installation. I knew this installer pretty well as I had test-installed FreeBSD and OpenBSD in VMs when I was researching a Unix style replacement OS last year. In any case, I left most of the defaults (I didn't want to play with custom kernels right now) and I selected all packages. This downloaded them from the FreeBSD FTP server as I only had the memstick image. The installer finished and I was off to my first boot. Great! so far so good. FreeBSD loaded up and I did a ‘pkg upgrade' just to make sure that everything was up to date. Alright, time to get down to business. I needed nano. I just can't use vi, or just not yet. I don't care about being a vi-wizard, that's just too much effort for me. Anyway, just a ‘pkg install nano' and I had my editor. Next was obvious, I needed x11. XFCE was common, and there were plenty of tutorials out there. I wont bore you with those details, but it went something like ‘pkg install xfce' and I got all the dependencies. Don't forget to install SLiM to make it seamless. There are some configs in the .login I think. SLiM needs to be called once the boot drops you to the login so that you get SLiM's nice GUI login instead of the CLI login screen. Then SLiM passes you off to XFCE. I think I followed this and this. Awesome. Now that x11 is working, it's time to get all of my apps from Windows. Obviously, I can't get everything (ie. Visual Studio, Office). But in my Windows installation, I had chosen many open-source or cross-compiled apps as they either worked better or so that I was ready to move away from Windows at a moments notice. ‘pkg install firefox thunderbird hexchat pidgin gpa keepass owncloud-client transmission-qt5 veracrypt openvpn' were some immediate picks. There are a lot more that I downloaded later, but these are a few I use everyday. My laptop also has the same hybrid display adapter config that my dad's has, but I chose to only run Intel graphics, so dual screens are no problem for me. I'll add Nvidia support later, but it's not a priority. After I had imported my private keys and loaded my firefox and thunderbird settings, I wanted to get my Windows VM running right away as I was burning productive days at work fiddling with this. I had only two virtualisation options; qemu/kvm and bhyve. qemu/kvm wasn't available in pkg, and looked real dirty to compile, from FreeBSD's point of view. My dad is using qemu/kvm with virt-manager to manage all of his Windows/Unix VMs alike. I wanted that experience, but I also wanted packages that could be updated and I didn't want to mess up a compile. bhyve was a better choice. It was built-in, it was more compatible with Windows (from what I read), and this is a great step-by-step article for Windows 10 on FreeBSD 11 bhyve! I had already tried to get virt-manager to work with bhyve with no luck. I don't think libvirt connects with bhyve completely, or maybe my config is wrong. But I didn't have time to fiddle with it. I managed it all through command lines and that has worked perfectly so far. Well sorta, there was an issue installing SQL Server, and only SQL Server, on my Windows VM. This was due to a missing ‘sectorsize=512' setting on the disk parameter on the bhyve command line. That was only found after A LOT of digging because the SQL Server install didn't log the error properly. I eventually found out that SQL Server only likes one sector size of disks for the install and my virtual disk geometry was incorrect. Apps Apps Apps I installed Windows 10 on my bhyve VM and I got that all setup with the apps I needed for work. Mostly Office, Visual Studio, and vSphere for managing our server farm. Plus all of the annoying 3rd party VPN software (I'm looking at you Dell and Cisco). Alright, with the Windows VM done, I can now work at work and finish FreeBSD mostly during the nights. I still needed my remote files (I setup an ownCloud instance on a FreeNAS jail at home) so I setup the client. Now, normally on Windows I would come to work and connect to my home network using OpenVPN (again, I have a OpenVPN FreeNAS jail at home) and the ownCloud desktop would be able to handle changing DNS destination IPs Not on FreeBSD (and Linux too?). I ended up just configuring the ownCloud client to just connect to the home LAN IP for the ownCloud server and always connecting the OpenVPN to sync things. It kinda sucks, but at least it works. I left that running at home overnight to get a full sync (~130GB cloud sync, another reason I use it over Google or Microsoft). Once that was done I moved onto the fstab as I had another 1TB SSD in my laptop with other files. I messed around with fstab and my NFS shares to my FreeNAS at home, but took them out as they made the boot time so long when I wasn't at home. I would only mount them when my OpenVPN connected or manually. I really wanted to install SpaceFM, but it's only available as a package on Debian and their non-package install script doesn't work on FreeBSD (packages are named differently). I tried doing it manually, but it was too much work. As my dad was the one who introduced me to it, he still uses it as a use-case for his Debian setup. Instead I kept to the original PCManFM and it works just fine. I also loaded up my Bitcoin and Litecoin wallets and pointed them to the blockchain that I has used on Windows after their sync, they loaded perfectly and my balances were there. I kinda wish there was the Bitcoin-ABC full node Bitcoin Cash wallet package on FreeBSD, but I'm sure it will come out later. The rest is essentially just tweaks and making the environment more comfortable for me, and with most programs installed as packages I feel a lot better with upgrades and audit checking (‘pkg audit -F' is really helpful!). I will always hate Python, actually, I will always hate any app that has it's own package manager. I do miss the GUI GitHub tool on Windows. It was a really good-looking way to view all of my repos. The last thing (which is increasing it's priority every time I go to a social media site or YouTube) is fonts. My god I never thought it was such a problem, and UTF support is complicated. If anyone knows how to get all UTF characters to show up, please let me know. I'd really like Wikipedia articles to load perfectly (I followed this post and there are still some missing). There are some extra tweaks I followed here and here. Conclusion I successfully migrated from Windows 10 to FreeBSD 11.1 with minimal consequence. Shout out goes to the entire FreeBSD community. So many helpful people in there, and the forums are a great place to find tons of information. Also thanks to the ones who wrote the how-to articles I've referenced. I never would have gotten bhyve to work and I'd still probably be messing with my X config without them. I guess my take home from this is to not be afraid to make changes that may change how comfortable I am in an environment. I'm always open to comments and questions, please feel free to make them below. I purposefully didn't include too many technical things or commands in this article as I wanted to focus on the larger picture of the migration as a whole not the struggles of xorg.conf, but if you would like to see some of the configs or commands I used, let me know and I'll include some! TrueOS Rules of Conduct (https://www.trueos.org/rulesofconduct/) We believe code is truly agnostic and embrace inclusiveness regardless of a person's individual beliefs. As such we only ask the following when participating in TrueOS public events and digital forums: Treat each other with respect and professionalism. Leave personal and TrueOS unrelated conversations to other channels. In other words, it's all about the code. Users who feel the above rules have been violated in some way can register a complaint with abuse@trueos.org + Shorter than the BSD License (https://twitter.com/trueos/status/965994363070353413) + Positive response from the community (https://twitter.com/freebsdbytes/status/966567686015782912) I really like the @TrueOS Code of Conduct, unlike some other CoCs. It's short, clear and covers everything. Most #OpenSource projects are labour of love. Why do you need a something that reads like a legal contract? FreeBSD: The Unknown Giant (https://neomoevius.tumblr.com/post/171108458234/freebsd-the-unknown-giant) I decided to write this article as a gratitude for the recent fast answer of the FreeBSD/TrueOS community with my questions and doubts. I am impressed how fast and how they tried to help me about this operating system which I used in the past(2000-2007) but recently in 2017 I began to use it again. + A lot has changed in 10 years I was looking around the internet, trying to do some research about recent information about FreeBSD and other versions or an easy to use spins like PCBSD (now TrueOS) I used to be Windows/Mac user for so many years until 2014 when I decided to use Linux as my desktop OS just because I wanted to use something different. I always wanted to use unix or a unix-like operating system, nowadays my main objective is to learn more about these operating systems (Debian Linux, TrueOS or FreeBSD). FreeBSD has similarities with Linux, with two major differences in scope and licensing: FreeBSD maintains a complete operating system, i.e. the project delivers kernel, device drivers, userland utilities and documentation, as opposed to Linux delivering a kernel and drivers only and relying on third-parties for system software; and FreeBSD source code is generally released under a permissive BSD license as opposed to the copyleft GPL used by Linux.“ But why do I call FreeBSD “The Unknown Giant”?, because the code base of this operating system has been used by other companies to develop their own operating system for products like computers or also game consoles. + FreeBSD is used for storage appliances, firewalls, email scanners, network scanners, network security appliances, load balancers, video servers, and more So many people now will learn that not only “linux is everywhere” but also that “FreeBSD is everywhere too” By the way speaking about movies, Do you remember the movie “The Matrix”? FreeBSD was used to make the movie: “The photo-realistic surroundings generated by this method were incorporated into the bullet time scene, and linear interpolation filled in any gaps of the still images to produce a fluent dynamic motion; the computer-generated “lead in” and “lead out” slides were filled in between frames in sequence to get an illusion of orbiting the scene. Manex Visual Effects used a cluster farm running the Unix-like operating system FreeBSD to render many of the film's visual effects” + FreeBSD Press Release re: The Matrix (https://www.freebsd.org/news/press-rel-1.html) I hope that I gave a good reference, information and now so many people can understand why I am going to use just Debian Linux and FreeBSD(TrueOS) to do so many different stuff (music, 3d animation, video editing and text editing) instead use a Mac or Windows. + FreeBSD really is the unknown giant. OpenBSD and FreeDOS vs the hell in earth (https://steemit.com/openbsd/@npna/openbsd-and-freedos-vs-the-hell-in-earth) Yes sir, yes. Our family, composed until now by OpenBSD, Alpine Linux and Docker is rapidly growing. And yes, sir. Yes. All together we're fighting against your best friends, the infamous, the ugliest, the worst...the dudes called the privacy cannibals. Do you know what i mean, sure? We're working hard, no matter what time is it, no matter in what part in the world we are, no matter if we've no money. We perfectly know that you cannot do nothing against the true. And we're doing our best to expand our true, our doors are opened to all the good guys, there's a lot here but their brain was fucked by your shit tv, your fake news, your laws, etc etc etc. We're alive, we're here to fight against you. Tonight, yes it's a Friday night and we're working, we're ready to welcome with open arms an old guy, his experience will give us more power. Welcome to: FreeDOS But why we want to build a bootable usb stick with FreeDOS under our strong OpenBSD? The answer is as usual to fight against the privacy cannibals! More than one decade ago the old BIOS was silently replaced by the more capable and advanced UEFI, this is absolutely normal because of the pass of the years and exponencial grow of the power of our personal computers. UEFI is a complex system, it's like a standalone system operative with direct access to every component of our (yes, it's our not your!) machine. But...wait a moment...do you know how to use it? Do you ever know that it exist? And one more thing, it's secure? The answer to this question is totally insane, no, it's not secure. The idea is good, the company that started in theory is one of the most important in IT, it's Intel. The history is very large and obviously we're going to go very deep in it, but trust me UEFI and the various friend of him, like ME, TPM are insecure and closed source! Like the hell in earth. A FreeDOS bootable usb image under OpenBSD But let's start preparing our OpenBSD to put order in this chaos: $ mkdir -p freedos/stuff $ cd freedos/stuff $ wget https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/fdboot.img $ wget https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/sys/sys-freedos-linux/sys-freedos-linux.zip $ wget https://download.lenovo.com/consumer/desktop/o35jy19usa_y900.exe $ wget http://145.130.102.57/domoticx/software/amiflasher/AFUDOS%20Flasher%205.05.04.7z Explanation in clear language as usual: create two directory, download the minimal boot disc image of FreeDOS, download Syslinux assembler MBR bootloaders, download the last Windows only UEFI update from Lenovo and download the relative unknown utility from AMI to flash our motherboard UEFI chipset. Go ahead: $ doas pkg_add -U nasm unzip dosfstools cabextract p7zip nasm the Netwide Assembler, a portable 80x86 assembler. unzip list, test and extract compressed files in a ZIP archive. dosfstoolsa collections of utilities to manipulate MS-DOSfs. cabextract program to extract files from cabinet. p7zipcollection of utilities to manipulate 7zip archives. $ mkdir sys-freedos-linux && cd sys-freedos-linux $ unzip ../sys-freedos-linux.zip $ cd ~/freedos && mkdir old new $ dd if=/dev/null of=freedos.img bs=1024 seek=20480 $ mkfs.fat freedos.img Create another working directory, cd into it, unzip the archive that we've downloaded, return to the working root and create another twos directories. dd is one of the most important utilities in the unix world to manipulate at byte level input and output: The dd utility copies the standard input to the standard output, applying any specified conversions. Input data is read and written in 512-byte blocks. If input reads are short, input from multiple reads are aggregated to form the output block. When finished, dd displays the number of complete and partial input and output blocks and truncated input records to the standard error output. We're creating here a virtual disk with bs=1024 we're setting both input and output block to 1024bytes; with seek=20480 we require 20480bytes. This is the result: -rw-r--r-- 1 taglio taglio 20971520 Feb 3 00:11 freedos.img. Next we format the virtual disk using the MS-DOS filesystem. Go ahead: $ doas su $ perl stuff/sys-freedos-linux/sys-freedos.pl --disk=freedos.img $ vnconfig vnd0 stuff/fdboot.img $ vnconfig vnd1 freedos.img $ mount -t msdos /dev/vnd0c old/ $ mount -t msdos /dev/vnd1c new/ We use the perl utility from syslinux to write the MBR of our virtual disk freedos.img. Next we create to loop virtual node using the OpenBSD utility vnconfig. Take care here because it is quite different from Linux, but as usual is clear and simple. The virtual nodes are associated to the downloaded fdboot.img and the newly created freedos.img. Next we mount the two virtual nodes cpartitions; in OpenBSD cpartition describes the entire physical disk. Quite different from Linux, take care. $ cp -R old/* new/ $ cd stuff $ mkdir o35jy19usa $ cabextract -d o35jy19usa o35jy19usa_y900.exe $ doas su $ cp o35jy19usa/ ../new/ $ mkdir afudos && cd afudos $ 7z e ../AFUDOS* $ doas su $ cp AFUDOS.exe ../../new/ $ umount ~/freedos/old/ && umount ~/freedos/new/ $ vnconfig -u vnd1 && vnconfig -u vnd0 Copy all files and directories in the new virtual node partition, extract the Lenovo cabinet in a new directory, copy the result in our new image, extract the afudos utility and like the others copy it. Umount the partitions and destroy the loop vnode. Beastie Bits NetBSD - A modern operating system for your retro battlestation (https://www.geeklan.co.uk/files/fosdem2018-retro) FOSDEM OS distribution (https://twitter.com/pvaneynd/status/960181163578019840/photo/1) Update on two pledge-related changes (https://marc.info/?l=openbsd-tech&m=151268831628549) *execpromises (https://marc.info/?l=openbsd-cvs&m=151304116010721&w=2) Slides for (BSD from scratch - from source to OS with ease on NetBSD) (https://www.geeklan.co.uk/files/fosdem2018-bsd/) Goobyte LastPass: You're fired! (https://blog.crashed.org/goodbye-lastpass/) *** Feedback/Questions Scott - ZFS Mirror with SLOG (http://dpaste.com/22Z8C6Z#wrap) Troels - Question about compressed ARC (http://dpaste.com/3X2R1BV#wrap) Jeff - FreeBSD Desktop DNS (http://dpaste.com/2BQ9HFB#wrap) Jonathon - Bhyve and gpu passthrough (http://dpaste.com/0TTT0DB#wrap) ***
How do you even profile without Instruments.app?
WWDC 2015 Videos 02:09 - Apple Music 03:12 - Metal for OSX The iPhreaks Show Episode #160: Metal with Warren Moore 05:04 - The New Swift Features Protocol Extensions 07:15 - Value Types 09:32 - Error Handling 16:02 - Support for Function Pointers from C 20:04 - Lightweight Generics 22:42 - Guard and Defer 27:27 - Xcode Improvements, Autolayout 29:55 - New Core Audio and Core Image Features 34:01 - Testing 38:15 - The Address Sanitizer Valgrind 51:07 - Crash Logs Addition in Xcode7 Crashlytics 54:43 - Installing Apps Without a Subscription to the Developer Program Picks Owen Williams: Apple’s biggest developer news at WWDC that nobody’s talking about: Bitcode (Alondo) neo-Style Lightning Charge & Sync Cable (Alondo) Hardcore History Podcast (Jaim) WebAssembly (Mike) ASCIIwwdc (Andrew)
WWDC 2015 Videos 02:09 - Apple Music 03:12 - Metal for OSX The iPhreaks Show Episode #160: Metal with Warren Moore 05:04 - The New Swift Features Protocol Extensions 07:15 - Value Types 09:32 - Error Handling 16:02 - Support for Function Pointers from C 20:04 - Lightweight Generics 22:42 - Guard and Defer 27:27 - Xcode Improvements, Autolayout 29:55 - New Core Audio and Core Image Features 34:01 - Testing 38:15 - The Address Sanitizer Valgrind 51:07 - Crash Logs Addition in Xcode7 Crashlytics 54:43 - Installing Apps Without a Subscription to the Developer Program Picks Owen Williams: Apple’s biggest developer news at WWDC that nobody’s talking about: Bitcode (Alondo) neo-Style Lightning Charge & Sync Cable (Alondo) Hardcore History Podcast (Jaim) WebAssembly (Mike) ASCIIwwdc (Andrew)
本期由 Daniel Lv 主持,本期继续第17期的话题,跟两位来自 RubyChina 的大牛吕戈,王勇来一起来聊聊底层开发,Ruby 虚拟机,以及大牛是怎样练成的。 吕戈: 独立 Mac App 开发者,曾于淘宝和 ThePlant 工作。长年在 Ruby-Forum 和 Ruby China 潜水,偶尔解答诸如 "Y组合子怎么写最 cool" 之类的问题。喜欢 Sinatra,并与武鑫共同开发了基于 Sinatra 的 鸭眼网。曾向 Padrino 和 BlueCloth 贡献过一点微不足道的代码,发过一些不为人知的 Rubygems,偶尔在杭州 Ruby Tuesday 担任吐槽角色。 Twitter: https://twitter.com/night_song Github: https://github.com/luikore Blog: http://luikore.github.io/ 王勇: 8 年 C/C++ 的从业经验,目前是一家 GPS 导航公司的资深技术研究员。是不折不扣的 Ruby 爱好者,MRuby 的 Code Committer。还是蓝光三人组的粉丝。也喜欢研究用 Ruby 捣鼓一些另类的玩意。 Twitter: https://twitter.com/skandhas_nil Weibo: http://weibo.com/u/2338968722 Github: https://github.com/skandhas JavaEye 的问答频道 BugMeNot JIT 莫枢 The Plant C++ STL 谭浩强 C语言程序设计 敏捷web开发 The Ruby way Golang Dlang Haskell Scala Objective-C Cocoa Calling convention Clang LLVM YARV 字节码 Lua 乱序执行 Ruby Under a Microscope Introducing Geneartional Garbage Collection for CRuby/MRI Ruby Prof perftools.rb Profiling Rails startup with dtrace Valgrind hat-cache-miss.md Sound: Be Adobe Source Code Pro Linux 运维趋势 Special Guests: 吕戈 and 王勇.