All posts by Brett

Involving the community in newsletters / Email Blasts

Community involvement is key in growth for new prospective customers and no less, customer retention. Especially more so with keeping the wider community in the loop with smaller-scale community events. As always, not everyone will subscribe to an email/newsletter, but it will provide an incentive for users to subscribe!


Fast forward many months, or years down the road, not only do you have a subscriber base that can be quite large, you will likely retain a rather high percentage of users, new and old, that will still read the newsletter. Such will be extremely beneficial on upselling current customers’ new DLC/Digital Content when large content updates are released.


When I assisted with the Elite Dangerous newsletter content, on a week to week basis for the better part of two years, I pieced together a small segment known as Comms Chatter. This content was sourced from various communities, primarily our forums and the community subreddit – sometimes, other smaller Reddit communities to help spur growth and interest. There were many times where Twitter and Facebook content was added to the comms chatter. Many other times, Comms Chatter also bumped into Community Events segments. While we didn’t always have a title or category named for community events on our email blasts, we commonly included such items above Comms Chatter.

On a week to week basis, I and other employees collected around 15 to 20 items to be considered and decided upon for addition to the Comms Chatter segment. We generally reduced the number of items down to three or four items on the email and four to ten items on the community website… otherwise, the newsletter wouldn’t be much news, but more so community events and news – which well, would not fit the spirit of our newsletters :-).


During extremely active weeks, primarily during major updates to Elite Dangerous, all of the newsletter content, including Comms Chatter and Community Events were directly or mostly related to the pending update. This overall helped spread grass-roots community hype, hype at the core of the community, and passively, a well-geared newsletter generated news on gaming news subreddits and websites. Media, customers, and prospective customers back in 2015 to 2017 kept close tabs on our newsletters, not due to upselling marketing “buy this, buy that”, but because we involved our community, kept our subscribers interested in what we have rolling through the pipes for the game, in turn, this generated customer trust, a positive vibe within the community, and further boasted paint-job (paint jobs are custom design packs and coloring for player ships) and expansion pack sales on our store.


Involving our community was key – I state that strongly as well. Elite Dangerous’s market is vertical/niche when it comes to games based in space, especially so in the MMO/MMOG realm. Our primary competition at the time (and still is – I’m no longer with Frontier Developments) was Star Citizen, fast forward a couple of years later, we had another game enter our bubble, No Man’s Sky. Both games are bringing/brought something different to the table when it comes to competing against Elite Dangerous, and looking at consuming market space. However, both lacked one key item: community & community involvement in newsletter/emailed content. The majority of email blasts were “look at what we made, wanna buy (into) it? Here’s the link” – this generally will add a layer of distrust to the email sent out to customers and potential customers. When you smash that layer under community involvement, you get the byproduct of users buying your content, reading your content more. People don’t like seeing a rotted carrot on a twine-laced stick – they want to see substance on why they should consider buying X or Y items listed on a newsletter.


While both companies (Hello Games and Robert Space Industries) had their newsletters and associated content there within, both lacked community involvement when it comes to email blasts. It is no doubt that it is difficult to find content from a community when a game is in development. However, it’s easy to find talking-points and making that a focal point for folks to “jump in” and discuss a key issue or reinforcing a discussion to become a key-topic.


One of the largest conundrums that I faced when it came to involving our community was on the mindset of “is the time right to add this to the newsletter?” Many times, it was a resounding “Nah, save it for a future week”, sometimes had the mindset of “Let’s see what happens during this lull”, and then other times “This seems to fit the flow, or acts as a segway to the games evolving content/development”. There were a few instances where we used Comms Chatter to passively advertise paint jobs, along with acting as a bridge to upselling folks on paint jobs – sometimes it worked well, other times, not so much. And again, that all comes down to 1) “was it shiny?“, 2) “is it priced right?”, 3) “it the timing right?”, 4) does the community want/desire something like X item?. If one to four on that options list was all ticked, then it’d sell like hotcakes. Granted, things like “will it sell, will it not sell” generally should be kept to the BI and Marketing leads to judging the atmosphere and if the time is right. For the dev team back then, we didn’t really have a fully built out team of individuals doing things like Business Intelligence and Big Data Intelligence. 🙂


Oddly enough, during development release cycle lulls, we found that content posted in just about every corner of our community increased substantially. Sometimes it was ‘dank memes’, with the added poke at folks. Many times, we had amazing art made by the community posted. Much of the time, comms chatter and other community content consisted of screenshots from the game world – and boy, Elite Dangerous planet/star design sure is something! More often than not, the PVP community did antagonize the PVE crowd, primarily on Reddit and the Forums, there have been times where we did include PVP content on our newsletters, not because it polarized the community (well, it did because of PVP v PVE debate) but because of the fact that PVP is highly dynamic compared against instanced, semi-static content. A few times throughout the years, we highly promoted large-scale game world events organized by the community. Not because we knew this would create news on game sites, but large scale events tend to create the best memories, and thus – more content to post on a newsletter! Overall, we always had content, and always attempted to involve all aspects of our community. From ‘explorers’ to PVP, to ‘Thargoids’, to the world (lore) of Elite itself – we covered it while involving the community.


At a couple of points in 2016 and 2017, I had many of our players messaging me on Discord, the forums, and some contacted me via my work email address. All of them made something unique that we could post to the email newsletter, and sometimes to our social media channels. Much of the time, our lists were filled, back to back, week after week. We began posting many of the community items to our social media channels.


To this day, I recall our marketing lead stating that our newsletter had astoundingly high readership (Open Rate) and retention (Growth Rate) values. Something that is supposed to be in the 10-15% or less category, was substantially higher. Unfortunately, our mail analytics used at the time did not include granular data, such as how far content was scrolled down and read. I am sure that Comms Chatter, Community Events, and other community involvement content on our newsletters kept readership retention high, and kept a steady positive growth of our newsletters during the time between 2015 to 2018. The addition of “here’s what we’re working on” also helped keep folks interested in our newsletters. Overall, with Google Analytics, we could see an extremely high click-through rate from our newsletter blasts, especially on update days with users hitting the forums (guests and logged in users) via an email linking to the patch notes. There have been a few instances where an email blast crashed out the forums due to so much community hype beforehand (the F5 mashing was strong on those days!).


TLDR version: Involve your community early on, don’t let them become jaded and feel like a money-bag. Gain trust, build upon the basics, get them to bandwagon the news without making it obvious.

Dumping all frames from a video file with VideoLAN

There are so many guides on the internet, and unfortunately, not a single one of them satiated my desire for what I wanted to do! So below is a nice one-liner to, you guessed it, dump just about every frame from a video, with VideoLAN via the PowerShell/command prompt.

.\vlc.exe "C:\Users\UserNameHere\Documents\source-file-to-dump.mp4" --video-filter=scene --scene-format=png --scene-width=-1 --scene-height=-1 --scene-prefix=frame --start-time=0 --stop-time=60 --scene-ratio=0 --gpu-affinity=0 --vout=any --rate=0.20 --scene-path="C:\Users\UserNameHere\Documents\output" vlc://quit

The TLDR:

  1. Go to where you have VideoLAN installed, for me it is C:\Program Files\VideoLAN\VLC
  2. Ensure you have a dump/output folder created – probably best to have it in the same location that the video file is sourced at. For me, it is aptly named output in the Documents folder.
  3. Modify the command above to whatever you see fit for the output directory.

The command arguments used above explained:

  1. --video-filter=scene – Forces VLC to use the Scene module.
  2. --scene-format=png – If you want to save space, use jpeg in this place.
  3. --scene-width=-1 – -1 will output the images as equal to the source, eg 1920 wide video, 1920 wide image.
  4. --scene-height=-1 – -1 just like above, will output the image height equal to the video height.
  5. --scene-prefix=frame – Prefixes the files with a static string value, in my case, I set it to frame. The outputted file ends up as frame0001.png and so on.
  6. --start-time=0 – Forces the image dump to begin at 0.0 seconds. You can use decimals and sub-seconds here!
  7. --stop-time=60 – Forces the image dump to stop after 60 seconds. You can use decimals and sub-seconds here!
  8. --scene-ratio=0 – Forces it to dump every frame possible.
  9. --gpu-affinity=0 – Tells VLC to use the first GPU available. Adding this did swap the usage from CPU to GPU, and GPU usage only went to 6% on encode/decode on my GTX1080ti.
  10. --vout=any – A miscellaneous option really, but included for sanity.
    • Other options are: direct3d11,direct3d9,glwin32,gl,directdraw,wingdi,caca,vdummy,vmem,flaschen,yuv,none
  11. --rate=0.20 – Forces the playback dump to play at 0.20x of the 1x (normal) speed). Any faster will result in lost frames from being dropped! (Big note there)
  12. --scene-path="" – Ensure where you’re going to dump out the image stills actually exists.
    • For me, the option set as above is: C:\Users\UserNameHere\Documents\output where UserNameHere if your account name on your machine and output is the folder where images are dumped to.

So there you have it, VideoLAN used to dump all frames (well, nearly all frames) into their own images.

CenturyLink & IPV6 with pfSense 2.4+

Over the years, IPv6 has been on the up and up in terms of implementation and usage. pfSense has had native IPv6 support since the 2.x series, unfortunately, CenturyLink’s IPv6 implementation has been riddled with ‘fun road bumps’ along the way – be it downtime, slowness, among other fun routing issues observed.

CenturyLink (as of early 2020) still does not provide static IPv6 allocations to Fiber or DSL customers – it still remains as DHCP (of sorts).

Before you continue onward with this article, please keep in mind the following…

  1. Your DSL Modem is in ‘bridge mode’ and NOT ‘routing mode’.
  2. Your pfSense install is 2.4.x or newer.
  3. You are aware of the CenturyLink region that you’re in. As some regions do not require the VLAN 201 tag on WAN port!
  4. I’ll be using the IPv6 DNS variant of 1.1.1.1 and 1.0.0.1.
  5. On pfSense, you have not gone to Advanced -> Networking Tab and modified the IPv6 Options. Below are what I have set…
    • Allow IPv6: Checked
    • IPv6 over IPv4: Unchecked
    • Prefer IPv4 over IPv6: Checked
    • IPv6 DNS Entry: Unchecked.
    • DHCPV6 DUID: DUIT-LLT
    • DUID-LLT:
      • Time in seconds since Jan 1, 2000: 637075522.
      • Link-Layer Address: Your pfSense WAN MAC.

CenturyLink IPv6 configuration settings…

  1. IPv6 Mode/Type: 6rd Tunnel
  2. 6RD Config:
    • Prefix: 2602::/24
    • Border Relay: 205.171.2.64
    • Prefix Length: 0

Prerequisites out of the way, let’s begin work on pfSense!

1. Login to pfSense if you’ve not already done so.

2. Add a gateway

  1. Go to System-> Routing -> Gateways Tab
  2. Click “+ Add”
  3. Disabled: Unchecked.
  4. Interface: Your WAN IPv4 port.
  5. Address Family: IPv6 (this is rather crucial) 🙂
  6. Name: SomethingIPv6 – Give it a name that won’t be confusing. 🙂
  7. Gateway: Leave blank – it’s auto-filled as dynamic later on.
  8. Gateway Monitoring: Unchecked (for now).
  9. Gateway Action: Checked (we’re tieing the IPv6 to the IPv4 gateway in a way. If IPv4 goes down, IPv6 goes with it!)
  10. Monitor IP: Leave blank (for now).
  11. Force State: Unchecked.
  12. Description: CenturyLag’s IPv6 (or something descriptive)
  13. The ‘Advanced’ section is not used in this context.
  14. Save.
Gateways segment & final configuration.

3. Enable IPv6 on WAN first

  1. Select your WAN port for CenturyLink (Interfaces -> WAN (or whatever your WAN interface is named)).
  2. General Configuration panel, under IPv6 Configuration Type, set to “6rd Tunnel“.
  3. 6RD Configuration panel…
    • 6rd Prefix: 2602::/24
    • 6rd Border Relay: 205.171.2.64
    • IPv4 Prefix Length: 0
  4. Save.
  5. Apply Changes.
Some configuration options in image have been removed or blurred.

4. Enable IPv6 on LAN next

  1. Select your LAN port for your network under the Interfaces section.
  2. General Configuration panel, under IPv6 Configuration Type, set to “Static IPv6“.
    NOTE: We will be revisiting this later due to a bug with pfSense!
    • While you can enable Static IPv6 with forcing the interface to use DHCPv6, it will have routing issues.
  3. IPv6 Address: 2001:470:4312:: Set the subnet to /48.
  4. Use IPv4 connectivity and Upstream gateway: Unchecked.
  5. Save & Apply.

5. Enable DHCPv6 for our LAN… with some configurations.

  1. Go to Services -> DHCPv6 Server & RA.
  2. Select your LAN tab, if it wasn’t selected already.
  3. Under DHCPv6 Options…
    • DHCPv6 Server: Checked.
    • Range: 2001:470:4312::2001:470:4312:ffff::
    • Prefix Delegation Range: Blank
    • Prefix Delegation Size: 48
    • DNS Server: Blank – we’ll be using the global settings for that.
    • Domain name: Blank – it’ll inherit from the global DNS LAN naming convention.
    • Domain search list: Blank
    • Default lease time: Blank
    • Max lease time: Blank
    • Time format change: Checked.
    • DDNS, NTP, LDAP, Network Booting, Additional Options – all of these are not used.
  4. Save.
  5. Go to the “Router Advertisements” tab.
  6. Router Mode: Stateless DHCP.
  7. Router Priority: High.
  8. The rest are intentionally left blank.
  9. Save (and Apply if that pops up again).

6. Back to Interfaces -> LAN

  1. Set IPv6 Configuration type to Track Interface.
  2. Set Track IPv6 Interface to the WAN interface in the dropdown.
  3. Set IPv6 Prefix ID to 0.
  4. Save.
  5. Apply.

If you’re still reading… you’re almost done!

7. The DNS (it’s always the DNS).

  1. Go to System -> General Setup.
  2. In the DNS Server Settings, we need to add two new DNS servers to the mix.
  3. Click “+ Add DNS Server” twice.
  4. Add IPv6 host 2606:4700:4700::1111 to the first DNS address blank.
  5. Set gateway to the v6 gateway that was added above. For me, I aptly named it DSLv6.
  6. Add IPv6 host 2606:4700:4700::1001 to the second DNS address blank.
  7. Do the same as step five for the second IPv6 DNS provider.
  8. Save.

8. Firewall rules

What fun is IPv6 without allowing traffic?
  1. Go to Firewall -> Rules.
  2. Go to the WAN rules tab.
  3. Add a new firewall rule, the bottom of the list is fine.
    • Action: Pass
    • Disabled: Unchecked
    • Interface: WAN
    • Address Family: IPv6 (don’t select IPv4+6 with ICMP – weird things happen)
    • Protocol: ICMP
    • ICMP Subtypes: any
  4. Source: any.
  5. Destination: LAN interface aka “LAN ‘net'”.
  6. You can tick log if you desire, only useful in terms of debugging.
  7. Save.
  8. Apply.
Additional unrelated rules removed.
Now for the LAN tab… this is effectively “allow everything”
  1. Action: Pass
  2. Disabled: Unchecked
  3. Interface: LAN
  4. Address Family: IPv6
  5. Protocol: Any
  6. Source: Any
  7. Destination: Any
  8. Log: Unchecked.
  9. Save.
And the final LAN rule: ICMP – all of it.
  1. Action: Pass
  2. Disabled: Unchecked
  3. Interface: LAN
  4. Address Family: IPv6
  5. Protocol: ICMP
  6. ICMP Subtypes: any
  7. Source: Any
  8. Destination: Any
  9. Log: Unchecked.
  10. Save.
  11. Apply.
Additional unrelated rules removed.

With all of the above completed at this point, let’s give it a test…

9. Go to a machine/device with IPv6 support.

10. Disable then enable the networking on the device (be sure that the interface even has it enabled in the first place!). See if you get an IPv6 address – it might take a moment or two.

11. Test out your IPv6 and IPv4 stack and see if everything is working!

If all goes well, you will see something similar to this… and don’t worry about the reverse DNS ‘issue’. Not many providers even have DNS assigned to their entire IPv6 block(s).

ipv6-test.com site test

Chrome and Hover Cards on Tabs

For a great deal of time, Chrome hasn’t had much support into Windows Aero-like window peeking without having to actually click on a tab to view what’s within. In recent versions of Chrome, this appears to have changed, but the change doesn’t appear to be made standard yet.

Here’s how to enable Tab Hover Cards in Chrome.

  1. In the URL bar, go to chrome://flags
  2. In the search bar, type in #tab
  3. You should see two or three items, the two we want are #tab-hover-cards and #tab-hover-card-images
  4. With the Tab Hover Cards setting, you will have five options.
    1. Default
    2. Enabled
    3. Enabled B
    4. Enabled C
    5. Disabled (this is Default)
  5. For me, I use #4 from the list above, “Enabled C“.
  6. Jump down to #tab-hover-card-images and set it to Enabled.
  7. Relaunch Chrome.

You should now have “tab-cards” popping up in place of the old tool-tip text boxes. And it does look mighty fine!

News.Google.Com hover card

As with any experimental Google feature, it may disappear someday or be inherited into the core of Chrome in a normal settings panel option.

Rift MMO: Base Stat Values

As of September 2019, the following are the base stats for Rift MMO. From there on, values are modified by “modifiers” and Attack Power or Spell Power, Crit Chance and Crit Power. There are some abilities in the soul tree, which are known as Spell/Attack Power Coefficients – these aren’t covered in this article.

It’s worth noting that in the Rift 4.x series, also known as the Prophecy of Ahnket, armor based gear stats have been reduced to the following stats granted: Armor, Core Stat, Secondary Stat, Endurance. Things like AP, SP, CP, Crit are all granted via other items now, such as fragments, weapons, accessories, and planar focus.

Base / Sec StatsClericMageWarriorRoguePrimalist
Wisdom75%25%0%0%0%
Intelligence25%75%0%0%0%
Strength0%0%75%25%25%
Dexterity0%0%25%75%75%
  • A core-stat value of one (1) is 0.75 SP or AP – calling dependant.
  • A secondary-stat value of one (1) is 0.25 SP or AP – calling dependant.

So, How is critical hit chance calculated in at base? Easier than the chart above.

Crit ChanceClericMageWarriorRoguePrimalist
Wisdom50%50%0%0%0%
Intelligence50%50%0%0%0%
Strength0%0%50%50%50%
Dexterity0%0%50%50%50%
  • Critical hit chance is always 50% of your core stat and secondary stat. This changed to the system above during the Storm Legion expansion pack.
  • Critical hit chance should never be slotted into your character at end game tiers – it comes passively.
  • Critical Hit Chance is NOT Crit Power.

And how does Crit Power come into this mess of base stats? Even more easily!

At level 70, aka the Rift 4.0 series, Crit Power is linear from 0 to 9074. Once 9074 is hit, you will hit a strict Diminishing Returns Value.

40% is the absolute cap, and to get to 40.01, you would have to double your crit power – which is beyond min-maxing logic to attempt. You should reach for 8700 to 8750 crit power pre-feast buff. When you tag in the feast, it’s another 300 crit power. For me currently, that sets me to 9011 crit power, which is close enough to the cap (39.7% of 40% cap) at this point.

Crit power should always be the priority over crit chance, but not before attack or spell power.