Star Wars Special Edition Notebook

Against my original plan to post every Saturday about my OpenGL progress, I’m going to write about my new laptop. Let’s face it, getting a new toy – the special edition Star Wars laptop from HP – and setting it up is more exciting at the moment. Apart from that, finally having my own laptop again will make it a whole lot easier and more convenient for me to write my OpenGL programs. I don’t like doing private stuff on my work laptop and since I have Windows 10 on my PC downstairs, I’m frequently having problems working on it remotely.

Star Wars Special Edition Notebook

I originally got a different laptop for Christmas, but as lucky as I am, that one had a buggered up trackpad. After having troubles with the store we bought it from, I told them to keep the damaged notebook and to give us the money back. Then, a couple days ago, I saw this laptop and fell in love with it. Surprisingly, it wasn’t the specs that got me passionate. Let’s face it, the special edition version (particularly the lower end one here in Canada) is not the best and you can find better laptops for the same price. But, you won’t find a similar cool looking laptop 😉 . Me wanting this laptop surprised the heck out of my husband. I’m always just concerned about the quality and specifications and don’t normally ever care about the looks. And on top of that, I’m always claiming to be more of a Treki than a Star Wars fan. Whatever.

So what are the pros and the cons for this laptop? As mentioned, you don’t get the best processor, nor the best hard-drive, nor a dedicated graphics card, nor the most RAM with it (again, I’m talking about the lower end version we can get here in Canada). Nevertheless, I’m not a gamer (don’t play enough to call myself one), so I don’t particularly care about the graphics card as long as the included graphics chipset supports OpenGL 4.4. The laptop doesn’t have a touch screen which generally isn’t really an issue (how many people truly use the touchscreen on a laptop?). The only times when a touchscreen comes handy is when I develop applications I want to run on a tablet/phone as well. Testing touchscreen friendliness directly on your development station is definitely a plus. But it is as it is.

I love the general look of the laptop. The red keys are awesome (especially when lit). I just wish they offered a version that had the Aurebesh characters on the keys. OK, I’m realistic, HP wouldn’t sell a whole lot of those laptops, but Star Wars geeks would go even crazier for such a version. Nevertheless, why didn’t HP at least print the Aurebesh character in small letters next to it? I personally think that’s a big miss.

I was positively surprised about the amount of crapware installed (but I guess, having Lenovo as my work laptop which is known to be the worst when it comes to preinstalled crapware, I can’t quite judge). It comes with a few nice ‘Star Wars specific’ features such as wallpapers, sounds, recycling bin icon, etc. Since it’s easy enough to get rid of all the other stuff HP includes, I don’t mind. Of course, I do prefer signature editions (saves time and therefore money), but since I had such a bad experience with the Windows Store, I now accept having to deal with cleaning up after buying.

I personally like the keyboard layout, I just found it annoying that it doesn’t contain a right control key. I’m using that one a lot in emacs and can’t imagine not using it anymore. Fortunately, SharpKeys came to the rescue and I now use the key next to the right Alt key as Ctrl (where it should be anyhow). Not sure what HP was thinking by replacing the Control key with in my opinion useless key. But at the same time, if you don’t use Emacs, you might hardly use the right Control key anyhow and therefore not mind.

Overall, I just really like the notebook for its looks (very shallow, I admit). In general, if you want a cool looking laptop like for example Alienware, you have to spend quite some bucks. HP’s Star Wars edition is comparatively inexpensive but of course also doesn’t even get close to the specs of e.g. Alienware laptops. Since I haven’t gotten around doing too too much with my new toy, I can’t really write about its performance.

Aurebesh typing test for emacs

This entry is part 3 of 3 in the series Aurebesh

A few weeks ago, I posted the Aurebesh typing test. Since I’ve recently started learning elisp, I figured that I should implement the typing test as a feature for emacs.

The code below is terrible with bugs and problems, but heck, it’s my first elisp program after all. My goal is to improve the version over time and to add features such as logging results in a separate file and displaying a progress statistic. To use it, you’ll need to first install the Aurebesh font.

(setq correct 0)
(setq wrong 0)
(setq seconds-left 60)
(setq test-start t)

(require 'widget)

(defun aurebesh-typing-test ()
  "Aurebesh typing test"
  (interactive)
  (get-buffer-create "*Aurebesh typing test*")
  (custom/reset-aurebesh-typing-test-vars)
  (custom/aurebesh-typing-test))

(defun custom/reset-aurebesh-typing-test-vars()
  (setq test-start t)
  (setq correct 0)
  (setq wrong 0)
  (setq seconds-left 60))

(defun custom/aurebesh-typing-test()
  (with-current-buffer "*Aurebesh typing test*"
    (custom/setup-buffer)
    (custom/refresh-seconds)
    (custom/create-line-with-widget)
    (insert "Correct / wrong answers: " (number-to-string correct) " / " (number-to-string wrong) " \n")
    (custom/setup-widget)
    (custom/set-aurebesh)))

(defun custom/setup-buffer()
  (kill-all-local-variables)
  (let ((inhibit-read-only t))
    (erase-buffer))
  (remove-overlays))

(defun custom/refresh-seconds()
  (with-no-warnings
    (goto-line 1)
    (custom/delete-line)
    (insert "Seconds: " (number-to-string seconds-left) "\n")))

(defun custom/delete-line()
  (let ((beg (point)))
    (forward-line 1)
    (delete-region beg (point))))

(defun custom/create-line-with-widget()
  (if (> seconds-left 0)
      (setq randomChar (custom/get-random-char))
    (setq randomChar ""))
  (widget-insert randomChar)
  (widget-insert "\t")
  (widget-create 'editable-field
		 :size 15
		 :correct (string randomChar)
		 :notify 'custom/check-input-value)
  (widget-insert "\n"))

(defun custom/setup-widget()
  (use-local-map widget-keymap)
  (widget-setup)
  (widget-forward 1))

(defun custom/set-aurebesh()
  "Sets the aurebesh font in current buffer"
  (interactive)
  (setq buffer-face-mode-face '(:family "Aurebesh"))
  (buffer-face-mode))

(defun custom/check-input-value(widget &rest ignore)
  "Compare aurebesh input character with requested one."
  (cond
   ((string-match 
     (widget-get widget :correct)
     (widget-value widget))
    (custom/correct-input widget))
   ((not(= (length (widget-value widget)) 0))
    (custom/wrong-input))))

(defun custom/correct-input(widget)
  (if test-start
      (progn
	(custom/start-timer)
	(setq test-start nil)))
  (if (> seconds-left 0)
      (progn
	(setq correct (+ correct 1))
	(custom/next-character widget))))

(defun custom/start-timer()
  "Start Aurebesh test"
  (setq seconds-left 60)
  (setq timer (run-with-timer 0 1 'custom/decrement-seconds)))

(defun custom/decrement-seconds()
  (with-current-buffer "*Aurebesh typing test*"
    (if (> seconds-left 0)
;	(progn
	  (setq seconds-left (- seconds-left 1))
;	  (custom/refresh-seconds)
;	  (widget-forward 1))
      (custom/stop-aurebesh-typing-test))))

(defun custom/stop-aurebesh-typing-test()
  (with-current-buffer "*Aurebesh typing test*"
  (custom/refresh-seconds)
  (cancel-timer timer)
  (custom/set-arial)))

(defun custom/set-arial()
   "Sets the arial font in current buffer"
   (interactive)
   (setq buffer-face-mode-face '(:family "Arial"))
   (buffer-face-mode))

(defun custom/next-character(widget)
  (with-current-buffer "*Aurebesh typing test*"
    (custom/fill-random-character widget)
    (custom/fill-correct-wrong-answers)
    (custom/refresh-seconds)
    (widget-forward 1)
    ))

(defun custom/fill-random-character(widget)
  (with-no-warnings
    (goto-line 2))
  (delete-char 1)
  (if (> seconds-left 0)
      (setq randomChar (custom/get-random-char))
    (setq randomChar ""))
  (widget-insert randomChar)
  (widget-put widget :correct (string randomChar))
  (widget-value-set widget ""))

(defun custom/get-random-char ()
  "Insert a random alphanumeric character.."
  (let ((mycharset "abcdefghijklmnopqrstyvwxyz"))
    (elt mycharset (random (length mycharset)))))

(defun custom/fill-correct-wrong-answers()
  (with-no-warnings
    (goto-line 3))
  (kill-line)
  (insert "Correct / wrong answers: " (number-to-string correct) " / " (number-to-string wrong) " \n"))
  
(defun custom/wrong-input()
  (message "%s" (widget-get widget :correct))
  (widget-value-set widget "")
  (setq wrong (+ wrong 1)))

Morse code typing test

A week ago, I wrote a little Javascript to create a typing test for Aurebesh. I figured, since I had the basics, why not change the script a bit so that it’s also useable for other things. Morse code, in particular, came in mind. That’s why you can find at the end of this post a little Morse code typing test.

I’m not going to explain the details of Morse code here, since there are lots of good explanations on the net. For example, I used this page for a short memory refresh in Morse code.

Please be aware, that the following utility is a very basic version and has very limited functionality. I hope it’s useful to learn the alphabet as well as digits, but it is far from teaching you proper usage of Morse code. What’s wrong with it or better to say, what’s missing?

  • The length of dit (•) and dah (-) is only approximated. Let’s say you start your first dit with a duration of 1 second. Obviously, the pause between each dit/dah should be exactly one dit and the length of each dah should be 3 dit’s. The testing tool below only measures the first pause of the test and determines the duration of a dit and dah. The pause durations afterwards are completely ignored. Also, the test considers everything below 1.5 * dit duration as a dit and everything above as a dah. My goal for a future version of this tool is to add a nice realtime graph which shows how long the actual pauses, dit’s, and dah’s were. Such a graph should help to improve timing.
  • For beginners, it would be nice to narrow down the amount of letters/digits. E.g. only letters a to g are asked.
  • The test only measures your skill in coding letters. It doesn’t test for words or even sentences. Therefore, it also doesn’t test for comma, slash, period, and question mark. In a future version, I would like to include an additional test which does request words and sentences.
  • The current test only rates the amount of correct/wrong answers. It would definitely be nice to see the average speed value as well.
  • Currently you can’t test the other way around. That means, you can’t listen to a morse code sequence and then write what you heard.

Typing test:

Seconds left:

Correct/Wrong answers:
• – (a)    – • • • (b)    – • – • (c)    – • • (d)    • (e)
• • – • (f)    – – • (g)    • • • • (h)    • • (i)   • – – – (j)
– • – (k)    • – • • (l)    – – (m)    – • (n)    – – – (o)
• – – • (p)    – – • – (q)    • – • (r)    • • • (s)    – (t)    • • – (u)
• • • – (v)    • – – (w)    – • • – (x)    – • – – (y)    – – • • (z)
– – – – – (0)    • – – – – (1)    • • – – – (2)    • • • – – (3)
• • • • – (4)    • • • • • (5)    – • • • • (6)
– – • • • (7)    – – – • • (8)    – – – – • (9)

Aurebesh typing test

This entry is part 2 of 3 in the series Aurebesh

Just a bit more than a week ago, I wrote a post about me learning Aurebesh. I’m still far from proficient, but I continue practicing and, even more important, enjoying it. As mentioned in the one post, I’m using a few online tools to practice and after using Patrick Lambert’s timed translation tool for a bit, I felt like writing my own version with slight changes.

I really like Patrick’s little utility, since it gives you a nice and quick progress feedback. After using it for a bit, I could think of a few improvements. I, for example, don’t quite like that I have to press enter after each character. I consider that redundant and it makes my result count lower than it could be. Furthermore, his implementation continues with a new random character even if the user input was wrong. I prefer being stuck with an Aurebesh character till the correct input has been provided.

After writing my own little version and trying it out, I figured that it would be nice if I saw the number of wrong inputs as well. After all, a high number of correct inputs looks great, but if the number of incorrect inputs is high as well, it kind of diminishes the success.

I hope you find the little Aurebesh typing test feature useful. Please let me know if you can think of something to improve it even more.

Aurebesh typing test

Seconds left:

Correct/Wrong answers:
A(a) B(b) C(c) D(d) E(e) F(f) G(g) H(h) I(i)
J(j) K(k) L(l) M(m) N(n) O(o) P(p) Q(q) R(r)
S(s) T(t) U(u) V(v) W(w) X(x) Y(y) Z(z)

Aurebesh

This entry is part 1 of 3 in the series Aurebesh

A few days ago, I decided to study Aurebesh. What the banana is Aurebesh? Aurebesh is a made up writing system. It appeared first in Star War’s ‘Return of the Jedi’. If you’re interested in learning more about its history, I strongly recommend you read Wookieepedia.

Jedi

The force is strong with this young Padawan

For sure, you now think I’m a major Star Wars fan. Let’s just say, I enjoy the movies and I love the books written by Drew Karpyshyn. If somebody asks me, what I prefer more, Star Trek or Star Wars, I’ll answer without hesitation Star Trek.

So why am I learning that made up writing system? First of all, it’s easy to learn. It is basically English with different letters. So I don’t actually learn a new language. You could argument that it’s useless studying those letters. Maybe, but I think it’s cool being able to read articles in Aurebesh.

I am using several links to improve my reading. I use the timed translation at least once a day to measure my progress. I’m currently at 43 characters a minute (not very impressive, I know). Additionally, I exercise reading at least 10 minutes a day with the Aurebesh trainer. Last but not least, I downloaded the font, installed it on my machine and then set Firefox’s default font to Aurebesh. I wonder how long it will take me till I can use the browser with that font setting through out the day. For now, I limit myself to one short news article a day.

This is a new day, a new beginning.

As you can see, I also got the Aurebesh font plugin for WordPress from Jeremy Duenas. Now I can add here and there a saying to my blogs and only a few people will be able to read it.