Back to AMD

How long was it? 12 years, since 2007, when I built my first PC to go to college. My first CPU was the Athlon 64 x2 4400+, if memory serves me well. Those were the time when AMD got a lead in technology, the first 64 bit multi-core CPU to hit consumer market. But those time was short lived, multi-core software took time to catchup and when it does, Intel got their reply.

The Athlon 64 served me well. It got me through college, and into my working years. But I never got an upgrade choice from AMD, their Athlon line up couldn’t compete, their Phenom still couldn’t, their FX also failed, and then they just sort of gave up. For years, they only sell cheap CPU, that can’t meet my demand. And when my Athlon died after 6 years of service, I switched to a Core i5 – 3550 or something.

Another 6 years passed, the Core i5 is now falling behind in many tasks and in dire need for an upgrade. It can’t play 4K video, it’s a bottle neck for my GPU in, and it takes a lot of times only heavy crunching workload. And most importantly, it struggle to run the variety of virtual machine that I’m using for code work. Thus I have to look for an upgrade, and when I start considering options, AMD bounce back.

The ryzen CPU was good, it showed how Intel was lazy and greedy for the last decades after they dominate the market. Right after ryzen release, people see that Intel could have added more core into one CPU dire, but they just didn’t want to. Intel could have thrown in a better heatsink fan but they just didn’t want to. And when news of Ryzen 3000 series with Zen2 architecture come out, I decide to switch.

My choice was the Ryzen 7 3700X, the price was announced at 8.690.000VND. I have been using mid-range CPU for my whole life, so this was a big bump, but 8 core – 16 threads with 4.2GHz boost in a 65W TDP seem too good. I don’t overclock so the 65W TDP limit is more of a pros than cons. And at that price, it beats anything Intel currently offer in every possible ways of comparision.

First time buying any CPU worth more than 6.000K VND

The mainboard choice was more of a hassle. Ryzen 3000 series was built for AMD X570 chipset, but I distrust that chipset. They seem a bit rush to releasing X570, PCIe 4.0 is more of a gimmick than a feature right now and the 15W TDP just for the mainboard running, doing absolutely nothing is a big annoyance. Moreover the required fan for the chipset seem like a major weak point. CPU HSF can be replaced but we don’t have any standard for replacing chipset fan.

And the biggest downside of of X570 is they are vastly overpriced. Moreover there was no plan to reduce price of the last gen X470 chpiset so I decide to go with B450 chipset in the Asus ROG Strix B450F. At 3.350.000VND, it was the biggest B450 board I could find. And since I have grown skeptical with Gigabyte BIOS updating process, it seems like a good chance to try out Asus board.

RAM choice was two sticks of Gskill Trident Z 3000. Even though the internet recommend even 3600 or 4000Mhz RAM for Ryzen 7, but 3200 were the highest got sold here and they are too pricy. I purchase the RAM first before Ryzen 3700X release. The was almost 3.050.000VND in May and the put the whole CPU upgrade price tag at almost 16.000.000VND. That was more than my first PC (with monitor include) and it should mark the time I switch to more serious workload.

I also switch to NVMe SSD so that I can migrate the old SSD to the new HTPC for family use, completing my computer vision at least for the next decade

Force firefox to use light theme for content widget, even when choosing dark GTK+ theme.

The problem that had been haunting me for so long is firefox and dark theme. When choosing a dark GTK theme, firefox will use that same theme for widgets on website, especially website with forms. Now, most website will try to tweak the display of their form widget a bit, but not all website did a good job tweaking. They may default font color form black to dark grey but leave background unchange. Or they may change background color to light grey but still use default fonts.

In both cases, we ended up with broken website when I enable dark theme (grey text on dark background)

Un readable text when using dark gtk theme on some website

The default grey font on light background that website prefer is completely incomprehensable.

But chromium doesn’t seem to have this problem because chromium enforce its default theme for website’s widget, and completely disregard system theme. This is an imperfect solution but it fits in an imperfect world. So after much googling around I found a reddit thread

https://www.reddit.com/r/firefox/comments/9s2so2/firefox_linux_gtk_dark_theme_issue_solved_in_v63/

Turned out this was report as a bug 3 years ago and 2 years ago came a work-around: Go to about:config and add a new string preference name: widget.content.gtk-theme-override

Then you can enter any light theme you want to be use as default theme for website content widget. You can even enter a wrong theme name, it will default to system theme (which is a light them on most gnome distro). Then voila:.

Now with the work around

Launch gnome-terminal with a specific profile from within code::blocks

I use code::blocks when teaching Programming introductory courses because it’s simple to install and get going. However, when running code from codeblocks it will default to launch xterm, which is not quite my taste. So I naturally go to:

Settings -> Environment

Then change the setting: “Terminal to launch console programs” to gnome-terminal. Most of the time I run code in codeblocks, I have to show the terminal on the school projector with horrendous contrast that make almost to read white text on dark background. Now the problem is I love dark background on my terminal and don’t want to change my gnome-terminal to  light background. Install another terminal just for use with codeblocks on projector could solve this but seem like a waste of resources.

Fortunately Gnome-terminal support multiple profile with different display settings and there is an argument for you to choose profile when launching. So, I create a “project” profile within gnome-temrinal with enormous font, light background, etc, ideal for readability on projectors.

Then in codeblock edit setting to launch gnome-terminal with this special profile:

gnome-terminal -t $TITLE --profile=projector -x 


Film review: Tháng năm rực rỡ

Cũng lâu rồi blog không có bài nào tiếng Việt, thôi giờ review film Việt thì viết tiếng Việt đỡ chứ chả lẽ viết tiếng Anh mãi trong khi mình biết mình viết dở. Nói chung là bị rủ rê đi xem film và cũng lâu rồi không đi ủng hột một film Việt nào. Xem trailer thì không ấn tượng lắm nhưng có dàn diễn viên nữ nổi như cồn thời mình còn nhỏ nên xách mông lên đi thử. Xác định trước trong lòng là không đặt hy vọng quá cao vì film Việt bây giờ makerting trái chiều nhiều quá, khen đó rồi có khi chê đó mà cái tính của mình thì cỡ như Wonder Woman mìn còn lôi ra được sạn nữa là.

Nhìn một cách tổng thể thì film có tính giải trí cao, coi cũng hài. Nếu như không phải là film remake thì có lẽ cũng đáng được một lời khen. Nhưng với film remake mình thường có cái nhìn khắt khe hơn, đặc biệt là về cốt truyện và logic. Cốt truyện thì đã có film gốc nó lo rồi, giờ chỉ chuyển thể lại thì nên chăm chút hơn ở các chi tiết.

Nhân vật chính hồi 15 tuổi nói giọng rặt Thái Bình, sau 25 năm tới 40 tuổi thì nói giọng Nam bộ ngọt ngào trầm ấm là hơi kỳ rồi. Ừ mà thôi film cũng có giải thích là “nhập gia tùy tục” đi nhưng nhập thế quái nào mà ở giai đoạn trước năm 2000 phẫu thuật thẩm mỹ chưa phát triển cô gái ấy lại tự mọc thêm ra được hai cái lúm đồng tiền vậy???

Film đặt bối cảnh là nhóm bạn thân hồi lớp 11 phải tan rã vì chiến sự năm 1975, ờ thì thôi cũng tin là vì loạn lạc mà thất lạc tin nhau đi. Nhưng cách họ gặp lại nhau thì phải cho nó hợp lý tí. Nhân vật chính vô tình gặp lại cô “nhóm trưởng” năng động ngày xưa khi thấy cô ấy đi điều trị ung thư giai đoạn cuối trong bệnh viện. Quả là nhiệm màu.

Sau đó cô nhân vật chính nhìn học sinh tan trường mà chợt nhớ lại thời học sinh và rồi cô phóng xuống xe đi bộ sau đó cô chui tọt vào phòng làm việc của cô giáo ngày xưa và hỏi “cô còn nhớ em không”. Mother of nhiệm màu, phóng đại một phát vào cái trường nào đó ở Sài Gòn cái vô ngay phòng của cô giáo ngày xưa dạy tuốt trên Đà Lạt, trong khi rõ ràng trước đó cô này không có tin tức gì của bạn cả chỉ tình cờ thấy bạn sắp chết trong bệnh viện.

Sau đó khi gặp lại băng nhóm học đường ngày xưa của mình cô nhân vật chính rủ cả nhóm đi kiếm chuyện đánh dằn mặt bạn học của con vì cái tội “dám ăn hiếp con bà”. Cái thế giới gì ở đây vậy trời. Phụ huynh già đầu có cả người làm ăn giàu có rồi mà đi đánh nhau với học sinh cấp 3 là sao. Mấy bà đó có tiền mà, muốn đánh thì cứ thuê giang hồ vả méo mồm mấy con ranh đó ra chứ làm cái gì mà lố lăng coi không có được. Chuyển thể cho nó hợp lý một tí chứ trời. Thời mình còn đi học, đúng năm 2000 theo bối cảnh của film, học sinh một trường đàng hoàng có ăn hiếp nhau cũng phải biết sợ phụ huynh. Không có cái kiểu trả treo mất dạy như trong film. Còn loại học sinh mà dám bật cả phụ huynh của bạn thì chỉ có là trẻ bụi đời chứ không phải học sinh. Loại này mà đụng vào nó kêu băng của nó tới xiên lòi ruột chứ không có cà búng cà búng như trong film.

Và cuối cùng là cái sai nặng nhất với mình, đó là sai bối cảnh lịch sử. Trong film có cảnh sinh viên biểu tình trên đường sau đó choảng nhau với cảnh sát dã chiến. Trang phục này nọ thì OK hết cả đấy nhưng nó không đúng lịch sử. Phong trào sinh viên phản chiến ở Miền Nam mạnh nhất là vào các giai đoạn từ 1967 – 1971 khi hầu hết lãnh đạo Tổng Hội sinh viên đều có liên hệ với chính phủ cách mạng lâm thời miền Nam Việt Nam. Sang giai đoạn 1972-1975, hầu hết lãnh đạo thân chính phủ cách mạng chủ chốt như Huỳnh Tấn Mẫm đều bị bắt cầm tù. Và đặc biệt trong giai đoạn đầu năm 1975 khi chính quyền miền Nam mất tỉnh Phước Long thì không khí chiến sự rất căng thẳng. Việc học sinh sinh viên còn có khả năng tổ chức biểu tình trong cái không khí đó không tưởng, mà có biểu tình được thì cũng ăn đạn chứ không có ăn dùi cui như trong film.

Tiếp đó là bối cảnh trong film nhóm bạn thân đang chuẩn bị tiết mục văn nghệ cuối năm thì chia tay tan rã vì chiến sự (tan rã vì chiến sự thì dễ tin chứ tan rã vì bị đuổi học như trong film thì quá sức tào lao. Đặc biệt . Trong đó có cảnh chiếc xe của binh lính Sài Gòn đang rút chạy. Văn nghệ như vậy thì phải vào đợt cuối tháng 4. TrongkKhi đó theo lịch sử thì chiến dịch Tây Nguyên đã bắt đầu từ hồi đầu tháng 3 với trận mở màn chớp nhoáng ở Buôn Mê Thuột. Sau nhiều cuộc phản kích tái chiếm không thành thì từ giữa tháng 3 quan đội Sài Gòn đã rút khỏi Tây Nguyên, Đà Lạt (Lâm Đồng) rơi vào thế cô lập. Quân đội Nhân dân Việt Nam chỉ còn việc nhẹ nhàng giải phóng từ phần của tỉnh Lâm Đồng từ ngày 17 tháng 3 và tới ngày 3 tháng 4 thì giải phóng thành phố Đà Lạt. Trong bối cảnh đó mà còn có cái trường nào tổ chức văn nghệ với bầu chọn hoa khôi thì đúng là điên rồ.

Đó là vài cái sai logic lớn, sai nhỏ thì nhiều, chủ yếu do bê y chang nội dung film Hàn qua mà không thèm sửa nhưng mà nhiếu quá nhớ không hết nên thôi khỏi ghi vậy. Về phần diễn viên tất cả đều đã rất cố gắng nhưng không hiểu tuyển không nổi diễn viên hay sao mà cùng một nhân vật ở thời 15 tuổi với thời 45 tuổi không có bất cứ cái ăn nhập nào với nhau. Nét diễn của mỗi người cũng khác nhau luôn. Lúc coi film cứ phải cố gắng suy nghĩ lắm mới kết nối hai diễn viên vô một nhân vật, làm mệt não người xem một cách không cần thiết.

Cuối cùng điểm cộng chính cho film là ở cảnh quay. Không phải là những đại cảnh quá vĩ đại và hoành tráng hay những khung cảnh đầy tính hình tượng và nghệ thuật, nhưng phần bối cảnh của film được làm khá kỹ. Cảnh quay ưa mắt, các chi tiết chăm chút cho phù hợp với từng giai đoạn của film. Hầu hết film Việt mình thấy trong giai đoạn gần đây đều làm khâu này ổn, và film này cũng không ngoại lệ. Một điểm cộng bù đắp lại cho mấy cái sai bên trên vậy.

 

Building a home media streaming server. Part 2: The streaming server

Now that I got my TV hook up to the laptop and the PC working as the media server serving those FullHD x264 film over the air. I can simply install  on it and got top notch home media experience,  just look at this beautiful picture, it sure speak more than thousands word:

However, the problem with those massive HEVC(x265)10bit high bitrate film remain. My laptop simply can’t open those files. I will have to transcode those file and stream it to the laptop. In short, my work station will have to be Youtube, or something like this:

The survey

I tried to build a streaming server but to no avail. First is making a trip to the guide: https://wiki.archlinux.org/index.php/Streaming_media

That link provide quite a few streaming software available on  arch that can stream over DLNA/UPnP protocol. Now as far as I’m concerned, DLNA is meant to stream to media player device that doesn’t have full capacitiy of a laptop computer and thus the server has to transcode the file to a more easier to read format and that’s exactly my use case. Looking on the list of streamer sever software, some catch the eye:

  1. ReadyMedia, formerly known as minidlna, this is a simple and no fussy solution, just like it’s name suggest. You edit the config file, start the server and the media appear on your client, just that.
  2. Gerbera, formerly known as MediaTomb. I did try this server to a horrible experience. It was so buggy and the config file was so so complex that I find no way to make it work and abandon the streaming stuff all together. But with it’s code fork  and make into gerbera, maybe thing will be a bit better
  3. Emby. This software is new and it has a beautiful website for an opensource app. I don’t like the fact that it was coded in C# though but if it work good I can make a pass for that.
  4. Plex. This is a closed-source solution so I was deterred to try it last time. It requires you to registered a free account to get token to access your own media collection. It has an option to make stream your data over the internet, but, for a closed-source solution that sound more scary than cool. But if you don’t concerned about closed-source, Plex has a really good reputation of working find and looking beautiful.

So, how can a tech savvier choose his favourite streaming server among those? He tried them all on 🙂

ReadyMedia

This software is a resurrection of MiniDLNA, and as its name suggests, this software is lightweight and simple to use. Archwiki already got a pretty decent article on this piece: https://wiki.archlinux.org/index.php/ReadyMedia. However, since I also need transcoding feature, I have to install patched version from bitbucket. Arch’s AUR ease up the installation a bit https://aur.archlinux.org/packages/readymedia-transcode-git/ but the old source code won’t compile with the shinny and new ImageMagick version 7.

A little hack is required, and I left a comment in arch’s aur page (linked above). After the minidlna server is up and running, any media player that support dlna protocol can see and open file from my homePC. Kodi con do it but I setting kodi is story for part 3 of this series, one can test if dlna server is up by using the quick and easy vlc :

Just open VLC, then go to View -> Playlist (Ctrl + L) and select Universial Plug 'n' Play under Local Network section.

Your sever will be listed on the right side and you can browse it by  folders of just get a list of every media file that the server understand.

# list of video containers that needs to be transcoded
# possible values can be obtained by running "ffmpeg -formats"
# The format in which the settings should be written is the same
# as the format used for the "transcode_audio_codecs".
transcode_video_containers=
# list of video codecs that needs to be transcoded
# possible values can be obtained by running "ffmpeg -codecs"
# The format in which the settings should be written is the same
# as the format used for the "transcode_audio_codecs".
transcode_video_codecs=vp8/theora/flv/flv1/svq3/hevc
# full path to the transcoder that is used for video transcoding
# for details, see comments on transcode_audio_transcoder
transcode_video_transcoder=/opt/transcode_video-hq

 

You can either specify the containers (the extensions) you want to transcode or the codecs that will be transcode, or both. Since my laptop only struggle with x265 (HEVC) file, I simply add hevc at the end of the line transcode_video_codecs.

transcode_video_transcoder specify the wrapper script to call a program at your choosing that will be used to actually perform the transcoding. The example script that come with ReadyMedia is easy enough to grasp:

#!/bin/sh

SOURCE=$1
STARTPOSITION=$2
DURATION=$3

ffmpeg -ss $STARTPOSITION -t $DURATION -i "$SOURCE" -loglevel quiet -threads auto -async 2 -vcodec mpeg4 -f mpegts pipe:1 -scodec copy 

 

That script take 3 arguments then call ffmpeg to perform the transcoding. The output will be put into standard pipe and then stream to the client.

However, I soon run into a big problem: I CANNOT SEEK

Yeah, no matter how much I tweak ffmpeg argument and ReadyMedia setting, seeking doesn’t seem to work. The seek button on client won’t work, some client even won’t report movie run time. Now that is impossible to use, I can bare with no subtitle or some film, but the most important of watching film at home is that you can forward and backward to the scene you love the most, with no seeking, the experience is nothing more than and old TV.

I did try  but even though it works much better and bug free then the old MediaTomb, I couldn’t find any improvement on transcoding and seeking. In fact, the old transcoding guide for MediaTomb flat out says that seeking is IMPOSSIBLE.

 

(sidenote: old like to mediatomb website seem dead but the old guide is available in google search’s cache). The only improvement over ReadyMedia that Gerbera can bring to the table is a web interface to do the configuration. That’s it. No improvement in transcoding than I can found. So my search for the solution continue into the realm of proprietary software.

Plex and Embry

The thing I found out when tried on  is that their reputations are well deserved. Installation is easy, configuration is easy and everything just work. After install the server package onto my HomePC, I can access the MY Plex homepage from the local network via the default port 32400. And Man, it was beautiful. Just hover your mouse on the LIBRARY section then click the Plus (+) icon, one will be greeted with the dialog to add a new library.

First, we choose Library type, then browse to  a folder on the disk where the media file is stored. Now just like Kodi, if you choose either Films or TV Programmes, Plex will automatically pull all metadata for those movie and TV shows from imdb, and it will show ONLY the file it recognize as Films or TV Programmes respectively. It’s mean some clip that one really mean to hide won’t show up on the plex library, hooray!

About the transcoding, well, I must say it’s not quite as easy as the rest. Plex support transcoding out of the box but the option to transcoding 4K resolution only “automatically” appear if I really watching the video on a 4K window

Therefore, I cannot test it out on my laptop alone without plugging it into the TV, and that’s inconvenience. And even though the transcoding work, I can enjoy the movie without those massive frame dropping, it put a huge strain on both client and server. Even without the need to decoding, putting all the pixel at that massive bitrate on the screen is back breaking work for my laptop

 

With CPU jumping between 70% to 90% utilizing across all 2 core, 4 threads, all I can do is enjoy the movie because the laptop hardly response to anything else.

On the server side thing is also pushed to the very edge. My homePC is not equipped with streaming oriented hardware and just decode those HEVC codec alone already put 60% CPU usage on it. Having to re-encode those pixel and transport it over the network and the CPU usage jump to 80-90%.

And the strain on network is also enormous. I’m not a professional in setting up high speed network so my WiFi can only push out about 28Mbps, barely enough for some 4K movie, some other will suffer from stuttering play back. That’s a little bit disappointing at first, I didn’t think a home WIFi network with me as the only primary user would be insufficient for 4K playback. But since a HTPC with dedicate wired Ethernet connection was in plan, I guess I have to bare with the stuttering for now.

Emby

Emby is the closest thing to Plex. Unlike Plex, it employs a Free/Open source version along side a “Premiere” version. The Free/Open source part provide enough features and usability for me. It automatically recognize files in your chosen folder and pull all metadata from the internet. Emby provide native app for a barrage of Mobile and TV devices but I haven’t the need for any of them yet.

For PC platform emby provide just the web application and it’s seem good enough, though the interface is not as glamorous as Plex’s.

The playback however is not as smooth. Due to the lack of a PC client app, Emby have to transcode almost every single mkv file or mine to suitable codec for web playaback. And the transcoding process is just Monstrosity. The CPU usage on my HomePC quickly jump to 100% and keep staying there, the whole system become lagging and even then I suffer stuttering playback. It seem like my system was just not strong enough for Emby and by the time I have money to upgrade it I won’t need emby anymore so that was the end of my Emby experience.

The conclusion

So, at the moment, whenever I want to enjoy a 4K movie, I fire up plexmediaserver on my HomePC and Plex Client on my laptop then hookup the laptop to TV and voila. It’s not perfect but at least I decent.

The next part of this series will deal with how I equip my laptop to double as a poor-man-HTPC, include both software and hardware modification needed.