Tips, tricks and traps

Tips

Get the latest tips on the latest geeky things going on in the world

Learn more

Tricks

Once you find something there's always a trick or two that will make you even more productive

Learn more

Traps

Traps and gotchas that will make it hard for you, so why not read on and avoid them?

Learn more

AppleTV Activates stink!

http_fc05_deviantart_net_fs44_f_2009_131_3_5_Pain_in_The_Ass_by_dinyctis_vrqhxn

Argh. With everything so integrated in Apple, it really is amazing the media companies have managed to make the user experience so awful. Even though we are a Comcast subscriber, every channel on AppleTv requires its own randomly different activation code and it require no less than two logons. First you have to logon to HBO or whoever and then you have to logon to Xfinity. Yuck!

And it is so buggy. Trying to get Showtime up was a chore. I don’t know how ordinary mortals live with this.

Haswell everywhere…a complete DIY list

http_ultrabooknews_com_files_2012_09_intel-hd-5000-haswell-ultrabook_qgzda5

I seem to be on a roll here on DIY computer recommendations, so to fill the line out, I’ll add the final two desktop computers to posts and everyone should be ready for Black Friday. As an aside PCPartsPicker.com is a nice way to figure out what you need and to price it. When I get a chance I’ll put these builds up there.

Basically, there are five different form factors and here are the recommendations for each using the latest Intel Haswell chips:

  • Haswell NUC for general desktop. This uses the low power mobile Haswell running at 1.3-1.9 GHz. They are completely fan-less yet have 16GB of RAM and 512MB of ultrafast SSD. As well as 802.11ac, USB 3.0 and gigabit ethernet. It is a dream machine for development and also for media PCs and general desktop use particularly when paired with a rocking monitor like the Benq PT3200.
  • Haswell Vesa for low end gaming. This is the smallest desktop class Haswell that you can buy. Fits in a Vesa enclosure. The big question is whether to go fanless or non fanless. That is completely a matter of speed. The Haswell S part run at 35 watts while Haswell R is at 65 watts. Running with a real desktop chip gets you to 2.5GHz up to 3GHz or so so perhaps 50 (no fan) to 100% (with fan) faster than the NUC. It can still fit on the back of a monitor though. With today’s mini-ITX, it is super compact as well since you can use m.2 or mSATA SSDs and don’t even need a SATA.
  • Haswell Flat for peripheral card. This is the smallest machine that you can buy with a half height PCI Express card. The power supply is only about 200 watts, so you can’t put a powerful graphics card in there, but it is useful for peripharals. It also has space for m.2 or mSATA for the boot drive and you can put in a caching/data SATA SSD plus a 6TB drive for lots of storage.
  • Haswell Cube for gamer Q-ship or SOHO file server. This is the smallest Haswell box where you can put a full ATX power supply and a full sized graphics card and overclock like mad. It’s the gamers dream or the dream graphics intensive applications box. You can put a high power (that’s relative these days 84 watt) chip in there and blaze along at 3.5GHz or if you overclock you can get to I call this one the Q-ship because fitted with a 1000 watt power supply and a nVidia card with two processors on one, so it can drive just about anything or even use the double height 5.25 drive to put in a 3-drive so you can make it into a nice file server as well with 18TB storage and RAID-1 (run ZFS for that!).
  • Haswell Tower for ultimate gamer or a/v editing. This build uses a mini tower mainly for multiple video cards (2x is the sweet spot, but 3x still works) or for expanding your drive arrays. With these 5-drives in a 3-height 5.25 plus lots of internal bays, you can build a truly massive server but note that for really big server, you probably want to move to the reliable rack.
  • Haswell Rack for the big server. Well there are lots of questions about reliability, but if your data is really mission critical, then you are pretty on your way to using Xeon V3 and SAS drives. This build gives you 24-bay SAS with a Xeon with up to

So to finish the build list, here is one revised build (the NUC) and two new ones, the Haswell Vesa and the Haswell Cube:

Haswell NUC (still need to complete the reviews

The Zotac fills this bill well, it’s a Haswell 1.5GHz 2 core/4 -thread drawing about 20 watts with the only update being getting the Samsung 850 Pro rather than the Sandisk Extreme Pro. The main limitation is 8GB of SO-DIMM memory, so the search goes on for a similar machine with 2x8GB machines and m.SATA support.

Here are some choices

  • Intel NUC D54250WYK at 1.3 GHz for $350
  • Gigabyte Brix i5-4200U at 1.6Ghz at 15 watts and 2.6 Turboboost for single core
  • Gigabyte Brix i7-4500U 1.8GHz in Haswell-U to 3.0 Ghz Turboboost ($480 at Amazon)

A decoder ring for Mobile processors

Then they have a series of mobile chips (which is what these NUCs are using) that go from 11-65 watts. These use a different socket system and typically you buy so you buy them preinstalled, but you need to use Wikipedia to really figure out what all those number mean. The good news is that unlike the desktop, they don’t use brand names, the chips are just a four digit code and a suffix. The nice thing is that like desktop, the higher the number the better usually, but here’s the decoder ring:

  • First digit is generation. 4 is Haswell, 3 for Pentium and 2 for Celeron.
  • Next digit is processor type so for Haswell we have:
    • 9, 8, 7 are Core i7. 4 cores/8 thread drawing 65W so as much as a desktop! but incredibly fast at 2.8-3.1 GHz base
    • 6 is branded Core i7 but are 2 processor/4 threads, so more like a super Core i5
    • 2, 3, 4 and of course 5 are Core i5 with 2 processors/4 threads
    • 1 and 0 are Core i3 (isn’t that confusing) and are really slows 2 processor/ 4 thread
  •  Suffix.
    • Q – quad-core
    • U – ultra-low power (BGA1168 packaging)
    • X – “extreme”
    • Y – extreme low-power (BGA1168 packaging). These are really interesting processors drawing 11 watts.
    • E / H – BGA1364 packaging

The nice thing about these builds is that most of the stuff is already done, you only need to fill out a few pieces:

  • Memory. These things are using notebook memory so you want to get 2x8GB of sticks. Since you can’t overlock the DDR3-1600 variant is fine. Look at Newegg and wait for sales but please pick something that is at least 4.5 stars. We got G.Skill for $60 a stick and that’s a great price just last week but sales are quick
  • SSD. This depends quite a bit upon your use case, but in general, I like to get 2x the disk that I think I need. Right now for normal desktop use that’s a 256GB drive and if I’m a power use I’d recommend a 512GB. The hands down performance leader seems to be the Samsung Evo 850 Pro ($350 street which is to me quite incredibly cheap if you think about it. It is ultra fast but expensive. If you are on a budget then the Corsair MX100 seems to get the vote ($100 for 128GB is quite amazing on Newegg or Amazon). Again check the ratings as some of these are really unreliable

Haswell Vesa Fanless

If you want to move up and stay passively cooled, then the Makeuseof also has a great overview of these smaller systems that use real Haswell desktop processors with the Ts at 35watts and 2+GHz while the S is 65 watts and run at 3+GHz. The tradeoffs are in size and noise. Parts up to 45 watts can be passively cooled and thus with a special motherboard can be tiny. The S part needs a fan so is larger but can typically use a standard mini-ITX board. So if want fanless then you can pick:

  • HD Plex HD1.s. A favorite of Makeuseof.com this handles mini-ITX
  • Akasa Ruler. Even smaller, this needs a thin mini-ITX motherboard

  •  

    Pico PSU

    These are absolutely tiny power supplies that plug into the ATX power connector on the motherboard and are fanless. They support 60-150 watts so work well for these small chassis

    Haswell Vesa with Fan

    Next up from the NUC is going to a quiet fan. These fans are much quieter and because Haswell isn’t drawing much power and mini-itx.com has a great list so you can see what is available.

    The main thing here is the choice of Haswell processor which as usual from Intel is very confusing as they have so many different lines.

    A Quick Aside on the Intel processor naming…

    Before we can begin, we had to understand the Intel chip naming as we will be doing quite a lot of selection of various parts. They have zillions of them and the naming isn’t very clear. The naming of Intel processors is first focuses on the their threading. Note that these are brand names only, the cool kids just use the four digits and model:

    • Core i7 Extreme: 8 cores/16 threads or 6 cores/12 threads
    • Core i7: Means multithreading, so typically 4 cores, 8 thread
    • Core i5: Normally 4 cores/4 threads
    • Core i3: Normally 2 cores/4 threads, no turboboost
    • Pentium and Celeron: 2 cores/2 threads, no turboboost

    Then for the Core family, there is the model number which is typically four digits plus a suffix which encodes everything about the processor and they are arranged so that the higher the number, the better the processor:

    • Processor Generation. First digit. Typically a 4 indicating the 4th generation of (Haswell=4, Ivy Bridge=3, Sandy Bridge=2, etc.),althoughtheCorei7Extremeis called 5th generation even though it is really not so it is a 5, but I guess someoneatinteldecidethatthe5970Xsoundsbetterthanthe4970X :-)
      • 5. This seems to be just branding, it is still Haswell
      • 4. The 4th generation Haswell
      • 3. Ivy Bridge, these are still around, but you should get Haswell
      • 2. Sandy Bridge. Even older 2nd generation
      • G3. Pentium. I realize that G isn’t a digit, but Intel overloads this to mean the older chips.
      • G1. Celeron
    • Family. Second digit. This encode the number of cores and threads and roughly how fast the processor is, so combing the processor and
      • 9: Core i7 Extreme
      • 7: Core i7 (get it? :-)
      • 6: high end Core i5
      • 5: mid range Core i5 (get it? :-)
      • 4: low end Core i5
      • 3: Core i3 (get it? :-) and these don’t have turbo boosting
    • Model. The last two digits. This the model number, so the higher the number the better, so a 4470 is faster than a 4460. They don’t correspond to clock speed and you have to be careful, there are different Haswell generations, the latest so you have to use Wikipedia to figure out what which is original Haswell and which one is the newer Devils Canyon refresh.. So for instance the 4470 is an “old” chip shipped in 2013 while the “4460” is a new one shipped in 2014.
    • Suffix. Then there is an all important suffix that tells you if it is gamer chip (unlockedmultiplierforoverlocking) or if it is a reduced power model:
      • No suffix means locked multiplier and typically 84-88 watts
      • K means unlocked for gamers and overclocKing up to 65x multipler
      • X means ultra unlocked so that there is no multiplier and is only right now on the i7 Core Extreme (59xx variants).
      • S means it it draws 65 watts (4460 is 3.2GHz 85 watts, but the 4460S is 2.9GHz). But they both turboboost to 3.4GHz, so you are not giving up too much
      • T means 35-45 watt so good for ultra small machines but they run much slower (for example the 4460R is 1.9GHz/2.9Ghz boost part)
      • R you won’t see much these are graphics parts with Iris and a different socket arrangement

    Back to Selecting the Enclosure

    Given this the main thing to decide is how big a processor you want in terms of power (and noise) and then find a case that can provide enough. The good thing is that with most current designs, the motherboard, SSDs and memory don’t require much power, so it is pretty much a function of picking the normal part (85 Watts), S (65 watts) or T (35-45 watts).

    In looking at mini-itx.com,

    The Processor

    Taking the old Rich Tong rule that $200 is about right for Intel, that leads you to the Devils Canyon 4590T ($192) at 2/3GHz or 4670T  ($213) at 2.5/3.5GHz with boost if you can get it on sale.

    • Antec ISK 110. This is a pretty typical case. 90 watt external supply. Vesa enclosure. It has two 2.5” slots for SSDs as well.

    Haswell Cube

    This uses the same build pieces as the Haswell Flat, but the main thing to figure out is the nicest cube case. You want something small but able to take full length video cards. So here are the build recommendations:

    Processor

    File systems ZFS or btrfs

    http_upload_wikimedia_org_wikipedia_commons_f_fb_HDS-files_trvefw

    Well I’ve been meaning to do this for a while, but using desktop Windows and then the Mac, there really were no choices other than NTFS and HFS. But since we are building our own file server, we can now choose the operating system and the file system.

    For operating system, we’ve used Cent-OS but as Sam says that is reliable but old, so this time we are going to try a Debian alternative. Ubuntu has a server version but this is mainly substituting character only interfaces for graphical and there are no more kernel differences. In facts you can get to the desktop just by running apt-get install ubuntu-desktop or for that matter apt-get install xubuntu-desktop.

    That being said, the biggest choice is what file system. Both ZFS and btrfs have scrubbing so they can check the data in the background. Sounds like a very cool idea. ZFS is older and btrfs is the new kid on the block.

    This is a brave new world where the setup instructions from zfslinux sounds scary as heck. You basically use the Live! version and boot to the USB stick, then you create enough of a file system on your operating system drive to make it work. I’m not sure you want to run this on your native file system so much as use it for your data drives.

    Arstechnica and serverascode.com explain how to install ZFS from an existing Ubuntu installation. This is more like it as it lets data use ZFS and your system drive stay ext4 (the native format of Ubuntu). This doesn’t look too hard, basically add a repo and install a package on it. Or you can use FreeNAS which gives you ZFS with all the convenient graphical interface tools.


    sudo add-apt-repository ppa:zfs-native/stable sudo apt-get update sudo apt-install zfs ubuntu-zfs

    Now you need to learn a ton of terminology, but you are up and going

    Wow real reliability data and hard disk purchase analysis

    http_ecx_images-amazon_com_images_I_61prv2-NKxL_wndz8v

    I was a little surprised to see this, but Backblaze (hat tip to Anandtech) is publishing detailed information on drive failures. Up to 15% annual failure rate(?!!) on Seagates and they provide model numbers too.

    Interesting to see a desktop drive do very well (HGST 7K4000, $185 Amazon) at 1.4% in a data center setting whereas the WD Red, a higher end NAS drive, was at 8.8% with similar average life (six months).

    Right now Anandtech liked the Deskstar NAS variant ($185 regularly, right now $165 at Newegg).

    Of course as Vlad says, you at least want a 10^15 error drive rather than these consumer ones ones at 10^14 like the WD Red Pro or WD Re (reliability not known, but WD data isn’t encouraging), the Toshiba MG300 (but we know much about these drives reliability), Seagate Enterprise Capacity (although these figures from Backblaze are not encouraging).

    But maybe the biggest competition is their own HGST Ultrastar 7K4000.

    As a final aside prices for 5 and 6TB drives are really down. They are about $50/TB now over 4TB drives. So while we may wonder about long term reliability, price is much less of a factor. Time to start adding a few and see.

    ]

    Black Friday for Geeks

    Black Friday for Geeks

    So what’s a geek to do but drool over the Black Friday discounts and beyond. But as with all things technical, it pays a little to wonder if it is time to buy or whether you should wait for the next product cycle. Here’s a quick low down on popular (for nerds) holiday items:

    1. A new PC? Yellow Light. Well, that’s a good question and the answer is that if you can wait, you will probably like the upcoming Broadwell chips better. That being said, Intel is adding about 5-10% to desktop performance, so it isn’t a bad time. Haswell is pretty decent and they have just refreshed the line in the summer. The main complexity is that Intel has so many gradations, you need a slide rule to figure out a good deal (which I haven’t done). Still if you want save 10% off a processor, it’s not a bad time to buy.

    2. A new monitor? Red light. This is a time of major transition. The 4K displays are just out (8MP of glory), but the next round is even more amazing. Dell and Apple have just shipped 5K displays (15 megapixels if you can imagine that) and these are going to ship next year. So wait if you want. A related issues is that DisplayPort 1.3 is just coming out in early 2015 and you need it to drive these 4K monitors at more than 30 hertz. If you are a gamers of course, I can’t imagine how much power a 15 megapixel monitor is going to take. Remember still amazing Hd monitors (1920×1080) are just 2 megapixels! That being said if you need a monitor now, the ASUS PB27Q isn’t a bad office monitor (2550 for $480) and the Benq PT3000 ($600 on sale now at Newegg) is astonishingly beautiful as a 32” monitor.

    3. A new phone? Green light. Well as usual Apple is managing the cycles well so the new iPhone 6 Plus (drool, drool) is not a bad buy right now and you are at the top of the cycle. The main reason to wait would be the rumored dual camera setup in the upcoming iPhone models, but the camera (and the battery) in the iPhone 6 are pretty amazing.

    4. A new camera? Red light. Well, the new announcements are coming so fast and the improvements are just incredible. The main thing to wait for is 4K video recording which is becoming standard and Sony is rumored to be announcing a 50Mp full frame pro camera very shortly. That could be the turning point for prosumers ;-0 Also, GoPro is just switching to 4k, so you probably want to wait to see all the 4k offerings as video is a new battleground for cameras.

    5. More storage? Yellow light. You can never have enough disk and SSDs are really amazing right now. While it isn’t a bad time, if you can you should wait. The new Intel DC P3500 is not quite shipping, but promises incredible performance in the new NVMe format. Five time less latency for you geeks and pricing is decent $600 for 512GB. If you can’t wait, the new Samsung 850 Pro uses a vertical NAND technology and isn’t bad. It’s a premium part at $320 for 512GB (wait did I just say that, I can’t believe how prices have come down).

    Cooler Gotchas

    http_www_modifiedcarforums_com_blogentries_2008__featurecars_bigv8_images_bigv8blownstatesman_15_cms44f

    We’ve been building lots of machines lately and it seems like we have struck out twice. Both times with cooler issues and once with a lack of an SSD:

    • We got the nice case and it says there is 65mm of clearance, the problem is the (??!!) people who designed it put the Ac power right next to the cooler, so with a big cooler like the Shrunken B is too wide for it. We could mod the case and move it, but probably better to get a less efficient but 34mm tall cooler like the Noctua instead. So be warned this case is nice, but with the AC where it is the clearance is 65mm over the top but won’t work for a 120mm fan on top. So instead we got the Noctua NH-L12 which is less efficient but shorter

    • We also got a file server case and Supermicro motherboard. The problem is that it uses the relatively unusual narrow ILM. The normal cooler uses a square interlocking module, but because this has 8 DRAM slots and 7 PCI Express, it uses the narrow ILM. So the Prolimatech Genesis won’t fit. But the good news is Noctua which I’ve used for small builds and for big does have a version the NH-U12DX i4 and NH-U9DX i4 and the NH-U12 is well rated by silentpcreview.com so a good choice at about $65 at Amazon.com

    Regin: Top tier espionage

    http_www_symantec_com_connect_sites_default_files_users_user-1013431_fig1-architecture_udjmbm

    Vlad told me about this and it is indeed scary what Symantec has discovered. A super sophisticated hacking tool with five layers and great ability to hide itself when it detects anti-virus programs:

     An advanced piece of malware, known as Regin, has been used in systematic spying campaigns against a range of international targets since at least 2008. A back door-type Trojan, Regin is a complex piece of malware whose structure displays a degree of technical competence rarely seen. Customizable with an extensive range of capabilities depending on the target, it provides its controllers with a powerful framework for mass surveillance and has been used in spying operations against government organizations, infrastructure operators, businesses, researchers, and private individuals.

    It is likely that its development took months, if not years, to complete and its authors have gone to great lengths to cover its tracks. Its capabilities and the level of resources behind Regin indicate that it is one of the main cyberespionage tools used by a nation state.

    Grokking Snowmix

    http_createdigitalmotion_com_files_2012_10_snowmix_lz38ro

    This is another amazing tool that complements gstreamer. It lets you mix audio and video feeds quickly and easily and most importantly dynamically without having to write programs.

    Here are some notes from the wiki, the discussion group there,  but mainly by looking at the sample snowmix ini files in the Snowmix/ini directory:

    1. This doesn’t have a git repository, so there is no easy way to see what has changed from version to version or see , who is doing the editing. It’s probably easiest just to suck it into your own github repository just for your own sanity. That is pretty easy to do. Create it on github.com and then git clone the empty one down. Then extract the tarball into it. Commit that and you have something with version control.
    2. The setup is with bootstrap (no relation to the Twitter invention). It is an interactive script so not well suited to installing with other modules. An easy addition is to silence all the read commands with a option flag if you really need it to be quiet. strapboot is the equivalent of make clean and blows it all away. Personally I’ve always liked buildall.sh and cleanall.sh but that’s a nit.

    3. The thing cooperates with gstreamer via shared memory pipes so you have to start snowmix first and then start gstreamer for input and then another gstreamer for output. Basically, you can set it up to read from a file input or from a shared memory pipe. It’s output is another shared memory pipe.

    4. This program likes to lives in it’s own directory. It is quite node-like in that this way. Even the binary runs inside the current working directory. Each program needs the shell variable SM set to that directory.

    5. There are a host of configurations that you feed it at the beginning via the single command line ini file. However, you can also dynamically talk to it and configure it via a port (by default 127.0.01 port 9999) which it listens to for plain text commands. For instance nc 127.0.0.1 9999 <<<“feed list” gives you a list of feeds in the system. Pretty cool.

    Syntax of Snowmix commands

    It’s a little hard to sort through the documentation, but the wiki looks like the main source and Peter (the developer) is active on the SourceForge discussions. But here’s a quick guide for programmers:

    1. There are no variables in the language, so every object just has an object id (typically starting from 1).
  • The arguments that are passed are completely positional. This means that you need a big of decoder ring as some things take 8 arguments (x, y, step x, step y) and it is like reading a shell script argument list

  • The interactive and programming language are the same. It is all run time interpreted which is nice and flexible.

  • Data Types

    1. Feeds. These are the basic video feed element. They are hard wired by a feed socket command so you can change feeds and their sockets much. By default there are 12 feeds supported but you can recompile and change this. They can be moved with feed shift and scaled with feed scale which is set it to n/d the size. This convenient when you want it to fit in say a smaller windows like 120/96. There is a stack command that gives the z ordering of the feeds. Note that you cannot rotate or move or change the feed socket, so this is the basic primitive.

    2. Text. These are primitives referred to by id numbers


    text string 1 Hello Hello World

    You can delete a string by leaving the final argument blank so text string 1 by itself is delete. Text strings also have some substitution variables.

    How you set this is a little complicated because text unlike feeds isn’t dynamic, so you basically have to run it in a command macro that runs on every frame. There is a magic command overlay finish ShowText that says after the overlays are done run me and this is the thing that does text placement. So we need to understand the execution environment but you can change text with commands and also by changing them through the control console. We will show this later, but this works so that you can use shell script to control snowmix


    #!/bin/bash while true; do # Change a string nc 127.0.0.1 9999 <<<“text string 1 Changed to Good Bye!!" # Create a place id 1 for text string 2 using font 3 and put it at at x=200, y=300 nc 127.0.0.1 9999 <<<“text place 1 2 3   200 300" sleep 10 nc 127.0.0.1 9999 <<<“text string 1 Say Hello Again" od
    1. Images. These are also first class object. The main thing is that you should use .png images as these have an alpha channel so that you can have logos without white backgrounds.

    Higher level objects

    1. Virtual Feeds. For some reason this isn’t in the current wiki documentation. Perhaps because shape feeds are more powerful (see below) are more powerful. They are better than feeds but have less flexbility than shapes. However the discussion has an ini file that explains how it works. As a small trap, virtual feeds only work if you define some text, so make sure to do that. After you define a feed,


    # virtual feed add virtual feed add 1 this is virtual feed number 1 # virtual feed source feed virtual feed source feed 1 1 # the place thing is massive with location x,y and the size w,h and then the source location so you can do a cut out, then the rotation you apply and how you scale it and then the alpha blending (1.0 is solid, 0 is nothing there). # virtual feed place rect # this says for virtual feed 1, put it at the upper left (0,0) and it is 1280x800. The source to get it from is at 0,0 with 0 rotation and scale it by ? on each dimension and set the alpha at 1 virtual feed place rect 1 0 0 1280 800 0 0 0.0 0.3333 0.3333 1.0

    There are some other commands as well for virtual feeds including:

    # This gradually fades virtual feed 1 to 0.04
    virtual feed move alpha 1 -0.04 25
    # this move the feed to x, y
    virtual feed move cord 250 100
    
    1. Shapes and Cairo. Built at the highest levels are arbitrary shapes that the 2-d graphics library Cairo can alter. Here is where you get lots of control of images. There isn’t much documentation here, so you basically have to try to map the Snowmix command to the Cairo primitive. The most important thing is that with shape feed you can bind a feed directly to a shape for really complex manipulates. The same is true for other primitives via shape text and shape image. You can create arbitrary shapes as well by giving it paths so
    shape add 1 Arc Ewith a stroke at the end
    shape arc_cw 1 0.0 0.5 0.1 3PI/12
    shape close path 1
    
    

    Then once you have a shape you can fill it, so this says put a stroke or line around it

    shape stroke 1
    

    You can then move shapes around the screen with shape place commands

    Command macros and TCL

    There are two programming languages in the snowmix. A homegrown macro language and a TCL interpreter which runs the way that Javascript runs with HTML.

    1. The basic command language has a command create and ending in command end and is invoked with just “ at the beginning of a line. It is a basic macro language and can call other macros. There is some limited conditionals based on the feed state (suspended or not), but there are no variables, return codes etc. The main concept is that it will run each frame and when you are done you can call next 10 and it will skip the next 10 frames and at the end you call loop to start over.
  • The biggest issue with the language is that it is highly stateful. The opposite of say node.js. Everytime you run a macro, it will execute differently. It uses a next which means after you get there, the next execution starts after the next and in effect skips the previous block. Also when you get to the end of command, it won’t start executing again unless you have a loop.


  • command create several_things_at_once # This line will only run once text place 1 0 0 # This says for the next 24 times you call this, run here next 24 text place 2 0 0 next 24 text place 3 0 0 # if you don’t have the loop, then after 1+24+24 calls it will do nothing loop command end
    1. These macros get called in two ways. First is that from the command console or from the port, then it will run async. But the main execution loop is started by two commands, overlay finish <command /> so that means it will that command on ever

    2. The same macro language can also be used dynamically. If you plug into the control port, you can execute a macro just by typing it’s name in.

    3. The macro language can also call out to TCL by a prefaced tcl eval so it can do some math.

    4. There seems to be a stack of commands as well found in one of the ini files where lines of macros are taken off and on.

    command pop Show
    command push Show text place 3 23 43
    

    The system runs at a high frame rate, so it is all about keeping up with that. That means the command macros are run


    command create ShowText # put text object 1, 2 through 7 on the screen text overlay 1 2..7 command end overlay finish ShowText

    In order to change things, you can not just have a new command running, but instead, you have to do an in place edit of command macros (yikes, that sounds dangerous), so this will have to do this on the command interface. This seems to be the basic way to get into the execution loop, so if you have run in the ini file, overlay finish Show


    # This deletes line 1 of the Show macro so it is in the main execution loop command deleteline Show 1 # This adds a line 1 which shows all the text command addaline Show 1 text overlay all

    Using TCL

    Before 0.4.4, you used TCL in one of two ways:

    • From within a command language, you can evaluate any TCL command with eval tcl
  • You can write a tcl routine with command create <command />.tcl and have it return a string with a \n which gets pushed into the interpreters. This allows you to run static commands, but not things that are procedural so you get around this by not using next which only works in macros, but by using at +<time> <command /> which is the same as the next if you think about it but without the looping.

  • With 0.4.4, this got extended so that instead of this long return string, you can just issue snowmix commands with snowmix parse <command /> directly in TCL making it more straightforward. And you can access snowmix variables with set a [snowmix info text string 1] which would give you all the attributes of a text string. You can then change things and push it out again withsnowmix  parse` and substitute tcl variables.

    1. maxplaces. This sets the limits for various objects. Obviously, smaller means higher performance:
    # Change default settings for maxplaces BEFORE any of the shape, text etc. commands. This sets the maximum id number you can have in the system and probably the amount of memory
    
    

    maxplaces shapes 170
    maxplaces shapeplaces 128
    maxplaces strings 180
    maxplaces texts 180


    3. If you want you can use the tcl way instead of the macro way of setting things and is probably a little bit more readable.

    Load TCL libraries

    include ../slib/system.slib
    include ../slib/basic-shapes.slib
    message SYSTEM LOADED
    include ../slib/scenes.slib
    message SCENES LOADED
    include ../slib/feeds.slib
    message FEEDS LOADED
    include ../slib/images.slib
    message IMAGES LOADED
    include ../slib/clocks2.slib
    include ../slib/texts.slib
    message Snowmix Libraries Loaded
    tcl eval FeedCreate “Feed #1″ 1 1280 720 /tmp/feed1-control-pipe
    tcl eval FeedCreate “Feed #2″ 2 1280 720 /tmp/feed2-control-pipe
    tcl eval FeedCreate “Feed #3″ 3 704 576 /tmp/feed3-control-pipe
    tcl eval FeedPAR 3 12 11
    tcl eval FeedDeadImage 1 100 ../frames/dead-1280×720.bgra
    “`

    Debugging

    There are few ways to do debugging that isn’t clear from the documentation, but thanks to a note from Peter, here is how it works:

    1. If you are out of the overlay loop then you can use the command message which pushes to the standard output or messagef which includes the frame number. This doesn’t run while it is in the main loop as this would flood the system
  • If you are in main loop, then you can still generate messages by escaping to out with tcl with tcl eval puts “the string name”

  • And to debug the entire system, the easiest thing to do is to run the command outside of the overlay pre or post loop and keep trying it.

  • Snowmix will core dump if you Ctrl-C too much and the shared memory is not correctly deleted, you can see how much is available as the shared memory with df  /run/shm and you can get rid of shared memory with rm /run/shm/shm*

  • CVideoOutput out of chm buffers. This is because the output side can’t keep up with what Snowmix is emitting as described below, so you it’s a good idea to use the included scripts until you figure out your own. In my case I tried to modify the output2screen and didn’t do it well ;-)

  •  When Snowmix runs out of shared memory for outputting frames, it will print the message CVideoOutput out of cshm buffers. and it will suspend outputting more frames until at least half of the configured shm buffers are available again.
    It is very important that the script that reads mixed frames from Snowmix runs flawlessly and have sufficient CPU and memory bandwidth availble.When Snowmix runs out of shared memory for outputting frames, it will print the message CVideoOutput out of cshm buffers. and it will suspend outputting more frames until at least half of the configured shm buffers are available again.

    It is very important that the script that reads mixed frames from Snowmix runs flawlessly and have sufficient CPU and memory bandwidth availble.

    Overlays

    This is perhaps one of the most confusing parts of the product and isn’t documented much but basically, you have to overlay things:

    • Overlays happen in order. The normal thing is stack 0 which is the lowest layer and then it is block.
    • For real feeds, the order is left to right with the right most at highest priority `stack 0 1 2 3 4 5 6 7 8 9’ means 9 is the highest.

    • The overlay commands are processed in the overlay loop

    Scenes

    Quite a lot of snowmix is about changing the screen layout. It is pretty laborious as you have to use macros. There is a new scenes system that makes it easier to switch and is much higher level that command macros but there seem to be very few examples of this.

    Grilled Opah

    http_domesticesq_com_wp-content_gallery_opah_opa-2-of-2_wexob1

    Well it’s also called Hawaiian moon fish, but it’s apparently more sustainably caught than tuna. We tried this Food & Wine recipe and was really surprised how tasty the fish is. The main thing is not the sauce but  a little salt and quite a bit of oil to keep it from sticking to the grill.

    These recipes never say, but it’s nice to get a bigger piece of fillet so that you can use an instant read thermometer on it. For salmon we like it rare at about 130F. This fish seems about the same. 125F off the grill leaves it slightly pink on the inside. 130F would have been perfect.

    too cool f15 strike eagle low level

    F-15_Strike_Eagle_Coverart

    Wow, Jalopnik found a GoPro dream. A low level flight through the mountains of Washington in an F15E Strike Eagle. I can remember spending hours in a simulator of that jet flying around looking for targets.

    Follow me on Twitter

    Categories

    Archives