{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Yulian Kuncheff — Blog",
  "home_page_url": "https://yulian.kuncheff.com",
  "description": "my blog of thoughts and experiments",
  "author": {
    "name": "Yulian Kuncheff"
  },
  "authors": [
    {
      "name": "Yulian Kuncheff"
    }
  ],
  "language": "en-us",
  "items": [
    {
      "id": "https://yulian.kuncheff.com/blog/running-ttrpgs-solo-or-coop/",
      "url": "https://yulian.kuncheff.com/blog/running-ttrpgs-solo-or-coop/",
      "title": "Running TTRPGs Solo or Co-op",
      "content_html": "\u003cp\u003eI am a long time tabletop rpg player and GM. I have run many games in my personal favorite system, Cypher System, and played in many others. But little over a year ago, I became a father. Before that I moved states, where I had no friends or family, a couple months before the pandemic hit. A lot of my tabletop group is scattered aroudn the world now, and many don't play or can't. I now fall into the can't play camp, mostly due to lack of time, energy, and a group to play with. My wife is also in a similar predicament, we usually play in each other's games, and it is a hobby we both enjoy.\u003c/p\u003e\n\u003cp\u003eRecently, I have started a investigation on if it is possible to run our favorite sysmtes in a GM-less manner. This would allow us to potentially play in our favorite systems, learn new systems, and scratch an itch long enough to eventually find the time to play normally with a GM.\u003c/p\u003e\n\u003ch2 id=\"tools\"\u003eTools\u003c/h2\u003e\n\u003cp\u003eFirstly, we need to figure out what tools are available for running something without a GM. It is quite difficult to replace a person for running a game. That is why most Solo and Co-op games or systems require you to somewhat be the GM yourself, and use rolling as a way to add that randomness factor. For solo play, many result in journaling, which chronicles your journey like a story. It is even a potentially a great way to build backstory or something for a new game. For Co-op play, its almost like group storytelling, where you build off of each other, and see where it takes you, filling in uncertainity with dice and randomness.\u003c/p\u003e\n\u003cp\u003eThere are a few resources that help with this. One is a GM Emulator. The biggest and most popular one is the Mythic GM Emulator, which just got a massive 2nd edition update. This emulator is a one stop shop for an oracle, tables, and all sorts of ways to answer questions that a GM normally does. I personally havent used it, but I know many have with great success. I will provide links at the end of the article to Youtube channels with solo/co-op play, and resources.\u003c/p\u003e\n\u003cp\u003eSome systems do have built in rules for such play, the big one is Ironsworn, which has rules to play GM-less with 1-3 people. Others have supplements that add rules, tables, and adjustments to make solo play easier, Solitary Defilement for Mork Borg is a good example. Many systems have third-party attempts at making such emulators and rulebooks, Chaos Cypher System GM Emulator is a good one for Cypher System for example.\u003c/p\u003e\n\u003cp\u003eFor randomness outside these books, you can use a deck of cards, dice, tarot cards, and many other similar resource to help you story build.\u003c/p\u003e\n\u003cp\u003eNowadays, instead of just rolling on tables with single words or exact results, a lot of oracles give you prompts, questions, or things to consider based on your character. Allowing for less firm results and more natural resolution to your questions or events.\u003c/p\u003e\n\u003cp\u003eIn the end, all these accomplish the same thing, let you add that missing random ingredient that makes it interesting. In the end these are story building tools, and you still have to make sure to build out your story as you play. And never be too harsh or strict more so than you want, at the end this is for your enjoyment, and it's ok to bend it how you wish.\u003c/p\u003e\n\u003ch2 id=\"systems\"\u003eSystems\u003c/h2\u003e\n\u003cp\u003eAs mentioned above, some systems allow for solo and co-op play. Ironsworn is the biggest system where this is a thing, has a large following, and even has extra books to for dungeon delving solo. It has oracle tables and questions to prompt yourself with during play.\u003c/p\u003e\n\u003cp\u003eOthers are less large systems, but many journaling solo games have their own mini systems that they use, many using the more loose prompts/questions setup with some direction to make it more amorphous of a result.\u003c/p\u003e\n\u003cp\u003eThen finally for non-solo systems or big ones like D\u0026amp;D, Cypher, Pathfinder, etc. You can use third party tools and oracles to make them GM-less.\u003c/p\u003e\n\u003cp\u003eI encourage using a system you know at first, then move onto either system you want to try or ones designed for solo/co-op play. /r/rpg on reddit has a great wiki with some options, but its not exhaustive.\u003c/p\u003e\n\u003cp\u003eAnother fun thing to try is play some games like Microscope or Kingdom that are GM-less from the start, but let you world build.\u003c/p\u003e\n\u003ch2 id=\"solo\"\u003eSolo\u003c/h2\u003e\n\u003cp\u003eI personally have been dabbling in solo stuff because I can then use my summed up learnings to do something with my wife, and adapt it to co-op play. This is a good way for me to experiment and learn different tricks and tools to get me there.\u003c/p\u003e\n\u003cp\u003eFirstly, I have tried some solo journaling games. Mostly I find them through Zine Month on kickstarter and other similar events. Rune and NOTORIOUS are two that I have found that are super fun. Rune is a lot like a Souls game in a Nordic setting. NOTORIOUS has you playing a bounty hunter-like person called a Nomad, and it has a very Star warsy vibe. Both have unique systems to play the game with and can be played multiple ways, including journaling for more story focused play, or like an adventure mode which is more about action, victory, and numbers.\u003c/p\u003e\n\u003cp\u003eI have also been experimenting with converting non-solo systems into solo systems, usually with help from existing books to help with this, or using a generic emulator. It is similar to the ones above, but I can use the systems I like the most, or to try systems I haven't tried yet. It's been going well so far.\u003c/p\u003e\n\u003ch2 id=\"co-op\"\u003eCo-op\u003c/h2\u003e\n\u003cp\u003ePlaying with my wife hasn't quite happened yet, but I can easily see how it can go if she likes it. Mostly I am experimenting with myself right now so I can find tune some options and figure out the best combination of tools that I think will work for us. I doubt I will get it on my first try, but I would like to have a good idea of how to proceed before I propose stuff. My wife will probably want something a little more figured out so we don't get lost on rules/patterns that we are figuring out as we go.\u003c/p\u003e\n\u003cp\u003eBut in general, playing with 2 players in a GM-less setup is a lot like solo play, but now you both somewhat build the world together, the events that happen, and npc conversations. You build off of each other, and when there is room for randomness or something you would normally need a GM to help with, you would use the tools you have gathered to help.\u003c/p\u003e\n\u003cp\u003eThere is also an option for like a solo GM run game. One person is a GM and the other is a player. This is a possibility and could work well, just needs maybe adjustment on power levels, or have the \u003ccode\u003eplayer\u003c/code\u003e be more like a team manager of multiple characters, roleplaying them all. The GM can have a GM run NPC also to help out.\u003c/p\u003e\n\u003ch2 id=\"give-it-a-go\"\u003eGive it a go\u003c/h2\u003e\n\u003cp\u003eIn the end, the only thing is to give it a try. Below I will add links to systems, and things to try, along with some options that are free. Some are for specific games or systems, but could be used as a reference for tables, oracles, or just some ideas. Ther is a lot more than what's listed below too, look around. This is what I have found so far, and I hope those that have a tough time playing a normal game due to life events, can maybe scratch that itch.\u003c/p\u003e\n\u003ch2 id=\"links\"\u003eLinks\u003c/h2\u003e\n\u003ch3 id=\"gamessystems\"\u003eGames/Systems\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://alwayscheckers.itch.io/notorious\"\u003eNOTORIOUS\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gilarpgs.itch.io/rune\"\u003eRune\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.drivethrurpg.com/product/180588/Four-Against-Darkness\"\u003e4 Against Darkness\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.ironswornrpg.com/\"\u003eIronsworn\u003c/a\u003e (Free stripped down SRD is available)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"tooling\"\u003eTooling\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.drivethrurpg.com/product/422929/Mythic-Game-Master-Emulator-Second-Edition\"\u003eMythic Gamemaster Emulator\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.drivethrurpg.com/product/249067/Chaos-Cypher-System-Game-Master-Emulator?manufacturers_id=13433\"\u003eChaos Cypher System GM Emulator (Cypher System)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://1d105.itch.io/solitary-defilement\"\u003eSolitary Defilement (Mork Borg)\u003c/a\u003e (Free)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"other\"\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.reddit.com/r/rpg/wiki/index/\"\u003e/r/rpg wiki\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/c/MeMyselfandDieRPG\"\u003eMe, Myself, and Die (Youtube)\u003c/a\u003e (Solo play in different systems per season and other great videos.)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.youtube.com/@BasementFort\"\u003eBasement Fort (Youtube)\u003c/a\u003e (Co-op playing Ironsworn GM-less)\u003c/li\u003e\n\u003c/ul\u003e\n",
      "summary": "I am a long time tabletop rpg player and GM. I have run many games in my personal favorite system, Cypher System, and played in many others. But little over a year ago, I became a father. Before that I moved states, where I had no friends or family, a couple months before the pandemic hit...",
      "date_published": "2023-01-28T05:46:00Z",
      "author": {
        "name": "Yulian Kuncheff"
      },
      "authors": [
        {
          "name": "Yulian Kuncheff"
        }
      ]
    },
    {
      "id": "https://yulian.kuncheff.com/blog/have-a-backup-plan/",
      "url": "https://yulian.kuncheff.com/blog/have-a-backup-plan/",
      "title": "Have a Backup Plan",
      "content_html": "\u003cp\u003eThis post was sparked by recent events revolving around Wizards of the Coast (WotC), Dungeons \u0026amp; Dragons (D\u0026amp;D), and the Open Gaming License (OGL).\u003c/p\u003e\n\u003cp\u003eI personally believe you should always have a diverse set of options, even in hobbies. Let's use Tabletop RPGs for example. I personally don't care much for D\u0026amp;D and its system, I prefer Cypher system personally, or the many other unique systems that exist.\u003c/p\u003e\n\u003cp\u003eBut many people only play D\u0026amp;D and nothing else, they only know it as a system, world, and playstyle. While the recent OGL problems mostly affected those that create content for D\u0026amp;D, build ontop of it, or borrow things from it, it impacted players indirectly. Because of this, many people are quiting D\u0026amp;D as a system, content creators are moving to other games, and system/setting designers are looking or building new systems.\u003c/p\u003e\n\u003cp\u003eSystems or settings that were not using the OGL, D\u0026amp;D, or anything related to it, did not have to do much, and benefitted greatly from WotC's mistake. But many do rely on all of this and were caught off-guard, their very existence as companies would be threatened, and revenue streams.\u003c/p\u003e\n\u003cp\u003eThis is why I believe people should always have a backup plan. Find similar systems, hardware, software, whatever. Learn enough to be comfortable or familiar with it, so that a switch would be easier. If Adobe tomorrow does something irreversible with Photoshop or Illustrator, have Gimp or Inkspcape ready. If WotC tries to do something crazy again, be ready to switch to Pathfinder, Cypher system, etc. Just have something ready.\u003c/p\u003e\n\u003cp\u003eThis is a short post, as there isn't much too it. Have a backup plan. That way, you alawys have a alternative and you aren't stuck wondering what to do.\u003c/p\u003e\n",
      "summary": "This post was sparked by recent events revolving around Wizards of the Coast (WotC), Dungeons \u0026amp; Dragons (D\u0026amp;D), and the Open Gaming License (OGL).\nI personally believe you should always have a diverse set of options, even in hobbies. Let's use Tabletop RPGs for example. I personally don't care much for D\u0026amp;D and its system, I prefer Cypher system personally, or the many other unique systems that exist...",
      "date_published": "2023-01-28T05:46:00Z",
      "author": {
        "name": "Yulian Kuncheff"
      },
      "authors": [
        {
          "name": "Yulian Kuncheff"
        }
      ]
    },
    {
      "id": "https://yulian.kuncheff.com/blog/year-in-review-2022/",
      "url": "https://yulian.kuncheff.com/blog/year-in-review-2022/",
      "title": "Year in Review: 2022",
      "content_html": "\u003cp\u003eI have never done one of these before, but based on inspiration of other blogs I have read recently, and the Steam Replay. I figured I would go over my year in Books, Games (both video and board), and Hardware.\u003c/p\u003e\n\u003cp\u003eA little note, I  became a father at the beginning of the year, and it might explain the weird skew of gaming, books, and hardware. Just food for thought. I rarely give 5/5s, they are reserved for exceptionally good things. a 3/5 means its generally good, but has issues.\u003c/p\u003e\n\u003ch2 id=\"video-games\"\u003eVideo Games\u003c/h2\u003e\n\u003cp\u003eI will start with Video games, since I have \u003ca href=\"https://s.team/y22/jcmpwt?l=english\"\u003esupport from Steam\u003c/a\u003e on what I played. I will go in order of time played. I will be kind of short on some of these, there isn't much to say outside of what is said in general reviews.\u003c/p\u003e\n\u003ch3 id=\"lost-ark\"\u003eLost Ark\u003c/h3\u003e\n\u003cp\u003eThis was a fairly anticipated launch, and it went just about as well as any MMO launch, and that is not so well. But, being the experience MMO enthusiest, I was prepared for the enevitability and managed to enjoy myself through the game.\u003c/p\u003e\n\u003cp\u003eThis also launched just as my daughter was born, so a good 75% of my game time was with 1 hand, while I held my sleeping baby in the other, it was a good time. I had to buy a special mouse to deal with this (more on that later.\u003c/p\u003e\n\u003cp\u003eNow, for the game, it's a fairly fun grindfest with a cash shop. I spent little money on it, and it eventually slowed me down enough where it wasn't worth the effort, plus my daughter was transitioning from a sleeping lump, to a more active human being, so my time quickly depleted for gaming and side projects.\u003c/p\u003e\n\u003cp\u003eOverall, the game is good for 3-4 months, the classes are fun, the dungeons and boss fights are engaging and different, but it gets very very repetitive and easy to fall behind if not spending a little money every month.\u003c/p\u003e\n\u003cp\u003eDoesn't help that it runs on Unreal Engine 3, and has a lot of performance issues.\u003c/p\u003e\n\u003cp\u003eAnother reason I stopped playing, is I switched fully to Linux on my gaming devices, and Lost ark devs have not flipped the switch to allow Linux EAC to work. In regions where they don't use EAC, it works flawlessly on linux, so its purely a corporate decision to not let Linux work.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 3.5/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch3 id=\"new-world\"\u003eNew World\u003c/h3\u003e\n\u003cp\u003eMore recently, I played quite a bit of New world at launch, and then with the new revamped release.\u003c/p\u003e\n\u003cp\u003eI do have to say the game is VASTLY improved from launch and quite a lot of fun. I made it much much further, lots of quests, new things to do, new player experience is much better, and so on. I only really stopped playing because of the WoW expansion launch, many other games, and some side proejcts, which just ate up the little free time I had.\u003c/p\u003e\n\u003cp\u003eI definitely enjoy some of the new weapons, but a Hatchet is still one of my preferred weapons.\u003c/p\u003e\n\u003cp\u003eI played quite a bit of this on my SteamDeck, works fairly well though, but definitely some frame skipping on more hectic scenes. But I got to level 40 exclusively through the Deck.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 4/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch3 id=\"disco-elysium\"\u003eDisco Elysium\u003c/h3\u003e\n\u003cp\u003eThis one took me a while to finish, I did it all in July, but it was quite fun. It a bit dark and brutal, but there is a nice philosophical angle to everything, lots of things to ponder and develop about yourself, let along the protagonist.\u003c/p\u003e\n\u003cp\u003eThere is quite a bit of customization to the progression of the story, and your choices do matter for a lot of things. It is well worth the time, as long as you are ok with playing a darker setting, with an alcoholic bastard that is the main character.\u003c/p\u003e\n\u003cp\u003eThe game is an 2.5D isometric view, lots of puzzles, conversations, and dice roll mechanics. This game is lots of thinking, and introspection.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 4.5/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch3 id=\"citizen-sleeper\"\u003eCitizen Sleeper\u003c/h3\u003e\n\u003cp\u003eOk, this was an unxpectedly good story, and was very fun to play. It is very story focused an somewhat linear, but it has a lot of interesting mechanics. You play kind of on an overworld map of a space station, and involves going around doing tasks at nodes, and talking to various npcs at map nodes. You never control a character directly.\u003c/p\u003e\n\u003cp\u003eIf you are ok with that gameplay, definitely give this game a shot, its quite good.\u003c/p\u003e\n\u003cp\u003eThe story itself is well done, and really gets you invested in the side characters, quests, and the events happening.\u003c/p\u003e\n\u003cp\u003ePlayed this entirely on the SteamDeck\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 4/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch3 id=\"coffee-talk\"\u003eCoffee Talk\u003c/h3\u003e\n\u003cp\u003eOk, this might be one of the best games I have played in a while. The premise seems simple, you are a coffee shop owner, and you serve drinks to customers based on their wishes or needs.\u003c/p\u003e\n\u003cp\u003eBut the this quickly evolves into something more. You start getting regulars, friends, you help with life events, and there are story twists, and many surprises. You get really invested in the characters.\u003c/p\u003e\n\u003cp\u003eIt takes place in an alternate reality Seattle coffee shop, but the events that happen can easily correlated to our every day lives.\u003c/p\u003e\n\u003cp\u003eIts a casual game that doesn't take much brain power to play, but can really make you do some soul searching.\u003c/p\u003e\n\u003cp\u003eIt was a real shame to learn that the original developer on this died after the games release, but the company he founded is soldiering on and even releasing updates.\u003c/p\u003e\n\u003cp\u003ePlayed entirely on the SteamDeck\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 5/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch3 id=\"stray\"\u003eStray\u003c/h3\u003e\n\u003cp\u003eThere are many reviews on this game, but I greatly enjoyed it. At times it was spooky and gave you an unnerving feel, other times hope and intrigue. It is really well done from that point of view. The cat part was whatever, it was fun, and the tiny face huggers were honestly more annoying and detracting from the game, but did provide that sense of gloom.\u003c/p\u003e\n\u003cp\u003eThe story overall was fantastic though, and I quite enjoyed my play through, but I wouldn't do another as some do.\u003c/p\u003e\n\u003cp\u003eThis game was also when I switched my gaming computer, and all my devices to Linux for that matter, so it was nice to play something so flawlessly on Linux out of the box.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 4/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch3 id=\"kraken-academy\"\u003eKraken Academy\u003c/h3\u003e\n\u003cp\u003eQuirky fun 2D rpg-like game. Funny dialogue, good story. Short, but fun.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 3.5/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch3 id=\"eastward\"\u003eEastward\u003c/h3\u003e\n\u003cp\u003eOK, this is a great story, some interesting mini puzzles, and fun mechanics. It does have a 2 character switching mechanic, and its used fairly easily. Game runs great and has a lovely 2D aesthetic, and low combat too.\u003c/p\u003e\n\u003cp\u003eStory is engaging and makes you think a bit if you relate to the real world. Has a good length, and worth the money\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 4.5/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch3 id=\"twelve-minutes\"\u003eTwelve Minutes\u003c/h3\u003e\n\u003cp\u003eI think this game is intriguing. Midway through you get a bit lost at what to try next, but once you push through that, the culmination of the story is interesting.\u003c/p\u003e\n\u003cp\u003eI will say that it is a bit reptitive by nature of the game, and if you get stuck it gets a bit annoying. Overall good game though.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 3.5/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch3 id=\"behind-the-frame\"\u003eBehind the Frame\u003c/h3\u003e\n\u003cp\u003eThis is another one of those games about introspection, but focuses on the beautfy of painting, colors, life, aging, love, and the fleeting moments with others.\u003c/p\u003e\n\u003cp\u003eIt can pull on heartstrings if you can get invested into the emotional side of the story, but it really well done, and a positive outlook on things. Really worth it if you want that experience.\u003c/p\u003e\n\u003cp\u003eOnly downside is it is kind of short and very on rails, but a good journey. Think of it is a story book in game form with wonderful art. Cozy.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 4/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch3 id=\"world-of-warcraft-dragonflight\"\u003eWorld of Warcraft: Dragonflight\u003c/h3\u003e\n\u003cp\u003eI have been playing WoW on and off since vanilla launched. At this point, I try every expansion, and this one is doing very well compared to Shadowlands, its fun, engaging, lots to do but doesn't feel like a grindfest of reputations and bars.\u003c/p\u003e\n\u003cp\u003eAnd Dragonriding is really fun, especially when fully upgraded. Hopefully they let us use it outside the Dragon Isles in the future.\u003c/p\u003e\n\u003cp\u003eMajority of playtime on the Steam Deck using hte ConslePort addon.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 4/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch2 id=\"board-games\"\u003eBoard Games\u003c/h2\u003e\n\u003cp\u003eNormally I play a lot of board games, but for obvious reasons, my wife nad I didn't have much time to invest in many this year. We did play some magic, we like to do Winston Drafts with 8 packs.\u003c/p\u003e\n\u003cp\u003eBut my mother gifted us a detective game, and while we only did 1 attempt, it was a blast, but definitely needs to be played while the little one is sleeping either for naps or bed time.\u003c/p\u003e\n\u003ch3 id=\"detective\"\u003eDetective\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://detectiveboardgame.com/\"\u003eOfficial Website\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe game itself is just called \u003ccode\u003eDetective\u003c/code\u003e but it is really really good. You are an agent in a special new deparmtent for crime solving. And the crims and investigative work actually requires you to take notes.\u003c/p\u003e\n\u003cp\u003eThere is a webapp that you can load up on a laptop, tablet or phone, tat just makes it easier to track police files, dna, and other stuff, but the game can be played without it, just a bit harder.\u003c/p\u003e\n\u003cp\u003eThe pacing is good, and it really makes you think and follow clues, some of which lead to dead ends.\u003c/p\u003e\n\u003cp\u003eIt is super well done. If you like detective/crime solving stuff, this is a great game to play.\u003c/p\u003e\n\u003cp\u003eThey even give you extra stuff to make a crime wall thing like on TV shows if you desired.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 5/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch2 id=\"hardware\"\u003eHardware\u003c/h2\u003e\n\u003cp\u003eThis year, I have had quite a good run with technology and gadgets. I will go over some of the more noteable stuff.\u003c/p\u003e\n\u003ch3 id=\"steam-deck\"\u003eSteam Deck\u003c/h3\u003e\n\u003cp\u003eThis has let me play so many more games in such a short amount of time. This was after my Linux switch, so I was already comfortable with adding games from GoG and Epic to it, or setting up WoW on it, and so on.\u003c/p\u003e\n\u003cp\u003eI have a gaming laptop that has a Nvidia RTX 2070 in it. I like to game on the couch with my wife and kid nearby, but as our little one gets older and more active, there is a lot of chasing around and getting up. And even with that, wires, lap pads, mice, etc. It gets a bit annoying.\u003c/p\u003e\n\u003cp\u003eMy SteamDeck, which on paper and probably in practice is vastly less powered, I have played more of in such a short amount of time. Even when plugged in, easy to put down and chase a kid around, and easier to just jump in and go.\u003c/p\u003e\n\u003cp\u003eIt play so much more of my backlog now, and I only buy games that I know I can play on it now or have Linux support at minimum.\u003c/p\u003e\n\u003cp\u003eLove this device immensely. Its not perfect, but it is for me and my usecases, which is couch gaming with easy access plugs, because we all know its battery doesn't last long, especially for demanding games.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 5/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch3 id=\"logitech-g600\"\u003eLogitech G600\u003c/h3\u003e\n\u003cp\u003eI bought this mouse specifically for MMO gaming with 1 hand, early in my daughters life. It let me enjoy WoW and Lost Ark with no limitations. I had all the buttons I needed to do combat easily and effectively. The customizations software worked well.\u003c/p\u003e\n\u003cp\u003eNow, this was on Windows, before my switch, and I havent used it sine I stopped playing Lost Ark and no longer needed to use 1 hand.\u003c/p\u003e\n\u003cp\u003eGood mouse, for a reasonable price.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 4.5/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch3 id=\"ps5\"\u003ePS5\u003c/h3\u003e\n\u003cp\u003eWe managed to get our hands on one midway through the year. I am not much of a console gamer, but my wife is, and she loves it. She has enjoyed both the God of War games and Horizon Zero Dawn on it.\u003c/p\u003e\n\u003cp\u003eThere isn't much to say otherwise, good console, great graphics. We have an XBOX Series S, and it all kind of overlaps.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 4/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch3 id=\"surface-pro-7\"\u003eSurface Pro 7\u003c/h3\u003e\n\u003cp\u003eI got this shortly before my daughter was born with the idea that it would be fanless, no noise, quite keyboard, and even got a Logitech Pebble M350 for a quiet mouse, so that I could stay up in bed and do stuff without disturbing wife and baby.\u003c/p\u003e\n\u003cp\u003eDid not realize how little I would use it that way due to overall tiredness from a newborn.\u003c/p\u003e\n\u003cp\u003eBUT, it does run Linux well and I use it as my quick goto coding machine or browsing/chatting device. It is synced with my desktop using SyncTHing, so all my code is readily available in both places nearly instantly.\u003c/p\u003e\n\u003cp\u003eGood device, and hte fanless nature of the i5 version really is cool, thought I have gotten it to throttle a bit.\u003c/p\u003e\n\u003cp\u003eI will say, it obviously doesn't play super nice with Linux, but the community effort around it and the \u003ccode\u003elinux-surface\u003c/code\u003e kernel is fantastic and this model works well.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 3.5/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch2 id=\"books\"\u003eBooks\u003c/h2\u003e\n\u003cp\u003eI haven't really read much this year, but I will mention 1 book I managed to finish this year.\u003c/p\u003e\n\u003ch3 id=\"starless-sea\"\u003eStarless Sea\u003c/h3\u003e\n\u003cp\u003eThis was a wild ride. If you've read Cloud Atlas, and had no trouble following the interweaving stories, this will be similar, but more fantasy-esque and a bit more intense than Cloud Atlas.\u003c/p\u003e\n\u003cp\u003eThe story itself is wonderful and a bit of a fantasy love story, but it focuses less on the love part and more on the fantasy romp of doors, worlds, and keys.\u003c/p\u003e\n\u003cp\u003eCan't really say much without revealing key plot, but its good if you are into this kind of adventure.\u003c/p\u003e\n\u003cp\u003eI will say the only detractor is it sometimes goes a bit deep on the crazy interweaving mystery adventure part and can get confusing if you aren't paying attention.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.barnesandnoble.com/w/the-starless-sea-erin-morgenstern/1130202284?ean=9780385541220\"\u003eBarnes \u0026amp; Noble\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.amazon.com/Starless-Sea-Novel-Erin-Morgenstern/dp/038554121X\"\u003eAmazon\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eOverall Rating: 4.5/5\u003c/strong\u003e\u003c/p\u003e\n\u003ch2 id=\"2023\"\u003e2023\u003c/h2\u003e\n\u003cp\u003eAnd thats a wrap for this, hopefully there is more interesting stuff in 2023, and we will see what I get to.\u003c/p\u003e\n",
      "summary": "I have never done one of these before, but based on inspiration of other blogs I have read recently, and the Steam Replay. I figured I would go over my year in Books, Games (both video and board), and Hardware.\nA little note, I  became a father at the beginning of the year, and it might explain the weird skew of gaming, books, and hardware. Just food for thought...",
      "date_published": "2023-01-02T07:40:00Z",
      "author": {
        "name": "Yulian Kuncheff"
      },
      "authors": [
        {
          "name": "Yulian Kuncheff"
        }
      ]
    },
    {
      "id": "https://yulian.kuncheff.com/blog/reducing-reliance-on-google/",
      "url": "https://yulian.kuncheff.com/blog/reducing-reliance-on-google/",
      "title": "Reducing Ones Reliance on Google",
      "content_html": "\u003cp\u003eThere are many efforts around De-Googling all over the internet, but I personally find those are not realisitic for the majority of the people. Many people have no problems sacrificing privacy for convenience. Or they aren't tech savvy enough to find stuff out themselves.\u003c/p\u003e\n\u003cp\u003eWhat many in communities for degoogling, or the ones that will read this blog post forget sometimes, is the masses are very technically illiterate still. Many of them don't know the difference between the Browser, the Internet, and their Operating System. Now while I agree that companies like Google exploit this fact, we also need to realize we can't take the all or nothing approach that is popular around the internet.\u003c/p\u003e\n\u003cp\u003eRemoving Google from your life might be a goal, but for some, just reducing their reliance on Google, or having a minimum a backup plan, might be sufficient.\u003c/p\u003e\n\u003cp\u003eSo I will be talking about how to reduce your reliance on Google by offering what I have found after a week of research and experimenting with alternatives, that might help you form a backup plan or find new alternatives. Many of these are listed on other sites and lists, but many are avoided due to an anti-corporation, pro-privacy stance.\u003c/p\u003e\n\u003cp\u003eAs a brief aside, I have no problems with giving my information to Google, Microsoft, Amazon, etc, especially since it improves my conveniences. Likewise, I am very supportive and respectful of the efforts by the community to create privacy-oriented alternatives. They just aren't there for me or I don't want to bother self-hosting.\u003c/p\u003e\n\u003cp\u003eThis is also a US-centric list. It is where I live, so it is hard for me ot offer EU, or other region offerings. The only real reason I mention Yandex, is I am part Russian, and I hear about it a lot from family, I don't use it at all myself.\u003c/p\u003e\n\u003ch2 id=\"why-not-self-host\"\u003eWhy Not Self-host?\u003c/h2\u003e\n\u003cp\u003eI am very tech savvy and I am a DevOps engineer. I can self-host something with my eyes closed, and even I don't want to bother. Maintaining servers and automation is my day job, and doing it at home is exhausting. Yes, self-hosting is low effort for the few services, but if you do it at home, what do you do if your internet goes out? What if I am running services for my whole family? Do they just no have access to things while my internet is out? Power outages? UPS systems only last so long.\u003c/p\u003e\n\u003cp\u003eI personally run Miniflux, FoundryVTT, Seafile, and Caddy in docker, on a couple of Raspberry Pis at home for myself. But I would never rely on them for anything important, especially during winters where I live, we get power outages that can last 2 days.\u003c/p\u003e\n\u003cp\u003eHosting in the cloud is better, but then you have to learn about VPS providers, get something launched, and be comfortable with a Linux command-line.\u003c/p\u003e\n\u003cp\u003eNow I will have a section at the end about Nextcloud and how running the Hetzner ShareStorage might be a good option as a middle-ground.\u003c/p\u003e\n\u003cp\u003eBut long-story short, self-hosting isn't a viable option for most. People need services that are hosted and managed by others they can just install and use.\u003c/p\u003e\n\u003ch2 id=\"alternatives\"\u003eAlternatives\u003c/h2\u003e\n\u003cp\u003eOne thing I want to preface the following list of things, is that I will be suggesting other corporations that might not have any better of a track record for privacy than Google. Again, my goal is to create an backup/alternative plan, not to degoogle my life. This also will be a fairly Android focused article, but I will mention a few Apple options. I also run Linux myself, so most of these solutions have Linux options or web access.\u003c/p\u003e\n\u003ch3 id=\"google-mailcalendarcontacts\"\u003eGoogle Mail/Calendar/Contacts\u003c/h3\u003e\n\u003cp\u003eThis one is fairly easy, there are a slew of great alternatives out there, from corporations to small companies, and everything inbetween, I will list a couple, but many more exist.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://outlook.com\"\u003eOutlook.com\u003c/a\u003e (Microsoft)\n\u003cul\u003e\n\u003cli\u003eThis is a good alternative, and is already familiar to many that work in companies that use Microsoft products.\u003c/li\u003e\n\u003cli\u003eIt can also act as a client to your Google account, so it could be a great way to test it before you switch.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://proton.me\"\u003eProtonMail\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eThis is an awesome alternative that is privacy-focused, independent company.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.fastmail.com\"\u003eFastmail\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eA great private service that focuses on features and being better than Gmail.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://startmail.com\"\u003eStartMail\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAlso a great privacy-focused alternative from a small independent company, that also runs a search engine.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://hey.com\"\u003eHey\u003c/a\u003e (no calendar)\n\u003cul\u003e\n\u003cli\u003eA unique alternative that has a different take on email, but is definitely an option.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://mail.yandex.com\"\u003eYandex Mail\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eMight not be the best choice due to current events, but its still an option.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://icloud.com\"\u003eApple iCloud\u003c/a\u003e (Apple/iOS only)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAnd there are many more I am not listing like Posteo, Mailfence, etc. Email is an easy jump.\u003c/p\u003e\n\u003cp\u003eMy biggest suggestion is to get your own domain, then signup for a service like ImprovMX (has a super generous free tier), and just route your custom domain email to any provider. You can also pay for the upgraded version that gives you access to their SMTP servers so you can send emails through them, and no thave the \u003ccode\u003eon behalf of\u003c/code\u003e show up on your emails when sending through Google for example or something.\u003c/p\u003e\n\u003cp\u003eThis will let you use any provider, for example I use a plain gmail email behind my personal email, but my mother for example uses outlook.com. If i need to switch, I just go into the admin panel, and change it from the \u003ccode\u003e@gmail.com\u003c/code\u003e email to say an \u003ccode\u003eprotonmail.com\u003c/code\u003e email, without affecting anyone else.\u003c/p\u003e\n\u003cp\u003eBut regardless, do yourself a favor, get your own domain, ideally from a good trusted provider like \u003ca href=\"https://namecheap.com\"\u003eNamecheap.com\u003c/a\u003e or \u003ca href=\"https://cloudflare.com\"\u003eCloudflare.com\u003c/a\u003e, but there are also others.\u003c/p\u003e\n\u003ch3 id=\"chrome\"\u003eChrome\u003c/h3\u003e\n\u003cp\u003eAlso fairly easy with how many forks of Chrome there are. I will just list them without too much description because they generally offer similar experiences.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://vivaldi.com\"\u003eVivaldi\u003c/a\u003e (what I use currently)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://microsoftedge.com\"\u003eEdge\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://brave.com\"\u003eBrave\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003ehas some cryptocurrency stuff built-in, but it can be disabled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://firefox.com\"\u003eFirefox\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.bromite.org\"\u003eBromite\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ungoogled-software/ungoogled-chromium\"\u003eUngoogled Chromium\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eHonestly, to use the modern web, you need something that uses Blink, Webkit, or Gecko. There aren't any other engines out there that are up to snuff, and even Gecko/Firefox are having trouble keeping up with Blink.\u003c/p\u003e\n\u003ch3 id=\"home\"\u003eHome\u003c/h3\u003e\n\u003cp\u003eTo be honest, there is only really 1 ecosystem that matches this, and its Amazon Alexa and the Echo devices. They work fine, Ive had an Echo, but I prefer Google's ecosystem personally.\u003c/p\u003e\n\u003cp\u003eHomeAssistant is a great self-host option, and since it rarely needs access outside the network, its one self-host option that really works well, and if the power is out, you can't do much anyway. I use this to manage a bunch of Zigbee motion sensors, and ESP32s running ESPHome for some faerie lights controlled by the motion sensors.\u003c/p\u003e\n\u003ch3 id=\"google-assistant\"\u003eGoogle Assistant\u003c/h3\u003e\n\u003cp\u003eThis also has few options, but there are some.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAlexa (Amazon)\n\u003cul\u003e\n\u003cli\u003eThe primary competitor\u003c/li\u003e\n\u003cli\u003eDoes not need Google Play Services to function\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eBixby (Samsung)\n\u003cul\u003e\n\u003cli\u003eThis is a good option if you have a Samsung phone, I don't find it as good, but it's there.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSiri (Apple only)\n\u003cul\u003e\n\u003cli\u003eIf you are part of the Apple walled garden, this is your only option, but if you are ok with switching to Apple, its an option.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMicrosoft's Cortana doesn't really exist for consumers anymore.\u003c/p\u003e\n\u003cp\u003eThere is also Soundhound's Hound, but I haven't heard much from them in years, and not sure how good it is, but the Play store reviews aren't promising.\u003c/p\u003e\n\u003ch3 id=\"docs\"\u003eDocs\u003c/h3\u003e\n\u003cp\u003eHere we have a few more options. Some are less feature-filled than others, but still an option.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://office.com\"\u003eOffice 365\u003c/a\u003e (Microsoft)\n\u003cul\u003e\n\u003cli\u003eThe major competitor and again has a huge foothold in enterprise.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://zoho.com\"\u003eZoho\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eThis is one many forget about but Zoho has a LOT of options for fairly cheap prices ranging from Email, Docs, CRM, and more.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://crypt.ee\"\u003eCryptee\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eThis is one I am watching very very closely. I love what they are doing and going and hope they grow the products they offer. Only reason I don't use this myself is their Photos offering doesn't have an auto-upload for phones. It is a PWA so its easy to get on any phone or device though.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://disk.yandex.com\"\u003eYandex Disk\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eDisk has document editors.\u003c/li\u003e\n\u003cli\u003eAgain, an option for those that are ok with it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"drive\"\u003eDrive\u003c/h3\u003e\n\u003cp\u003eThis is a growing space and lots of competition, which is great for the user. I will keep the descriptions minimal, as overall they are pretty similar. It is all around what you feel is good for you, pricing-wise. Many of these offer a Docs suite also or are part of one.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://syncthing.net\"\u003eSyncthing\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eThis is less of a cloud hosting, but more of a sync solution between computers, regardless, it is something I use a lot to keep files in sync between my 2 laptops, desktop, work computer, and phone. Its highly configurable. I recommend \u003ca href=\"https://github.com/Catfriend1/syncthing-android\"\u003eSyncthing-Fork\u003c/a\u003e for Android, on Play Store and FDroid (fdroid recommended).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://backblaze.com\"\u003eBackblaze\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://mega.nz\"\u003eMega\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://onedrive.com\"\u003eOneDrive\u003c/a\u003e (Microsoft)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://tresorit.com\"\u003eTresorit\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://zoho.com/workdrive\"\u003eZoho WorkDrive\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://dropbox.com\"\u003eDropbox\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://crypt.ee\"\u003eCryptee\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://nordlocker.com\"\u003eNordLocker\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://disk.yandex.com\"\u003eYandex Disk\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://icloud.com\"\u003eiCloud\u003c/a\u003e (apple only)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"authenticator\"\u003eAuthenticator\u003c/h3\u003e\n\u003cp\u003eAnother quick and simple one. Google Authenticator is a fairly standard RFC6238 app. There are tons of good alternatives, I will list just a few\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://bitwarden.com\"\u003eBitwarden\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eI believe its part of the paid features, its what I personally use.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://getaegis.app\"\u003eAegis Authenticator\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.microsoft.com/en-us/security/mobile-authenticator-app\"\u003eMicrosoft Authenticator\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eReally good if you are using Microsoft products, and mandatory if you set your Microsoft account to Passwordless\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://authy.com\"\u003eAuthy\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"google-chat\"\u003eGoogle Chat\u003c/h3\u003e\n\u003cp\u003eHonestly, Google Chat isn't as popular as many of the alternatives, so its not that huge of a change for something better, but since its kind of jammed into th GMail app, I am sure some use it.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://slack.com\"\u003eSlack\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.microsoft.com/en-us/microsoft-teams/group-chat-software\"\u003eTeams\u003c/a\u003e (Microsoft)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://element.io\"\u003eElement\u003c/a\u003e (Matrix-protocol)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://telegram.org\"\u003eTelegram\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://discord.com\"\u003eDiscord\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://yandex.com/chat\"\u003eYandex Messenger\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"google-meet-duo\"\u003eGoogle Meet (Duo)\u003c/h3\u003e\n\u003cp\u003eSince Duo was merged into Google Meet, this one is also fairly easy to provide replacements for.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://zoom.com\"\u003eZoom\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.microsoft.com/en-us/microsoft-teams/group-chat-software\"\u003eTeams\u003c/a\u003e (Microsoft)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://slack.com\"\u003eSlack Huddle\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://telegram.org\"\u003eTelegram\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://discord.com\"\u003eDiscord\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://element.io\"\u003eElement\u003c/a\u003e (Matrix-protocol)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://jami.net\"\u003eJami\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://jitsi.org\"\u003eJitsi\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://messenger.com\"\u003eFacebook Messenger\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://skype.com\"\u003eSkype\u003c/a\u003e (Microsoft)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://telemost.yandex.ru\"\u003eYandex Telemost\u003c/a\u003e (Russia only it seems.)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.apple.com/mac/facetime/index.html\"\u003eFacetime\u003c/a\u003e (Apple Only)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"google-pay\"\u003eGoogle Pay\u003c/h3\u003e\n\u003cp\u003eThis is where it gets tricky. There aren't a whole lot of options, and many are region specific.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://samsung.com/us/samsung-wallet/\"\u003eSamsung Wallet\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eMostly for Samsung phones, but I am fairly certain you can use it on any android phone. Samsung Pay got merged into Samsung Wallet. Also on Play Store.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://paypal.com\"\u003ePaypal\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eUsed to have direct NFC support, but now it goes through Google Pay. You can still use Paypal QR Code payments at supporting retailers.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://yoomoney.ru\"\u003eYooMoney\u003c/a\u003e (Yandex)\n\u003cul\u003e\n\u003cli\u003eOnly works in Russia and former Soviet territories, or allied ones.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://pay.line.me\"\u003eLINE Pay\u003c/a\u003e, \u003ca href=\"https://kakaocorp.com/page/service/service/KakaoPay?lang=en\"\u003eKakao Pay\u003c/a\u003e, \u003ca href=\"https://pay.weixin.qq.com/index.php/public/wechatpay\"\u003eWeChat Pay\u003c/a\u003e, etc\n\u003cul\u003e\n\u003cli\u003eThis one is mostly in Japan, Korea, China, etc.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://apple.com/apple-pay/\"\u003eApple Pay\u003c/a\u003e (apple only)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"google-photos\"\u003eGoogle Photos\u003c/h3\u003e\n\u003cp\u003eThis is also a tough one, few if any options have the same AI capabilities that Google does. But for Photo storage, there are a few options\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://microsoft.com/en-us/microsoft-365/onedrive/online-photo-storage\"\u003eOneDrive Photos\u003c/a\u003e (Microsoft)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://crypt.ee\"\u003eCryptee\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eI just wish they had an auto-upload app. I would switch now.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://icloud.com\"\u003eiCloud\u003c/a\u003e (apple only)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eYou can also use any of the Drive alternatives.\u003c/p\u003e\n\u003ch3 id=\"messages-rcs\"\u003eMessages (RCS)\u003c/h3\u003e\n\u003cp\u003eIf you want to use RCS, there are no other options. If its just SMS/MMS there are many other SMS apps, too many to list.\u003c/p\u003e\n\u003cp\u003eNow, if you can move off of SMS/MMS or convince the people you talk to there, there are better things to use.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://messenger.com\"\u003eFacebook Messenger\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://whatsapp.com\"\u003eWhatsApp\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://telegram.org\"\u003eTelegram\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://signal.org\"\u003eSignal\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://wire.com\"\u003eWire\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://threema.ch\"\u003eThreema\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://getsession.org\"\u003eSession\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://fluffychat.im\"\u003eFluffyChat\u003c/a\u003e (Matrix Protocl)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://delta.chat\"\u003eDeltaChat\u003c/a\u003e (onto of email)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://ponymessenger.com\"\u003ePony Messenger\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eThis one is nice for slowing down. You only receive messages once a day, regardless of when they were sent.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"maps\"\u003eMaps\u003c/h3\u003e\n\u003cp\u003eThis is a tough one. Google Maps is one of the BEST options for points of interest and related data. But there are a few that I managed to check that had decently updated information. There are a few locations near me that recently opened, or opened during the pandemic, and very few maps have it updated.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://wego.here.com\"\u003eHere WeGo\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eManaged by a group of Automobile manufacturers like BMW, Daimler, etc. It is fairly updated, and had a Habit Burger location that opened up only 2 months ago in my area.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://citymapper.com\"\u003eCityMapper\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eFocuses on Walking/Cycling directions, Uses a collection of sources, including Apple, Google, OpenStreetMap, Foursquare, Yelp, etc. This was up to date also and had lots of features\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eLots of apps for it, including the following\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://osmand.net\"\u003eOsmAnd\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://organicmaps.app\"\u003eOrganicMaps\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://maps.me\"\u003eMaps.me\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eThis is crowdsourced map system. Directions are good, and fairly updated, it had everythin but the Habit Burger on there, but the great thing was, I spent 5 mins adding it, and it will probably show up in all OpenStreetMap based software soon. (I also removed the old Jack In the Box that Habit replaced, before we knew what was replacing it.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://bing.com/maps\"\u003eBing Maps\u003c/a\u003e (Microsoft)\n\u003cul\u003e\n\u003cli\u003eThis is in partnership with Here WeGo (same data), and they no longer have a dedicated android app, so only browser access.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.apple.com/maps/\"\u003eApple Maps\u003c/a\u003e (Apple only, mostly)\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://help.duckduckgo.com/duckduckgo-help-pages/features/maps/\"\u003eDuckDuckGo Maps\u003c/a\u003e uses Apple Maps for showing maps of things, locations, ratings, etc. But you can't navigate or get directions directly, it will use Google Maps or your local maps app for it on Android. Might be some contract with apple that might not allow it, or a limitation of APIs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther than that, many other solutions were very very out of date. like Sysig. And there is a chance OpenStreetMap apps are out of date in your area, if no one has done the work to update/add things.\u003c/p\u003e\n\u003ch3 id=\"translate\"\u003eTranslate\u003c/h3\u003e\n\u003cp\u003eThere are some AI based solutions popping up and good alternatives. Not much more to say.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://deepl.com\"\u003eDeepL\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eProbably the best alternative and works really well with the languages it has, but doesn't have as many as Google. Uses AI and Machine Learning to do the translations. Had pretty great results with Bulgarian.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://lingva.ml\"\u003eLingva\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAlso a machine learning based translator, does fairly well in my tests with Bulgarian.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.bing.com/translator\"\u003eBing Translator\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eHaven't used this much, but it's an option.\u003c/li\u003e\n\u003cli\u003eThe app for phones is called Microsoft Translator\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"google-voice\"\u003eGoogle Voice\u003c/h3\u003e\n\u003cp\u003eThere are few services that offer similar, most focused on businesses. But I did unearth some options.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://skype.com\"\u003eSkype\u003c/a\u003e (Microsoft)\n\u003cul\u003e\n\u003cli\u003eSkype has a few features that can match Google Voice. First \u003ca href=\"https://www.skype.com/en/skype-number/\"\u003eSkype Number\u003c/a\u003e (I assume this used to be called SkypeIn), which lets you have a phone number people can call, that will ring you in Skype. Another is the ability to call phones, with very nice rates for \u003ca href=\"https://www.skype.com/en/international-calls/\"\u003einternational\u003c/a\u003e. This used to be called SkypeOut.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSIP Provider\n\u003cul\u003e\n\u003cli\u003eThere is a roundabout way to sign up for a SIP number, and hook it up to your phone, as Android supports SIP numbers in the phone app on most phones.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"youtube\"\u003eYoutube\u003c/h3\u003e\n\u003cp\u003eThere really is no alternative. You can go into Decentralized services like PeerTube, but quality of the videos and potentially the content material might not be what you are interested in. Regardless, decentralized or blockchain based ones might be the future, so I will list a few things here, and a few apps to look into as alternative clients.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://freetubeapp.io\"\u003eFreetube\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAlternative frontend for using Youtube on Desktop\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://newpipe.net\"\u003eNewspipe\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAlternative app for using Youtube on Android\u003c/li\u003e\n\u003cli\u003eThere is also Newspipe Sponsorblock which has sponsorblock builtin\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://lbry.com\"\u003eLBRY\u003c/a\u003e/\u003ca href=\"https://odysee.com\"\u003eOdysee\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eA growing platform built ontop of blockchain that is gaining some traction and content. Odysee is a web frontend for LBRY\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"android\"\u003eAndroid\u003c/h3\u003e\n\u003cp\u003eGoogle forces most phone makers to include a bunch of Google services pre-installed. If you want to minimize these, you need to use a Custom Rom, or something like \u003ca href=\"https://lineageos.org\"\u003eLineageOS\u003c/a\u003e. With those, you can then install a barebones Google Play Service install, which just adds the absolute bare essentials for apps to work properly on your phone and the Google Play Store to get more stuff. I personally have tested \u003ca href=\"https://nikgapps.com\"\u003eNikGApps\u003c/a\u003e' Core package, which does just that, and everything I wanted to work, just works. NikGApps also has a bunch of versions with more stuff included, but that is up to you to decide.\u003c/p\u003e\n\u003cp\u003eIf you want to completely go away from Google, you can try \u003ca href=\"https://microg.org\"\u003eMicroG\u003c/a\u003e as an alternative. Or switch ot Apple.\u003c/p\u003e\n\u003cp\u003eIf you need to replace Google Play Store, \u003ca href=\"https://auroraoss.com\"\u003eAurora Store\u003c/a\u003e is a great option (Can be downloaded on F-Droid also).\u003c/p\u003e\n\u003cp\u003eAnother option if you want to bail from Android altogether and have a supported device is \u003ca href=\"https://sailfishos.org\"\u003eSailfishOS\u003c/a\u003e, it is linux-based but can run Android apps.\u003c/p\u003e\n\u003ch2 id=\"final-thoughts\"\u003eFinal Thoughts\u003c/h2\u003e\n\u003cp\u003eOverall, if you want that 1 stop shop experience, you will mostly have to switch to Microsoft services. Amazon doesn't compete, and there aren't many smaller options. There is /e/ Foundation's cloud services, but they are mostly a NextCloud or other open source software as a solution. There is nothing wrong with that, and it is a viable solution, it just needs a bit more time to mature and work out the kinks.\u003c/p\u003e\n\u003cp\u003eI think overall we really need a competitor that focuses on consumer tech like this, because Microsoft is honestly more focused on Enterprise than everyday consumers, as their dwindling consumer apps show (many closed due to Microsoft not able to gain traction). Zoho used to be a nice place for individuals or families, but they have pivoted hard to small business. You can still use them for Email, Drive, Docs, Password, etc. But it's been refocused to business needs.\u003c/p\u003e\n\u003cp\u003eIf I were to lose Google tomorrow, as some have (like the recent NYTimes articles) for crazy reasons, I would probably use mostly Microsoft stuff, along with maybe Cryptee for Docs, Drive, and Photos if they get an auto-uploader up. Probably with Here WeGo as my maps app, while having OsmAnd on standby. I would finally try to get all the people I communicate with on Telegram or FB messenger, maybe whats app, and offer DeltaChat as an option. For storage, I already have Office 365 through my dad who has a subscription for 5 people and have 1TB of storage there. But I could use NordLocker fairly easily if needed or Backblaze if they would ever release a Linux app.\u003c/p\u003e\n\u003cp\u003eOn the Android front, I already tested much of this on my old OnePlus 6T (primary is a Pixel 6 Pro), and using LineageOS + NikGApps Core, let me do everything I need, including adding F-Droid and getting some great apps from there too. Most of the alternatives above, worked great and flawlessly with minimal to no Google involvement when using Aurora Store. Didn't even log into my Google Account on the device or any other app.\u003c/p\u003e\n\u003cp\u003eI only use Linux on my machines, no Windows, but I can get most Microsoft stuff to work there anyway, especially the web-based stuff.\u003c/p\u003e\n\u003ch2 id=\"nextcloud\"\u003eNextcloud\u003c/h2\u003e\n\u003cp\u003eSo the reason I left this for last, is because while it is a Self-hosted solution, there are ways to pay for a managed solution that you just administer.\u003c/p\u003e\n\u003cp\u003eThis is a great middle-ground between shirking all corporations, but having a managed experience.\u003c/p\u003e\n\u003cp\u003eI personally tested \u003ca href=\"https://www.hetzner.com/storage/storage-share\"\u003eHetzner's StorageShare\u003c/a\u003e, which is a managed Nextcloud instance by Hetzner. I tried thier $5 base option, which includes 1TB of storage. it goes up to $15 for 5TB, and $27 for 10TB. I set it up and it worked great if you want to go this route.\u003c/p\u003e\n\u003cp\u003eEmail will still need to be setup with a different provider, but you can use Nextcloud as a client. It also offers a Google Integration to import your google stuff into Nextcloud, and many other features.\u003c/p\u003e\n\u003cp\u003eThis solution is honestly one I might use more and more over time, the concern is convincing my family and my wife to use it, which isn't always easy.\u003c/p\u003e\n\u003ch2 id=\"not-the-us\"\u003eNot the US\u003c/h2\u003e\n\u003cp\u003eAnother thing is in many other countries that might have better alternatives. I know in Japan, LINE has a huge slew of services. South Korea has Kakao, and China has WeChat, maybe something from Tencent I think. India has other services, same for Europe and different European countries. Russia has Yandex, and a few other competitors.\u003c/p\u003e\n\u003cp\u003eI just didn't mention them as I have little exprience or knowledge of them.\u003c/p\u003e\n",
      "summary": "There are many efforts around De-Googling all over the internet, but I personally find those are not realisitic for the majority of the people. Many people have no problems sacrificing privacy for convenience. Or they aren't tech savvy enough to find stuff out themselves.\nWhat many in communities for degoogling, or the ones that will read this blog post forget sometimes, is the masses are very technically illiterate still...",
      "date_published": "2022-09-06T08:57:00Z",
      "author": {
        "name": "Yulian Kuncheff"
      },
      "authors": [
        {
          "name": "Yulian Kuncheff"
        }
      ]
    },
    {
      "id": "https://yulian.kuncheff.com/blog/stable-diffusion-fedora-amd/",
      "url": "https://yulian.kuncheff.com/blog/stable-diffusion-fedora-amd/",
      "title": "Stable Diffusion on Fedora 36 and AMD 6750XT",
      "content_html": "\u003cp\u003eYesterday, Stability.ai finally released their Stable Diffusion model to the public. Having played with NightCafe, Midjourney, and getting access to Dall-E 2, I was excited to be able to run this locally on my own computer. I have a AMD Threadripper 2990WX with an AMD Radeon 6750XT video card. I figured this was plenty powerful enough to get local generation so I didn't have to pay others when I have plenty of horsepower at home eating up electricity as it is. So I am just going to dive in and keep this short and sweet.\u003c/p\u003e\n\u003ch2 id=\"getting-all-the-components\"\u003eGetting all the components\u003c/h2\u003e\n\u003cp\u003eFirstly we need to get all the pieces to the puzzle, there aren't many, but it does take a bit to get it all figured out and sorted. I encourage you to clone or extract all of this in a central working directory for easy usage.\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eDownload Anaconda 3\n\u003col\u003e\n\u003cli\u003eFor Fedora 36, I downloaded it from \u003ccode\u003ehttps://www.anaconda.com\u003c/code\u003e, just download the linux installer\u003c/li\u003e\n\u003cli\u003eOnce downloaded, go to where it was downloaded and run the installer using the terminal.\u003c/li\u003e\n\u003cli\u003eAfter it is installed, you should have a \u003ccode\u003e~/anaconda3\u003c/code\u003e directory if using the default settings.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e~/anaconda3\u003c/code\u003e to your current path or restart your terminal (it tries to add it to your .bashrc or .zshrc at the end of the run).\n\u003col\u003e\n\u003cli\u003e\u003ccode\u003eexport PATH=\u0026quot;~/anaconda3/bin:$PATH\u0026quot;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYou can test if it worked by running \u003ccode\u003econda\u003c/code\u003e and seeing help output instead of an error.\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003cli\u003eClone the Stable Diffusion source code.\n\u003col\u003e\n\u003cli\u003eIt can be found at \u003ca href=\"https://github.com/CompVis/stable-diffusion\"\u003ehttps://github.com/CompVis/stable-diffusion\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003cli\u003eGo to the HuggingFace repository for the model and downlaod the model\n\u003col\u003e\n\u003cli\u003eThe model is located at \u003ca href=\"https://huggingface.co/CompVis/stable-diffusion\"\u003ehttps://huggingface.co/CompVis/stable-diffusion\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eYou will need to signup for Hugging Face so that you can accept the terms to the repo.\u003c/li\u003e\n\u003cli\u003eOnce you have signed up and accepted, scroll down and click the repo for \u003ca href=\"https://huggingface.co/CompVis/stable-diffusion-v-1-4-original\"\u003estable-diffusion-v-1-4-original\u003c/a\u003e\n\u003col\u003e\n\u003cli\u003eThis link takes you directly to the v1.4 model, keep an eye on the main huggingface page for new versions and update accordingly.\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003cli\u003eAt the top, hit the \u003ccode\u003eFiles and Versions\u003c/code\u003e tab, and you will see what amounts to a Git repository. You can clone it through git, but for quickness, we will just download directly.\u003c/li\u003e\n\u003cli\u003eFind the file with the \u003ccode\u003eLFS\u003c/code\u003e label next to it, for v1.4 its called \u003ccode\u003esd-v1-4.ckpt\u003c/code\u003e and click to download it. It is a large file, so make go grab a drink or a snack depending on your download speeds.\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThere is an Optimized version of the Stable Diffusion txt2img script, that uses only 4gb of ram versus the 8gb+ of the primary script. This script was made by a researcher that had earlier access to the models and scripts. Stability.ai has mentioned that they will be releasing optimized scripts and such that will even run on a raspberry pi, but they have not yet, nor have they released official AMD instructions or support. THe following information is extra if you need this. If you have an Nvidia card, you can skip the AMD stuff, and if you have a 3090, you can even skip the optimized script, but I recommend the optimized version because even though it takes a bit longer (15 seconds versus 7-9 seconds for 6 images), its easier gets us the default 512x512 size or even higher, and works just as well.\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eDownload the optimized version from the link below.\n\u003col\u003e\n\u003cli\u003eFor posterity, I did not write any of this, I watched a video on how to set this up on Windows, where a Google Drive with the scripts was linked. The zip had batch files Windows, and used custom Windows paths for the model and inference yaml. I changed this for Linux compatibility\n\u003col\u003e\n\u003cli\u003eVideo: \u003ca href=\"https://www.youtube.com/watch?v=z99WBrs1D3g\"\u003ehttps://www.youtube.com/watch?v=z99WBrs1D3g\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGoogle Drive: \u003ca href=\"https://drive.google.com/file/d/1z7lDaItYAm-3zNSTCIm1nRVkn8As-Wh3/view\"\u003ehttps://drive.google.com/file/d/1z7lDaItYAm-3zNSTCIm1nRVkn8As-Wh3/view\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003cli\u003eYou can get my optimized version from my github repo with the code changes.\n\u003col\u003e\n\u003cli\u003eGithub repository: \u003ca href=\"https://github.com/Daegalus/stable-diffusion-optimized\"\u003ehttps://github.com/Daegalus/stable-diffusion-optimized\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"setting-things-up-the-files-and-structure\"\u003eSetting things up the files and structure\u003c/h2\u003e\n\u003cp\u003eFor the purposes of examples, we will assume you cloned and downloaded everything into \u003ccode\u003e$SD_WORKSPACE\u003c/code\u003e, which can be any folder where you have everything located.\u003c/p\u003e\n\u003cp\u003eFrom here we want to navigate to the stable diffusion cloned repository.\u003c/p\u003e\n\u003cpre style=\"color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;\"\u003e\u003ccode\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\u003c/span\u003e\u003cspan\u003ecd $SD_WORKSPACE/stable-diffusion\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eNow we want to copy the model into the correct folder. This assumes you downloaded the \u003ccode\u003eckpt\u003c/code\u003e checkpoint file into \u003ccode\u003e$SD_WORKSPACE\u003c/code\u003e, if you cloned it with git, it will probably be under its own subfolder.\u003c/p\u003e\n\u003cpre style=\"color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;\"\u003e\u003ccode\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\u003c/span\u003e\u003cspan\u003emkdir -p models/ldm/stable-diffusion-v1\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e2\u003c/span\u003e\u003cspan\u003ecp ../sd-v1-4.ckpt models/ldm/stable-diffusion-v1\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eNow, if you have Nvidia and you chose to not use the optimized third party scripts, you are done and can move onto the next section \u003ccode\u003eRunning Stable Diffusion\u003c/code\u003e.\u003c/p\u003e\n\u003ch3 id=\"optimized-stable-diffusion\"\u003eOptimized Stable Diffusion\u003c/h3\u003e\n\u003cp\u003eWhile still in the stable-diffusion folder, we can copy the new scripts to the folder.\u003c/p\u003e\n\u003cpre style=\"color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;\"\u003e\u003ccode\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\u003c/span\u003e\u003cspan\u003ecp ../stable-diffusion-optimized/* .\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eAll set here.\u003c/p\u003e\n\u003ch3 id=\"adding-amd-rocm-packages\"\u003eAdding AMD ROCm packages\u003c/h3\u003e\n\u003cp\u003eOk, this was the trickier part, and i had a lot of trial and error but I finally got it all working and shouln't be too hard.\u003c/p\u003e\n\u003cp\u003eI am using Fedora 36 (read footnotes for why this over other distributions). So the commands below or for this distro, please look up the appropriate packages for your distribution.\u003c/p\u003e\n\u003cp\u003eSince I am not super in the AI dev world, I wasn't sure which components we needed, so I installed all the ROCm packages available. If you find better info, adjust as needed. AMD has official repos on their website.\u003c/p\u003e\n\u003cpre style=\"color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;\"\u003e\u003ccode\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\u003c/span\u003e\u003cspan\u003esudo dnf install rocm-clinfo rocm-comgr rocm-device-libs rocm-opencl rocm-runtime rocm-smi rocminfo\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThis will install ROCm 5.2.1 as of this writing.\u003c/p\u003e\n\u003ch2 id=\"setting-up-the-rest-of-the-environment\"\u003eSetting up the rest of the environment\u003c/h2\u003e\n\u003cp\u003eNow it is almost time to get it all hooked up. First thing we need to do is edit the \u003ccode\u003eenvironment.yaml\u003c/code\u003e file\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eChange \u003ccode\u003epytorch\u003c/code\u003e version to \u003ccode\u003e1.12.1\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003epytorch-lightning\u003c/code\u003e version to \u003ccode\u003e1.5.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSave and close.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eNow we just run the following command to create our environment\u003c/p\u003e\n\u003cpre style=\"color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;\"\u003e\u003ccode\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\u003c/span\u003e\u003cspan\u003econda env create -f environment.yaml\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eWait for it to finish. And then finally we need to activate the environment. In general, make sure this is activated when running further commands, as they all need to run in the environment.\u003c/p\u003e\n\u003cpre style=\"color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;\"\u003e\u003ccode\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\u003c/span\u003e\u003cspan\u003econda activate ldm\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eYou can stop here if you are using Nvidia. You can now run \u003ccode\u003elow_ram_nvidia.sh\u003c/code\u003e if using the optimized scripts, or \u003ccode\u003escripts/txt2img.py\u003c/code\u003e if not.\u003c/p\u003e\n\u003ch2 id=\"installing-amd-pytorch\"\u003eInstalling AMD PyTorch\u003c/h2\u003e\n\u003cp\u003eWe are going to install PyTorch with ROCm 5.1.1 support, which will work fine on the ROCm 5.2.1 we have installed.\u003c/p\u003e\n\u003cp\u003eGo to \u003ca href=\"https://pytorch.org/get-started/locally/\"\u003ehttps://pytorch.org/get-started/locally/\u003c/a\u003e and select the following comibnation: Stable, Linux, Pip, Python, ROCm 5.1.1. (ROCm can be a different version if reading in the future.)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eIMPORTANT\u003c/strong\u003e: Make sure you are inside your \u003ccode\u003eldm\u003c/code\u003e conda environemnt with \u003ccode\u003econda activate ldm\u003c/code\u003e before running the pytorch install below.\u003c/p\u003e\n\u003cp\u003eThis will give you a command to run, as of this writing, the command is as follows:\u003c/p\u003e\n\u003cpre style=\"color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;\"\u003e\u003ccode\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\u003c/span\u003e\u003cspan\u003e// DONT RUN THIS YET, READ ON.\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e2\u003c/span\u003e\u003cspan\u003epip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/rocm5.1.1\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eBut for Fedora, \u003ccode\u003epip3\u003c/code\u003e will give us the wrong results, make sure you change the command to use \u003ccode\u003epip\u003c/code\u003e as follows:\u003c/p\u003e\n\u003cpre style=\"color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;\"\u003e\u003ccode\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\u003c/span\u003e\u003cspan\u003epip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/rocm5.1.1\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eWait for it to finish, and we should be almost set, lets verify our setup.\u003c/p\u003e\n\u003cp\u003eRun the following commands. the \u003ccode\u003econda activate ldm\u003c/code\u003e will create our conda environment ENV variables, so the right python installation inside conda is used.\u003c/p\u003e\n\u003cpre style=\"color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;\"\u003e\u003ccode\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\u003c/span\u003e\u003cspan\u003econda activate ldm\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e2\u003c/span\u003e\u003cspan\u003epython -c \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;import torch; print(torch.cuda.is_available())\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThis should return \u003ccode\u003eTrue\u003c/code\u003e if everything is working. Otherwise it will show an error or \u003ccode\u003eFalse\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eIf you get an error like below, and you are running an AMD graphics card, primarily a 6700XT or 6750XT, we will need to add an env variable for the above test to work.\u003c/p\u003e\n\u003cpre style=\"color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;\"\u003e\u003ccode\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\u003c/span\u003e\u003cspan\u003e\u003cspan style=\"color:#e6db74\"\u003e\u0026#34;hipErrorNoBinaryForGpu: Unable to find code object for all current devices!\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eIf we do an \u003ccode\u003eexport HSA_OVERRIDE_GFX_VERSION=\u0026quot;10.3.0\u0026quot;\u003c/code\u003e, and rerun the python command above, it should work.\u003cbr\u003e\nThe reasoning behind this is that most consumer cards aren't officially supported, and the only one that is included in support for ROCm is for the \u003ccode\u003egfx1030\u003c/code\u003e. The 6700 and 6750 are \u003ccode\u003egfx1031\u003c/code\u003e. While compatible, not directly supported, so we force it.\u003cbr\u003e\nTo figure out which \u003ccode\u003egfx\u003c/code\u003e you have, you can run \u003ccode\u003erocminfo | grep gfx\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis should get you to the point where you can run Stable diffusion successfully.\u003c/p\u003e\n\u003ch2 id=\"running-stable-diffusion\"\u003eRunning Stable Diffusion\u003c/h2\u003e\n\u003cp\u003eMoment of truth. Run the following commands depending on your setup:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eAMD, optimized scripts: \u003ccode\u003elow_ram.sh --prompt \u0026quot;A happy dog\u0026quot;\u003c/code\u003e\n\u003col\u003e\n\u003cli\u003eIf you see an error about a \u003ccode\u003egfx1030_20.kdb\u003c/code\u003e, you can ignore it for now. Fedora doesn't have the \u003ccode\u003emiopen\u003c/code\u003e package with them, and the official \u003ccode\u003erhel9\u003c/code\u003e repo, wouldn't load for me. This is a warning, it can be ignored.\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003cli\u003eAMD, unoptimized scripts: \u003ccode\u003escripts/text2img.py --prompt \u0026quot;A happy dog\u0026quot;\u003c/code\u003e\n\u003col\u003e\n\u003cli\u003eYou might need to lower the dimensions if you get memory errors. Add \u003ccode\u003e--W 384 --H 384\u003c/code\u003e to your command.\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003cli\u003eNvidia, no optimized scripts: \u003ccode\u003escripts/txt2img.py --prompt \u0026quot;A happy dog\u0026quot;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNvidia, with optimized scripts: \u003ccode\u003elow_ram_nvidia.sh --prompt \u0026quot;A happy dog\u0026quot;\u003c/code\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eHappy generating!\u003c/p\u003e\n\u003cp\u003eIf you find any errors in my commands above, feel free to reach out to me. Contact info is at the top right of the blog.\u003c/p\u003e\n",
      "summary": "Yesterday, Stability.ai finally released their Stable Diffusion model to the public. Having played with NightCafe, Midjourney, and getting access to Dall-E 2, I was excited to be able to run this locally on my own computer. I have a AMD Threadripper 2990WX with an AMD Radeon 6750XT video card...",
      "date_published": "2022-08-23T23:12:00Z",
      "author": {
        "name": "Yulian Kuncheff"
      },
      "authors": [
        {
          "name": "Yulian Kuncheff"
        }
      ]
    },
    {
      "id": "https://yulian.kuncheff.com/blog/tils-1/",
      "url": "https://yulian.kuncheff.com/blog/tils-1/",
      "title": "TILs 8/22/22",
      "content_html": "\u003cp\u003eSo TILs didn't work out for me, I prefer longer form writing. But I might gather up TILs like this and add them in groups to a post like this.\u003c/p\u003e\n\u003ch2 id=\"til-2-2021-02-16\"\u003eTIL 2 \u003cem\u003e2021-02-16\u003c/em\u003e\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eUpdate 8/24/2022\u003c/strong\u003e: This is no longer needed, there is now official programmatic way to do this using a header GCP providers for IAP using the \u003ccode\u003eProxy-Authorization\u003c/code\u003e header.\u003cbr\u003e\n\u003ca href=\"https://cloud.google.com/iap/docs/authentication-howto#authenticating_from_proxy-authorization_header\"\u003eOfficial IAP Documentation\u003c/a\u003e\u003cbr\u003e\nThe original post is at the more link.\u003c/p\u003e\n\u003cp\u003eIf you need to use basic auth when behind IAP, you can work around it by setting a custom header, and then remapping it after you get past IAP. Specifically when running NGINX Ingress on GKE.\u003c/p\u003e\n\u003cp\u003eMy example is for allowing Basic Auth to Jenkins while running behind IAP on GKE. I created a custom header called \u003ccode\u003eX-Jenkins-Authorization\u003c/code\u003e. (This can be anything, and for any service, not just jenkins).\u003c/p\u003e\n\u003cp\u003eSome official examples:\u003cbr\u003e\n\u003ca href=\"https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/customization/custom-headers\"\u003ehttps://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/customization/custom-headers\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eKubernetes Nginx Ingress configmap changes\u003c/p\u003e\n\u003cpre style=\"color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;\"\u003e\u003ccode\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\u003c/span\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003edata\u003c/span\u003e:\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e2\u003c/span\u003e\u003cspan\u003e    \u003cspan style=\"color:#f92672\"\u003eproxy-set-headers\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003e`somens/nginx-proxy-headers`\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eProxy Headers config map:\u003c/p\u003e\n\u003cpre style=\"color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;\"\u003e\u003ccode\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\u003c/span\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003eapiVersion\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003ev1\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e2\u003c/span\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003edata\u003c/span\u003e:\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e3\u003c/span\u003e\u003cspan\u003e  \u003cspan style=\"color:#f92672\"\u003eAuthorization\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003e${http_x_jenkins_authorization}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e4\u003c/span\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003ekind\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003eConfigMap\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e5\u003c/span\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003emetadata\u003c/span\u003e:\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e6\u003c/span\u003e\u003cspan\u003e  \u003cspan style=\"color:#f92672\"\u003ename\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003enginx-proxy-headers\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e7\u003c/span\u003e\u003cspan\u003e  \u003cspan style=\"color:#f92672\"\u003enamespace\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003esomens\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eApply those accordingly, and now you can basic auth through IAP, you just need to set your basic auth in the appropriate header.\u003c/p\u003e\n\u003ch2 id=\"til-1-2020-05-16\"\u003eTIL 1 \u003cem\u003e2020-05-16\u003c/em\u003e\u003c/h2\u003e\n\u003cp\u003eI had third party software that relied on NGINX ingress and wouldn't work with GKE Ingress. After lots of digging around and piecing together some info, I found I can attach expose an NEG directly to the ingress controller and route into the cluster that way.\u003c/p\u003e\n\u003cp\u003eJust append the following to your annotations.\u003c/p\u003e\n\u003cpre style=\"color:#f8f8f2;background-color:#272822;-webkit-text-size-adjust:none;\"\u003e\u003ccode\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\u003c/span\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003ecloud.google.com/neg\u003c/span\u003e: \u003cspan style=\"color:#e6db74\"\u003e\u0026#39;{\u0026#34;exposed_ports\u0026#34;: {\u0026#34;80\u0026#34;:{}, \u0026#34;443\u0026#34;:{}}}\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eIf you want to use HTTPS load balancer, only 80 and 443 will be usable. if you add more ports, more things will be accessible through the NEGs it creates. 1 NEG for each.\u003c/p\u003e\n",
      "summary": "So TILs didn't work out for me, I prefer longer form writing. But I might gather up TILs like this and add them in groups to a post like this.\nTIL 2 2021-02-16\nUpdate 8/24/2022: This is no longer needed, there is now official programmatic way to do this using a header GCP providers for IAP using the Proxy-Authorization header.\nOfficial IAP Documentation\nThe original post is at the more link...",
      "date_published": "2022-08-22T23:12:00Z",
      "author": {
        "name": "Yulian Kuncheff"
      },
      "authors": [
        {
          "name": "Yulian Kuncheff"
        }
      ]
    },
    {
      "id": "https://yulian.kuncheff.com/blog/overmold-vs-single-mold/",
      "url": "https://yulian.kuncheff.com/blog/overmold-vs-single-mold/",
      "title": "Gyro Over-mold vs Single-mold",
      "content_html": "\u003cp\u003e\u003cstrong\u003eThis post has moved to my Disc Golf focused blog. You can find it here:\u003c/strong\u003e \u003ca href=\"https://yulian.kuncheff.com/disc-golf/\"\u003ehttps://yulian.kuncheff.com/disc-golf/\u003c/a\u003e\u003c/p\u003e\n",
      "summary": "This post has moved to my Disc Golf focused blog. You can find it here: https://yulian.kuncheff.com/disc-golf/\n",
      "date_published": "2019-01-23T05:03:49Z",
      "author": {
        "name": "Yulian Kuncheff"
      },
      "authors": [
        {
          "name": "Yulian Kuncheff"
        }
      ]
    },
    {
      "id": "https://yulian.kuncheff.com/blog/running-cs-go-on-a-distributed-blockchain-compute-network/",
      "url": "https://yulian.kuncheff.com/blog/running-cs-go-on-a-distributed-blockchain-compute-network/",
      "title": "Running CS:GO on a Distributed Blockchain Compute Network",
      "content_html": "\u003cp\u003eMany that conversed with me in the cryptocurrency world know that I am a huge fan and supporter of SONM. After reading their whitepaper, I quickly saw that they had a very adoptable design to their tech. Now, its not purely blockchain. It uses the blockchain to distributed tasks, send messaging, and other things like that, the actual tasks get run on standard compute devices using Docker.\u003c/p\u003e\n\u003cp\u003eSo to put it long story short, SONM is a distributed docker runner with blockchain to handle distribution. This is a fantastic middle ground setup, and poises SONM as being able to run anything that Docker can run, quickly beating out competitors like Golem (which can only do image rendering), iExec, and Elastic.\u003c/p\u003e\n\u003cp\u003eWhen I got the opportunity to setup a CS:GO server for the Stratis community and as I have the week off between my job change, I decided it would be a fantastic project to not only get a CS:GO server in Docker, but also get it working on the SONM platform. This sounded like a fun staycation project.\u003c/p\u003e\n\u003cp\u003eNow, because SONM runs docker images, I first had to get a docker image of the CS:GO Server. I could have started from scratch, but being the lazy developer I am, I looked at what I could find that was already working. I quickly found \u003ca href=\"https://hub.docker.com/r/austinsaintaubin/docker-csgoserver/\"\u003ethis\u003c/a\u003e and \u003ca href=\"https://hub.docker.com/r/johnjelinek/csgoserver/\"\u003ethis\u003c/a\u003e. These docker images were a great starting point, but neither has been updated in almost 2 years. Firstly they were running on Ubuntu 14.04, which while still in LTS, will very soon not be. Second, the \u003ca href=\"https://gameservermanagers.com/lgsm/csgoserver/\"\u003escript/tool\u003c/a\u003e they are using internally to setup the server has been updated significantly over the 2 years, and no longer works right inside the containers.\u003c/p\u003e\n\u003cp\u003eNext order of business, was where to run it. I normally run most of my things in DigitalOcean. As a DevOps engineer for a living, I spend a LOT of time in AWS land, and I honestly don't want to fall into the trap of AWS. So I spun up a $5 Droplet, and started working.\u003c/p\u003e\n\u003cp\u003eI setup SONM first, seeing as this was the newest tech, I figured I would see if it even works before investing time working towards it. Plus besides previous mini-tests, this is the first time I setup SONM for actual work.\u003c/p\u003e\n\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/somn-setup.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/somn-setup.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/somn-setup.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/somn-setup.png\" alt=\"A picture of the terminal with the setup of the SOMN miner\" title=\"A picture of the terminal with the setup of the SOMN miner\"\u003e\u003c/p\u003e\n\u003cp\u003eAs you can see from the picture above, it all went pretty smoothly. My droplet has an external IP and I didn't have to change any of the default config settings. I just ran the hub and miner, and it all worked out. That was absolutely painless. I used the precompiled Linux binaries for this and it all worked swimmingly.\u003c/p\u003e\n\u003cp\u003eNext was getting a workign Docker image. This is what took 90% of the 16 hours I spent on this. Figuring out why the my variables weren't being injected properly (LGSM moved the config settings to a different file), figuring out how to get the docker container from not terminating at the end (csgoserver start runs in the background and just returns, ending the docker session, had to use csgoserver debug to get it runnning in the foreground).\u003c/p\u003e\n\u003cp\u003eBut the biggest problem I had initially, was hard disk space. GS:GO Server is 15 gigs of data, it pretty much downloads the full game. Seeing as how a $5 droplet only has 20 gigs of space, and a lot of it is quickly taken up, this started throwing errors from the SteamCMD downloader getting the game.\u003c/p\u003e\n\u003cp\u003eSo I started over on a new $5 droplet, but in SFO2 region so I could add additional volumes. For another $10, I added a 100gig drive. And with a little googling, I found a few instructions on which folder I needed to move over and how to setup the symlinks.\u003c/p\u003e\n\u003cp\u003eFinally, after tons of tinkering with the image, I finally succeeded, and actually published the image to dockerhub. \u003ca href=\"https://hub.docker.com/r/daegalus/docker-csgo/\"\u003eAll 16 gigs of glory\u003c/a\u003e(Well 9gigs compressed). I originally wasn't going to push it to dockerhub, but SONM requires the image be on a registry for the task to work, and I didn't want to setup my own local registry. Plus I felt others might want to try this out too. The script will update the game on launch, so no need to worry about it becoming out of date either.\u003c/p\u003e\n\u003cp\u003eAnd once I got the image up and running, I was able to log into the game and play agains the bots. Did a little more tinkering with the image to allow for the user to pass in a GSLT token to so the server didn't start in LAN Only mode.\u003c/p\u003e\n\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/csgo-server-running.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/csgo-server-running.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/csgo-server-running.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/csgo-server-running.png\" alt=\"Logs from he CS GO docker server running.\" title=\"Logs from he CS GO docker server running.\"\u003e\u003c/p\u003e\n\u003cp\u003eAfter all that, you would think that getting SONM to run it would be even easier now that I have an image it can wrong. But thats where my assumptions fell. Because I needed to pass in that GSLT token to run a basic server, I needed to find a way to pass it in. After much searching through the SONM code, I found that there is no way to actually pass in environment variables from the task.yaml file that is used by the hub and miner. But I did find a test that shows you can pass in a \u003ccode\u003ecommand\u003c/code\u003e parameter with the startup command.\u003c/p\u003e\n\u003cp\u003eWith that in mind, I modified the start script to take an optional parameter. Starting the docker server with \u003ccode\u003edocker run -i -t daegalus/docker-csgo:latest /home/csgoserver/start.sh \u0026lt;token\u0026gt;\u003c/code\u003e actually worked and let me pass in the token directly. Without any further thought, I quickly added to the parameter to my task.yaml and the appropriate command. And sent the task to the miner.\u003c/p\u003e\n\u003cp\u003eNothing, it started in LAN only mode. Turns out, the \u003ccode\u003ecommand\u003c/code\u003e parameter is either no longer used, or never got hooked up, as it doesn't do anything.\u003c/p\u003e\n\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/csgo-lanonly-somn-task.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/csgo-lanonly-somn-task.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/csgo-lanonly-somn-task.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/csgo-lanonly-somn-task.png\" alt=\"Logs from SOMN task running CS GO in LanOnly mode.\" title=\"Logs from SOMN task running CS GO in LanOnly mode.\"\u003e\u003c/p\u003e\n\u003cp\u003eThe picture above shows a working CS:GO server in LAN Only mode, running in a Docker container, launched as a task sent to the SONM hub, and is being run by the SONM Miner. It works, I was impressed.\u003c/p\u003e\n\u003cp\u003eNow, I wouldn't knock SONM for not having these parameters. This task.yaml and hub/miner setup wasn't even in the original Alpha that was put out during the ICO, this is Alpha 2. Also, its alpha, they might have not gotten around to hooking everything up. Just needs a bit more time to get all the features and config parameters in. There are a lot of \u003ccode\u003eTODO\u003c/code\u003e in the code still, which is fine for something in early Alpha. There are bugs, needs for more configuration options, but what they have is solid.I look forward to future alpha releases.\u003c/p\u003e\n\u003cp\u003eI have opened a \u003ca href=\"https://github.com/sonm-io/core/issues/114\"\u003eGithub Issue\u003c/a\u003e for this, and hopefully it will keep it in mind when they work on adding features/fixes in future alphas and betas.\u003c/p\u003e\n\u003cp\u003eI do have to say, I am very impressed with SONM and what they have accomplished so far. Getting a SONM stack up was very simple and easy to do, and if this is only Alpha, I can only imagine how great it can be as it gets closer to finished product. They have blown their competitors out of the water.\u003c/p\u003e\n\u003cp\u003eI leave you with this final image of the SONM Docker server showing up and joinable from the CS:GO server browser. I did launch the server directly, so the docker container is up and running, and people can play on the server. The IP in the images will work, and if the server is up (should be at the time of this writing), you can hop in and play.\u003c/p\u003e\n\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/csgo-server-browser.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/csgo-server-browser.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/csgo-server-browser.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/csgo-server-browser.png\" alt=\"Ingame CSGO server browser showing our browser.\" title=\"Ingame CSGO server browser showing our browser.\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cem\u003ePS: I know this isn't a very technical blog post, but I wanted to just talk about the experience of working with all this.\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eNANO: \u003ccode\u003enano_1syg4hkhe7b4mkuy33mbaabwbzete3fo1zmih31ukeizkti77bp9tgm5iupe\u003c/code\u003e\u003c/em\u003e\u003cbr\u003e\n\u003cem\u003eETH/ERC20: \u003ccode\u003e0xD0a54F1614F6373f55E68c6C34CeD127aff8b05E\u003c/code\u003e\u003c/em\u003e\u003c/p\u003e\n",
      "summary": "Many that conversed with me in the cryptocurrency world know that I am a huge fan and supporter of SONM. After reading their whitepaper, I quickly saw that they had a very adoptable design to their tech. Now, its not purely blockchain. It uses the blockchain to distributed tasks, send messaging, and other things like that, the actual tasks get run on standard compute devices using Docker...",
      "date_published": "2017-09-08T16:38:54Z",
      "author": {
        "name": "Yulian Kuncheff"
      },
      "authors": [
        {
          "name": "Yulian Kuncheff"
        }
      ]
    },
    {
      "id": "https://yulian.kuncheff.com/blog/using-intellijwebstorm-to-debug-web-applications/",
      "url": "https://yulian.kuncheff.com/blog/using-intellijwebstorm-to-debug-web-applications/",
      "title": "Using IntelliJ/WebStorm to debug Dart Web Applications",
      "content_html": "\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/debug_console.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/debug_console.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/debug_console.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/debug_console.png\" alt=\"Jetbrains IntelliJ/Webstorm debug console\" title=\"Jetbrains IntelliJ/Webstorm debug console\"\u003e\u003c/p\u003e\n\u003cp\u003eSince I feel that the Dart Plugin in IntelliJ is at a point where it can do most, if not all things that the Dart Editor can do. I thought I would show how to setup debugging of Web Applications.\u003cbr\u003e\nPrimarily because a certain few on IRC wanted a step-by-step guide because they were too lazy to figure it out (you know who you are..... Don). Seeing how I have been Evangelizing IntelliJ/Webstorm on\u003cbr\u003e\nIRC, I decided to just help out the community with this mini-guide. To save on typing IntelliJ/Webstorm everywhere, I am going to us IW as a short for refering to both.\u003c/p\u003e\n\u003cp\u003eI will be using Spectre as my test project, because I do not have any of my own personal projects that are Web Apps, I mostly do backend stuff. Plus this also shows that this can handle large complex\u003cbr\u003e\napplications.\u003c/p\u003e\n\u003cp\u003eCaveats:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDue to a bug in IW, launching the Dartium browser while running any other Chrome version, will just open a tab in that version. So you need to shutdown any open Chrome browsers beforehand. (\u003ca href=\"https://youtrack.jetbrains.com/issue/WEB-1561\" title=\"WEB-1561\"\u003eBug #1\u003c/a\u003e \u0026amp; \u003ca href=\"https://youtrack.jetbrains.com/issue/WEB-6695\" title=\"WEB-6695\"\u003eBug #2\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"setting-up-the-project\"\u003eSetting up the Project\u003c/h3\u003e\n\u003cp\u003eSetting up the project is pretty straightforward. If you are starting a new project, just make a new \u0026quot;Dart Web Application\u0026quot; and you are mostly set.\u003c/p\u003e\n\u003cp\u003eIf you already have a working project, and you just want to switch IDEs, I find this approach the quickest and least error prone. Hit new Project and select \u0026quot;Dart Web Application\u0026quot;, and set the Project\u003cbr\u003e\nand Module settings to the same root folder (makes life easier later). Make sure the Dart SDK path is right. If you have at any point added a Dart SDK anywhere, it should auto-fill for you.\u003c/p\u003e\n\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/create_project.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/create_project.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/create_project.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/create_project.png\" alt=\"Creating a dart web application in Jetbrains IntelliJ/Webstorm\" title=\"Creating a dart web application in Jetbrains IntelliJ/Webstorm\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/debug_console.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/debug_console.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/debug_console.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/debug_console.png\" alt=\"Jetbrains IntelliJ/Webstorm debug console\" title=\"Jetbrains IntelliJ/Webstorm debug console\"\u003e\u003c/p\u003e\n\u003ch3 id=\"browser-setup\"\u003eBrowser Setup\u003c/h3\u003e\n\u003cp\u003eThis is just to make Dart Debuggin easier, but this is global, so you are welcome to set this up to your preference in any other way. In my settings below, I override the default browser with Dartium,\u003cbr\u003e\nand also the Chrome location. This will make sure no matter how it wants to open Chrome, it will be Dartium. This setting should be easily found in both IDE versions.\u003c/p\u003e\n\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/browser_setup.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/browser_setup.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/browser_setup.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/browser_setup.png\" alt=\"Configuring web browsers in Jetbrains IntelliJ/WebStorm\" title=\"Configuring web browsers in Jetbrains IntelliJ/WebStorm\"\u003e\u003c/p\u003e\n\u003ch3 id=\"debugging\"\u003eDebugging\u003c/h3\u003e\n\u003cp\u003eAt this point you should be ready to go. The final step is to debug the app. Find the primary HTML file in you folder structure, right-click it, and hit 'Debug \u0026quot;x.html\u0026quot;'\u003c/p\u003e\n\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/debug_menu.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/debug_menu.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/debug_menu.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/debug_menu.png\" alt=\"Menu entry for debugging a dart web app\" title=\"Menu entry for debugging a dart web app\"\u003e\u003c/p\u003e\n\u003cp\u003eIt will open up, but it seems like nothing worked right (this happens only the first time). The reason being is that IntelliJ uses its own Plugin to support their debugging and hook into the browser. It will redirect you to the download page, and ask you to install it. You need to install this.\u003c/p\u003e\n\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/jetbrains_extension.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/jetbrains_extension.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/jetbrains_extension.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/jetbrains_extension.png\" alt=\"Installing the Jetbrains IDE extension in the browser\" title=\"Installing the Jetbrains IDE extension in the browser\"\u003e\u003c/p\u003e\n\u003cp\u003eOnce this is installed, it will automatically continue where it left off, load the page, and hook in the debugger.\u003c/p\u003e\n\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/browser_running.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/browser_running.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/browser_running.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/browser_running.png\" alt=\"Application running in the browser\" title=\"Application running in the browser\"\u003e\u003c/p\u003e\n\u003cp\u003eAnd now if we switch back to the IDE we can see the debugger hooked and running.\u003c/p\u003e\n\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/debug_console.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/debug_console.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/debug_console.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/debug_console.png\" alt=\"Jetbrains IntelliJ/Webstorm debug console\" title=\"Jetbrains IntelliJ/Webstorm debug console\"\u003e\u003c/p\u003e\n\u003cp\u003eYou can see console output in the console tab. Debugger tab will have all your watches and object views when you hit a breakpoint, and the Scripts tab I assume is for SourceMaps and other stuff for debugging.\u003c/p\u003e\n\u003cp\u003eBreakpointing and stopping works fully as long as the debug connection is open.\u003c/p\u003e\n\u003ch3 id=\"debugging-stuff-like-webgl\"\u003eDebugging stuff like WebGL\u003c/h3\u003e\n\u003cp\u003e(WebStorm Only as of writing. Explained below.)\u003c/p\u003e\n\u003cp\u003eSo some cases require you to connect to a server address, even if its localhost. For example WebGL. You can't run WebGL stuff from the filesystem, needs to go through a server.\u003c/p\u003e\n\u003cp\u003eWell, WebStorm (and soon IntelliJ) has an awesome feature where it already is running a Web Server. And you can access it from any browser for any project you have.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003ehttps://localhost:63342/[projectName]/path/to/file\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eIn spectre's case in my project, it would be: \u003cem\u003e\u003cstrong\u003ehttps://localhost:63342/spectre/web/asset_pack/asset_pack.html\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eThis will load the html file through the web server that is built in to WebStorm. So WebGL works.\u003c/p\u003e\n\u003cp\u003eBut how do you make access this easy? and have the debugger turned on?\u003c/p\u003e\n\u003cp\u003eWell, we need to make a new custom configuration for the project, and use that. In order to create a custom configuration, there is a dropdown box in the toolbar at the top, right before the Run and Debug buttons. Open the dropdown and hit \u0026quot;Edit Configuration\u0026quot;.\u003c/p\u003e\n\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/edit_conf_dropdown.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/edit_conf_dropdown.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/edit_conf_dropdown.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/edit_conf_dropdown.png\" alt=\"Edit Configuration dropdown in Jetbrains IntelliJ/WebStorm\" title=\"Edit Configuration dropdown in Jetbrains IntelliJ/WebStorm\"\u003e\u003c/p\u003e\n\u003cp\u003eOnce in the configuration screen, hit the \u003cstrong\u003e+\u003c/strong\u003e button at the top left, hover over \u0026quot;JavaScript Debug\u0026quot;, and select Remote from the popout list.\u003c/p\u003e\n\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/edit_conf_plus.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/edit_conf_plus.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/edit_conf_plus.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/edit_conf_plus.png\" alt=\"Selecting a new entry type to add.\" title=\"Selecting a new entry type to add.\"\u003e\u003c/p\u003e\n\u003cp\u003eNow set it up for Chrome, with the localhost URL I posted above, and adjust it to your project (You can test in a normal browser before-hand). Once its to your liking, you can ignore the mapping, hit apply, ok. And you are set.\u003c/p\u003e\n\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/edit_conf_remote.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/edit_conf_remote.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/edit_conf_remote.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/edit_conf_remote.png\" alt=\"Setting up the remote configuration.\" title=\"Setting up the remote configuration.\"\u003e\u003c/p\u003e\n\u003cp\u003eNow here is the difference. You can no longer use the right-click menu to launch, as that always uses the \u0026quot;Local\u0026quot; configuration. You need to select your configuration in the dropdown in the toolbar, and hit the \u0026quot;Debug\u0026quot; button next to it. It should launch, with fulld debugging enabled.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eIntelliJ Note:\u003c/strong\u003e\u003c/em\u003e IntelliJ Idea will get this a bit later. Features from the specialied IDEs eventually trickle back up to the main IDE, but it takes a bit of time. Usually EAP releases get them quick, but very buggy. At the moment, I can access the URL using IntelliJ, but it always returns a custom 404 page. So its not usable. It will be here soon. There is an open bug about it on their tracker.\u003c/p\u003e\n\u003ch2 id=\"full-steam-ahead\"\u003eFull Steam Ahead\u003c/h2\u003e\n\u003cp\u003eHopefully this helps someone switch over to IntelliJ/Webstorm or if you are a current user, to use your environment to enjoy Dart.\u003c/p\u003e\n\u003cp\u003eThe Dart Plugin works for IntelliJ Ultimate, IntelliJ Community, and Webstorm. So you can get IntelliJ CE for free, install the plugin, and you are ready to go. And if you want more features, you can always upgrade to the paid version or Webstorm. (Webstorm is just a subset of IntelliJ, everything that goes into the subset IDEs, gets a Plugin/Integration into IntelliJ, so IntelliJ gets everything, but if you want a focused (and cheaper) IDE, the subeset ones are a good buy)\u003c/p\u003e\n\u003ch3 id=\"links\"\u003eLinks\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.jetbrains.com/idea/\" title=\"IntelliJ Idea\"\u003eIntelliJ Idea\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.jetbrains.com/webstorm/\" title=\"WebStorm\"\u003eWebStorm\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n",
      "summary": "    \nSince I feel that the Dart Plugin in IntelliJ is at a point where it can do most, if not all things that the Dart Editor can do. I thought I would show how to setup debugging of Web Applications.\nPrimarily because a certain few on IRC wanted a step-by-step guide because they were too lazy to figure it out (you know who you are....",
      "date_published": "2013-03-21T19:00:00Z",
      "author": {
        "name": "Yulian Kuncheff"
      },
      "authors": [
        {
          "name": "Yulian Kuncheff"
        }
      ]
    },
    {
      "id": "https://yulian.kuncheff.com/blog/why-are-there-no-true-cross-platform-filesystems/",
      "url": "https://yulian.kuncheff.com/blog/why-are-there-no-true-cross-platform-filesystems/",
      "title": "Why are there no true cross-platform filesystems?",
      "content_html": "\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.png\" alt=\"A table of filesystems\" title=\"A table of filesystems\"\u003e\u003c/p\u003e\n\u003cp\u003eAs someone that has recently installed multiple operating systems on my desktop, I find a major problem that I think shouldn't really exist, but does.\u003c/p\u003e\n\u003cp\u003eOver the last few months I have made it so that my PC desktop runs Windows 8, Linux Mint 14, and OSX Mountain Lion. This was a long endeavor, especially OSX. But everything works nicely and I have the development environments I need on all 3 platforms and all the additional chat, social, and browsing software I like to have running. So that no matter which platform I am on, I just work as normal.\u003c/p\u003e\n\u003cp\u003eBut there is one massive thorn in my entire setup. Filesystems. After so many years of multiple OSes, I am surprised that there isn't a single filesystem that is truely cross-platform and modern. The keyword is modern. FAT32 is still the only candidate for a true cross-platform Filesystem, but its dated, it has very hard limitations on file-sizes that makes it hard if you want to store 4gig+ movies, games, and other data. Also running a Plex server using data on the drive, torrenting, and games requires fast reads and writes.\u003c/p\u003e\n\u003cp\u003eI will outline a few of the downsides to many of the primary filesystems.\u003c/p\u003e\n\u003ch3 id=\"ext4--23\"\u003eEXT4 (\u0026amp; 2/3)\u003c/h3\u003e\n\u003cp\u003eSo the first step was the possibility of just adding EXT support to Windows, at the time thinking OSX had out of the box support for EXT4.\u003c/p\u003e\n\u003cp\u003eBut after countless searching, all I found was old and no longer maintained drivers that supported EXT2 and parts of 3 (usually no journalling support). After a while, I decided I should get OSX setup, and then come back to this, thinking OSX would be just as easy.\u003c/p\u003e\n\u003cp\u003eTo my surprise, OSX had the same problem. There were a bunch of FUSE projects for OSX, most out of date, OSXFUSE seemed updated, but then I couldn't find a viable EXT3/4 fuse driver. They all suffered the same problems as in Windows.\u003c/p\u003e\n\u003cp\u003eI was really surprised that there wasn't any good free EXT4 support on OSX. There is stuff like Paragon EXT and so on, but those cost money, and I don't know how good they are, because they seem to be just paid FUSE implementations.\u003c/p\u003e\n\u003cp\u003eSo EXT was out of the picture, because on a massive secondary drive with lots of big data, modern features of EXT4 are very beneficial (like extents and journalling) and I would prefer them.\u003c/p\u003e\n\u003ch3 id=\"ntfs\"\u003eNTFS\u003c/h3\u003e\n\u003cp\u003eThis I thought would be a decent alternative. I know there is ntfs-3g for write support in Linux, and I got pissed off one day, and just baught Tuxera NTFS for OSX for my Laptop, so I used that on the OSX partition.\u003c/p\u003e\n\u003cp\u003eRead performance was generally good, but one thing that was a huge blocker was write performance. Both ntfs-3g and Tuxera NTFS had poor write speeds. I compared them using the same file, starting from the native filesystem of the OS to the NTFS drive. Windows was obviously the fastest, ntfs-3g was ok, but took about 10 mins longer for the same file, and similar poor results on OSX with Tuxera.\u003c/p\u003e\n\u003cp\u003eForget about downloading any torrents to the drive from a non-Windows OS. Takes way too long for it to actually write anything, and lots of corrupted blocks.\u003c/p\u003e\n\u003cp\u003eNot to mention the third-party implementations can be buggy, cause corruption, and other things. I didn't experience them, but the possibility is much higher with them. Being as all of them are reverse-engineered.\u003c/p\u003e\n\u003cp\u003eSo that kinda fell through. Even though its still what I have the drive set to, but I am not happy with it at all.\u003c/p\u003e\n\u003ch3 id=\"hfs\"\u003eHFS\u003c/h3\u003e\n\u003cp\u003eThis is fine on OSX and Linux, but forget about it on Windows.\u003c/p\u003e\n\u003cp\u003eLinux support was almost there, but with limitations. Anything over 2TB would corrupt, and no journalling support. But it was better than nothing.\u003c/p\u003e\n\u003cp\u003eWindows though, only read-only implementations. Even with an official driver from Apple for read-only in bootcamp. Without write support its useless.\u003c/p\u003e\n\u003ch3 id=\"exfat\"\u003eExFAT\u003c/h3\u003e\n\u003cp\u003eI thought this could be the saving grace for me, then I found about the so-so Linux support, and it doesn't have any modern filesystem features. Just mostly an enhanced FAT. You need to use a fuse driver for Linux, which isn't too bad, but not ideal. Patent encumberance doesn't allow it to be included into the Kernel.\u003c/p\u003e\n\u003cp\u003eNot to mention it is a closed spec, so all third-party implementations are reverse-engineering and potentially have major problems.\u003c/p\u003e\n\u003ch3 id=\"fat32\"\u003eFAT32\u003c/h3\u003e\n\u003cp\u003eThis just is not suitable for huge drives and large data, its old, very restricted, and somewhat useless for anything outside small flash drives, and possible legacy support.\u003c/p\u003e\n\u003ch3 id=\"udf\"\u003eUDF\u003c/h3\u003e\n\u003cp\u003eI actually strongly considered using Plain UDF 2.01. Its supported by all the OSes. Plain version works well on hard drives. Linux doesn't support writing on anything above 2.01. Maybe we should fix that.\u003c/p\u003e\n\u003cp\u003eMaybe a few mounting issues on Windows at first, but it seems like a good solution.\u003c/p\u003e\n\u003cp\u003eJust this is a new idea to me, and I want to look into it more before I try. At first glance, it seems a lot like FAT and doesn't have a lot of big data fancy features. Though it is used for DVDs and Blu-rays.\u003c/p\u003e\n\u003cp\u003eMaybe a Spared version could be better. I need to research more into this, but this might be the only good solution.\u003c/p\u003e\n\u003ch3 id=\"btrfs\"\u003eBtrfs\u003c/h3\u003e\n\u003cp\u003eThis has only Linux support atm, but as a filesystem still in development, I would love to see this get fully featured Windows and OSX drivers by the time it hits 1.0. This would be amazing, and would be the first open source, free, modern filesystem to do it.\u003c/p\u003e\n\u003cp\u003eBut I am not holding my breath, OSX maybe, but there seems to be some severe hate for Windows by Linux diehards, so I don't think it will happen. But its nice to dream.\u003c/p\u003e\n\u003ch3 id=\"may-other-filesystems-only-supported-by-linux\"\u003eMay other Filesystems only supported by Linux\u003c/h3\u003e\n\u003cp\u003eThere are a slew of filesystems out there, a majority are only supported by Linux or *nix derivatives. Some have read support on OSX through MacFuse and OSXFuse, but only read support.\u003c/p\u003e\n\u003cp\u003eAnd forget Windows, nothing there.\u003c/p\u003e\n\u003ch3 id=\"conclusion\"\u003eConclusion\u003c/h3\u003e\n\u003cp\u003eThere isn't a single quality modern filesystem that is cross-platform. NTFS is the closest, but it suffers from performance problems on non-Windows systems.\u003c/p\u003e\n\u003cp\u003eMaybe I should just buckle-down for the next 2-3 years, and make it myself. I am just more of a high-level developer. I live in languages that are interpreted or on VMs. I know enough C/C++ to get by, but not enough to make efficient OS drivers.\u003c/p\u003e\n\u003cp\u003eI think this is an issue that needs to be remedied. At least OSX and Linux. Windows can come after.\u003c/p\u003e\n\u003cp\u003eFor now, I might give UDF a try, not sure yet. Guess I will stick to the slow NTFS on OSX/Linux.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003ca href=\"https://news.ycombinator.com/item?id=5272960\"\u003eDiscuss on HN\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n",
      "summary": "    \nAs someone that has recently installed multiple operating systems on my desktop, I find a major problem that I think shouldn't really exist, but does.\nOver the last few months I have made it so that my PC desktop runs Windows 8, Linux Mint 14, and OSX Mountain Lion. This was a long endeavor, especially OSX. But everything works nicely and I have the development environments I need on all 3 platforms and all the additional chat, social, and browsing software I like to have running...",
      "date_published": "2013-02-21T20:00:00Z",
      "author": {
        "name": "Yulian Kuncheff"
      },
      "authors": [
        {
          "name": "Yulian Kuncheff"
        }
      ]
    },
    {
      "id": "https://yulian.kuncheff.com/blog/language-bloat/",
      "url": "https://yulian.kuncheff.com/blog/language-bloat/",
      "title": "Language Bloat",
      "content_html": "\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.png\" alt=\"A bloated python\" title=\"{{(index .Posts 0).FrontMatter.Title}}\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eDisclaimer: After reading through this a few times, I realized my train of thought jumps around a lot on this. There is just so much going on in my head on this topic, its hard to not jump around. I apologize for the all over the place article. Hopefully my point is still conveyed.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eUpdate: I just want to clarify that when I refer to JVM/CLR I include their primary language and their standard libraries. The JVM and CLR are robust, generally small, and powerful VMs. The primary bloat gain on them comes from the primary language implementation and the massive libraries that come with it. Java is bloated, with it 100s of libraries and standard libraries were made, which in turn makes them bloated and in turn bloats the whole entire platform. If for example, we took the JVM, rewrote all the libraries in Scala, and used Scala, it would be much much lighter. The problem is Java and the bloat it has introduced into libraries and programs written in it on the JVM. Most languages on the JVM use the Java standard library as a base, so the bloat comes with it.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eAs of recently, I have been having a hard time enjoying the languages I program in. At first I was afraid it might be burnout, but it isn't. I still thoroughly enjoy programming, making things, and bringing my ideas to reality. So I sat down and just asked myself what I didn't like about them. It always came to the same point: Bloat.\u003c/p\u003e\n\u003cp\u003eLately, all the fun and interesting languages that I enjoy using tend to be on either the .NET CLR or the JVM. That is all fine and dandy, but anytime I see that, I get this nagging feeling of distaste. I was curious on what was causing this when I really liked the language semantics and syntax.\u003c/p\u003e\n\u003cp\u003eAll these languages had something in common, very bloated standard libraries and sdks. For anything on the JVM, I need to get the JDK which is a few hundred megs, then if its a language other than Java, I need to get that language's SDK also. For .NET, its all the Mono libraries or all of .NET and Visual Studio.\u003c/p\u003e\n\u003cp\u003eAn example, Grails. I use it a bit at work, along with Groovy. So I need to get the JDK, Groovy SDK, and the Grails SDK. Of the top of my head, I think this was 200 megs in packages, libraries, and other crap, 90% of which I didn't need.\u003c/p\u003e\n\u003cp\u003eBut then I realized I was having problems with Python and Ruby, which are much lighter than the above said setups. I thoroughly enjoy using Python, and it is much lighter. But why does it still feel bloated? For these two languages, it came down to the library/module systems. Python Eggs and Ruby Gems along with their package managers.\u003c/p\u003e\n\u003cp\u003eOne of the many reasons I dislike Ruby (actually Ruby has been growing on my a bit, primarily because of Groovy, I still hate Rails, Sinatra or Flask for Python seem more my thing), is the Gem package system. It feels messy, and bloated. Python and Ruby by themselves aren't all that bloated, they are kind of midway between bloated like Java/.NET and what I consider a light platform (I will get to these in a bit). But their module systems make the whole thing a mess.\u003c/p\u003e\n\u003cp\u003eThese factors tend to kinda put me off when I think about sharing my apps, programs, and tools with others, or if I consider deploying said server-side software and managing it. Java, Ruby, and Python tend to come pre-installed on most unix systems, or very easily installed with the respective system's package manager, but with it tends to come way too many supporting libraries and dependencies.\u003c/p\u003e\n\u003cp\u003eI have been apart of the Node.js craze, and I still think Node is a solid platform and would use it for various things, but my problems with it stem in the actual Javascript language, all its pitfalls and things I have to constantly work around, I really just don't want to deal with it. But the platform seems somehow lightweight and clean. Node itself is only a few megs. It has a basic standard library, and leaves the rest to third-party modules, or even if first party, they aren't part of Node. The modules themselves feel light aswell. Some are a mess and can be bloated, but overall, things seem less of a problem compared to Jars, Gems, or Eggs (I feel like I am talking about some scenery in Aladdin).\u003c/p\u003e\n\u003cp\u003eI also am a fan of Dart. Google might an insane uphill battle to even get other browsers to consider it, but the language and DartVM are a pleasure to work with, and it has the same light and fast feel of Javascript and Node.js. Dart is still in very early development, and I wouldn't use it for anything serious, but it is a pleasure to work with. If it doesn't catch on in the browser, I will probably use it as a general purpose language using the DartVM like many use Node.js.\u003c/p\u003e\n\u003cp\u003eBut this brings me back to the other languages/platforms. I feel they could be implemented in much lighter and robust packages. And their module/library systems can be streamlined and lighter. I know Ruby has a package manager called Bundler, but I never used it, and I hear mixed reviews about it. For Python, I use pip, and it seems lighter than easy_install.\u003c/p\u003e\n\u003cp\u003eMaybe I am just delusional and this is all in my head, but there are so many fun languages, yet they suffer not because the language itself, but because of the platforms under them. I tend to enjoy more Python-like languages, like Boo, Groovy, Python itself, Genie.\u003c/p\u003e\n\u003cp\u003eHere is a list of languages I enjoy that feel ruined because of whats under them:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJVM\n\u003cul\u003e\n\u003cli\u003eGroovy (I use Java and Groovy on Grails at work)\u003c/li\u003e\n\u003cli\u003eScala (Has a CLR emitter too)\u003c/li\u003e\n\u003cli\u003eClojure (I know of ClojureScript, but then i deal with Javascript)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCLR\n\u003cul\u003e\n\u003cli\u003eC#\u003c/li\u003e\n\u003cli\u003eF#\u003c/li\u003e\n\u003cli\u003eBoo\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython (Also the JVM/CLR versions and I currently tend to use Python for most of my personal work)\u003c/li\u003e\n\u003cli\u003eRuby (Also the JVM/CLR Versions)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNow, I have considered compiled languages, and I do want to use them, but then there aren't many interesting compiled languages. C/C++ I do not like working with. D is ok, but something about it made me feel meh about it. Vala and Genie seem awesome, but they are quite dependent on GObject and GLIB, so portability to Windows and partially to OSX is messy and a headache. (in all honesty, Genie could probably be for me). I have been trying Go lately, and I have a love/hate opinion on it. It feels awesome, but at other times it just feels odd.\u003c/p\u003e\n\u003cp\u003eI guess my ideal language is the lightness of Dart/Node and their module system, with the syntax of Python/Groovy/Ruby, and the popularity of Java/Ruby/Node. Wishful thinking.\u003c/p\u003e\n\u003cp\u003eYou might be saying I should try to make my own and see it isn't so easy, and maybe I should write my own, but then it would be horrible and I know I wouldn't be able to make it as light and efficient as I want it to be. (I am taking a Compiler Design course atm, and a Programming paradigms course. One is having me do Pascal interpreter in Java that can also compile to C using JavaCC, and another is having me write a Scheme Interpreter in Javascript using JS/CC).\u003c/p\u003e\n\u003cp\u003eThere is just this bloated feel I get from languages nowadays. Its the best way I can describe it. I guess I can always just make my won, but I don't have experience in that, and my distaste for C/C++ would hinder me from making it really efficient. I can make a Shim language around Dart, but i need to wait for it to mature some more. I could make my compiler/interpreter in Go. That might be an interesting project.\u003c/p\u003e\n\u003cp\u003eP.S. I need a new blog system, this one is nice, but dev on it seems dead, and this thing seems bloated, and its in PHP, blah.\u003c/p\u003e\n",
      "summary": "    \nDisclaimer: After reading through this a few times, I realized my train of thought jumps around a lot on this. There is just so much going on in my head on this topic, its hard to not jump around. I apologize for the all over the place article. Hopefully my point is still conveyed...",
      "date_published": "2012-09-29T19:00:00Z",
      "author": {
        "name": "Yulian Kuncheff"
      },
      "authors": [
        {
          "name": "Yulian Kuncheff"
        }
      ]
    },
    {
      "id": "https://yulian.kuncheff.com/blog/language-fanboyism/",
      "url": "https://yulian.kuncheff.com/blog/language-fanboyism/",
      "title": "Language Fanboyism",
      "content_html": "\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.png\" alt=\"Some PHP on a screen at an angle\" title=\"{{(index .Posts 0).FrontMatter.Title}}\"\u003e\u003c/p\u003e\n\u003cp\u003eThis is an opinion and a rant based on my opinion and observations, you have been warned.\u003c/p\u003e\n\u003cp\u003eAs a programmer, I see this a lot. People so engrossed in their language that they don't see its problems or shortcomings, and in turn think every other language, new or old, is bad and will never match up. I sit in a lot of programming language channels on Freenode, and the way I see people defend their language of choice or completely dismiss other languages is baffling. I just don't get why people CHOOSE to lock themselves in to a language so deeply that it becomes like a religion. I even have seen some people say they have only learned that one language, and won't learn anything else. At my heavily Java focused school, I even heard a student say, \u0026quot;Well, I want to be a good Java developer, I have no care or interest in any other language or concept\u0026quot; as I was walking out of the room with WTF moment in my head.\u003c/p\u003e\n\u003cp\u003eOne primary and quite universal example is stuff made by Microsoft. Even at the mention of C#, F#, CLR, .NET and people grab their pitchforks and are ready to lynch you for heresy. Most also seem to relate .NET and CLR directly to being Windows only, or Microsoft evil. Most don't understand or know that C# and the CLR are ECMA standardized and Microsoft has made a public community promise to never try to do anything evil with it. You can safely peruse the promise on Microsoft's site , don't worry, it won't defile your hard drives or require an exorcism of your computer when you are done. On top of that, many in the open source community don't even know of the Mono project, and the incredible effort they have made to recreate the .NET framework for all other platforms. They even are fully up to date, including .NET 4.5 support on their development branch of their repo.\u003c/p\u003e\n\u003cp\u003eAnother example is new languages. Recently, the Dart language was announced by Google and is in active early development. Before anyone tried it, or even checked it out, people immediately dismissed it for being made by Google. But even bigger was the screams and rioting of the Javascript community. How dare someone try to replace Javascript in the browser, or try to introduce a new language to compete with it in the browser space. Now I know it will have one of the hardest battles ever against Javascript, especially with the huge popularity boom for it and Node.js popularity. Then came the problems with Dart2js and its early development results of huge JS files. People immediately shot it down for having bugs, or being poorly optimized, regardless that it was a secondary effort alpha software for a very alpha language.\u003c/p\u003e\n\u003cp\u003eAnd you can go on and on about the language and platform wars that go on. Ruby vs Python vs Node for web dev? That's its own war altogether.\u003c/p\u003e\n\u003cp\u003eBut the real question is why? Are you that narrow minded? Wouldn't it be better to strive to be a better programmer in general, know how to work with many languages, paradigms, and methods of thought, so that you can write programs that others only dream to write? This isn't an all encompassing generalization. I know many programmers that after trying many languages, choose their language out of comfort, ease of use, and what fits them. They are fine, they have made an educated decision, and know the consequences. They also usually know the limitations, problems, and shortcomings of the language well enough to work around them or with them. I am mostly talking about the programmers that follow like sheep to the \u0026quot;in\u0026quot; thing. Or without knowing enough, jump into something, proclaim it as the divine gospel of the savior of the 1's and 0's, and never branch out.\u003c/p\u003e\n\u003cp\u003eI dunno, maybe I like being versatile, knowing more, bettering myself, exploring new things, and just giving everything a fair shot. Like for me personally, I hate Ruby. I have tried to use it many times, sometimes even forced myself to make entire projects with it. I just do not like it. And thats my problem, but I have come to this conclusion through research and actual use of the language.\u003c/p\u003e\n\u003cp\u003eMeh, their loss. I'll be busy over here, writing IronDart in C# (Dart for the CLR for those that don't know the naming convention), while running web apps with Node.js, maintaining everything with Python, processing logs with Haskell and Clojure, and facepalming at PHP. Mmm, looks good to me.\u003c/p\u003e\n",
      "summary": "    \nThis is an opinion and a rant based on my opinion and observations, you have been warned.\nAs a programmer, I see this a lot. People so engrossed in their language that they don't see its problems or shortcomings, and in turn think every other language, new or old, is bad and will never match up. I sit in a lot of programming language channels on Freenode, and the way I see people defend their language of choice or completely dismiss other languages is baffling...",
      "date_published": "2012-07-07T19:00:00Z",
      "author": {
        "name": "Yulian Kuncheff"
      },
      "authors": [
        {
          "name": "Yulian Kuncheff"
        }
      ]
    },
    {
      "id": "https://yulian.kuncheff.com/blog/monogame/",
      "url": "https://yulian.kuncheff.com/blog/monogame/",
      "title": "Monogame",
      "content_html": "\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.png\" alt=\"Monogame Logo\" title=\"{{(index .Posts 0).FrontMatter.Title}}\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eDisclaimer: This is all opinion and personal preference. A lot of the frameworks and game engines I talk about are great, and its my own choices that make them subpar for me. Please take this as an opinion peace, I am not trying to sway anyone in any way, it is just an explanation on why I chose what I did in hopes it might give someone else some ideas.\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eOk, so this really isn't much a rant, but more of a why I chose to go this approach over some other approach. I recently wanted to actually \u0026quot;make\u0026quot; games. Reason I have it in quotes, is because I always have an idea, I do the research, write the first 20 lines, and get a new idea and switch to it. Nothing ever got done.\u003c/p\u003e\n\u003cp\u003eI finally found a major reason (but not the only reason) on why I do this. Out of personal choice and preference, I want any game I make to be as cross-platform as possible. This puts a real damper on things because there are very few frameworks or platforms that are cross-platform enough. There is always an important platform missing, be it Linux, Windows Phone 7, or a combination of many missing ones. I have gone through many frameworks, including Haxe, Corona, Monkey, Unity, and even less frameworky setups. I finally ended up with Mono and MonoGame, and I will detail why I chose this after I lay out what I have tried and why it didn't work.\u003c/p\u003e\n\u003cp\u003eSecond, it is most programmers' dream to write code once, and release to multiple platforms. Even with minor modifications per platform. So I am naively still chasing that idea, as many others are too.\u003c/p\u003e\n\u003cp\u003eThird, I want to be able to prototype and build the game as quickly as possible. I have too many ideas, and I tend to switch too often and never get anything done. So taking the time to write my own Engine, Library, or Framework would really slow me down and I would probably lose interest. BUT, I might make it a project to write my own Javascript Game Library/Framework. It sounds like a fun project in of itself.\u003c/p\u003e\n\u003ch2 id=\"mobile-only-frameworks\"\u003eMobile Only Frameworks\u003c/h2\u003e\n\u003cp\u003eI am going to preface this by stating that I understand that WP7 support for many frameworks is not possible because it doesn't allow for custom runtimes to run on the phone mostly because it doesn't allow low level access to the system or C/C++ access. So WP7 is really not something I will analyze or really mention often.\u003c/p\u003e\n\u003cp\u003eThere are many frameworks that are made specifically for only mobile targets. This is fine, as long as I can find a complimentary Desktop library if the game is geared to Desktop play alongside mobile play. If its mobile only thats fine, but even then it has problems. One of the major problems is frameworks tend to be geared for 1 platform. One popular framework is Corona. It looks like a superb platform, but its missing some key features and has been missing them for as long as I have known about Corona. One being Shaders. I have always waited for them to add shader support, but it is constantly getting other (in my opinion) less important features.\u003c/p\u003e\n\u003cp\u003eBut there are so many mobile frameworks out right now. It is getting a bit ridiculous. During my search I found at least 10 different frameworks that do almost the exact same thing, targeting iOS or Android. Some throw in Blackberry, Symbian, and HTML5. But in the long run, they don't provide a benefit over each other and tend provide lackluster feature support of the target platforms.\u003c/p\u003e\n\u003cp\u003eSo all those get scratched off the list right off the bat.\u003c/p\u003e\n\u003ch2 id=\"desktopmobile-frameworks\"\u003eDesktop/Mobile Frameworks\u003c/h2\u003e\n\u003cp\u003eSo now we go into the realm where 1 framework can target multiple form factors, paradigms, and platforms. There is always a need to understand that a certain game might not be playable or as fun on a certain form factor or control scheme. So you will always need to evaluate which platform to push to. But being able to make a game that fits all the form factors, and play well is something that is possible, and seems to be a growing trend.\u003c/p\u003e\n\u003cp\u003eSo I first started out with some fan favorites like Unity3D. First thing, as the name suggests, it has really no support for 2D game making. You can emulate 2/2.5D games if you fix camera positions and do various other tricks, but you still need to have a solid understanding of 3D game programming. But I had a few 3D game ideas, and I was willing to make some of my 2D games into 3D. Now, I am fully aware that this might be due to my lack of experience in game making, let along 3D game making, but I find Unity3D horribly confusing to use. Maybe its the different structure, but the way the scripts meshed with the scene, and the files. I really had a tough time figuring out how to access and control objects in the scene from the code. So Unity3D got a huge pass from me because, I just couldn't use it. I will revisit it in the future when I am more mature in this, and it might make perfect sense, but right now, I feel really out of place using it.\u003c/p\u003e\n\u003cp\u003eThere are 2 other frameworks that offered the same choice. One was DeltaEngine, and another was ShiVa3D. Both are great in their own respect, and DeltaEngine even uses C# (one of my favorite languages, but more on that a bit later) but it is still new and by the time I considered it and ShiVa, I had figured I was too inexperienced to jump straight into 3D, at least through a framework (writing 3D from scratch doesn't seem all that daunting, even though it probably is). But another killer for me on ShiVa3D and Unity is now WP7 support. Though, due to WP7 limitations, I understand that it might not be even a valid choice for them as they can't port the runtime or the C/C++ code. Maybe in WP8.\u003c/p\u003e\n\u003ch2 id=\"html5javascript\"\u003eHTML5/Javascript\u003c/h2\u003e\n\u003cp\u003eAfter searching countless hours, I decided I should just go the Javascript/HTML5 route. I greatly enjoy non-Website Javascript programming and I found plenty of frameworks that can package it all up into a nice package for every platform. Desktops were a bit harder to find, but there are solutions like TideSDK and Air. Along with writing my own wrapper setup with Chromium Embedded. Mobile is not an issue as there are things like PhoneGap that will allow me to do just that on most mobile platforms. If the platform doesn't have a packager, all the important mobile platforms have HTML5/JS supporting browsers, so it can run in the browser.\u003c/p\u003e\n\u003cp\u003eJavascript really provides the true Cross-platform support, and with Node.js (my server side language of choice), I can really write everything in 1 language and 1 codebase.\u003c/p\u003e\n\u003cp\u003eBut I hit a stumbling block. Most engines, frameworks, or even rendering libraries are in very early stages of development. They work, but not all the way. And I have seen a lot of problematic support with the packagers. I can always write most from scratch, and even release it open source as a library for others to use. But Javascript is still newer to me. I didn't really join the bandwagon until Node.js (and I joined that around version 4.10ish). I was never fond of the language until I saw its real power outside the browser. This is probably all just excuses, and laziness on my part, but I really did not feel comfortable rewriting Canvas drawing libraries. I have looked into CAAT, Craftyjs, Impact3D, GameQuery, and a few others. Impact3D was a no go because it requires purchase before usage. I will not buy a framework that I don't even know is the right fit for me. GameQuery is still in early development and I don't think it is ready for primetime. CAAT and Craftyjs are the most mature, and are very solid frameworks. I just found their API a bit limiting. But don't get me wrong, these are great frameworks/engines. I just doesn't have the tools I am looking for. But if I had to do it again. I would probably go with Craftyjs.\u003c/p\u003e\n\u003cp\u003eI am sure I am forgetting some good ones, but I can't remember them off the top of my head.\u003c/p\u003e\n\u003ch2 id=\"so-what-was-left\"\u003eSo what was left?\u003c/h2\u003e\n\u003cp\u003eAfter lots of searching, I re-stumbled on something that I had seen long ago, but did not think much of it at the time. It was something I saw after the Windows 8 development info came out and the future of XNA came into question. I was mostly worried about WP7 support at the time. The solution I found was MonoGame, an open source re-implementation of XNA with works with .NET or Mono, which is an open source implementation of .NET and a C# compiler.\u003c/p\u003e\n\u003cp\u003eSo why did I end up choosing it? Well firstly, I really enjoy C# as a programming language. It just clicks for me and has a lot of features like Lambda Expressions, Anonymous functions, etc. that I find very useful and allows for the language to be used functionally. It is a language I have grown to like a lot, and I am glad there is a project like Mono that has most of .NET 4.0 ported, and I think now a good chunk of 4.5 in the dev branches. Plus the .NET Standard Libraries are really well done, and I find much greater stability in .NET than I do in Java's Standard Libraries. Plus all the dev tools are top notch. (I hate Eclipse with a fiery passion)\u003c/p\u003e\n\u003cp\u003eThen comes MonoGame. Which takes XNA, a very easy to use and really well supported framework. Since it is a direct compatible API, XNA examples and test games actually just work in my own tests with the beauty of compiling them and running them on OSX and Linux.\u003c/p\u003e\n\u003cp\u003eBut the real kicker, is they are using SharpDevelop to add support for Windows 8 and Windows 8 metro. So I can take my game, compile it for Metro and put it on the up and coming Metro App store. This breathes a lot of life into a framework that was frankensteined apart and put into WinRT. And allows it for a path to grow on its own and add more DX10/11 options that were not possible before. Also means, Win8 Arm Tablet support!\u003c/p\u003e\n\u003cp\u003eAnother benefit is MonoDevelop, which allows me 1 IDE for all the platforms and allows me to work on my Macbook Air without the need to Bootcamp it and waste space installing Visual Studio.\u003c/p\u003e\n\u003cp\u003eThen came some amazing bonuses. Xamarin's efforts in getting the Mono runtime to work on Android and iOS. This allows for MonoGame to just run directly ontop of those Mono implementations. If I remember correctly, Xamarin manages the OSX binaries and development too.\u003c/p\u003e\n\u003cp\u003eSo we have a mature and supported language with a solid standard library. A pretty much game making framework with a big community and samples. Support for all the important platforms (Windows XP - 8/Metro, OSX, Linux, Android, iOS, WP7, XBOX, or anything Mono runs on), Multi-platform development tools, and future-proofing. Also Playstation Support is planned.\u003c/p\u003e\n\u003cp\u003eSo what more can it really give? ... HTML5/WebGL. Using a tool I found just recently, you can take the CIL bytecode and compile it into pretty readable Javascript. The tool is called JSIL and it is still in early development but the website has some really good examples and ports to show off. Now, WebGL is a bit limiting, but most browsers support it (with the exception of IE), no mobile browser support, but the can be worked on too..\u003c/p\u003e\n\u003cp\u003eAlso, I believe there might be a NaCl target some day. Bastion was able to make their Chrome App Store version using MonoGame. This adds yet another option for in-browser gaming. So that adds another platform to the Package. I also believe Bastion uses MonoGame for their recent OSX release.\u003c/p\u003e\n\u003ch2 id=\"this-is-all-great-but-what-is-the-catch\"\u003eThis is all great, but what is the catch?\u003c/h2\u003e\n\u003cp\u003eThere is no real catch, more like caveats. They need to be considered when porting things between platforms and a few other tidbits.\u003c/p\u003e\n\u003cp\u003eFirst, 3D support in the current MonoGame 2.5 does not exist. But fret not. the current main development branch is very active on 3D support, and there are already test projects running 3D XNA. So it won't be long now when MonoGame 3.0 comes out and we get full 3D support. Just a bit more waiting.\u003c/p\u003e\n\u003cp\u003eSecond, the Content Pipeline is not implemented in MonoGame. At least not in the full sense. It still has the content manager for loading files. But it doesn't use XNBs and it just loads them directly form their normal format. Second, Mono and MonoDevelop do not support the Content Project (.contentproj).\u003c/p\u003e\n\u003cp\u003eSo this issue cropped up for me. I had started my project on OSX in MonoDevelop. All was fine in dandy and I had a major chunk working. Then when I tried to run it on Windows, it wouldn't compile. I found out that XNA requires a Content Project with a Content Reference in the Main project. No leeway. So after frankensteining the XML in the project files, and doing some pathing fun. I got my project to use the Content folder in my Main project as a Content Project with a reference to it. A bit confusing, but it works, and it didn't break the MonoDevelop on other platforms or my other Solutions for the other platforms. But, it did break MonoDevelop on Windows. Without knowing how to work with the Content Project file, it just would not load the content project, since it couldn't pull the Content. So I am forced to use Visual Studio on Windows, until they add better support for Content Projects into Mono/MonoDevelop/MonoGame.\u003c/p\u003e\n\u003cp\u003eBut, once I got all that taken care of, it ran beautifully on all platforms. Oh and another note. You need to make a Solution file for every platform. So you can set the proper settings for each platform and to allow you to use Pre-Processor If/Endif statements to add platform conditional stuff.\u003c/p\u003e\n\u003cp\u003eSo while not ideal, Mono and MonoGame has actually provided a way to write 1 code, and port it out to 9 platforms (8 if you don't count Win8 Metro as a separate platform) and add 1 for planned future support for PLaystation Suite.\u003c/p\u003e\n\u003cp\u003eLets hope it works out and stays good.\u003c/p\u003e\n\u003cp\u003eLinks:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMono - \u003ca href=\"https://www.mono-project.org\"\u003ewww.mono-project.org\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMonoGame - \u003ca href=\"https://www.monogame.net\"\u003ewww.monogame.net\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eJSIL - \u003ca href=\"https://www.jsil.org\"\u003ewww.jsil.org\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCraftyJS - \u003ca href=\"https://www.craftyjs.com\"\u003ewww.craftyjs.com\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGameQuery - \u003ca href=\"https://www.gamequeryjs.com\"\u003ewww.gamequeryjs.com\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCAAT - \u003ca href=\"https://labs.hyperandroid.com/animation\"\u003elabs.hyperandroid.com/animation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShiVa3D - \u003ca href=\"https://www.stonetrip.com\"\u003ewww.stonetrip.com\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnity3D - \u003ca href=\"https://www.unity3d.com\"\u003ewww.unity3d.com\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeltaEngine - \u003ca href=\"https://www.deltaengine.com\"\u003ewww.deltaengine.com\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorona - \u003ca href=\"https://www.anscamobile.com\"\u003ewww.anscamobile.com\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n",
      "summary": "    \nDisclaimer: This is all opinion and personal preference. A lot of the frameworks and game engines I talk about are great, and its my own choices that make them subpar for me. Please take this as an opinion peace, I am not trying to sway anyone in any way, it is just an explanation on why I chose what I did in hopes it might give someone else some ideas.\nOk, so this really isn't much a rant, but more of a why I chose to go this approach over some other approach...",
      "date_published": "2012-04-30T19:00:00Z",
      "author": {
        "name": "Yulian Kuncheff"
      },
      "authors": [
        {
          "name": "Yulian Kuncheff"
        }
      ]
    },
    {
      "id": "https://yulian.kuncheff.com/blog/oauth-usage/",
      "url": "https://yulian.kuncheff.com/blog/oauth-usage/",
      "title": "OAuth Usage",
      "content_html": "\u003cp\u003e\u003cpicture\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.avif\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.jxl\"\u003e \u003csource srcset=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.webp\"\u003e \u003cimg src=\"/images/{{(index .Posts 0).FrontMatter.Slug}}/cover.png\" alt=\"OAuth Logo\" title=\"{{(index .Posts 0).FrontMatter.Title}}\"\u003e\u003c/p\u003e\n\u003cp\u003eOne thing that really bugs me lately is the selective use of OAuth providers. Specifically, Facebook. It is one of my pet peeves when I come to a site that I want to try out, but they require Facebook in order to login. I rarely if ever use Facebook, I personally hate using Facebook (rant for another day), but I have one, for some basic connections and logging into places if I really have to.\u003c/p\u003e\n\u003cp\u003eThis normally wouldn't be an issue if developers would add more sources. At least the more popular ones like Twitter, Google, Github, Windows Live, whatever. And the way OAuth is made, its not very hard to do this. You just need to add a bit of services specific code to handle the keys, if that. There are even libraries for most languages and platforms that do this all for you.\u003c/p\u003e\n\u003cp\u003eSo I really don't get why developers don't do this. 95% of the usage I have seen is to pull your name, email, picture, and maybe your bio. This can be done from all of these services and its not hard to do. Even with my hatred for Facebook, and that I prefer Bitbucket over Github. I would add support for these OAuth providers if I ever write any login-based web apps. I would much prefer to login with Twitter for everything, but that choice is never given to me, its always Facebook or Normal Login, or just Facebook. Rarely do I see more than that.\u003c/p\u003e\n\u003cp\u003eBut this also goes for others too. For example Geekli.st. I know they are trying to emulate Twitter more than anything, but nothing is stopping them from using the other OAuth providers to provide a login to their Geekli.st persona. The same info that they pull from Twitter can be pulled from other services, and then once internal, they can work like they always do.\u003c/p\u003e\n\u003cp\u003eA couple of examples of places that could easily implement more, but fail to do so, some of these are sites I frequent and love, some are not. These are off the top of my head, so I can't name many, but I know I have stumbled on many, throughout surfing the web.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe Verge - \u003ca href=\"http://www.theverge.com\"\u003ewww.theverge.com\u003c/a\u003e - Only uses Facebook or Normal Login\u003c/li\u003e\n\u003cli\u003eGeekli.st - \u003ca href=\"http://www.geekli.st\"\u003ewww.geekli.st\u003c/a\u003e - Only Twitter\u003c/li\u003e\n\u003cli\u003eYahoo - \u003ca href=\"http://www.yahoo.com\"\u003ewww.yahoo.com\u003c/a\u003e - Only Windows Live \u0026amp; Google or Normal Login\u003c/li\u003e\n\u003cli\u003ePinterest - \u003ca href=\"http://www.pinterest.com\"\u003ewww.pinterest.com\u003c/a\u003e - Facebook and Twitter, (was excited when I saw twitter) but they could still add Google and maybe Live.\u003c/li\u003e\n\u003cli\u003eMinus - \u003ca href=\"http://www.minus.com\"\u003ewww.minus.com\u003c/a\u003e - Facebook, Twitter, and Normal Login. Could add Google and Live.\u003c/li\u003e\n\u003cli\u003eFlixster - \u003ca href=\"http://www.flixster.com\"\u003ewww.flixster.com\u003c/a\u003e - Only Facebook and Normal Login\u003c/li\u003e\n\u003cli\u003eMany others, I tend to not remember/go to sites that force me to use Facebook Only.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNumerous apps too:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDraw Something - Facebook or Normal Login\u003c/li\u003e\n\u003cli\u003eZynga Games - Facebook, but this one I can understand due to how tied Zynga is to Facebook still.\u003c/li\u003e\n\u003cli\u003ePlenty others.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI can only think of this one off the top of my head for providing lots of option, I know there are more, just can't remember them all:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDisqus - Facebook, Twitter, Google, OpenID, Normal Login - Lots of choice, bound to hit something a user prefers.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOn a side note, I do wish more services provided OAuth Logins in general. I prefer to just hit Login with Twitter, and since I already stay logged into Twitter all the time, I just click Accept for new apps, or it will just do a couple redirects and I am in.\u003c/p\u003e\n\u003cp\u003eI just feel developers need to not lock themselves into once service. One because no one knows how long a service will exist or be ok with a service's policies. Second, it lowers the amount of people that use your service. There are many that hate one service or the other, or hate Social Networks in general, but the more options you provide, the bigger the market you will capture. I know numerous websites that I would love to use, but don't want to login with Facebook, so I just never use them and/or find alternatives.\u003c/p\u003e\n",
      "summary": "    \nOne thing that really bugs me lately is the selective use of OAuth providers. Specifically, Facebook. It is one of my pet peeves when I come to a site that I want to try out, but they require Facebook in order to login. I rarely if ever use Facebook, I personally hate using Facebook (rant for another day), but I have one, for some basic connections and logging into places if I really have to...",
      "date_published": "2012-04-04T19:00:00Z",
      "author": {
        "name": "Yulian Kuncheff"
      },
      "authors": [
        {
          "name": "Yulian Kuncheff"
        }
      ]
    }
  ],
  "_yblog": [
    {
      "Key": "generator",
      "Value": "yblog"
    }
  ]
}