Thursday, September 6, 2018

Register a bundle in Chisel3

A quick update to a previous post that I made:  Here is how I now create a register (sequential storage element) of a bundle in Chisel3.  The benefit is the elimination of the previously-necessary wire declaration.

val pageReg: Page = RegInit({
  val page = Wire(new Page())

Thursday, August 2, 2018

Statistics and now

I remember "ignoring" my statistics class in undergrad.  What I mean by that is I never attached real importance to the subject matter.  I did enough work to get through midterm and final exams, but not much else.  The result is that none of the content ever stuck.  I felt lucky at the time that I was able to cram sufficiently and pull off B+ or A- grades.  In retrospect, I recognize that I could have done a much better job in absorbing the material.  Not only in statistics but in other subjects as well.  In the imaginary scenario where I would time travel back to my undergrad days, I think at least, that I would now have what it takes to be that A/A+ student.  Not that it matters at this point, of course!

Now, back to re-learning all the statistics needed to make sense of machine learning.

Saturday, July 7, 2018

Fix journalling issue older generation SSD performance in Linux

I found a solution to an issue that has been hampering my development efficiency for months.  The symptom of the problem was any large file I/O operations on my secondary SSD stalled my Linux system.  The drive only contains applications and it is not a working volume.

My initial guess was a failing SSD.   SMART values did not indicate as such.  The drive was only a few years old and was from some obscure brand (PNY).

IO profiling indicated that process [jdb2/sdd1-8] had high IO write wait times while the system was "stalled".  I reproduced the behavior by writing a large random file to the disk.

Fast forward a few hours of research and unsuccessful attempts at modifying filesystem settings.  The solution was to disable journaling for this "previous generation" SSD drive.  It is work noting that the problem does not occur on my "newer generation" Samsung 840 root drive.

Lesson learned?  It would have been nice to "call IT" and have them fix it.  Not much else.  I guess that learned about IO system profiling and file system journalling.  It's time to get back to real work.

# monitor journalling process
sudo iotop -obtqqq | grep "jbd2"

# write large random file
head -c 10G < /dev/urandom > tmp

# disable journaling, need to unmount first
sudo tune2fs -O ^has_journal /dev/sdd1

# drive information
Device Model: SSD2SC120G3LA726B087-327
Firmware Version: 560ABBF0

Thursday, May 10, 2018

Another Scala Cheatsheet

I recently wrote up a "cheat sheet" for Scala.

You can download a .pdf copy of the file here.

My office is coming together nicely thanks to "decorations" as such.

References (75% “copied” from his material) (see: The Ultimate Scala Option Cheat Sheet)

Tuesday, May 8, 2018

Trying to gain traction

Few updates this time. The company is still in "stealth" mode and trying to gain market traction. The target market is quite small, and that is OK. The original business plan calls for developing partnerships with other businesses.  Unfortunately, one potential opportunity is on hold for reasons outside of my control. I have not spent sufficient time on marketing over the past 4-5 months.  This does not mean going out of "stealth" mode.  I expect it will happen before 2019.  Personal cash flow is not yet an issue.  However, I am slowly beginning to look for suitable (i.e., interesting) short-term contracting opportunities.  The timing of the search is arguably premature but I do not have a good sense of what the market for shorter-term contract work is like.  Therefore, some caution is necessary.

I have been updating my gist repository on GitHub several times per week. Check it out here.