Tag Archives: Release

Releasing Often Helps With Analyzing Performance Issues

Post Syndicated from Bozho original https://techblog.bozho.net/releasing-often-helps-with-analyzing-performance-issues/

Releasing often is a good thing. It’s cool, and helps us deliver new functionality quickly, but I want to share one positive side-effect – it helps with analyzing production performance issues.

We do releases every 5 to 10 days and after a recent release, the application CPU chart jumped twice (the lines are differently colored because we use blue-green deployment):

What are the typical ways to find performance issues with production loads?

  • Connect a profiler directly to production – tricky, as it requires managing network permissions and might introduce unwanted overhead
  • Run performance tests against a staging or local environment and do profiling there – good, except your performance tests might not hit exactly the functionality that causes the problem (this is what happens in our case, as it was some particular types of API calls that caused it, which weren’t present in our performance tests). Also, performance tests can be tricky
  • Do a thread dump (and heap dump) and analyze them locally – a good step, but requires some luck and a lot of experience analyzing dumps, even if equipped with the right tools
  • Check your git history / release notes for what change might have caused it – this is what helped us resolve the issue. And it was possible because there were only 10 days of commits between the releases.

We could go through all of the commits and spot potential performance issues. Most of them turned out not to be a problem, and one seemingly unproblematic pieces was discovered to be the problem after commenting it out for a brief period a deploying a quick release without it, to test the hypothesis. I’ll share a separate post about the particular issue, but we would have to waste a lot more time if that release has 3 months worth of commits rather than 10 days.

Sometimes it’s not an obvious spike in the CPU or memory, but a more gradual issue that you introduce at some point and it starts being a problem a few months later. That’s what happened a few months ago, when we noticed a stead growth in the CPU with the growth of ingested data. Logical in theory, but the CPU usage grew faster than the data ingestion rate, which isn’t good.

So we were able to answer the question “when did it start growing” in order to be able to pinpoint the release that introduced the issue. because the said release had only 5 days of commits, it was much easier to find the culprit.

All of the above techniques are useful and should be employed at the right time. But releasing often gives you a hand with analyzing where a performance issues is coming from.

The post Releasing Often Helps With Analyzing Performance Issues appeared first on Bozho's tech blog.

Cherry Kisses, on Steam

Post Syndicated from Eevee original https://eev.ee/release/2020/11/30/cherry-kisses-on-steam/

Cherry Kisses title screen, showing Cerise at a counter

🔗 Steam release
🔗 itch release

Whoops! I meant to write about this when it originally came out, in April, but never quite got around to collecting my thoughts. Here is a very rushed subset of them.

The game is extremely NSFW, but the commentary below is not.


The game itself

I like the game. It’s essentially a visual novel, but disguised.

I’ve played a decent number of visual novels, and I’ve thought a lot about them and their role as kind-of-games, and I’ve noticed the thorny bits that I don’t like. And my thoughts have circled around the notion of player agency.

Agency is what makes a game feel like a game. You have input, in a broad sense. You can do something to the game, and it will react appropriately (fingers crossed).

This theory explains the awkward position of visual novels. The bulk of the experience is reading a passage, pressing spacebar, and GOTO 10. You don’t have meaningful input; pressing spacebar isn’t a decision, it’s scrolling.

When you do have input, it generally comes in the form of a menu. But this doesn’t feel like you’re making a choice; it feels like one is being extracted from you in the middle of an otherwise passive reading experience. The base form of the game is reading, and that has been interrupted at a predetermined point to demand something of you. You often don’t have enough information to make a meaningful choice, either, so this becomes a game of saving at each branch and performing an exhaustive depth-first search of the story. As time goes on, you end up skipping through more and more of the early parts, and may hit a point where you go down a decision branch not even remembering what form the story took before you got there.

This is a weird experience.

I wanted to try to improve the feeling of a VN without altering the substance, so this one is disguised as an RPG. I mean, not really an RPG, but that brand of top-down “walk around and interact with stuff” framing.

You play as Cerise, and the entire game takes place in her shop. At any given time, zero or more customers are present, and you can either twiddle your thumbs at the counter or talk to one of them. Whatever you do will generally advance time by an hour, which may change the set of customers; some folks left or arrived while you were busy doing something else. And different folks have different reactions to being ignored, so the whole game becomes one large meta scheduling puzzle.

The thing is, this could’ve been done just as well with a menu at the start of each hour, asking who you want to talk to. The gameplay would’ve been functionally identical. But this scheme feels completely different (at least to me) for several reasons:

  1. Instead of choices being “on top of” the prose, the prose is on top of the choices. It feels like the choices you make cause the prose to happen, rather than being forks in the middle of a river you can’t escape. You can wander around the shop as long as you like, taking breathers, and time will not pass until you, the human at the controls, cause something to happen. (You could say the same about a menu in a VN, but there you can’t do anything else either; the entire game is frozen until you interact with this modal dialog.)

  2. You can do other things. Not many, granted, but you can examine every single object in the shop, and they all have different descriptions (even if they look identical). A typical visual novel doesn’t give you the opportunity to go on frivolous tangents, but I think a big part of games is being able to forget about the progression for a minute and fuck around with something that looks interesting. Stop and smell the roses, in this case literally.

  3. A menu spells out all possible options with equal priority. They’re just items in a list, after all. A physical world, on the other hand, can add subtle differences — choices may be more or less obvious, more or less compelling, or be presented in some way that adds to the narrative. For example, while customers tend to show up at arbitrary spots throughout the shop, your girlfriend Lexy will wait for you right behind the counter, suggesting a more personal relationship even if you don’t yet know who she is. Or consider the ubiquitous option of ignoring everyone in the shop and passing time at the counter instead. That would usually be pointless, so it would be obnoxious to list in every single menu, but having it as an option in-world makes it less obvious… which is perfect puzzle fodder. Just saying.

As an added bonus, every character in the game has a “happiness” rating from -3 to 3. If you can help them with their problems, their happiness will increase. The numbers are largely arbitrary, but you do get a final score tally at the end, and that gives some sense of measured accomplishment that’s more nuanced than a mere good/bad ending. You can ignore it altogether and be happy with the story you got, or you can go down the rabbit hole and try to find the unique path through the game that will make everyone happy and get you a perfect score.

These feel like really subtle design decisions that have an equally subtle impact on the experience. I don’t know what impact it had on anyone else, but I really liked the results. I didn’t mind playing through the game a gazillion times while I was developing it, because it’s just nice to play. The story isn’t especially deep, but it has a lot of little lighthearted interactions with a variety of characters, and sometimes different threads impact each other in really subtle ways. Sometimes I ran across an interaction I’d forgotten I’d written! It feels like the kind of story game that you can’t merely grind every ending out of, one that always has a chance to surprise you a little.

I still have other ideas for making narrative games that feel more player-controlled, so fingers crossed that I can pull them off.

Steam, numbers, business

This is the first game I’ve put on Steam, a platform I’ve long had mixed feelings about. On the one hand, it’s cool that video games have something like a package repository. On the other hand, that package repository is owned and controlled by a single company that sits back and rakes in billions (30% off of every sale!) from a glorified FTP server, something that Linux distributions do for free. And it’s normalized casual DRM, which I do not enjoy. (If I did it right, then manually running Cherry Kisses while Steam is closed should simply run the game without interacting with Steam at all.)

On the other hand, I can’t deny the impact. The Steam release earned more in its first two weeks than the itch release did in more than a year.

…okay, that isn’t an entirely fair comparison. The itch release also had a free “demo” version that was exactly like the “real” version, only with lower-resolution artwork. Loads of people played that (almost 20k downloads as of now), and in retrospect we may have shot ourselves in the foot a bit by offering a free version. But I do like when people can play my games, and releasing anything only in a paid form feels like extorting people out of their money.

I am not good at business. It mostly feels bad.

Despite that, the game has somehow grossed a bit over $10k in the last eight months (which shrinks to $6k net after the Steam tax, VAT, and refunds). That’s not a windfall, but it’s far more than I ever expected to earn on the back of a month-long jam game, and it all went to paying our 2019 taxes so it’s like nothing ever happened. It certainly makes me optimistic about selling something meatier.

Creating the Steam release

We did update the game somewhat for Steam, a process that ended up consuming almost a month somehow and still didn’t cover everything we wanted. The most obvious in-game things were the addition of character profiles, an image gallery, and an options menu — which is to say, all UI things, which I had to build in LÖVE, by hand, which was an incredible pain in the ass. But it works, somehow.

Of course I also added a bunch of Steam achievements, which were kinda fun to decide upon. It’s a story game, so they’re mostly of the form “encounter this bit of the story”, but that’s fine?

But oh boy, the thing that really took the longest time was linking to Steam at all. You get a DLL/SO, some header files, and some hit-or-miss documentation, and the rest is up to you.

The library is, of course, designed for C++.

I am not using C++. I am using Lua.

This posed something of a problem.

I prefer not to touch C++ with a ten-foot pole, so writing some glue on the C++ side did not sound appetizing. (That would’ve also left me with the difficult problem of compiling that code for platforms I do not own or develop on.) That left me with binding to the Steam API from the Lua side.

After several days of Googling, finding years-old projects that promised to do this, and completely failing to get anywhere at all with them, I resigned myself to writing something from scratch. LÖVE uses LuaJIT, which comes with the excellent FFI library, meaning I could bind to C with nothing more than a header file.

The Steam API does have a C compatibility layer, but it is basically not documented, so I had to do some guesswork to get from the documentation to the parts I actually needed. Also, the core of the Steam API is this hokey async messaging system built out of macros and C++ metaprogramming, so I had to do a clumsier polling thing using disparate parts of the C API instead. I finally discovered that there’s example code in a big honking comment in the headers themselves, except the example code is wrong, so I had to fix that as well. Plus all the obtuse bugs like with padding on different platforms which for some reason is baked into the messages that Steam sends because C programmers don’t know how to actually fucking serialize anything. It was an adventure!!

But after all that, I managed to get achievements working, and also leaderboards. Neat, cool, etc.

The game does leak coroutines indefinitely if it’s run through Steam but can’t connect, though. Sorry.

Man. The Steam website has so many features, and the documentation explains them all in one succinct list, but fuck me if I can actually find any of them. So many things are not linked from obvious places; there have been many times I knew a particular page existed but could not figure out how to get there, and ultimately I started relying on address bar history instead of trying to navigate this website.

And so many features are awkwardly built on top of older features that are actually something completely different. Like we have a “developer” page on Steam, but the only part of it we can really control is a single line of plain text at the top. If you go to the “about” tab, it just shows you that line again! That’s all we can put there! You have to click “visit group page” (why would you do that??) in the sidebar of that page to actually get to something we can control.

In stark contrast to itch, Steam really wants your store page to look like a Steam store page and not like a your-game store page. Your artwork (and there is so much artwork) has to be manually approved by a human, and along the way I discovered some extremely unintuitive rules, like that the library header has to be SFW even though it’s only visible to people who already own the game. Store pages also have a “legal” section, but I couldn’t list open source libraries I used (and their licenses) in that section, because I’m not allowed to have links. Like, at all. They really don’t want you to have links. Games exist independently of the humans that made them in the world of Steam; they are isolated jewels floating in a vast space that is linked directly to gaben’s bank account.

I cannot comprehend how weirdly low-key hostile the whole experience felt. All so they could take a third of my money.

Oh, and there’s no Mac release, because I do not have a Mac on which to sign Mac software and do not wish to pay Apple for the privilege, and Mac software does not run any more if it’s not signed. Sorry. Yes, I fucking know about fucking right-click open, please stop fucking telling me about that, that is not useful for software that is run from someone else’s launcher.

Reception

People seem to like it?? I mean, I’ve had a dozen or so people tell me to my face that they had an especially good experience with it, that it was cozy and upbeat and just nice. For a few of them, it apparently helped ease some aversion they’d had to sex, simply by showing it playing out well.

It’s funny that I thought so hard about the general design and how agency worked and all that, but 99% of the feedback has been about the feeling of the prose itself — something that just kinda fell out of my fingers. I guess I’m not surprised — after all, if these players thought as hard about game design as I do, they’d probably be designing games.

As of this writing, there have been 19.5k downloads on itch and 1750 sales on Steam. Of the Steam sales, a hair under 80% of the people who own the game have actually played it, so if I extrapolate wildly, maybe 17,000 people have played it.

But I don’t see anyone talk about it outside of my immediate circles, which feels a bit weird. Maybe? I’m not sure what the “normal” amount of conversation about an admittedly niche game is. I don’t know how things really spread by word of mouth, and I thought this might be an opportunity to gleam some insight about that, but it has not visibly materialized even though the game is being bought by people I don’t personally know.

On the one hand, it’s a sex game, so many folks are less likely to talk about it. (A couple people even specifically asked if Steam has a way to hide what game you’re playing from your friends — and, alas, it does not.) On the other hand, it’s a furry sex game, and furries are traditionally not so tight-lipped.

Maybe there’s not that much to say; the impact it’s had on people I know has been fairly personal, and if it didn’t have that kind of impact then it’s just a cute little story game.

Lessons learned

I have no idea. There are so many confounding factors here that I don’t know how to conclude anything.

I guess I’m pleasantly surprised by how many people bought a fairly short game for $7. As it turns out, people will give you money for a thing if you ask for it? That’s nice to know.

Releasing on Steam is such a huge pain in the ass lol.

Sales spiked right at the beginning and then flattened fairly quickly, but it still sells a few copies a week, so it looks like it’ll be a little trickle of income for a while. It’d be cool to get a few medium-sized games on Steam as an extra source of income. I suspect porn games have a bit more staying power, too.

Writing UI by hand sucks ass. I gotta switch to Godot asap.

Backblaze Computer Backup Release 7.0.2

Post Syndicated from Yev original https://www.backblaze.com/blog/backblaze-computer-backup-release-7-0-2/

New Backblaze version is available

We recently released an update for Backblaze Computer Backup: version 7.0.2! This release comes with improvements to our Safety Freeze feature, and some enhancements to the Mac and Windows applications. Enjoy!

What’s New for Windows & Macintosh:

  • Improvement: Safety Freeze
    • Safety Freezes exist to protect your data from corruption, but lately, they’ve been a touch over-cautious. This improvement updates Safety Freeze to reduce the amount of false-positives users experience.
  • Bug fix: Multiple hard drives listed
    • Some users experienced duplicate volume listings in the application, which led to confusion. This release addresses that issue.
  • Minor improvements to logging.

What’s New for Macintosh:

  • Bug fix: Location Services
    • This feature has been reworked to reduce the amount of pop-ups received when Locate My Computer is enabled on more recent macOS versions. This also fixed an issue where disabling Locate My Computer on the web would still result in a pop-up asking for Location Services permission.

Release Version Number:
Mac — 7.0.2.464
PC — 7.0.2.463

Availability:
Now!

Cost:
Free for Backblaze Computer Backup consumer and business customers and active trial users.

Upgrade Methods:

  • Immediately when performing a “Check for Updates” (right-click on the Backblaze icon and then select “Check for Updates”).
  • Immediately as a download from: https://secure.backblaze.com/update.htm.
  • Immediately as the default download from: www.backblaze.com.
  • Auto-update will begin rolling out in the next few weeks.

The post Backblaze Computer Backup Release 7.0.2 appeared first on Backblaze Blog | Cloud Storage & Cloud Backup.

Star Anise Chronicles: Oh No Wheres Twig??

Post Syndicated from Eevee original https://eev.ee/release/2020/05/10/star-anise-chronicles-oh-no-wheres-twig/

Title and logo for the game

🔗 Play it on itch.io
🔗 Play it on the PICO-8 BBS (where you can also download the cart and view the source code)

(I originally drafted this just after publishing the game, but then decided to start a whole series about its development and wasn’t sure what to do with this! But it’s solid and serves a different purpose, so here it is.)

It’s been a while, but I made another PICO-8 game! It’s a little platformer with light puzzling, where you help Star Anise find his best friend Branch Commander Twig. It’s only half an hour long at worst, and it’s even playable on a phone!

This is the one-and-a-halfth entry in the Star Anise Chronicles series, which after several false starts, finally kicked off over Christmas with a… uh… interactive fiction game. Expect the series to continue with even more whiplash-inducing theme shifts.

More technical considerations will go in the “gamedev from scratch” series, but read on for some overall thoughts on the design. Both contain spoilers, of course, so I do urge you to play the game first.


The first attempt at a Star Anise game was two years ago, in early 2018. The idea was to make a Metroidvania where Star Anise had a bunch of guns that shot cat-themed projectiles, obtained a couple other cat-themed powers, and made a total mess of a serious plot happening in the background while he ran around collecting garbage.

After finishing up the Steam release of Cherry Kisses last month, we decided that our next game should be that one, which would now be Star Anise 2 (since i’d already released a Star Anise 1 some months ago). We have, uh, already altered these plans, but that’s the background.

I don’t really know why I started on this game. I guess there’s some element of stress to working on a project with someone, even if that someone is Ash (my spouse), and especially if I’m supposed to be driving it forward. I have to tell someone what to do, and then if I don’t like the result I have to ask them to fix it, and a lot of tiny design questions are out of my control anyway, and all of this is happening on someone else’s schedule, and I have to convey all the project state that’s in my head in a complicated non-verbal form, and… all of those things are a constant low-level source of stress.

So I guess we’d just finished a game that I’d designed, and it was looking like we were about to start a sizable project where I was the design lead again, and I wanted to make something I could finish by myself as an interlude.

And so I sat down with a teeny tiny tool to make a teeny tiny version of what I expected would be our next game.

Design

The basics were obvious: run, jump, land. I gave Star Anise little landing particles early on — they’re in the bigger prototype, I love landing puffs in general, and having them be stars adds so much silly personality.

I knew I wanted to have multiple abilities you collect, since that’s the heart of Metroidventures. I briefly considered giving Star Anise a gun, as in the prototype, but gave up on that pretty early. I would’ve had to sprite a gun, a projectile, a projectile explosion, enemies, enemy attacks, enemy death frames…

Don’t get me wrong; I have no problem with drawing all of that. The concern was that PICO-8 has a very limited amount of space for sprites — in the configuration I was using, 128 sprites of 8×8 pixels each. Star Anise himself takes up 9, even with some clever reuse for his walking animation. The star puff takes 4. The common world tile, plus versions for edges and corners, takes up 9. That’s 22 sprites already, more than 17% of the space I have, for absolutely nothing besides jumping around on solid ground. I would have to keep it simple.

That led me to the first two powers, both borrowed from the prototype:

  • AOWR starts conversation with NPCs and opens doors. I can’t really take any creative credit here, since these are both things Anise attempts to do with aowrs in real life.

  • Papping activates levers and knocks over glasses of liquid. Anise only does one of those in real life. (In the prototype, this is a gun — which shoots pawprint-shaped projectiles — but I’d already been thinking about making it a “melee” ability first.)

I adore both of these abilities. I think they both turn some common UI tropes on their heads. NPCs, doors, and levers are all things you usually interact with by pressing some generic “interact” button, but hitting a lever (and meowing at a door) adds some physicality to the action — you’re actually doing something, not just making it go.

And pressing A to talk to an NPC doesn’t really make any sense at all! Consider: almost universally, even in games where the player character speaks, pressing A to start a conversation leads off with the NPC talking. So what the hell did you actually do? What does pressing A represent actually doing that results in someone else casually starting a conversation with you, seemingly unprompted? I have no idea! It’s nonsense! But Anise meows at me all the time and I always respond to him, which is perfectly sensible.

The third power, telepawt, is a little newer. We’d conceived a cat teleporting power pretty recently, but it was more involved and required some big environmental props. I realized pretty quickly that I couldn’t possibly do much of interest on the tiny PICO-8 screen (16 × 16 tiles), but I do like teleporting abilities! I briefly considered ripping off Axiom Verge, but I’ve already done that in fox flux, and the physics are a little involved… and then, lo, inspiration! Combine the two ideas: teleport great distances, but in a controlled and predictable way, by teleporting to the point on the opposite side of the screen. It felt like a very 8-bit kind of power, and I could already imagine a few ways to hide stuff with it, so off I went.

And that seemed like a reasonable progression. A way to talk (and progress through doors), a way to interact with objects, and a way to move around. I decided about halfway through development to make jumping a faux powerup as well; it stretches out the progression a bit more by making you walk past potential jumps and then come back to them later, which is important when I don’t have much map space to work with.

I’d originally planned for items to be separate from abilities, but ran into a couple problems, the worst of which was that I really didn’t have much screen space for sprinkling more items around. I ended up turning items into abilities in their own right, which I think was an improvement overall; now you can crinkle the plastic bag wherever you want, for example.

The game deliberately doesn’t try to explain itself; PICO-8 only has six buttons, and four of them are a d-pad, so I figured button-mashing (as in ye olde NES days) would get everyone through. Still, several players were confused about how to jump (and possibly gave up before even acquiring jump?), and one didn’t realize you could switch abilities, despite the up/down arrowheads on the ability box. Not sure what to learn from this.

The map

I struggled a bit with the map. PICO-8 has a built-in map editor with enough space for 32 screen-sized rooms (arranged in an 8 × 4 grid), which it turns out is not very many. I also very much did not want the game space to be confined to exactly that size of rectangle, so I knew I’d have to do some funky stuff with room connections. (Armed with that power, I ended up making loops and other kinds of non-Euclidean geometry, but hey that’s plenty appropriate for an imaginary moon.)

The bigger problem was designing the rooms outside of the PICO-8 map editor. I tried sketching in Krita, and then on paper, but kept running into the same two problems: it was tedious to rearrange rooms, and I didn’t have a good sense of how much space was available per room.

I found a novel solution: I wrote a Python script to export the map to a PNG, opened it in Aseprite, and edited it there — with each pixel representing a tile and the grid size set to 16. Now I knew exactly how much space I had, and rearranging rooms was easy: double-clicking a cell selects it, and holding Alt while dragging a selection snaps it to the grid. Here’s the beginning part of the game, screenshotted directly from Aseprite at 400% zoom:

A very pixellated map, with bright pink lines to indicate odd connections

When it came time to pack it all back into a rectangle, I copied the whole map, rearranged the rooms, and numbered them all so I could keep track of connections. Surprisingly, it wasn’t that bad a workflow.

The non-Euclidean map connections came in handy for packing secrets in more efficiently; most of the secret stars are off-screen, making them harder to find, but I couldn’t really afford to have a dedicated treasure room for every single one. So I crammed two treasures into the same room a few times, even though the two routes you’d take to get there are generally nowhere near each other.

Doors helped stretch the map out, too. It’s probably obvious if you think about it in the slightest, but doors don’t lead to different rooms; they reuse the same room. But some tiles only appear in the overworld, some tiles only appear in cave world, and actors (besides doors) don’t spawn in caves. That seemingly small difference was enough to make rooms vastly different in the two worlds; the most extreme case is a “crossroads” room, which you traverse vertically in the overworld but horizontally in cave world. (Honestly, I wish I’d done a bit more of this, but it works best in rooms that only have two overworld exits, and there ended up not being too many of those. Also, caves are restricted to basically just platforming, so there’s only so much variety I can squeeze out of them.)

Designing caves was a little trickier than you might think, since the PICO-8 map has no layers! If something needed to occupy a tile in the overworld, then I could not put something in the same place in cave world. Along with the design nightmare that is telepawt, this gave me a couple headaches.

I do like the cave concept a lot, though. I love parallel versions of places in games, and I have an unfinished PICO-8 game that’s centered around that idea taken to extremes. It’s also kind of a nod to my LÖVE games, all the way back to Neon Phase, where going indoors didn’t load another map — rooms were just another layer.

Aesthetics

Originally, PICO-8 had a fixed palette of 16 colors. You could do palette swaps of various sorts, but you can’t actually change any of the colors.

But since I last used it, PICO-8 gained a “secret palette” — an extra 16 colors that you can request. You can’t have more than 16 colors on the screen at a time, but you can replace one of the existing colors with a “secret” color. There’s also an obscure way to tell PICO-8 to preserve the screen palette when the game finishes, which means I could effectively change the palette in the sprite editor. Hooray!

I didn’t want to completely change the palette, so I tried to keep the alterations minor. For the most part, I gave up reds and pinks for a better spread of greens, purples, and yellows. Here’s the core PICO-8 palette, the secret PICO-8 palette, and the game’s palette, respectively:

A very bright palette, a softer and warmer version of the same colors, and a mix of them

I think I did a decent job of preserving the overall color aesthetic while softening the harsh contrasts of the original palette, and the cool colors really helped the mood.

Note that I changed the background color (color 0 isn’t drawn when it appears in a sprite) to navy and promoted black to a foreground color, which helped black stand out more when used as an outline or whatever. Probably the best example of this is in the logo, traced from the vector logo I made for the first Star Anise game.

Hmm, what else. The tiles themselves felt almost forced, if that makes sense? Like I could only draw them one way. PICO-8 tiles are a rinky-dink 8 pixels, and boy that is not much to work with. If I had a lot of sprite space, I could make bigger metatiles, but… I don’t, so I couldn’t. I tried a lot of variations of tiles, and what I ended up with were pretty much the only things that worked.

I love how the emoting came out. I knew I didn’t have nearly enough room for facial expressions for everyone, but I wanted to give them some kind of visual way to express mood, and the tiny overlays kinda fell naturally out of that. I think they add a ton of personality, especially in how everyone uses them differently.

I’m pretty happy with the sound design, as well. I’m an extremely amateur composer, and I wrote 90% of the music in a few hours on the start of the last day, but I actually like how it came out and I like going back to listen to it. The sound effects are, with some mild exceptions, pretty much excellent — the aowr is incredible, it has fooled other folks in the house more than once, and I knew I had it right when I had a blast just running around mashing the meow button.

I’m also happy with the dialogue, and hope it conveys the lunekos’ personalities in just these few interactions.

While writing the ending, I had to stop in mid-draft to go cry. Then I cried again when I finished it a few days later. I’ll miss you forever, Branch Commander Twig.

If you did, thanks for playing.

Backblaze Cloud Backup Release 7.0.1

Post Syndicated from Yev original https://www.backblaze.com/blog/backblaze-cloud-backup-release-7-0-1/

New Backblaze version is available

We’re releasing an update today for Backblaze Cloud Backup: version 7.0.1! This release comes with improvements to our Inherit Backup State feature, and some enhancements to the Mac and Windows applications.

What’s New For Windows & Macintosh:

  • Inherit Backup State
    • Has been rewritten to increase the upper thresholds for inheriting a backup state. In the past, some edge-cases existed where log files were too large to be inherited, resulting in a failure. This has now been fixed.
    • The process has also been cleaned up to remove unnecessary older files, which should result in better performance and less system resource usage.
  • .Bzvol Enhancements
    • Fixed a bug which sometimes showed duplicate volume listings in the apps, which led to confusion.
    • Fixed a bug with .Bzvol which resulted in no files appearing to be selected in some cases.
  • Minor security enhancements and improvements to logging.

Release Version Number:
Mac — 7.0.1
PC — 7.0.1

Availability:
April 9th, 2020

Cost:
Free for Backblaze Cloud Backup consumer and business customers and active trial users.
Upgrade Methods:

  • Immediately when performing a “Check for Updates” (right-click on the Backblaze icon and then select “Check for Updates”).
  • Immediately as a download from: https://secure.backblaze.com/update.htm.
  • Immediately as the default download from: www.backblaze.com.
  • Auto-update will begin rolling out in the next few weeks.

The post Backblaze Cloud Backup Release 7.0.1 appeared first on Backblaze Blog | Cloud Storage & Cloud Backup.

Backblaze 7.0 — Version History And Beyond

Post Syndicated from Yev original https://www.backblaze.com/blog/backblaze-7-0-version-history-and-beyond/

Backblaze Version 7.0 Version History .. and Beyond

Announcing Backblaze Cloud Backup 7.0: The Version History and Beyond Release!

This release for consumers and businesses adds one of our most requested enhancements for our Backblaze Cloud Backup service: the ability to keep updated, changed, and even deleted files in your backups forever by extending version history. In addition, we’ve made our Windows and Mac apps even better, updated our Single Sign-on (SSO) support, added more account security options, became Catalina-ready, and increased the functionality of our iOS and Android mobile apps. These changes are awesome and we’re sure you’ll love them!

Extended Version History

Have you ever deleted a file by mistake or accidentally saved over an important bit of work? Backblaze has always kept a 30-day version history of your backed up files to help in situations like these, but today we’re giving you the option to extend your version history to one year or forever. This new functionality is available on the Overview page for Computer Backup, and the Groups Management page if you are using Backblaze Groups! Backblaze v7.0 is required to use Version History. Learn more about versions and extending Version History.

Extend Your Version History

30-Day Version History

All Backblaze computer backup accounts have 30-Day Version History included with their backup license. That means you can go back in time for 30 days and retrieve old versions of your files or even files that you’ve deleted.

1-Year Version History

Extending your Version History from 30 days to one year means that all versions of your files that are backed up — whether you’ve updated, changed, or fully deleted them from your computer — will remain in your Backblaze backup for one year after being modified or deleted from your device. Extending your Version History to one year is an additional $2 per month and is charged based on your license type (monthly, yearly, or 2-year). As always, any charges will be prorated to match up with your license renewal date.

Forever Version History

Extending your Version History from 30 days or one year to forever means that Backblaze will never remove files from your Backblaze backup whether you’ve updated, changed, or fully deleted them from your computer, or not. Extending Version History to forever is similar to one year, at an additional $2 per month (prorated to your license plan type) plus $0.005/GB/month for versions modified on your computer more than one year ago.

1-Year or Forever

This is a great new feature for people who want increased peace of mind. To learn more about Version History, pricing, and examples of how to restore, please visit the Version History FAQ.

MacOS and Windows Application Updates

More Efficient Performance For Uploads

We’ve changed the way that Backblaze transmits large files on your machine by reworking how we group and break apart files for upload. The maximum packet size has increased from 30 MB to 100 MB. This allows the app to transmit data more efficiently by better leveraging threading, which also smoothes out upload performance, reduces sensitivity to latency, and leads to smaller data structures.

Single Sign-On Updates for Backblaze Groups

We added support for Microsoft’s Office 365 in Backblaze Groups, and have made SSO updates to the Inherit Backup State feature so that it supports SSO-enabled accounts. This means that you can now sign into Backblaze using your Office 365 credentials, similar to using Google’s SSO.

Higher Resolution For Easier Viewing of Information

We updated the way our installers and applications looked on higher-resolution displays, making for a more delightful viewer experience!

Windows Only

An OpenSSL issue was causing problems on Intel’s Apollo Lake chipset, but we’ve developed a workaround. Apollo Lake is a lower-end chipset, so not many customers were seeing issues, but now computers using Apollo Lake will work as intended.

MacOS Only

We’ve added support for MacOS Catalina and improved some MacOS system messages. MacOS provides some great new features for the Mac and we’ve changed some of our apps’ behavior to better fit Catalina. In Catalina, Apple is now requiring apps to ask for permission more frequently, and since Backblaze is a backup application, we require a lot of permissions. Thus you may notice more system messages when installing Backblaze on the new OS.

Of Note: Backblaze Restores

In order to implement the Version History features, we had to change the way our restore page handled dates. This may not seem like a big deal, but we had a date drop-down menu where you could select the time frames you wanted to restore from. Well, if you have 1-Year or Forever Version History, you can’t have an infinitely scrolling drop-down menu, so we implemented a datepicker to help with selection. You can now more easily choose the dates and times that you’d like to restore your files from.

Go Back Further

Backblaze 7.0 Available: October 8th, 2019

We will be slowly auto updating all users in the coming weeks. To update now:

This version is now the default download on www.backblaze.com.

Want to Learn More? Join Us on October 15th, 2019 at 11 a.m. PT

Want to learn more? Join Yev on a webinar where he’ll go over version 7.0 features and answer viewer questions. The webinar will be available on BrightTalk (registration is required) and you can sign up by visiting the Backblaze BrightTALK channel.

The post Backblaze 7.0 — Version History And Beyond appeared first on Backblaze Blog | Cloud Storage & Cloud Backup.

Backblaze Cloud Backup Release 6.1

Post Syndicated from Yev original https://www.backblaze.com/blog/backblaze-cloud-backup-release-6-1/

New Backblaze version is available

We’re releasing an update today for Backblaze Cloud Backup: version 6.1! This release comes with a performance boost and some underlying client efficiency changes for both the Mac and PC!

What’s New:

Windows & Macintosh

  • Sped up throughput and improved RAM efficiency by increasing the large file transmission threshold
  • SSO (Single Sign-On) support for the Inherit Backup State feature
  • Error dialog updates to more clearly identify and explain previously added security features
  • Minor bug fixes
  • Reduced log sizing in some cases which could result in performance issues

Mac

  • Underlying code updated to XCode 10.2, which should result in some performance improvements

Release Version Number:

Mac — 6.1.0.330
PC — 6.1.0.331

Availability:

April, 18 2019

Cost:

Free for Backblaze Cloud Backup consumer and business customers and active trial users.

Upgrade Methods:

  • Immediately when performing a “Check for Updates” (right-click on the Backblaze icon and then select “Check for Updates”).
  • Immediately as a download from: https://secure.backblaze.com/update.htm.
  • Immediately as the default download from: www.backblaze.com.
  • Auto-update will begin rolling out in the next few weeks.

The post Backblaze Cloud Backup Release 6.1 appeared first on Backblaze Blog | Cloud Storage & Cloud Backup.

Backblaze Cloud Backup v6.0: Larger Longer Faster Better

Post Syndicated from Yev original https://www.backblaze.com/blog/backblaze-cloud-backup-v6/

Backblaze 6.0 -- The Larger Longer Faster Better Release
Announcing Backblaze Cloud Backup 6.0: The Larger Longer Faster Better Release!

This release for consumers and businesses brings a lot of new functionality to Backblaze Cloud Backup: Restore by Mail drives that are twice the size, archiving with Backblaze B2 Cloud Storage, up to 50% faster backups, and a network blocklist feature to help avoid data caps. All that plus more efficient and performant Mac and Windows applications along with mobile enhancements and SSO support with Google. We hope you like it!

Backblaze Restores — Now With The Power of B2 Cloud Storage

Larger Restores — Twice the Size

The amount of data individuals accumulate each year keeps growing. As you store more data, you need bigger hard drives to restore that data. Backblaze is increasing the capacity of our restore hard drives by 100% for our Restore By Mail feature. Flash keys can now hold up to 256GB and hard drives can now hold up to 8TB in restore data. Best of all, you can still use our Restore Return Refund feature to return those restore drives for a full refund.
2x 8TB USB Hard Drive Restore / 2x 256 GB USB Flash Drive Restore

Saving Data To B2 Snapshots

Backed up files can now be zipped and archived to a Snapshot in B2 Cloud Storage. These selected files will be available until you delete the Snapshot, even if the files have been deleted from your computer and backup. This capability lets customers do new things like keep a copy of all your old computer’s data even when migrating to a new one, save a collection of files (e.g. tax returns) in the cloud as an archive, or free up space on your hard drive by moving data to a Snapshot and then deleting the original copy. Just like files in Computer Backup, your B2 Snapshot can be downloaded over the internet or delivered on a USB hard drive. Learn more about Saving Data to B2!
Save Files to B2

Keep Restores Longer

Extend the life of your .zip restore by archiving it to B2 Cloud Storage. Your restore will be kept in a private B2 Cloud Storage Snapshot bucket as a .zip file until you delete the Snapshot. Use this feature if you need more time to download your restore or want to keep a permanent copy. Get the data later by downloading it directly to your computer or using our Restore by Mail service. Learn more about Keeping Restores Longer!
V6 -- Keep Restores Longer

Mac and Windows Application Updates

Performance — a 50% Boost

We’ve increased the maximum upload threads to 30, creating speed increases up to 50% (depending on your computer and upload bandwidth). More threads allow more uploads to run in parallel thereby dramatically increasing backup speeds. Learn more about backup threads on Mac and Windows.

Efficiency

Logging and system resource usage have been streamlined so Backblaze continues to be nearly invisible on your computer.

Network Management

We’re not big fans of data caps here at Backblaze, and one bit of feedback we’ve received over the last year or so was that people were blowing past their ISP’s monthly bandwidth allotment while backing up using their hotspot or mobile device-tethered internet connection. With that in mind, we’ve added a blocklist feature so you can choose to prevent backups from occurring while you are connected to specific Wi-Fi networks of your choosing. Backblaze will still transmit little bits of data (we call them heartbeats) to let us know your computer is still active, but no backups will be transmitted. Learn more about Network Management!
Block chosen WiFi Networks

Mobile Overhaul

Increased File Download Size

In the spirit of our increased maximum Restore by Mail hard drive and flash drive sizes, we’ve also increased the maximum size for downloads on our iOS and Android mobile apps. You can now download larger files, but keep in mind that your phone or tablet needs to have space available to hold them!

Security Enhancements

We’ve spent the last few months enhancing our sign-in security choices, and with the newest versions of our mobile apps, we’ve added support for 2FV via ToTP, biometric support, and SSO support.

Ease Of Use

We’ve cleaned up the mobile apps and made them a bit more intuitive to enable faster navigation and increased speed for browsing and downloading files.
V6 -- Increased File Download Size and Security Enhancements

SSO Support with Google

We’re rolling out SSO support for Gmail. Our Backblaze Groups have had SSO support for G Suite businesses for a few months, and now everyone can use this alternate sign-in method. You can enable SSO login from the My Settings page in your account and we’ll change your login preferences to SSO with the Gmail address associated with your account. New accounts can also be created using SSO on account creation. Learn more about Enabling SSO!

Backblaze 6.0 Available: January 17th, 2019

We will be slowly auto-updating all users in the coming weeks. To update now:

This version is now the default download on www.backblaze.com.

Want to Learn More? January 30th, 2019 at 11am PT

Want to learn more? Join Yev on a webinar where he’ll go over version 6.0 features and answer viewer questions! The webinar will be available on BrightTalk (registration is required) and you can sign up here by visiting the Backblaze BrightTALK channel.

We hope you enjoy Backblaze Cloud Backup v6.0!

The post Backblaze Cloud Backup v6.0: Larger Longer Faster Better appeared first on Backblaze Blog | Cloud Storage & Cloud Backup.

Backblaze Cloud Backup Release 5.4

Post Syndicated from Yev original https://www.backblaze.com/blog/backblaze-cloud-backup-release-5-4/

New Backblaze Release

We’re releasing an update today for Backblaze Cloud Backup, version 5.4! This is a smaller release, but it does provide some bug fixes and adds in some building blocks for future releases.

What’s New:

  • Mac
    • Support for Dark Mode
    • Mojave Advanced Privacy Protections Support
    • Mojave Installation Flow
    • Minor bug fixes

Release Version Number:
Mac — 5.4.0
PC — 5.4.0

Availability:
October 4th, 2018

Cost:
Free for Backblaze Cloud Backup consumer and business customers and active trial users.

Upgrade Methods:

  • Immediately when performing a “Check for Updates” (right-click on the Backblaze icon and then select “Check for Updates”).
  • Immediately as a download from: https://secure.backblaze.com/update.htm.
  • Immediately as the default download from: www.backblaze.com.
  • Auto-update will begin soon.

The post Backblaze Cloud Backup Release 5.4 appeared first on Backblaze Blog | Cloud Storage & Cloud Backup.

Backblaze Cloud Backup Release 5.3 & EOL Announcements

Post Syndicated from Yev original https://www.backblaze.com/blog/backblaze-cloud-backup-release-5-3-eol-announcements/

Backblaze Cloud Backup Release 5.3

Backblaze announces an update to Backblaze Online Backup: Version 5.3! This is a smaller release, but does improve stability, security, and how Backblaze handles systems without a lot of RAM. This release also signals the beginning of the end of our support for a few older operating systems: Mac OS X 10.5, Mac OS X 10.6, Mac OS X 10.7, Windows XP, and Windows Vista.

What’s New in Release 5.3:

  • Better communication with the data centers when checking for connectivity
  • Increased security during communication with the data centers
  • Improved handling of temporary Backblaze log files when RAM is running low
  • Minor changes and bug fixes

Release Version Number:

  • Mac — 5.3.0
  • PC — 5.3.0

Availability:
July 19th, 2018

Upgrade Methods:

  • Immediately when performing a “Check for Updates” (click on the Backblaze icon and then select “Check for Updates”).
  • Immediately as a download from: https://secure.backblaze.com/update.htm.
  • Immediately as the default download from: www.backblaze.com.
  • Auto-update will begin in a couple of weeks.

Cost:
This is a free update for all Backblaze Cloud Backup consumer and business customers and active trial users.

Announcing an End of Life Process:

We’ve made the tough decision to end support for some older operating systems:

  • Mac OS X 10.5: Apple officially stopped security patching this OS in 2012
  • Mac OS X 10.6: Apple officially stopped security patching 10.6 in 2014
  • Mac OS X 10.7: Apple is no longer supporting this OS as of 2015
  • Windows XP: Microsoft officially ended support for XP in 2014
  • Windows Vista: Microsoft announced the end of support for Vista in 2017

It has been a while since we announced the end of life process for Mac OS X 10.4 and sent out DVDs with Mac OS X 10.6 on them to users who were still on Tiger. There aren’t DVDs to send out this time, but we’d still like to make this as smooth a transition as possible for people using the affected operating systems.

What This Means:

  • Customers still using Mac OS X 10.5, Mac OS X 10.6, Mac OS X 10.7, Windows XP, and Windows Vista will be able to continue backing up and restoring data from those systems. Support for the back up functionality will end on August 1, 2019.
  • The above mentioned operating systems will not be receiving new features and will not auto-update to the latest client versions.
  • Once support officially ends on August 1, 2019, the Backblaze client will no longer be able to back up data to Backblaze.

We strongly encourage people on those operating systems to update to the latest and greatest that Microsoft and Apple have to offer (and officially support). If you have any questions, please reach out to Backblaze support at: https://www.backblaze.com/help.html.

The post Backblaze Cloud Backup Release 5.3 & EOL Announcements appeared first on Backblaze Blog | Cloud Storage & Cloud Backup.

AWS Resources Addressing Argentina’s Personal Data Protection Law and Disposition No. 11/2006

Post Syndicated from Leandro Bennaton original https://aws.amazon.com/blogs/security/aws-and-resources-addressing-argentinas-personal-data-protection-law-and-disposition-no-112006/

We have two new resources to help customers address their data protection requirements in Argentina. These resources specifically address the needs outlined under the Personal Data Protection Law No. 25.326, as supplemented by Regulatory Decree No. 1558/2001 (“PDPL”), including Disposition No. 11/2006. For context, the PDPL is an Argentine federal law that applies to the protection of personal data, including during transfer and processing.

A new webpage focused on data privacy in Argentina features FAQs, helpful links, and whitepapers that provide an overview of PDPL considerations, as well as our security assurance frameworks and international certifications, including ISO 27001, ISO 27017, and ISO 27018. You’ll also find details about our Information Request Report and the high bar of security at AWS data centers.

Additionally, we’ve released a new workbook that offers a detailed mapping as to how customers can operate securely under the Shared Responsibility Model while also aligning with Disposition No. 11/2006. The AWS Disposition 11/2006 Workbook can be downloaded from the Argentina Data Privacy page or directly from this link. Both resources are also available in Spanish from the Privacidad de los datos en Argentina page.

Want more AWS Security news? Follow us on Twitter.

 

Microsoft acquires GitHub

Post Syndicated from corbet original https://lwn.net/Articles/756443/rss

Here’s the
press release
announcing Microsoft’s agreement to acquire GitHub for a
mere $7.5 billion. “GitHub will retain its developer-first
ethos and will operate independently to provide an open platform for all
developers in all industries. Developers will continue to be able to use
the programming languages, tools and operating systems of their choice for
their projects — and will still be able to deploy their code to any
operating system, any cloud and any device.

Kernel 4.17 released

Post Syndicated from corbet original https://lwn.net/Articles/756373/rss

Linus has released the 4.17 kernel, which
will indeed be called “4.17”.
No, I didn’t call it 5.0, even though all the git object count
numerology was in place for that. It will happen in the not _too_
distant future, and I’m told all the release scripts on kernel.org are
ready for it, but I didn’t feel there was any real reason for it.

Headline features in this release include
improved load estimation in the CPU
scheduler,
raw
BPF tracepoints
,
lazytime support in the XFS filesystem,
full in-kernel TLS protocol support,
histogram triggers for tracing,
mitigations for the latest Spectre variants,
and, of course, the removal of support for eight unloved processor
architectures.

Storing Encrypted Credentials In Git

Post Syndicated from Bozho original https://techblog.bozho.net/storing-encrypted-credentials-in-git/

We all know that we should not commit any passwords or keys to the repo with our code (no matter if public or private). Yet, thousands of production passwords can be found on GitHub (and probably thousands more in internal company repositories). Some have tried to fix that by removing the passwords (once they learned it’s not a good idea to store them publicly), but passwords have remained in the git history.

Knowing what not to do is the first and very important step. But how do we store production credentials. Database credentials, system secrets (e.g. for HMACs), access keys for 3rd party services like payment providers or social networks. There doesn’t seem to be an agreed upon solution.

I’ve previously argued with the 12-factor app recommendation to use environment variables – if you have a few that might be okay, but when the number of variables grow (as in any real application), it becomes impractical. And you can set environment variables via a bash script, but you’d have to store it somewhere. And in fact, even separate environment variables should be stored somewhere.

This somewhere could be a local directory (risky), a shared storage, e.g. FTP or S3 bucket with limited access, or a separate git repository. I think I prefer the git repository as it allows versioning (Note: S3 also does, but is provider-specific). So you can store all your environment-specific properties files with all their credentials and environment-specific configurations in a git repo with limited access (only Ops people). And that’s not bad, as long as it’s not the same repo as the source code.

Such a repo would look like this:

project
└─── production
|   |   application.properites
|   |   keystore.jks
└─── staging
|   |   application.properites
|   |   keystore.jks
└─── on-premise-client1
|   |   application.properites
|   |   keystore.jks
└─── on-premise-client2
|   |   application.properites
|   |   keystore.jks

Since many companies are using GitHub or BitBucket for their repositories, storing production credentials on a public provider may still be risky. That’s why it’s a good idea to encrypt the files in the repository. A good way to do it is via git-crypt. It is “transparent” encryption because it supports diff and encryption and decryption on the fly. Once you set it up, you continue working with the repo as if it’s not encrypted. There’s even a fork that works on Windows.

You simply run git-crypt init (after you’ve put the git-crypt binary on your OS Path), which generates a key. Then you specify your .gitattributes, e.g. like that:

secretfile filter=git-crypt diff=git-crypt
*.key filter=git-crypt diff=git-crypt
*.properties filter=git-crypt diff=git-crypt
*.jks filter=git-crypt diff=git-crypt

And you’re done. Well, almost. If this is a fresh repo, everything is good. If it is an existing repo, you’d have to clean up your history which contains the unencrypted files. Following these steps will get you there, with one addition – before calling git commit, you should call git-crypt status -f so that the existing files are actually encrypted.

You’re almost done. We should somehow share and backup the keys. For the sharing part, it’s not a big issue to have a team of 2-3 Ops people share the same key, but you could also use the GPG option of git-crypt (as documented in the README). What’s left is to backup your secret key (that’s generated in the .git/git-crypt directory). You can store it (password-protected) in some other storage, be it a company shared folder, Dropbox/Google Drive, or even your email. Just make sure your computer is not the only place where it’s present and that it’s protected. I don’t think key rotation is necessary, but you can devise some rotation procedure.

git-crypt authors claim to shine when it comes to encrypting just a few files in an otherwise public repo. And recommend looking at git-remote-gcrypt. But as often there are non-sensitive parts of environment-specific configurations, you may not want to encrypt everything. And I think it’s perfectly fine to use git-crypt even in a separate repo scenario. And even though encryption is an okay approach to protect credentials in your source code repo, it’s still not necessarily a good idea to have the environment configurations in the same repo. Especially given that different people/teams manage these credentials. Even in small companies, maybe not all members have production access.

The outstanding questions in this case is – how do you sync the properties with code changes. Sometimes the code adds new properties that should be reflected in the environment configurations. There are two scenarios here – first, properties that could vary across environments, but can have default values (e.g. scheduled job periods), and second, properties that require explicit configuration (e.g. database credentials). The former can have the default values bundled in the code repo and therefore in the release artifact, allowing external files to override them. The latter should be announced to the people who do the deployment so that they can set the proper values.

The whole process of having versioned environment-speific configurations is actually quite simple and logical, even with the encryption added to the picture. And I think it’s a good security practice we should try to follow.

The post Storing Encrypted Credentials In Git appeared first on Bozho's tech blog.

[$] Statistics from the 4.17 kernel development cycle

Post Syndicated from corbet original https://lwn.net/Articles/756031/rss

The 4.17 kernel appears to be on track for a June 3 release, barring an
unlikely last-minute surprise. So the time has come for the usual look at
some development statistics for this cycle. While 4.17 is a normal cycle
for the most part, it does have one characteristic of note: it is the third
kernel release ever to be smaller (in terms of lines of code) than its
predecessor.

A set of Git security releases

Post Syndicated from corbet original https://lwn.net/Articles/755935/rss

Git versions v2.17.1, v2.13.7, v2.14.4, v2.15.2 and v2.16.4 have all been
released with fixes to a couple of security issues. The nastier of the two
(CVE-2018-11235) enables arbitrary code execution controlled by a hostile
repository. See this
Microsoft blog entry
for more details — after updating.