I have been spending quite a bit of time in recent years developing training materials and doing trainings for Simics. There is always a discussion on how best to do training, in particular between live sessions with actual trainers and offline video and other self-study resources. I am a firm believer in the value of live training, and during our recent winter vacation up in the Swedish mountains I made myself provide a perfect example of the value of a teacher. I took a skiing lesson.Continue reading “The Benefit of Live Teachers (Applied to Myself)”
I am probably among the last people to have tried Spotify. When the service first arrived ten years ago I looked at it and concluded it seemed a poor match for my needs. To me, music is something you buy and own permanently in the style of old-fashioned CDs. The whole idea of a streaming service where an artist, album, or song could go missing all of sudden due to factors beyond your control just seemed (and still seems) suspicious. Everybody else seemed to love it, but that does not necessarily mean it is good… However, I finally did jump in and try Spotify, and here is what I found.
At the Right Price, even a Curmudgeon can be Convinced
The reason I finally tried Spotify is that since both kids wanted Spotify Premium accounts it was cheaper to go for a family plan – which covers up to six people in the same household. As a result, I was suddenly a Spotify Premium user, and since it literally did not cost me anything, I decided to finally try it.
Overall, the content is impressive, but I am less impressed by the application and the organizational tools at your disposal.
My point of comparison is my personal music library composed of music collected since the early days of MP3s around the turn of the millennium – in total some 12000 files, many of them with custom tagging and genre markings. Some ripped from CDs, and quite a few bought as digital downloads, first from Apple iTunes and more recently from Google Play Music (when I stopped using iPods to play music a few years ago I decided to finally cut the cord to the Apple ecosystem entirely).
On my computers I play music using the Music Bee player, which also has excellent tools for working with tags and metadata in music files. It took quite a while to find a good music player for my phone, but I have finally found one I really like: Blackplayer EX. Google’s own Android Music application is not very impressive.
The Content is Great
The really good thing about Spotify is the content. Not just the availability of most of the music you might imagine playing, but also things like playlists set up by other people and Spotify Radio. It does indeed live up to the initial vision of having all the world’s music available legally and immediately, like the Spotify founder Daniel Ek explained in an episode of the Freakonomics podcast.
The search function works really well, and I like that you can dive into artists, songs, or albums. For some reason, this works a lot better than Google Music… with Spotify, finding all songs with the same title is easy (i.e., hunting for covers). With Google Music, you just end up somewhere weird and useless.
A biproduct of having everything available to stream without additional per-item costs is that it is really easy to jump around through the universe of music on Spotify and see what you find. You can check out a new album and give it a try in a way that would not be possible if I had to buy the album first to sample it. That is an obvious property of a streaming service, but it is probably one of the most important differences to the traditional way of unit-based buying of music.
I have a huge love for cover versions of songs I like, the stranger the better. Spotify has turned into a great resource to indulge in this. For example, I did a search on “Personal Jesus”. Which turned up a version by Di Leva, which led me to his Album Lovestar, which in turn contained a wonderful or awful cover of ABBA’s The Winner Takes it All… It is a bit like following chains of links on Wikipedia, where you never know what you will learn at the next turn.
The availability of shared playlists from other users on the platform offers another great source of discovery. For example, keeping up with the Personal Jesus theme, I stumbled on this collection of a ton of covers of that particular song:
One aspect of the content that I find less impressive is actually the metadata about the songs. For music created in recent years it seems that information about composers and similar is in decent shape. But for older tracks, it can be a bit sketchy:
For some reason, information like year of release is attached to the Album a song belongs to, and not to the song itself. For collections of songs, it makes more sense to include the original release date of the song I would think… This is clearly an area where I think Spotify could improve. In all fairness, there are some decent artist biographies to be found in the Spotify platform, and I guess there is no point in becoming a Wikipedia of information… that function is already fulfilled by the real Wikipedia.
The synchronization of Spotify across different devices and the web interface is probably the best I have ever seen. I guess it helps that we are talking about very little actual data stored on the device – handling a hundred gigabytes of information that is selectively downloaded to different machines based on local needs and storage capacities is arguably asking for more complexity than what Spotify does. Still, just having playlists and what I am currently playing seamlessly sync between web, desktop app, and phone is impressive.
One area where I Spotify to be a bit disappointing is in the organizational tools that it offers. I cannot really see how you could build a music collection (I guess, virtual collection since you do not own anything) with it. It is really hard to catalogue and categorize things – all you can do is to like songs and create playlists.
But I would like to be able to do much more than that.
Why does Spotify not offer users the ability to rate songs on a scale from zero to five like all MP3-based tools do? And why can’t I add my own tags to songs and use them in queries to built algorithm-driven playlists? Like “all the Christmas songs that I have given four or five stars”?
There is no way to mark a song as “this looks interesting, I will check it out later” like the “Watch Later” function on YouTube. I definitely think the “like” of a song should be separate from “I have it in my library”.
The history function is decidedly odd. Instead of presenting me with a straight list of the previous songs I have played (like YouTube’s history function), I get a list of albums from which I have recently played songs. That is not particularly helpful if an interesting song went by at a time where it was not possible to use the app to mark it as good (like when listening with your hands full of something else). This makes it a lot harder to make use of Spotify as a discovery function, since music can just fly by and be very hard to find afterwards. There should be a straight simple song history.
Simplicity taken too Far
Maybe I was not expecting the right things, but I did find the Spotify user interface to be a bit too simple for my taste. At least on the phone App, too many things are hidden several clicks away instead of adding direct-access buttons to the main UI. Compare Spotify:
With my customized Blackplayer setup featuring buttons in all corners of the UI, a star rating slider, and a volume control.
I would not call this particularly busy, but it puts a lot more useful functionality directly on the now-playing screen. I think mobile apps should be more like this: add clear buttons for functions, rather than trying to be minimalist and hide things behind swipes in different directions on different UI elements. Blackplayer is also great since it allows you to change the buttons displayed on the screen, which is something I think Spotify should do too.
The “Queue” functionality in Spotify (across platforms, but especially on the mobile App) seems totally broken. It might start playing from the queue, but then suddenly it moves into an Album, or onto a playlist. Swiping left (from the right) on the cover art will move to the next song in the queue… but swiping right does not go back into the queue, instead it also goes to some playlist or album I recently visited. History gets lost.
The logical system would be to maintain a persistent history, and having swipe right and left always move back and forward through this history until you reach the end of it. Most other music player apps I have used have worked like that. Inside a playlist it seems to work, but not when mixing the Queue with playlists.
I will likely keep using Spotify as a way to discover music. It is really useful as a way to share discoveries with other people, since most people I know seem to have Spotify accounts anyway. It is really impressive to indeed have most of the music in the world available immediately and without added cost.
But the overall impression is of a rather impersonal system in some way. It is hard to make Spotify your own – it really feels like the content creators have a bit too much to say, and there is too little room for users to change metadata around songs to suit their needs and preferences.
It is also a bit too simplistic in the user interface and data model – there is clearly so much more that could be done to create a sophisticated music organization tool. Spotify is way behind even the early-2000s file-based music players when it comes to organizing things.
One service I would like is to be able to actually buy permanent downloads of songs from Spotify directly, so that I can retain access to the music if I decide to stop paying Spotify or if (when) Spotify disappears from the market. I have been using computers and various services for long enough that I know that unless I have a copy on my own personal hard drives, I will lose access somehow. Music is a bit too important to trust to a fleeting engagement with a company that can remove access to it any day.
Right now, I will likely discover things on Spotify and buy the permanent downloads from Google, crazy as it sounds. Downloaded music files also work in cases like the SD card in the not-at-all-connected car we have.
Earlier this year, Arianna Delsante defended her Master’s Thesis in computer science at Uppsala University. Her thesis topic was to speed up cache and branch prediction simulation in Simics, and in the end she got a speed up of about 10x compared to previous implementations in Simics. I explain a bit more about cache simulation in fast functional simulators and what she did in my latest Intel Developer Zone Blog post, “Speeding-Up Cache Simulation in Simics by 10x“.Continue reading “Intel Blog Post: Simulating Caches 10x Faster with Simics”
I find debugging a very interesting topic of study, so when I stumbled on the paper “Studying the advancement in debugging practice of professional software developers”, I had to do a blog on its contents.Continue reading ““Studying the Advancement in Debugging Practice” / 2016 Paper”
As I chronicled earlier this year (see “A Sudden Case of Cancer”), I got a Thyroid Cancer diagnosis back in May of this year. In June I went through surgery which went very well. After only three weeks, I was sufficiently recovered to travel to Greece and give a keynote presentation at the SAMOS conference. My scar prevented me from taking as much as advantage as I could have of the sun and pool, but it was possible to do at least a little bit of bathing towards the end. Now, I have reached part two of the treatment, radioiodine therapy to knock out any lingering cancer cells. Basically, I am going radioactive for a few days.Continue reading “Cancer Part 2: Going Radioactive”
I have had some annoying problems in recent months with my work laptop refusing to connect to certain WiFi login pages (more technically known as Captive Portals), essentially locking me out of the WiFi in certain places. Here is how I solved it.Continue reading “Failing to See WiFi Login Page [Captive Portal] / Solved”
My blog post from last week, “Programming for Everyone, Everyone’s a Programmer?,” gave rise to some good comments from friends and colleagues on the matter of programming. Some of the points are worth addressing in a continuation of the discussion. To get the starting point, please read the previous post first.Continue reading “More on Programming”
Recently, I have read some articles and seen product announcements based on the idea that we need to make programming easier. Making it easier is supposed to make more people program, and the underlying assumption is that programming can be easy enough that everyone can do it. I have also talked computer science undergraduate students who kind of asked me just how many years at the university you should do, and what do you actually in practice gain from a university degree in computer science? When I think about it, these two discussions really come down to the same question: Should everyone be a programmer? Can everyone be a programmer? What does it mean to be a programmer? How do you best learn to program?Continue reading “Programming for Everyone, Everyone’s a Programmer?”
A new short blog post on my Intel Developer Zone blog talks about the improved threading simulation core we have added in Simics version 6… and about how a colleague of mine climbed to the top of the highest mountain in Europe and showed a flag with our new Simics icon! Read the story at https://software.intel.com/en-us/blogs/2019/09/10/simics-6-at-the-mountain-top.
I have a new blog post out on the Intel Developer Zone, about the Simics 6 device register coverage feature. I use device register coverage to look at how different operating systems use the same hardware. The differences are significant, demonstrating the (rather expected) observation that different software stacks use the same hardware in different ways.Continue reading “Intel Blog: Simics 6 Device Register Coverage”
I just started using Office 365 at work, and almost immediately I hit a hilariously bad problem in the core simple “import CSV” functionality. Basically, the Excel 2016 that I got (it is 2016, not the latest 365 that my home machine all use) does not understand Windows line endings or decimal numbers.Continue reading “Excel 2016 & CSV Import – Hilariously Broken”
A while ago, Ars Technica reviewed the Mega Sg, a modern clone of the old Sega Genesis gaming system. I stumbled on this review recently and realized that this is a fascinating piece of hardware. The Mega Sg is produced by a company called Analogue (https://www.analogue.co/), presumably named thus because they create analogues to old gaming consoles. The way this is done is different from most current “revive the old consoles” products that simply use software emulation to run old games. Instead, Analogue seems to have settled on using FPGA (Field-Programmable Gate Array) technology to basically build new hardware that is functionally equivalent to the old console hardware.Continue reading “Using FPGAs to Simulate old Game Consoles”
This year’s family vacation was spent on the Greek island of Crete, in an all-inclusive resort close to Chania on the north coast. Overall we got nice weather and an enjoyable pool-and-sun holiday, mostly staying at the hotel with a few excursions. In the following, I will go through some of the most surprising or interesting observations I made in Crete. Greek letters are cool, but I do not think we will go back to Greece any time soon when there are higher-quality places available (such as Spain).Continue reading “Off-Topic: Vacation in Crete”
Earlier in July 2019, I had the honor of presenting one of the keynote talks at the 19th SAMOS (International Conference on Embedded Computer Systems: Architectures, MOdeling, and Simulation) conference, held on the island of Samos in Greece. When I got the invite, I had no real idea what to expect. I asked around a bit and people said it was a good conference with a rather special vibe. I think that is a very good description of the conference: a special vibe. In addition to the usual papers and sessions, there is a strong focus on community and social events, fostering discussion across academic disciplines and between industry and academia. There were many really great discussions in addition to the paper and keynote presentations, and overall it was one of the most interesting conferences I have been to in recent years.Continue reading “SAMOS 2019 – Insights, Mechanisms, Heterogeneity, and more”
Cancer – it is a scary thing, and it recently became part of my life. It is only two weeks ago today that I got my cancer diagnosis, and I am already out of surgery and recovering. It has been a very speedy process, and hopefully this will be the end of it. Getting a cancer diagnosis is a bit rattling, but there is no reason to panic.Continue reading “A Sudden Case of Cancer”
For Simics training and demo purposes, we often use Linux* running on the virtual platforms. In the early days of Simics and embedded Linux, we built our own minimal configurations by hand to run on simple target systems. Most recently, we changed our Linux default demo and training setup to use Clear Linux*. This change showed us just how sophisticated modern Linux setups are – which is good in general, but it also can make some low-level details more complicated.
I wrote an Intel Developer Zone Blog Post about our experience moving to Clear Linux for Simics demos and training, which contains a lot more details of what we observed and did to make this work for our purposes.
Last week was spent at the Design Automation Conference (DAC) in Las Vegas. I had a presentation and poster in the Designer/IP track about Clouds, Containers, and Virtual Platforms , and worked in the Intel Simulation Solutions booth at the show floor. The DAC was good as always, meeting many old friends in the industry as well as checking out the latest trends in EDA (hint: same trends as everywhere else). One particularly nice surprise was a book (the printed type, not the Vegas “book” that means something else entirely).Continue reading “DAC 2019 – Cloud, a Book, an Award, and More”
I heard about the DOOM Game Engine Black Book by Fabien Sanglard on the Hanselminutes podcast episode 666, and immediately ordered the book. It was a riveting read – at least for someone who likes technology and computer history like I do. The book walks through how the ID Software classic DOOM game from 1993 works and the tricks and techniques used to get sufficient performance out of the hardware of 1993. As background to how the software was written, the book contains a great description of the hardware design of IBM-compatible PCs, gaming consoles, and NeXT machines circa 1992-1994. It covers software design, game design, marketing, and how ID Software worked.Continue reading “DOOM Black Book – This is Brilliant!”
The US Defense Advanced Projects Agency (DARPA) ran a “Cyber Grand Challenge” in 2016, where automated cyber-attack and cyber-defense systems were pitted against each other to drive progress in autonomous cyber-security. The competition was run on physical computers (obviously), but Simics was used in a parallel flow to check that competitors’ programs were not trying to undermine the infrastructure of the competition rather than compete fairly inside the rules of the competition.Continue reading “Intel Blog Post: Simics in the DARPA Cyber Grand Challenge”
For the past couple of weeks, I have been using a Nokia 7.1 phone as my main phone while my main Sony phone has been off for repairs. My habit for quite a few years has been to use Sony “flagship” phones as my work phones (and way back, even Sony-Ericsson). The question this poses – how was it to use a theoretically far weaker “mid-range” phone instead of a flagship?Continue reading “Living with a Nokia 7.1 Phone”
For some reason, Microsoft has decided to hide some decidedly useful features in Windows 10 explorer behind the non-intuitive and rather unknown “shift-key + right-click” combination.Continue reading “Off-Topic: Windows Explorer Tip: Shift Right-Click”
I have tried yet another keyboard at home in my quest to find one that the rest of the family finds sufficiently silent – while still being nice to type on. While my fingers love the feeling of the super-clicky MX Blues in my K70 at work, it is not the best choice with other people in the same room, especially at home. Thus, my long-running quest for a keyboard with a nice feel but less noise. I started with a Matias Quiet, and when that broke I tried a Corsair RGB Silent Strafe with the rather expensive MX Silent switches. The “silent” was not sufficiently silent, though, bringing me to the latest keyboard I am trying: the Corsair K55 RGB.Continue reading “Off-Topic: The Corsair K55 Rather Silent Keyboard”
Running Simics inside a container is a topic that has come up several times in recent years. In a two-part Intel Developer Zone blog post, my colleague Mambwe Mumbwa and I discuss both some background on container technology, how and how well Simics can run inside of containers, and what you can with containerized Simicses. Overall, containers offer a very good alternative to virtual machines for running programs like Simics, and the tool ecosystem opens up some exciting new ways to manage Simics installations and simulation instances.
Update: this post was extended to link to both part 1 and part 2 of the blog.Continue reading “Intel Blog Posts: Running Simics in Containers”
The Embedded World in Nürnberg is still going strong as the best tradeshow for “Embedded” in the world. This year, I spent time doing booth duty and gave a talk in the Conference part of the event. There was an unusual high number of old friends and business acquaintances around, and it was a great experience overall with many fruitful discussions and connections for the future. However, it seems that there is always something that goes slightly awry with my travel to the show…Continue reading “Embedded World 2019”
The Embedded World Exhibition and Conference 2019 is coming up in the last week of February. I will be there presenting a paper in the conference as well as demoing CoFluent in the Intel booth and some other miscellany. The paper “Shifting-Left Together – Enabling the Ecosystem with Virtual Platforms” is about how silicon vendors can (should) use virtual platforms to bring shift-left practices to their customers in addition to their own internal teams.Continue reading “Shifting Left Together at the Embedded World 2019”
Late last year I was trying to do some machine learning work on my brand new Alienware 15 R4 gaming laptop. I had bought the laptop in order to have something portable with sufficient performance to actually do convolutional neural network (CNN) training and inference “on the road”. The GTX 1060 in the laptop is just as powerful as my home desktop machine, and should run Tensorflow and Keras well. I had the setup working on the desktop already, and copied the code over to the laptop. When trying to run the code the first time, I got some rather strange errors that I finally figured out meant that I was missing the CUDA toolkit. I downloaded CUDA version 10, installed, and the machine rebooted into the Windows 10 automatic repair mode.Continue reading “Windows 10 Reboot Loop – CUDA & Alienware”
There are some things in computing that seem “obviously” true and that “clearly” make it “impossible” to do some things. One example of this is the idea that you cannot go backwards in time from the current state of a program or computer system and recover previous state by just reversing the semantics of the instructions in the program. In particular, that you cannot take a core dump from a failed system and reverse-execute back from it – how could you? In order to do reverse debugging and reverse execution, you “have to” record the state at the first point in time that you want to be able to go back to, and then record all changes to the state. Turns out I was wrong, as shown by a recent Usenix OSDI paper.Continue reading “Microsoft REPT: You CAN Reverse from a Core Dump!”
A few weeks ago, I talked about temporal decoupling in virtual platforms at DVCon Europe 2018. I just posted some additional notes on the topic temporal decoupling on my Intel blog. In this new blog post, I discuss some more aspects of temporal decoupling, and how it affects simulation semantics. I also explain some of the clever techniques used to minimize the impact of temporal decoupling on the software running on the virtual target system.
Read the full text at as “Additional Notes on Temporal Decoupling“.
DVCon Europe took place in München, Bayern, Germany, on October 24 and 25, 2018. Here are some notes from the conference, including both general observations and some details on a few papers that were really quite interesting. This is not intended as an exhaustive replay, just my personal notes on what I found interesting.