Jun 8, 2021 - Discord Bot - Version 1.10.5 Released

Comments

Discord Bot Version 1.10.5

We’ve made some changes to how we handle jobs which should hopefully prevent issues in the future with hung monitoring jobs.

Technical Details

We currently use Hangfire for job management, for some reason every once in a long while (sometimes weeks or months) we end up with hangfire deadlocking itself, unable to run jobs or delete them. The best way to remedy this is to purge the tables and all locks and start over.

It seems at first glance that Hangfire doesn’t like when our SQL server fails over, we haven’t dug deep into this, but the easy solution is to just move job management to Redis – it’s a bit more suited for jobs at scale anyway.

Dec 6, 2020 - Discord Bot - Version 1.10.1 Released

Comments

Discord Bot Version 1.10.1

With the new logging we found a permission issue with a server could sometimes interrupt other messages, this has been fixed.

Technical Details

During online messages, we were catching errors on a per-streamer basis, instead of per message destination, so if a streamer is on two servers and one server removed our bot, there was a 50% chance that the removed server was first, it would error and wouldn’t try sending out anymore messages.

In v1.10.0 there was some question whether we should actually shim out all messages as individual jobs to be sent (which allows us to do all kinds of crazy things like per-shard queues, multiple server workers, etc.), however all of this stuff seemed a bit early to do. For now we’re just catching/handling errors a bit better. There has been some debate on releasing it for a v1.10.x release depending on if it’s still useful at our current point.

Dec 6, 2020 - Discord Bot - Version 1.10.0 Released

Comments

Discord Bot Version 1.10.0

Been awhile since we’ve had the time to update stuff, crazy year it has been, v1.10.0 however brings some fun changes!

  • Mixer has officially been removed from our code base, so long Mixer! The tech you brought to the table was impressive so we’re sad to see you go.
  • We’ve added Piczel.tv support!

Along with some internal improvements:

  • Logging has been updated to help resolve some issues with visibility on logs for us.
  • When Picarto has issues (which is does more often than we’d like), we give it a shorter amount of time to respond back to us, and we don’t retry, we just let the next check fire later.
  • We’ve got a more robust way of communicating with Servers and Users in a way that prevents them from being “dropped” by Discord.
  • Cleanup of the code base, updating various libraries and runtimes.

Enjoy!

Jan 2, 2020 - Discord Bot - Version 1.9.0 - 1.9.3 Released + FriskyPaws Update

Comments

Discord Bot Version 1.9.x

We recently pushed out our 1.9 version of the Discord bot, which includes some new statistics gathering. Now we track when streams are started/stopped which allows us to do all kinds of fun things.

Number of streams and total time streamed

We now have some basic statistics on our page.

Dec 1, 2019 - Discord Bot - Version 1.8.7 Released

Comments

Discord Bot Version 1.8.7

Minor bug fix for tonight – if you didn’t have your Picarto profile fully filled out we’d try to send empty fields over to Discord, causing Discord to reject the message, now we don’t try to fill out fields if the value is empty or null.

Release Notes

  • Bug
    • [BOT-16] - Error When Filling Out Embed For Picarto

Nov 22, 2019 - Discord Bot - Version 1.8.6 Released

Comments

Discord Bot Version 1.8.6

Pushed out another fix, one that had been plaguing us for awhile, found out that if you followed someone and then deleted the channel that messages would fail to send to that channel and halting sending further messages for that user.

Now if we attempt to send a notification for a streamer to a guild that doesnt exist, a user that doesn’t exist or a text channel that doesn’t exist, we’ll break the notification link and continue on.

Release Notes

  • Bug
    • [BOT-15] - Null Reference Exception Due To Abandoned Channels/Guilds

Nov 21, 2019 - Discord Bot - Version 1.8.5 Released

Comments

Discord Bot Version 1.8.5

We released a minor patch of the Discord bot. Entirely just bug fixes and better logging to check for other issues.

Release Notes

  • Bugs
    • [BOT-11] - Can’t Remove/Readd New Accounts
    • [BOT-12] - Documentation Page Vomits JSON Everywhere
    • [BOT-14] - Can’t Copy Commands From Documentation

Nov 3, 2019 - FriskyPaws Update - Tools and More!

Comments

FriskyPaws Update

The past week has been crazy since ASE, we’ve been stomping a ton of things out:

  • Images “fill” the preview box
  • Icomoon support
  • Site footer
  • Support for all kinds of social media
  • Admin control panel
  • Reset password functionality
  • User account confirmation
  • Email Subsystem

So How Much Further?

At this point what I can immediately see before we go beta:

  • Moderation tooling needs at least basic support so we can take actions
  • Full audit and change logging need to be added
  • Some security checks are missing, mostly related to the admin control panel
  • Following other users for uploaded content is a must
  • Commenting needs to be fully implemented
  • Private messages
  • At least requesting character and artist profile ownership

And How Long Before Gold?

  • Following artists and characters
  • Better tools for managing characters and artist accounts
  • Media merging tools

I may be a little off on that… but we’re getting close! I’ve been moving a lot of the smaller finer-detailed stuff to our Jira system located at jira.friskypaws.net, we’re going to keep the Trello board for features and higher-level concepts, while we’re going to move all lower-level (bugs, tasks, nitty-gritty) tasks to Jira. This will allow us to have a highly accessible feature-rich front for interacting, but a massive multi-hundred issue system without clogging Trello with nightmares.

I expect that the 0.9.0 (beta) and 1.0.0 (gold) releases to start to settle down and properly have all to-do work in them soon.

Images Fill Preview Box

All previews now “fill the box” on gallery pages, just a little visual improvement.

Image Fill

As part of that we’ve been keeping an eye on things working well on mobile (some minor issues still need to be addressed):

Icomoon Support

We added support for Icomoon, a platform for importing icons for all kinds of use, super easy for us to move forward with more visual elements. We use them for all of our social media links in the footer but may be sprinkling it all over for more.

We got a new site footer, nothing fancy, just our social media/site rules/terms of service.

Footer

Support For More Social Media

We added a ton of social media platforms we link to now, adding more is trivial. The full list right now is:

  • Dealer’s Den
  • DeviantArt
  • Discord
  • Etsy
  • Facebook
  • Furbuy
  • Furry Network
  • Inkbunny
  • Ko-Fi
  • Patreon
  • Picarto
  • Second Life
  • Sofurry
  • Telegram
  • Twitter
  • Weasyl
  • Website
  • YouTube

Social Media

Of course we’re going to clean up the profile editor a bit, gets really silly with all these social media items listed by default.

Admin Control Panel

We have some work done on our back-end admin control panel, the basics for managing Artists, Characters, Media, Reports and Users.

The biggest thing to tackle is tooling for report management.

E-Mail Subsystem

We added the boring e-mail subsystem, so we have some basic notification options.

Reset Password Functionality

Added the ability for users to reset passwords, nothing fancy here.

User Account Confirmation

We do require a valid e-mail address, so we added e-mail confirmation flows.

FriskyPaws Discord Bot

Some minor changes on the Discord bot went out with v1.8.4:

  • Clean up some old warnings
  • Prevent the bot from retrying status scans
  • Mixer notifications will no longer have HTML in them

Retrying Status Scans

We had a bug where Picarto’s API would start returning bad results, and our system would re-queue scan jobs. Meanwhile additional jobs were also being queued causing multiple jobs to all fire in parallel once Picarto stopped sending bad responses, this could result in multiple notifications going out.

Now we never retry jobs – they’ll just get picked up again after a short period.

Mixer Notifications Having HTML

This is a semi-fun one – not too much we can do for the time being other than a best-effort stripping of the HTML, so that’s what we’ve done.

Oct 27, 2019 - FriskyPaws ASE Panel 2019

Comments

ASE 2019 “What is FriskyPaws” Panel

Hey everyone, just freshly back from our panel at ASE and it was a blast, we had been sitting on some changes that we wanted to wait till ASE to publish.

Profile

Search

Registration is up, profiles are up (including characters, uploads, favorites, gallery), a new dark theme (which is the only theme right now), some clean-up of the main UI.

So, where have we been?

Sorry for the long delay, we ended up getting picked up on a large project, ate a ton of hours from our entire team. Good news: we’ve decided that we’ll no longer “take a dev unless we replace them” on FriskyPaws.

With that – we picked up two new developers – Malachai and Pyrozen, they’re currently 100% dedicated to FriskyPaws and have been helping crank out some stuff.

The Panel

Our panel went well, a lot more people showed up than I anticipated, lots of feedback, lots of interest, good questions.

Which on that note, the questions:

What are you doing about security? Credit cards and processing?

Currently there are very few plans in place for credit card processing (way down the road with the marketplace), out of the gate we’ll be facilitating artist’s normal workflows through PayPal and the like.

Now on that subject I personally have a lot of experience dealing with PCI-DSS (credit card security industry standard) for companies that store credit cards on-site, which is going to be way more stringent than what we’re looking to do (Stripe). We will provide a full PCI-DSS SAQ A/A-EP depending on what we’re doing.

As for security for our user accounts, we’re leveraging ASP.NET Core Identity Version 2 right now, which defaults to PBKDF2 with HMAC-SHA1, 128-bit salt, 256-bit subkey, 1000 iterations, version 3 uses HMAC-SHA256 and 10k iterations which we will be upgrading to as soon as the other dependencies catch up.

On top of the above, we’ve already caught the ear of a few security furs to help us do some pentesting on our platform when we get into Beta, we want this system beat up, we’ve considered a bounty program but we’re not sure how we’d fund that continuously (maybe we can provide other perks? But still… have to find something we find fair on behalf of those helping us).

Where are you currently planning on hosting it?

Currently we’re on a stack that is used for other stuff. We own the servers, we’re on a 100mbit fiber line, we have ~400GB of RAM available in our cluster and 75Ghz of processing power along with 22TB of usable high-performance and resilient storage. We have lots of room for cost-effective upgrades too.

This means that our monthly bill is quite low, most funding goes towards developers and assets to the site, not paying a cloud provider to keep the lights on.

We have a couple minor gaps we need to close (redundancy on some network gear for the most part), but nothing too bad, our Discord bot stays online more than Discord does – I think that’s a good enough.

How do you plan on funding this? Will there be premium features for paying users?

We’re currently funding this through other projects we’re doing, I have zero plans to rely on FriskyPaws to bring in funding to make it viable.

We’ve considered premium features but every time we come up with something I go “but… that is something I want everyone to enjoy”, so far, I think the best we’ve got are unique badges for users that support us.

What are you doing to try to prevent moderator bias in decision making?

This is always something that is difficult to combat, but a few major things we’re looking to do:

  • Moderator transparency: decisions are not made in the dark
  • Clear and fairly enforced rules: moderator performance is evaluated off of their ability to do so
  • Elevation system: issues can be elevated up the chain-of-command if a moderator isn’t adhering to the rules, and the moderator can be held accountable
  • Zero-shame system: we all make mistakes, people overstep bounds, empathy is required even when moderating content or people’s behavior
  • Avoid monolithic decisions: stay away from top-down internal decisions, encourage discussion with our staff, don’t just rubber-stamp everything, don’t just be filled with nepotistic behaviors

Ultimately people aren’t robots and it’s hard to make a completely impartial system – but we can do our best to serve the community first and foremost. The importance is the acknowledgement that we’re not always right either and to have ways to correct for that.

What are you doing about witch hunts?

This is a pretty straight forward one: our decisions for things like replacing Artist Beware is that we’ve realized there are a reason these hunts happen, but the ability to do anything about them is poor at best.

  • There is a thin line between call-outs and harassment, we will not tolerate the later
  • We want to discourage the use of call-outs by the very nature of addressing why call-outs happen
  • We do want to facilitate that people are held accountable, we want artists that take advantage of commissioners to get reviews that reflect that negative experience, we want commissioners that are a pain to get the same
  • Users that are violating our rules need to be reported and handled (content removal, temp bans, system access removal, permanent bans)
  • If a user isn’t violating a rule but is being disruptive, the rules need to reviewed and updated
  • If a moderator isn’t doing their job, elevate the ticket
  • If the handling of a ticket doesn’t seem appropriate and we want to have a wider discussion about it in the community, we’re up for discussing it during one of our regular community touch-points

Are you looking for more developers?

Right now we’re not, but that will probably change over the next couple months, we’re currently on ASP.NET Core 2.x and a lot of our front-end components are Vue.

Are you going to have a mobile app?

Yes! Eventually. Currently we’re looking to ship with pretty solid mobile support. Eventually we’ll be maturing that into an App you can download in the store. For now we’re just going to direct people to go to the site on their mobile device – the plan is to have almost the exact same experience on both (outside of we cannot provide mobile notifications on iOS using the website due to Apple not adopting new web standards, we can on Android and your Desktop though!)

Is it just images only?

First iteration, yes. But we’re looking to add support for music and video and have debated even supporting things like games.

Are you looking to use AI/Machine Learning?

We’ve eyeballed it for some fun experimental stuff, but nothing concrete. Anything from auto-tagging to character auto-identification to moderation workload help. We do know that machine learning can be really hit-and-miss so it’s more of a tool to help.


I think that covers everything, going to admit I’m running off these questions off of memory (my bad, should have written a lot of them down). If anyone was there and remembers one please do tell me! And feel free to hit us up for any other questions!

Some additional updates tonight

I added a temp page at https://friskypaws.net/ that details all of our resources

I also uploaded our slides here: https://presentations.friskypaws.net/presentations/what-is-friskypaws

Stay tuned

Next blog should be going over how close we are and what needs to be done, along with release plans.

Jan 29, 2019 - FriskyPaws Update

Comments

FriskyPaws Update

Busy work, much in progress

First, sorry for the delay, trying to keep these coming out before Sunday, things have been busy all around.

This week we’ve only got a couple items completed, mostly some quality-of-life improvements on software verification and input validation.

But there is a lot coming down the pipe…

We’re starting to tackle some of the larger projects, stuff like putting in the user interfaces, building and polishing those tools and designs and wiring everything up.

Advanced Searching

A bit of work is almost complete with advanced searching, which allows building and sharing complex search queries.

Tagging UI

And a big piece is pulling together our UX with tagging, it’s still really young though. Functionally it works but it still needs a bit of polish as we smooth out the user experience with it.

Upload Buttons

But as you can see, we provide auto-complete with preview images, still needs:

  • A lot of UX polish, refer to sizing/stylizing/the exit button/etc.
  • Displaying the owner’s information.
  • Picking the character’s avatar – not just the first picture in their gallery.

But it’s coming along, expect all of this and more next week.

Registration and Account Security

Another big piece currently being worked on, so far we’re eyeballing how deep into 2FA/3rd party log-ins (Facebook/Google+/etc.) we’re going to get into, but it’s very possible we’ll roll with all of this on first release, just some nice bits of account security and/or ease of use with other platforms.