Just before Christmas I stumbled on a most excellent little book: “100 Ways to Improve Your Writing” by Gary Provost. I wish I found it earlier, as it has been available for almost forty years. It is a little gem of good advice on how to write better (and how to communicate better general).Continue reading ““100 Ways to Improve Your Writing””
Computers can wear out given enough time. I just had an old NUC basically fall apart – on the very day it was being replaced by a new one. The timing is rather too good to be believed, but basically the machine stopped working just when we transitioned to a new NUC. The old one still booted… but running it was questionable due to its many concurrent failure modes.Continue reading “This NUC is Dead”
The 2022 DVCon (Design and Verification) Europe conference was back in physical form at its usual venue at the Holiday Inn München. It was a great conference, and just like at the 2022 DAC people were very happy to be back in person.Continue reading “DVCon Europe 2022. Verification, System Simulation, and People!”
I presented a tutorial about the “verification of virtual platforms models” at DVCon Europe last week. The tutorial was prepared by me and Ola Dahl at Ericsson, but Ola unfortunately could not attend and present his part – so I had to learn his slides and style and do my best to be an Ola stand-in (tall order, we really missed you there Ola!). The title maybe did not entirely describe the contents – it was more a discussion around how to think about correctness and in particular specifications vs implementations. The best part was the animated discussion that we got going in the room, including some new insights from the audience that really added to the presented content.
Updated: Included an important point on software correctness that I forgot in the first publication.Continue reading “Notes from our DVCon Europe 2022 Tutorial”
Update: The article is now available online in HTML format.
I finally got updated to Windows 11 on my work machine, and suddenly I have to figure out how to use Windows 11 for real work. The redesigned start menu is terribly bad compared to the Windows 10 variant. What is nice though is the new Terminal app, along with the quite pleasing Cascadia font. However, I found the default size of Cascadia to be a tad big. Which lead to the question: “just how on earth are you supposed to control the font on this thing?” The font adjustment is probably the least logical I have ever found, and without some help from the Internet I would never have figured out. So here is how you do it.Continue reading “Setting the Font in Windows 11 “Terminal””
DVCon (Design and Verification Conference) Europe is coming up in early December, in person, in München, Germany. The selection of papers and posters is finished, and the program is firming up. I am happy to report that I am part of two items on the menu, a personal record for DVCon! For more on DVCon Europe in general and how it has been in the past, see my previous blog post on DVCon Europe 2022.Continue reading “Two Presentations at DVCON Europe 2022”
The Mathworks Automotive Conference (MAC) 2022 was one-day vendor-specific conference about how Mathworks products can be/are used in the automotive sector. The set of companies represented was truly impressive. There were presentations from Lightyear, MAN, Mercedes-Benz, Volvo, Infineon, Toyota, Bosch, Continental, Real-Time Innovations, and of course the Mathworks themselves. It was a day well-spent listening to interesting talks. Here is my personal summary.Continue reading “The Mathworks Automotive Conference (MAC) 2022”
In the last year, I noticed that my Windows machines started to grey the screen and show a highlight around the cursor when I accidentally hit the CTRL key twice. At first, I had no idea what was going on, but then I figured out it was connected to CTRL. So I assumed that this was a brilliant new feature added by Microsoft in some recent Windows update (to both Windows 10 and 11, thank you very much!). However, then I tried to help a colleague find the function and realized it was missing on his machine. What was going on?Continue reading “Finding the Cursor on Windows…”
The current price spikes for electricity in Europe has driven a new interest in saving energy, and part of doing that is to understand just how much energy different things use. I realized while I knew that modern LED lights are magically efficient, just how much electricity is used by other machines? No idea! So, I set out to find some examples the utility you get from a one kilowatt hour of electricity.
Updated in November 2022 with additional data.Continue reading “What’s in a Kilowatt Hour?”
The other day, I checked out the web interface to the database of in-patient care diagnoses run by Swedish Socialstyrelsen. On first opening the site, it looked broken and unusable – the text was basically unreadable, mixing giant numbers with strange- looking regular characters, lines of text overlapping each other, and a general sense of being totally chaotic. That is not what you or I would expect from an official site of a government entity. They have no reason to play games with the look of the site. So how come it was all that broken? Didn’t they test the site properly under all circumstances?Continue reading “Testing what the User will See (and why it might not work out)”
I recently read a few articles on cognitive biases, decision making, and expert intuition from the field of management research. Then an article popped up from the Communications of the ACM (CACM) dealing with cognitive bias in software development. The CACM article is a small field study that serves up some interesting and potentially quite useful conclusions about how to think about thinking in software development.Continue reading “A Study of Cognitive Biases in Software Development”
A colleague pointed me at the grugbrain.dev website the other week. It is a very humorous set of observations on corporate life and advice to young developers – written in a silly “cave-man” style. It is obviously based on long experience. The text is also quite quote-worthy, with some passages even being quite poetic in their rough-hewn simplicity.Continue reading “Blog: Grug Brained Developer Make Sense “
The 59th Design Automation Conference (DAC) took place in San Francisco, July 10-14, 2022. As always, the DAC provided a great place to learn about what is going on in EDA. The DAC is really three events in one: there is an industry trade-show/exhibition, a research conference that is considered the premier in EDA, and an engineering track where practitioners present their work in a less formal setting.
I had two talks in the engineering track – one on the Intel device modeling language (which actually won the best presentation award in the embedded sub-track), and one on using simulation technology to build hardware software-first.
The DAC was almost overwhelming in the richness of people and companies, but this blog tries to summarize the most prominent observations.Continue reading “DAC 2022 – Back in Person, Chiplets, an Award, and Much More”
I recently published a long post on the Intel Community Blog, talking about how my colleague Evgeny solved a nicely complicated bug using Simics-on-Simics. The bug involved UEFI, an operating system, SMM, SMI, and virtualization. Just another day in the office (or more like a year, given how long it took to get this one resolved).
Back in 2016, the European Space Agency (ESA) lost the Schiaparelli Mars lander during its descent to the surface on Mars. From a software engineering and testing perspective, the story of why the landing failed (see for example the ESA final analysis, Space News, or the BBC) is instructive. It comes down to how software is written and tested to deal with unexpected inputs in unexpected circumstances. I published a blog post about this right after the event and before the final analysis was available. Thankfully, that has since been retired from its original location-it was a bit too full of speculation that turned out to be incorrect… So here is a mostly rewritten version of the post, quoting the final analysis and with new insights.Continue reading “The ESA Schiaparelli Crash & Simulation”
Back in April, I presented a talk about how you can use Lego as an analogy for software development in the ProductBeats Show. The talk was based on my previous musings about Lego and software. It was a great fun 15 minutes with a good after-discussion moderated by Magnus Billgren. As always at the ProductBeats show, Magnus nudged me and the audience to think. He kicked off the talk by asking the audience and me about the process of assembling IKEA furniture. Is that assembly about building or designing? That is a very god question. Here is my attempt at an answer.Continue reading “Building or Designing, Lego and IKEA”
I recently made a trip to the US to look at some interesting things like the USS Intrepid, the architecture or New York City, and Battleship Cove. Battleship Cove is located in Fall River, Massachusetts, and hosts the South Dakota-class battleship USS Massachusetts. Additionally, the site holds the destroyer USS Joseph P Kennedy, the submarine USS Lionfish, and the East German missile corvette Hiddensee. Given that I only had an afternoon there, I ended up only looking at the battleship with a brief run through the submarine. It was that good, especially in company with an old friend who also had read up on how the ship worked.Continue reading “USS Massachusetts and Battleship Cove”
Today I observed something very odd in Powerpoint. I was pasting in some text from the Simics command-line interface into a text box in Powerpoint to show the output of some commands. Commands whose output relied on box-drawing characters to produce nice tables. But for some reason… it did not work in Powerpoint. Weird.Continue reading “Was this a UTF-8 WTF?”
The SystemC Evolution Fika on April 7 had threading/parallelism as its theme. There were four speakers who presented various angles on how to parallelize SystemC models. The presentations and following discussion provided a variety of perspectives on threading as it can be applied in virtual platforms and other computer architecture simulations. It was pretty clear that the presenters and audience had quite different ideas about just what the target domain looks like and the best way to introduce parallelism to SystemC. Here is my take on what was said.Continue reading “SystemC Evolution Fika: Parallel SystemC”
This blog post was originally posted at Intel back in 2018, but it has since been retired from the Intel blog system. As it is of general interest (in my opinion), here is a reposting (with a few small updates here and there).
Temporal decoupling is a key technology in virtual platforms, and can speed up the execution of a system by several orders of magnitude. In my own experiments, I have seen it provide a speedup of more than 1000x. Here, I will dig a little deeper into temporal decoupling and its semantic effects.Continue reading “Some Notes on Temporal Decoupling (Reposted)”
The Design and Verification Conference (DVCon) Europe is going to be in-person in München again in 2022. After two years of virtual conferences, we are going back to the Holiday Inn where we have had so many great events in the past. The conference takes place on December 6 and 7. The call for papers, tutorials, and panels is out now, with a deadline in May!Continue reading “DVCon Europe 2022 – Come Join us in München in December”
In a previous blog, I talked a bit about the hazards of coding to an implementation and not a specification, based on 1980s home computers. While the specifics and peculiarities of that case is hopefully confined to old hardware, the lessons are still worth contemplating. There is a modern variant of this phenomenon that is based on open-source software, and that I must admit to feeling a bit annoyed by. Fundamentally, the question is this: when figuring out how to use an API – should you look at the documentation or the implementation?Continue reading “Don’t Look behind the Curtain! (Please)”
When discussing the design and integration of systems on chip and models of systems on chip, the Lego analogy is often brought up. The idea being that with Lego, anyone can put together anything and every component can be combined with all other components. Right. My recent building of Lego set 21327, Typewriter, makes me wonder if the people who talk about Lego-like construction have actually built anything from Legos in the past few decades.Continue reading “Easy to Assemble, just like Lego – Right…”
I have recently got back to developing training labs for the Simics simulator (and related technologies). During the process of developing a new accelerator model using as many of the latest frameworks and APIs as possible, it was basically guaranteed that I would hit some bugs and unexpected behaviors. That is a natural part of and benefit from creating training materials in the first place. It also provides a good illustration of two fundamentally different ways to look at software development. One is to play it safe and get things done in known ways, and the other is charge ahead, try the unknown, and see what happens. Damn the torpedoes, bugs are a benefit. No bug reports, no glory. In this post, I will share some recent examples of just coding ahead and breaking thing.Continue reading “Blog – Damn the Torpedoes, Full Code Ahead!”
During 2020 and 2021, Intel switched from using Microsoft Skype for Business (also known as Lync) to Microsoft Teams as the primary internal calling, chatting, and conferencing tool. While (finally) Teams has turned into quite a decent communications tool, the transition started a bit too early from a feature completeness perspective. Microsoft in essence gave us an enterprise Minimum Viable Product (MVP). Not a proper Replacement Product (RP). Teams left out many rather important and useful features, degrading the user experience and value, and making my life harder. I don’t think that was particularly well handled. I can understand it as a product manager, but as a user, I don’t like it all.Continue reading “Minimum Viable (Replacement) Product – The Teams Example”
Just like in 2020, the Design and Verification Conference (DVCon) Europe 2021 was a virtual conference. It took place from October 26 to 27, with the SystemC Evolution day on October 28 (as usual). As has been the case in recent years, the verification side of the conference is significantly larger than the design side. This is common with the other DVCon conferences in the world. In this blog, I will go through my main observations from DVCon Europe, and share some notes from some of the presentations.Continue reading “DVCon Europe 2021 – Testbenches, AI, and Open Source”
When writing software that uses any kind of API or hardware functionality, sooner or later there will be questions about what a particular API call or hardware operation is supposed to do. In principle, such questions should be answered by referring to the specification (and user documentation). I am a firm believer in writing readable and clear specs and keeping software coding to follow the spec, as that ensures future compatibility. But reality is not that simple. Things are generally better today than they used to be, though. Reading up a bit on the history of my first computer (the ZX Spectrum), I found some rather interesting cases of spec vs implementation, and “discovered functionality”.Continue reading “Code to the Spec(trum) or the Implementation”
DVCon Europe is coming up in late October. This year, I am going to present a tutorial on using the public release of the Intel Simics Simulator to model a PCIe-attached accelerator subsystem. It is fun to be back speaking at the DVCon, after a couple of years of not having talked at the conference. DVCon Europe is a virtual event this year too due to Covid.Continue reading “Presenting a Simics Tutorial at DVCon Europe (2021)”