Adjusting to Work-from-Home: Remote Live Simics Training

In the current world-wide lockdown due to Covid-19, many things that were done in-person in the past have to become virtual. The Simics® New User Training that we run at Intel and with our customers and partners is no different. In normal times, we run in-person classes around the world, but that is not an option right now.  Thus, we shifted to running remote live classes as a substitute for the time being. This blog shares some of my experience from running remote live classes.

We changed the cover page of the Simics training to symbolize the change.


As I see it, there are two alternatives to in-person training:

  • Recorded videos
  • Live teaching, done remotely

The remote-live format is superior in my opinion since it keeps the energy and immediacy of an in-person class and allows the students to ask questions interactively. It also requires a lot less work to do and can be set up pretty much immediately.

Recording a quality video is a ton of work. You need to write a script and follow it To. The. Word. While still sounding natural. Add editing and retakes, and the pandemic might well be over before the work is completed.

Reformatting for Remote Live

The standard Simics New User Training format is to do two full days in-person, for approximately eight hours per day. Lectures and labs are interleaved, giving the teacher some time to catch her or his breath between sections, and providing students a chance to immediately practice what they learned in the lectures.

That format does not work for remote live training – having the conference call sit idle while students work is not a workable method (I have discussed this with other training organizers in the past, and most agree that labs are best done offline and not in-conference). Instead, lectures and labs have to be split up in a more coarse-grained fashion.

Another aspect to consider is attention span. For a student, it is a lot easier to stay focused on a topic when in the same room as the teacher, and it is easier for the teacher to adjust to the attention level of the students. Previously, I did some improvised remote trainings that crammed the lectures into two four-hour sessions. That was totally exhausting for everyone involved.

The current concept is shown below. The course is spread out over three days, with about three hours of lectures each day (and a rather large buffer towards the end). Each day also has a set of associated labs that the students are expected to do on their own after lunch.

Reformatting the in-person class to remote live

The topic sections of the training had to be reshuffled a bit to fit this format and get the labs spread out in a reasonable way. It is not exactly the same sequence as in the in-person training, but fortunately some of the sections were rather stand-alone and possible to move around a bit in the schedule.

There are still some small breaks inserted between the sections, just like when teaching live. When working from home, even five minutes is enough to get a cup of coffee or other refreshment.

Remote Live Training Technology – Video, Screenshare, and Chat

For the lecture part, it made sense to use video of the teacher alongside the slides. We did not use video for the students, since that would just waste bandwidth and reduce the quality of the screen-share. It is also hard for the trainer to both present and look at the student video streams at once – especially if there are tens of students in the class. I used to be rather skeptical to video conferencing, but I must admit to coming around to finding it rather valuable.

For the labs, it makes sense to use chat in an app like Microsoft Teams or Skype to answer questions. There are usually not all that many questions, and having the teacher sit and wait on the video conference for the occasional interaction is not an efficient use of time. When I present a class live, I tend to walk around the front of the room and point at the projector screen using either hands or a laser pointer. Sometimes, to illustrate a point or an answer to a question, I will draw things on white boards or a flip board. Neither of these things work with a remote screen-sharing session, but using annotation tools to draw on top of what is shown on the screen offers a decent replacement. The screenshot below shows an example of a heavily-annotated slide from the training.

Annotating a slide as a way to make the presentation a bit more lively

The Gear

It is quite feasible to run a training session like this from home using an average laptop. However, it is worth investing a little bit in audio and video gear to provide the best experience and the most effective teaching setup.

My personal home working setup, used to run Simics training in the remote live format.

You want a good web camera, instead of using the rather poor camera built into most laptops. It makes sense to put it on top of an external screen to get it up a bit compared to where a laptop screen typically resides and avoid the “up your nose” angle. For the sound, a headset works, but it is better to use a good external microphone. This looks better on the video (no headset on top of the speaker) and produces superior sound compared to most headsets. Using a “pop filter” is definitely beneficial. Figure 3 shows my personal home office setup used in the training, including an external keyboard and mouse.

For best results, it is good to work in a room featuring some amount of fabric to dampen echos and provide a better sound environment. For the video, a reasonably neutral background makes sense. Also for the video, it is a good idea to avoid clothes with busy patterns as that tends to result in very messy videos (especially when the image is shrunk down to a thumbnail).

This is not a good choice of shirt for a video session (but it is one of my favorites)

One upside of live remote training is that product demos using screen sharing actually work better than at most in-person trainings since reading a screen with small fonts from the back of a room is a lot harder than seeing it on your own local screen.

Simics is also a good subject for remote training in that it is just a piece of software. There is no need for specialized hardware or development boards for the students. Simics can be downloaded and installed on the students’ local computers, reducing the load on VPNs to connect back to corporate servers to access the software.  In particular for training, the required software is well-packaged and easy to download and install.

Final Thoughts

Doing a live remote training works, but it is not a perfect substitute for an in-person class. You do not get the same connection with the audience, and as a trainer you cannot sense the attention of the class. You also miss a lot of the informal discussions you get over lunch and before and after classes. 

On the positive side, remote live lets us keep doing training even during mandatory work-from-home times and with people scattered across multiple cities and sites. It is still live, and we still get interactive discussions going. The technical requirements are not overwhelming, and most people should be able to partake in training from home as well as teach it from home.  Technology really works, and it can help us get through these trying times.

Intel Blog Post: Using Wind River® Simics® to Inspire Teachers and Researchers in Costa Rica

A while ago, I visited my Intel colleagues in Costa Rica and ran a workshop for university teachers and researchers, showing how Simics could be used in academia.  I worked with a very smart and talented intern, Jose Fernando Molina, and after a rather long process I have published an interview with him on my Intel blog:

Continue reading “Intel Blog Post: Using Wind River® Simics® to Inspire Teachers and Researchers in Costa Rica”

Assembly Programming as Game: “Human Resource Machine”

Human Resource Machine, from the Tomorrow Corporation, is a puzzle game that basically boils down to assembly-language programming. It has a very charming graphical style and plenty of entertaining sideshows, hiding the rather dry core game in a way that really works! It is really great fun and challenging – even for myself who has a reasonable amount of experience coding at this low level. It feels a bit like coding in the 1980s, except that all instructions take the same amount of time in the game.

Continue reading “Assembly Programming as Game: “Human Resource Machine””

Busy Writing a Book About Simics

once upon a time - squaredFor the past six months I have not been doing much blogging at all, neither here nor on the Wind River blog.  The reason is that I have been directing my writing energy into writing a text book about Simics together with Daniel Aarno at Intel.  Last year, Daniel and I worked on an Intel Technology Journal issue on Simics.  The ITJ issue was kind of a first step on the way to the book, collecting several articles about Simics usage at Intel and elsewhere.  The book itself will be much more of a detailed description of Simics and how it works and why it works the way it works.

Continue reading “Busy Writing a Book About Simics”

Wind River Blog: Teaching Networking with Simics

On the Wind River corporate blog, I have put up a blog post about how Wind River Education Services is going to use Simics to teach networking. What is interesting with this approach is that it shows how a virtual platform can be used for tasks like teaching that don’t have much to do with hardware modeling or similar “typical” VP uses. In this case, the key value is encapsulation of a set of machines running real operating systems and software stacks, and with lots of networks connecting them.

Kindergarten Robot 2: Going Programmable

lego mindstorms nxt2

As discussed in my previous blog post about Kindergarten robots, I wanted to see if I can teach kids the core idea of programming. This project has now progressed to the point that I have a working prototype of a programmable robot.

Essentially, the robot is programmed by putting colored Lego bricks in a sequence on top of the robot. This should be accessible and direct enough to work with kids — and with no computer needed, just direct physical interaction with the system. For some reason, I think the extra level of abstraction from a screen to a robot is just an unnecessary obstacle at this level.

Continue reading “Kindergarten Robot 2: Going Programmable”

Kindergarten Robot

lego mindstorms nxt2One of my little projects while on parental leave has been to play around with my Lego Mindstorms NXT 2.0 robotics kit. Apart from being fun for a serious dad like myself, I always had in mind how I could use it with kids to get them interested in technology.

When I was a PhD student in Uppsala back around 2000, we bought a pile of the Lego Mindstorms RCX kits, for use in real-time courses. Obviously, the students loved the opportunity to play with Lego (including the few females). What was less obvious and much more interesting was what happened when we brought in a bunch of children from a local kindergarten to visit — they really took a liking to our little yellow robots running around a classroom. They treated the robots as little animals, wondering what they were doing and why…

With that in mind, I decided to try to reprise this myself with my own son and his kindergarten friends. Last week, I took my robot kit with me and went to meet the kids.

Continue reading “Kindergarten Robot”

Getting the Least of our your C Compiler – The Best Article I have ever written?

Back in 2001, while a PhD student at Uppsala University and IAR Systems, I wrote what has to be the most popular and long-lived article I ever did: “Getting the Least out of Your C Compiler“. It was an Embedded Systems Conference class that I also presented in 2002 (after that, I changed jobs to Virtutech and therefore C programming was no longer my official topic). However, the text has lived on. It was featured as a chapter in  the “Firmware Handbook” edited by Jack Ganssle, translated into German by IAR Germany, and has popped up in various places from time to time.

Last week, it resurfaced at, with an attribution that was initially wrong.

Continue reading “Getting the Least of our your C Compiler – The Best Article I have ever written?”

Shaking a Linux Device Driver on a Virtual Platform

To continue from last week’s post about my Linux device driver and hardware teaching setup in Simics, here is a lesson I learnt this week when doing some performance analysis based on various hardware speeds.

Continue reading “Shaking a Linux Device Driver on a Virtual Platform”

Learning Linux Device Drivers on a Virtual PowerPC

There are times when working with virtual hardware and not real hardware feels very liberating and efficient (not to mention safe). Bringing up, modifying, and extending operating systems is one obvious such case. Recently, I have been preparing an open-source-based demonstration and education systems based on embedded PowerPC machines, and teaching myself how to do Linux device drivers in the process. This really brought out the best in virtual platform use.

Continue reading “Learning Linux Device Drivers on a Virtual PowerPC”