28 de mar. de 2020

Tech Book Face Off: Data Smart Vs. Python Machine Learning

After reading a few books on data science and a little bit about machine learning, I felt it was time to round out my studies in these subjects with a couple more books. I was hoping to get some more exposure to implementing different machine learning algorithms as well as diving deeper into how to effectively use the different Python tools for machine learning, and these two books seemed to fit the bill. The first book with the upside-down face, Data Smart: Using Data Science to Transform Data Into Insight by John W. Foreman, looked like it would fulfill the former goal and do it all in Excel, oddly enough. The second book with the right side-up face, Python Machine Learning: Machine Learning and Deep Learning with Python, scikit-learn, and TensorFlow by Sebastian Raschka and Vahid Mirjalili, promised to address the second goal. Let's see how these two books complement each other and move the reader toward a better understanding of machine learning.

Data Smart front coverVS.Python Machine Learning front cover

Data Smart

I must admit; I was somewhat hesitant to get this book. I was worried that presenting everything in Excel would be a bit too simple to really learn much about data science, but I needn't have been concerned. This book was an excellent read for multiple reasons, not least of which is that Foreman is a highly entertaining writer. His witty quips about everything from middle school dances to Target predicting teen pregnancies were a great motivator to keep me reading along, and more than once I caught myself chuckling out loud at an unexpectedly absurd reference.

It was refreshing to read a book about data science that didn't take itself seriously and added a bit of levity to an otherwise dry (interesting, but dry) subject. Even though it was lighthearted, the book was not a joke. It had an intensity to the material that was surprising given the medium through which it was presented. Spreadsheets turned out to be a great way to show how these algorithms are built up, and you can look through the columns and rows to see how each step of each calculation is performed. Conditional formatting helps guide understanding by highlighting outliers and important contrasts in the rows of data. Excel may not be the best choice for crunching hundreds of thousands of entries in an industrial-scale model, but for learning how those models actually work, I'm convinced that it was a worthy choice.

The book starts out with a little introduction that describes what you got yourself into and justifies the choice of Excel for those of us that were a bit leery. The first chapter gives a quick tour of the important parts of Excel that are going to be used throughout the book—a skim-worthy chapter. The first real chapter jumps into explaining how to build up a k-means cluster model for the highly critical task of grouping people on a middle school dance floor. Like most of the rest of the chapters, this one starts out easy, but ramps up the difficulty so that by the end we're clustering subscribers for email marketing with a dozen or so dimensions to the data.

Chapter 3 switches gears from an unsupervised to a supervised learning model with naïve Bayes for classifying tweets about Mandrill the product vs. the animal vs. the Mega Man X character. Here we can see how irreverent, but on-point Foreman is with his explanations:
Because naïve Bayes is often called "idiot's Bayes." As you'll see, you get to make lots of sloppy, idiotic assumptions about your data, and it still works! It's like the splatter-paint of AI models, and because it's so simple and easy to implement (it can be done in 50 lines of code), companies use it all the time for simple classification jobs.
Every chapter is like this and better. You never know what Foreman's going to say next, but you quickly expect it to be entertaining. Case in point, the next chapter is on optimization modeling using an example of, what else, commercial-scale orange juice mixing. It's just wild; you can't make this stuff up. Well, Foreman can make it up, it seems. The examples weren't just whimsical and funny, they were solid examples that built up throughout the chapter to show multiple levels of complexity for each model. I was constantly impressed with the instructional value of these examples, and how working through them really helped in understanding what to look for to improve the model and how to make it work.

After optimization came another dive into cluster analysis, but this time using network graphs to analyze wholesale wine purchasing data. This model was new to me, and a fascinating way to use graphs to figure out closely related nodes. The next chapter moved on to regression, both linear and non-linear varieties, and this happens to be the Target-pregnancy example. It was super interesting to see how to conform the purchasing data to a linear model and then run the regression on it to analyze the data. Foreman also had some good advice tucked away in this chapter on data vs. models:
You get more bang for your buck spending your time on selecting good data and features than models. For example, in the problem I outlined in this chapter, you'd be better served testing out possible new features like "customer ceased to buy lunch meat for fear of listeriosis" and making sure your training data was perfect than you would be testing out a neural net on your old training data.

Why? Because the phrase "garbage in, garbage out" has never been more applicable to any field than AI. No AI model is a miracle worker; it can't take terrible data and magically know how to use that data. So do your AI model a favor and give it the best and most creative features you can find.
As I've learned in the other data science books, so much of data analysis is about cleaning and munging the data. Running the model(s) doesn't take much time at all.
We're into chapter 7 now with ensemble models. This technique takes a bunch of simple, crappy models and improves their performance by putting them to a vote. The same pregnancy data was used from the last chapter, but with this different modeling approach, it's a new example. The next chapter introduces forecasting models by attempting to forecast sales for a new business in sword-smithing. This example was exceptionally good at showing the build-up from a simple exponential smoothing model to a trend-corrected model and then to a seasonally-corrected cyclic model all for forecasting sword sales.

The next chapter was on detecting outliers. In this case, the outliers were exceptionally good or exceptionally bad call center employees even though the bad employees didn't fall below any individual firing thresholds on their performance ratings. It was another excellent example to cap off a whole series of very well thought out and well executed examples. There was one more chapter on how to do some of these models in R, but I skipped it. I'm not interested in R, since I would just use Python, and this chapter seemed out of place with all the spreadsheet work in the rest of the book.

What else can I say? This book was awesome. Every example of every model was deep, involved, and appropriate for learning the ins and outs of that particular model. The writing was funny and engaging, and it was clear that Foreman put a ton of thought and energy into this book. I highly recommend it to anyone wanting to learn the inner workings of some of the standard data science models.

Python Machine Learning

This is a fairly long book, certainly longer than most books I've read recently, and a pretty thorough and detailed introduction to machine learning with Python. It's a melding of a couple other good books I've read, containing quite a few machine learning algorithms that are built up from scratch in Python a la Data Science from Scratch, and showing how to use the same algorithms with scikit-learn and TensorFlow a la the Python Data Science Handbook. The text is methodical and deliberate, describing each algorithm clearly and carefully, and giving precise explanations for how each algorithm is designed and what their trade-offs and shortcomings are.

As long as you're comfortable with linear algebraic notation, this book is a straightforward read. It's not exactly easy, but it never takes off into the stratosphere with the difficulty level. The authors also assume you already know Python, so they don't waste any time on the language, instead packing the book completely full of machine learning stuff. The shorter first chapter still does the introductory tour of what machine learning is and how to install the correct Python environment and libraries that will be used in the rest of the book. The next chapter kicks us off with our first algorithm, showing how to implement a perceptron classifier as a mathematical model, as Python code, and then using scikit-learn. This basic sequence is followed for most of the algorithms in the book, and it works well to smooth out the reader's understanding of each one. Model performance characteristics, training insights, and decisions about when to use the model are highlighted throughout the chapter.

Chapter 3 delves deeper into perceptrons by looking at different decision functions that can be used for the output of the perceptron model, and how they could be used for more things beyond just labeling each input with a specific class as described here:
In fact, there are many applications where we are not only interested in the predicted class labels, but where the estimation of the class-membership probability is particularly useful (the output of the sigmoid function prior to applying the threshold function). Logistic regression is used in weather forecasting, for example, not only to predict if it will rain on a particular day but also to report the chance of rain. Similarly, logistic regression can be used to predict the chance that a patient has a particular disease given certain symptoms, which is why logistic regression enjoys great popularity in the field of medicine.
The sigmoid function is a fundamental tool in machine learning, and it comes up again and again in the book. Midway through the chapter, they introduce three new algorithms: support vector machines (SVM), decision trees, and K-nearest neighbors. This is the first chapter where we see an odd organization of topics. It seems like the first part of the chapter really belonged with chapter 2, but including it here instead probably balanced chapter length better. Chapter length was quite even throughout the book, and there were several cases like this where topics were spliced and diced between chapters. It didn't hurt the flow much on a complete read-through, but it would likely make going back and finding things more difficult.

The next chapter switches gears and looks at how to generate good training sets with data preprocessing, and how to train a model effectively without overfitting using regularization. Regularization is a way to systematically penalize the model for assigning large weights that would lead to memorizing the training data during training. Another way to avoid overfitting is to use ensemble learning with a model like random forests, which are introduced in this chapter as well. The following chapter looks at how to do dimensionality reduction, both unsupervised with principal component analysis (PCA) and supervised with linear discriminant analysis (LDA).

Chapter 6 comes back to how to train your dragon…I mean model…by tuning the hyperparameters of the model. The hyperparameters are just the settings of the model, like what its decision function is or how fast its learning rate is. It's important during this tuning that you don't pick hyperparameters that are just best at identifying the test set, as the authors explain:
A better way of using the holdout method for model selection is to separate the data into three parts: a training set, a validation set, and a test set. The training set is used to fit the different models, and the performance on the validation set is then used for the model selection. The advantage of having a test set that the model hasn't seen before during the training and model selection steps is that we can obtain a less biased estimate of its ability to generalize to new data.
It seems odd that a separate test set isn't enough, but it's true. Training a machine isn't as simple as it looks. Anyway, the next chapter circles back to ensemble learning with a more detailed look at bagging and boosting. (Machine learning has such creative names for things, doesn't it?) I'll leave the explanations to the book and get on with the review, so the next chapter works through an extended example application to do sentiment analysis of IMDb movie reviews. It's kind of a neat trick, and it uses everything we've learned so far together in one model instead of piecemeal with little stub examples. Chapter 9 continues the example with a little web application for submitting new reviews to the model we trained in the previous chapter. The trained model will predict whether the submitted review is positive or negative. This chapter felt a bit out of place, but it was fine for showing how to use a model in a (semi-)real application.

Chapter 10 covers regression analysis in more depth with single and multiple linear and nonlinear regression. Some of this stuff has been seen in previous chapters, and indeed, the cross-referencing starts to get a bit annoying at this point. Every single time a topic comes up that's covered somewhere else, it gets a reference with the full section name attached. I'm not sure how I feel about this in general. It's nice to be reminded of things that you've read about hundreds of pages back and I've read books that are more confusing for not having done enough of this linking, but it does get tedious when the immediately preceding sections are referenced repeatedly. The next chapter is similar with a deeper look at unsupervised clustering algorithms. The new k-means algorithm is introduced, but it's compared against algorithms covered in chapter 3. This chapter also covers how we can decide if the number of clusters chosen is appropriate for the data, something that's not so easy for high-dimensional data.

Now that we're two-thirds of the way through the book, we come to the elephant in the machine learning room, the multilayer artificial neural network. These networks are built up from perceptrons with various activation functions:
However, logistic activation functions can be problematic if we have highly negative input since the output of the sigmoid function would be close to zero in this case. If the sigmoid function returns output that are close to zero, the neural network would learn very slowly and it becomes more likely that it gets trapped in the local minima during training. This is why people often prefer a hyperbolic tangent as an activation function in hidden layers.
And they're trained with various types of back-propagation. Chapter 12 shows how to implement neural networks from scratch, and chapter 13 shows how to do it with TensorFlow, where the network can end up running on the graphics card supercomputer inside your PC. Since TensorFlow is a complex beast, chapter 14 gets into the nitty gritty details of what all the pieces of code do for implementation of the handwritten digit identifier we saw in the last chapter. This is all very cool stuff, and after learning a bit about how to do the CUDA programming that's behind this library with CUDA by Example, I have a decent appreciation for what Google has done with making it as flexible, performant, and user-friendly as they can. It's not simple by any means, but it's as complex as it needs to be. Probably.

The last two chapters look at two more types of neural networks: the deep convolutional neural network (CNN) and the recurrent neural network (RNN). The CNN does the same hand-written digit classification as before, but of course does it better. The RNN is a network that's used for sequential and time-series data, and in this case, it was used in two examples. The first example was another implementation of the sentiment analyzer for IMDb movie reviews, and it ended up performing similarly to the regression classifier that we used back in chapter 8. The second example was for how to train an RNN with Shakespeare's Hamlet to generate similar text. It sounds cool, but frankly, it was pretty disappointing for the last example of the most complicated network in a machine learning book. It generated mostly garbage and was just a let-down at the end of the book.

Even though this book had a few issues, like tedious code duplication and explanations in places, the annoying cross-referencing, and the out-of-place chapter 9, it was a solid book on machine learning. I got a ton out of going through the implementations of each of the machine learning algorithms, and wherever the topics started to stray into more in-depth material, the authors provided references to the papers and textbooks that contained the necessary details. Python Machine Learning is a solid introductory text on the fundamental machine learning algorithms, both in how they work mathematically how they're implemented in Python, and how to use them with scikit-learn and TensorFlow.


Of these two books, Data Smart is a definite-read if you're at all interested in data science. It does a great job of showing how the basic data analysis algorithms work using the surprisingly effect method of laying out all of the calculations in spreadsheets, and doing it with good humor. Python Machine Learning is also worth a look if you want to delve into machine learning models, see how they would be implemented in Python, and learn how to use those same models effectively with scikit-learn and TensorFlow. It may not be the best book on the topic, but it's a solid entry and covers quite a lot of material thoroughly. I was happy with how it rounded out my knowledge of machine learning.

Video Store Golden Age With Greg!

In this episode I talk with Greg aka SoulBlazer from the SNES Podcast and the Playstation Power Podcast. He helped establish NES game rentals in the video store that his mother managed in the 80s and 90s. It's a fun interview and I hope that you enjoy it. As always, I thank you for listening.

The photo used as the artwork was found on Roger Ebert's web site without a photographer credit. Please don't sue.

How To Download And Install Batman Arkham Asylum With Joker DLC On PC Wi...

23 de mar. de 2020

Come Play Suzy Cube At PAX East!

#SuzyCube #gamedev #indiedev #madewithunity #PAXEast #IMBPAXEast19 @NoodlecakeGames @IndieMEGABOOTH
Are you attending PAX East 2019? If so, come by the Indie MEGABOOTH and say hi! Suzy will be showcased as part of the MINIBOOTH on Thursday and Friday. 
Read more »

21 de mar. de 2020

A Tremendous Chop To The Team

That tournament aboard the S.S. Anne went well into the evening and I remained undefeated. Between matches, I wandered the promenade deck sizing up the competition. The entire ship was buzzing about a rising star trainer aboard the ship. He was competing in a higher bracket than mine, so we wouldn't face each other here, but I really wanted to see one of his matches. Unfortunately, we never crossed paths but I would be on the lookout for this trainer named Red. It wasn't terribly surprising when I stumbled into Wolf. I assumed he wouldn't miss a chance to show off for a crowd of Pokémon enthusiasts. I caught sight of him just as he was soundly defeating an opponent in a few decisive seconds after the match had started. I quickly checked to see which bracket he was in because I relished the idea of soundly defeating him in front of spectators. And as luck would have it, the next time I trounced Wolf would be in front of a live audience.
When our numbers were finally called, Wolf was calm and collected as he stood across from me. We both had the confidence of a trainer who hadn't lost a single point yet. We exchanged casual, semi-friendly greetings and then chose our first Pokémon to battle. I opened with Douglas and he opened with his Pidgeotto. It was a predictable move. My tiny, ground-type Pokémon was at a disadvantage, but Douglas needed the training and I was over-confident. I let Douglas intimidate his opponent with fierce growls, but as soon as Pidgeotto landed a small hit, I withdrew Douglas and tossed out my own Pidgeotto, Kiwi.
"We've done this dance before," Wolf said across the arena.
"How did that work out for you?" I said with a sneer. Kiwi began kicking up dust and dirt. It was our traditional opening move, but it was much harder to pull off on a freshly swabbed deck. As Kiwi continued to harass the accuracy of his opponent, he took quite a few hits from Wolf's Pidgeotto. Restorative items were not prohibited in the tournament, so a Super Potion ensured Kiwi would be able to stay in the fight. Wolf looked annoyed, but he made no objection. As his Pidgeotto continued to flounder and land only the luckiest and lightest of attacks on Kiwi, Kiwi was able to swiftly put an end to Wolf's Pidgeotto. The crowd cheered.
Wolf tossed out his Raticate and I withdrew Kiwi and replaced him with Lucky who hadn't seen much action aboard the S.S. Anne. The Raticate was naturally faster and landed some quick attacks on Lucky. When it moved in close, Lucky showered the Raticate with a comforting sleep powder from its wings and it was lulled into a deep sleep. Lucky took a second point from Wolf when he used a psychic assault to knock out the Raticate without ever waking it up. The crowd was slightly less impressed with this boring victory, but Wolf was frowning. That was just as good for my morale as a cheering crowd.
Wolf called out Kadabra next. We were both underwhelmed by Abra's performance in our last match, so I had no doubt that Wolf had been training him into an impressive Kadabra since we last battled. I didn't quite know what to expect from this creature, so I went with my current powerhouse, Rascal Jr. A solid hyper fang instantly downed the Kadabra and all my worries instantly disappeared. The crowd went wild at this turn of events as Kadabra was apparently the star member of Wolf's team today.
I knew what was next and I knew how to handle it. I knew the crowd was more excited by tremendously powerful, fast-paced biting Raticates, but I was here to win. Wolf tossed out a Pokéball that released his Wartortle into the arena. I withdrew Rascal Jr. and brought out Arnold. He took a solid headbutt from the Wartortle, but managed to burst a puff of sleep spores into its face.  Then Arnold proceeded to absorb Wartortle's energy, replenishing its own, until Wartortle was forced to submit.
Wolf actually looked impressed. "Well, I made it this far undefeated. I thought I had a chance this time. I guess you're still one step ahead of me," he said casually. He crossed the arena and extended a hand toward me. I felt a sneer crawl across my face as I took his hand and shook it in front of the cheering crowd. "You're still too serious, man," he laughed, cocking his head at me. "But I guess your seriousness is paying off. Until next time, Fox." Wolf waved one last time to the crowd overhead and then disappeared into the crowd around us.

After my very public victory over Wolf, I felt like I was living in a dream. Since knocking him down a few pegs, I was leading the tournament at our amateur level. It felt incredible. I battled well into the night and maintained my undefeated status. The talk of Red faded away and now there was a buzz around the young out-of-towner named Fox! Basking in these successes, I felt a deeper connection to the world of Pokémon training and competitive battling. The pride I felt I shared with my Pokémon and in return they fought harder for me.
Unfortunately, this euphoria was not going to last the night. My final match aboard the S.S. Anne was against a member of the crew. He was just a few points behind me, meaning he'd only let two of his team faint throughout the day. I knew the risks using Douglas against a sailor, but so far Douglas had grown considerably stronger and faster with our in-and-out techniques to get potshots on our opponents. This time, however, the sailor opened with a Machop. This small fighting-type Pokémon was not the typical water-type that sailors usually carried around. It should have been no problem for Douglas to get in a quick hit and then rest, but Machop was not fooling around. A critical Karate Chop came down on Douglas's head and Douglas was completely done.
As good as I had been feeling all day was instantly shattered. I had only known Douglas for 24-hours but he was going to be my ace in the hole against Lt.Surge tomorrow. I'd been meticulously training him and keeping him going all day and now in the final showdown it was all over, all for nothing. It felt like that critical chop went straight to my heart. Kiwi easily took care of the rest of the sailor's Pokémon - and I went on to win this level of the tournament. I graciously accepted access to the Hidden Machine which taught Arnold how to slice through excessive overgrowth, but inside I was deeply wounded that I had failed yet another Pokémon.

Current Team:
Attacks in Blue are recently learned.



Bill's Storage: Shakespear (Spearow) & Royal (Magikarp)

Old Man Daycare: Charlie (Pidgey)

19 de mar. de 2020

Sharpen Your Programming Tools

Programming is like any other craft, whether that be engineering or woodworking or auto repair. Every craft has its tools that must be learned and maintained in order to do beautiful work and make wonderful things. In the craft of programming, one of the main tools we work with is programming languages. The more languages we know and the better we know them, the more versatile and valuable we can be as programmers and the better our solutions become. Fortunately, it's extremely easy to find websites to help you practice with programming problems and build up your skills with the languages you already know or bring you up to speed on languages you're trying to learn. They're so easy to find that it may be a bit overwhelming to pick one and settle in to actually work on some problems. Here are some of my favorite (free) sites—and why I like them—to help simplify that decision.

Monoglot Programming Puzzle Sites

These sites focus primarily or exclusively on one programming language. They tend to be great for getting started in that language or practicing the basics of a language that you're not that strong in, yet. However, they can also go deep into their chosen language because of the focus on a single language.

RubyMonk

RubyMonk screenshot

RubyMonk is a nicely designed site that introduces Ruby and leads you on a journey through the language's various features from objects to metaprogramming. It's part tutorial with explanations of all of the language concepts that it covers, and part practice with additional exercises to solve after you've read the material. Throughout the tutorial are lines of code that you can run to see what they do, and other places where you're asked to enter your own code to accomplish certain tasks to participate more in the lesson. These input areas also act as scratch pads where you can experiment with the Ruby language to your heart's content. It's a great, interactive way to learn the language, and one of the better implementations of this concept that I've seen. I particularly enjoyed the Zen master and apprentice theme throughout. It was quite calming and relaxing, making for a pleasant learning and practicing experience.

Ruby Koans

Ruby Koans screenshot

Continuing with the Zen theme, this Ruby practice site takes you away from the internet by having you download a set of files that are set up as Ruby test files. After making sure that Ruby is installed, you simply run each file in Ruby and see what the output looks like. It will tell you how the first test in the file fails, and then you have to go and fix the code to make it pass. You continue in this way along the path to enlightenment. It's pretty slick, and the progression of the problems was well thought out and nicely done. Whereas RubyMonk has the advantage of having everything work in the browser, Ruby Koans has the advantage of making you work in a more realistic programming environment, and its focus on the testing culture of Ruby is an added benefit.

The Python Challenge

Python Challenge screenshot

This is probably the most clever of the sites in this list. The Python Challenge starts off with a couple fairly simple puzzles, but then quickly ramps up the difficulty level. For each puzzle you're given an image with a clue, and you have to figure out how to edit the URL to advance to the next level. This set of puzzles is extremely entertaining. I felt like Indiana Jones, or maybe Benjamin Gates from National Treasure, while trying to solve these puzzles, putting the clues through different Python functions and coming up with different ways to manipulate them in order to find the right next step. The site even helps you out with extra hints when you're on the right track but haven't fully solved the puzzle, yet. It's very well done, and I highly recommend giving it a try. Don't go looking for how to solve the problems, either. It's much more satisfying to do it yourself. Like Ruby Koans, you're own programming environment is required.

4Clojure

4Clojure screenshot

This site is a straight up problem solving site for the Clojure programming language. Each of the 156 problems has a set of tests that should pass if you fill in the right code in the editor and run the tests. The output when your code fails is pretty sparse, so you'll either need a local Clojure environment or an online REPL (the link on the site is dead) for debugging and experimenting. The problems range from simple fill-in-the-blank problems for learning syntax to fairly difficult mathematics and algorithmic problems. Once you've solved any given problem, you can look at how other people have solved that same problem, but only for people that you've followed on the site. It's easy to choose a dozen or so people that have solved all of the problems from the site's Top Users list, and scanning through others solutions is a great way to learn new tricks in any programming language. We'll see this feature pop up in a number of the other sites here. I especially liked 4Clojure's simple, clean interface and the nice set of puzzles they have to solve with a good range of difficulty for learning the language. They do have some bumps in the road, with some problems seemingly out of logical order if you proceed through them numerically. Some earlier problems require syntax and functions that you learn about in later problems. The elementary, easy, medium, and hard problems are all mixed together, too. But, for the most part it works well, and solving the medium and hard problems was quite satisfying.

99 Prolog Problems

99 Prolog Problems screenshot

If you want to try your hand at Prolog, this is a great site for doing just that. I would imagine these problems could be solved in a similar manner in Erlang and possibly Elixir as well, but beyond that, we're probably getting too far from a logic language for the problems to be the kind of challenge that they were intended. Come to think of it, miniKanren—a logic language built on top of Clojure—may also work here. Anyway, this is a great set of problems for buffing up your logic programming skills with a nice progression in material and difficulty, and there are solutions for if you get stuck or just want to see if there was another way to solve the problem. It's another bring your own programming environment site with just the bare-bones problems and solutions provided. The meat of this site is in the problems themselves.

Polyglot Programming Puzzle Sites

These sites allow the user to solve problems in numerous different languages, sometimes any language they want to use is fair game. The nature of these sites tends to focus on the problem solving or puzzle nature of programming as a result, since general problems can be solved in any language.

Ruby Quiz

Ruby Quiz screenshot

Okay, what gives? I say this is going to be the polyglot section and the first site I list is another Ruby site. Well, Ruby is in the title, but it's not at all restrictive. You need to use your own programming environment, so you can solve the problems in whichever language you want. The solutions on the site are given in Ruby, but the result of running the program for each problem is known, so you'll know when you've got the program working in any other language. What's nice about these problems is that they're more like miniature real-world programming problems instead of the standard textbook exercises of most sites. This site was run with a new problem once a week for three years before switching management over to a different person and a mailing list, so there are 156 problems here to solve. That's still enough to stay busy for quite a while, so have fun exploring the standard libraries of your favorite programming language to efficiently solve these problems.

Codewars

Codewars screenshot

Codewars is one of the more fully-featured sites on this list. It has huge sets of programming puzzles, called kata, for about 20 different languages, and the number of kata is constantly growing because users can submit their own kata for others to solve. The kata are ranked by difficulty level, and you get different amounts of experience for solving different levels of kata. There are no specified tracks to the kata; it's somewhat arbitrary what order you'll solve them as you're free to choose the next kata at every step. As you gain experience, or honor, you advance up the ranks from 8kyu to 1kyu. It's a nice gamification that keeps you going to solve more kata at higher difficulty levels, if the challenge and satisfaction of solving programming puzzles wasn't enough already. In addition to the huge selection of puzzles, you can look at other users' solutions, and discuss them through comments on the site. It adds a nice social aspect to the puzzle solving as long as you can keep the conversations civil, as we all should do in programming debates.

Exercism.io

exercism.io screenshot

Exercism.io is similar to Codewars in that it supports a ton of different languages, and there's a social aspect to looking at other users' solutions and commenting on their code. Here it's encouraged to critique other people's code in a constructive and respectful way in order to try to help your fellow programmers improve their skills. Through your analysis and others critiques, you should also improve. It works pretty well, too. Compared to Codewars, there's less puzzles for each language, although more are being added all the time, and Exercism.io takes a serial approach to solving the problems. It's also done offline rather than on the website, so you'll download a little script to get started that pulls down the first problem for whichever language you want to practice. You solve the problem in your own environment, check it against a set of tests, and submit it with the script from a terminal. Then you can go on the site and review other people's solutions. It's a different way of doing what Codewars does from your own computer, and it works surprisingly well.

Project Euler

Project Euler.net screenshot

This puzzle site is the essense of a programming puzzle site. The problems are simply math problems that you could solve by hand, if you wanted to, but trust me, you don't want to. Take the first problem as an example: Find the sum of all the multiples of 3 or 5 below 1000. I could calculate this answer by hand, but honestly, I'm going to write code to do it. You can pick any language you want of course, and when you've solved it, just submit the answer to the site. Your time from seeing the problem to submitting the solution is logged, and you can go to the forum for each problem to discuss it and see how others have solved it. Many problems aren't even solvable on a computer if you just try to brute-force a solution. They require additional thought to make the code efficient enough to solve the problem before the Earth gets swallowed up by the Sun. On the other hand, there are some problems for which closed form solutions can be found, so keep your eye out for those! This is a challenging and engaging site, and it's ever so satisfying to solve a particularly difficult problem in an elegant way. They're always adding more problems to the list, too. It's currently up to 683 problems, so get crackin'!

Programming Praxis

Programming Praxis screenshot

This site is a running list of programming exercises with new ones added on Tuesdays and Fridays every week. The exercises are intended to be solved with Scheme, and that's the language the solutions are given in. But of course you can solve the exercises in any language you like. This site has been going strong since 2009, so there's plenty of exercises to choose from. The chronological list only goes through 2013, with 491 exercises there, but they keep going after that, up to the present day. You can either go back through the history and try to solve them all, or use the site to consistently practice the most recent exercises starting today. Either way, there's a ton of stuff here to keep you busy and help you improve your programming skills in any language you want.


Well, there you have it, ten of my favorite sites for sharpening your programming tools. They run the gamut from introductory tutorials for specific programming languages to huge lists of fun, challenging puzzles for any language under the sun. There are tons more sites like these out there, probably many more great ones that will help you become a better programmer. The important thing is to find a couple sites that have engaging enough puzzles to hold your attention and help you level up your skills, and keep at it. Putting in that effort will noticeably improve your programming abilities in addition to being rewarding in its own right. I know I'll be working (playing?) through a few of these sites for a long time to come.

Storium Basics: Assets And Goals

We've already discussed Storium's first (and my favorite) Neutral card type, the Subplot, but that's not the only Neutral card type in Storium. Today, I'm going to discuss the other two types: Assets and Goals.

Unlike all the other cards in Storium, Assets and Goals are not things that you start with - they aren't part of your character from the beginning, and they aren't chosen at Refreshes or upon spending a stack or anything like that. Whether you have these cards or not isn't up to you, entirely - it depends on the narrator. These are both given to players - or provided for pickup - by the narrator at his will.

Assets represent things like items, people, or other resources that are sufficiently important to the story to be specifically noted. Narrators vary in how they use them—some toss out a ton, some toss out generic ones that players can customize (more on that later), and some provide only very specific, story-critical assets. The use is the same, regardless: You play the card and move things forward, telling how that resource is important in pushing the challenge closer to conclusion. It can sometimes be easier to write asset moves if you play a Strength or Weakness with them, so you can write how you use that asset well or badly.

Goals are kind of like Subplots, but they're things the narrator would like to see you address during the game. Like assets, narrators use these for all sorts of purposes. I've seen them used to represent injuries, enchantments, objectives…I've seen them used as requests to world-build or create NPCs that the narrator can use…all sorts of things. They work similarly to subplots - you get a stack, and when you play all the cards of that stack, you get a free Wild Strength as a reward. Basically, these are the narrator's way of saying, "Hey, talk about this in the story or show this happening, and if you do it, you can get a Strength card for making the story more interesting."

Narrators may give Assets or Goals to you directly, or may lay them out to be picked up. You can pick up a card that a narrator set out by using the "pick up cards" button at the bottom of your move editing window when writing a move. If picking a card up, you'll often want to actually show the item being picked up as part of your move, or show your character now thinking about the Goal and deciding to take it up, but that isn't always necessary (for instance, I often use Assets to represent other characters traveling with the group).

Whether given to you or picked up by you, you can then hold on to the asset card until you feel like playing it. You can also pick up and play an asset card in the same move.

Like subplots, assets and goals are neutral cards–they push a challenge closer to conclusion but don't themselves tip the scale one way or another. I look at it like this: You might have a gun, and that might matter to a scene, but whether it is a good thing or a bad thing really depends on how you use it…so Strengths and Weaknesses are still what you use to affect outcomes. That's not to say you have to play one of those cards along with an asset or goal, but I do have to say I generally find it easier to write moves for asset or goal cards if I play them with a Strength or Weakness myself.

If you play an asset or goal card on its own, think like you do for Subplot cards: the card is important to the scene and pushes things towards a conclusion, but doesn't change the current Strong/Weak balance so things still feel like they're headed for the ending they were headed for before, overall. As with Subplots, that can feel good if things were headed towards a Strong outcome, or bad if they were headed for a Weak outcome, or just...well...uncertain if they were headed for an Uncertain outcome. The overall feel of the situation hasn't changed, but now there's less time to change it.

Asset cards can be rewritten, as I've noted above. If an asset card has multiple uses (a "stack"), you can use the "browse your cards" button in your move writing window to look at it and rewrite the asset. This consumes one use of the asset card stack, but lets you rename it to something that seems more narratively important at the time. That means that if you have, say, a stack of asset cards representing a gun and you don't have access to that gun in the story presently, you can just rewrite the stack into something else–maybe your character always keeps a city map around.

Note that not all narrators allow that – some really prefer assets to represent one thing and one thing only. But the basic idea of how they're set up is to give you something to use when you feel like your character would have something to help out and you want to highlight that. I believe Stephen Hood called them "ways to plug holes in the plot," and that's a pretty apt description.

Assets and Goals will feature majorly in some games, and barely at all in others, depending on the narrator's style, but they're cards you need to be aware of. I actually haven't written all that much on Assets and Goals over the course of my writing on this blog, as in my own narration they are cards I don't use much! This is a case where I suggest talking with other players and narrators on Storium more than looking to my writing for advice. That said, here are a few articles that cover Neutral cards more generally:

Cyber Monday Cha'alt


"If you're really into over-the-top gonzo dungeons full of weird and interesting encounters, then Cha'alt is a must-have." ~ Shyberkryst

Order a fancy hardcover of Cha'alt and get either $5 off the price (that's good worldwide) or a second Cha'alt hardcover for only an additional $10 (domestic USA shipping only, sorry).

This amazing offer is good until Wednesday at midnight (12/4/19).

Ordering information here

Remember, you get the PDF FREE after purchasing the gorgeous, full-color print version.  Check it out!

VS

p.s. Some high-profile reviews and media coverage coming soon, along with a brand-new Cha'alt-themed Kickstarter launching Friday.


16 de mar. de 2020

Eminent Domain Origins Playtests - 2P And 4P

Today I got a couple more "last minute" tests of Eminent Domain Origins in, one 4-player (using the 2-5p starting cards), and one 2p (turns out I hadn't tested 2p since making all these updates and changes).

In the 4p game, Dan joined Dave, Jesse, and me. He played the game once about a year ago, so was basically a new player, so I asked him to just play normally and let me know what was fiddly, odd, hard to understand, or easy to forget. Dave and Jesse each tried the new 4-5p starting cards (Jesse started with a colony marker loaded, an energy, and $10; Dave started with 2 crystal and an energy). I decided to try alien hunting, since I hadn't seen it much lately, and so started with a weapon and a crystal. I gave Dan a basic $30 starting card.

In the end, the game was quite close, with Dave winning out 60-50-50-49. I may have missed a round or two, but I counted 17 rounds -- I thought I remembered Terra Prime lasting more like 20-24 or so. Jump starting the game a little bit by giving players starting resources and cutting the phase 1 reward cards, and allowing colony spots (planets) to exist in adjacent sectors, may have sped the game up a little bit, but I DID add 3 tiles to the phase III rewards, so we were only really net down 1 reward tile total. It's likely players just did more scoring actions (colonizing and defeating aliens) than what sometimes happens so the game was on the short end.

Dave's winning 60 points came on the back of quite a lot of delivering. He used his 2 crystal start to quickly (turn 4 or 5) get a Matter Converter, and soon after delivered a bunch of cubes for a fistful of credits and bought 2 Thrusters in one turn. Dave is usually partial to Afterburners, but I guess he decided he didn't have the energy economy for it this time. In any case, he had 5 actions while the rest of us ad only 3 for a while. Dan and Jesse eventually got Thrusters of their own, for some reason I didn't bother, which may have been my downfall. The verdict on the starting card is that it's probably fine. The verdict on Matter Converter is that it's potentially very strong, probably not a problem, but might ought to be worded such that you still have to carry the correct cubes according to your holds, and then deliver/upgrade as if they're wild, rather than letting you convert them to whatever you want whenever you want, which just encourages you to visit your own places.

Jesse's downfall may have been poor rolls combined with potentially ill advised pathing. He kept crashing into asteroids, and hadn't bought shields first. This cost him 3vp on more than 1 occasion. Had he just rolled a little better (or spent the action and $20 to get and charge shields), he could have been neck and neck with Dave in the end. Never mind that one of the collisions cost him an engine, about 1/2 way through the game, putting him out maybe 7 or 8 actions! However, his start was strong, Starting with a loaded colony marker was pretty great, it allowed him to usurp a colony spot from player 1 (Dan, who might have been better off doing something a little bit different), and as Jesse pointed out, irrespective of turn order, starting with a loaded colony means that he's the ONLY player who could colonize 2 spaces from TP on turn 1. It also means that players earlier in turn order have to be a bit more careful and hedge their bets if they're not colonizing on turn 1, lest their colony get sniped. That's probably OK, but we decided to take away the energy, so that if there's an asteroid in the way, at least you have to risk losing 3 points to do that.

I tried to do some alien hunting, and I did an alright job, my big errors were getting an early Battle Station instead of selling cubes to afford a Thruster, and not setting up any accessible early game colonies for other players to use. The only planet 1 step from TP was a green one off to one side, and since Dan didn't take it, I decided to colonize it on turn 1. Nobody used it all game, and I didn't drop any colonies in high traffic areas, so I didn't get to leach any points off of other players.

Any way you look at it, that score was pretty darn close all around.

After Dan left, I mentioned the board scaling for 2 players (2 fewer tiles in each row, and only 1 of each tech upgrade), and it occurred to me that I hadn't played 2p in this new version of the game. So I had Jesse and Dave play 2p while I watched. They ended up choosing the sort of standard $20 and $30 for starting resources, and while I lost count half way through the game, I'm pretty sure it lasted about 20 rounds -- just a few more than the 4 player game. I noticed that in the mid-game, both players spent time upgrading their ship rather than dropping colonies or killing aliens, which dragged the game out a little bit, but also was fun for the players to really pursue a strategy. Dave ended up with a Thruster and 2 Afterburners (with Additional Module Slots), so was doing 8 actions per turn. Jesse had 2 Thrusters for 5 actions per turn. Both geared up for alien hunting, but neither did a whole lot of it until the end of the game. Between the two of them, they explored every tile, but they also left a lot of maybe lower scoring colony spaces alone... had either of them grabbed a Cryo Chamber (or Cargo upgrade) and started dropping multiple colonies per trip, the game could have been considerably shorter (on par with the 4p game perhaps).

The verdict was that the 2p game seemed fine. I think we don't need to do any further scaling such as removing any reward cards. It felt like the game dragged a little, but that was because (a) players drew it out a bit, and (b) Dave's turns started taking incredibly long as he hemmed and hawed over planning out his 8 actions!

All in all, I think it was a fine test day. I made a tweak to one of the starting cards (take the energy off the loaded colony marker one), and I might tweak the wording on Matter Converter. I might also add a reward card or two (probably double up on existing ones) just to make sure there's enough time in a 5 player game for players' strategies to develop.

15 de mar. de 2020

Grav-StuG Kickstarter (January 2019)

Grav-StuG Kickstarter 

I am pleased to announce the Grav-StuG, a plastic model kit, will be coming to Kickstarter January 2019!

More details to come.....

 
Dreamforge will be kickstarting several new kits in the coming year.
Each new product offering will be very focused, a single product, its actual production costs and any profits expected will need to be folded into the overall funding goal. This is a strong departure from the retail model, where revenues are gained over time and the investment/debt is front loaded.
 
Product availability outside the initial Kickstarter.
Product availability outside of Kickstarter will be limited, only 100-300 units beyond the total needed to fulfill the Kickstarter will be run for post Kickstarter inventory, some of that will be soaked up by the inevitable issues, damaged kits, mispacked or missing items from a kit and kits that never make it to the backer and were lost in transit.
There may be re-runs offered on popular kits in future Kickstarter's, but there will be minimums that need to be met, typically a 500-unit run will be needed. The best way for a customer to approach this is to buy what you want and what you think you will need at the time of the offering, I cannot make a promise that there will be a second run if the overall interest is not there.
 
Kickstarter Shipping.
Customers will need to pay for the actual shipping costs for the products they back. Shipping, as we all know is very expensive from the US to anywhere outside its borders. Each Kickstarter will be shipped directly from China to mitigate the expense to the customer as much as possible, this means most of the world will likely see a drastic cost reduction, but the US will experience a small increase. Why don't I just ship the US backers from the US? Because it's a hidden cost, shipping to the US, warehouse staff and other costs would need to be calculated into the Kickstarter and would increase the price once the true costs are factored in.
 
How are the Kickstarter's structured?
Each Kickstarter will absorb the costs and required profits into a 1000 minimum unit run. If it costs $40,000 for the molds, production, boxes and other service costs, then the cost of each unit would be $40.00.

What happens if a Kickstarter success outstrips the required funding goal?
Do you get a discount? Discounts will be offered when you pick up multiple kits, not by the overall success of a product or campaign. Those are profits that get re-invested to make DreamForge healthy, to pay for additional stock, to help pay for re-release of the current line of kits, as those tools will need to be re-cut at some point.
 
How will the Kickstarter's differ from other typical campaigns?
To be clear, this is not going to be a song and dance Kickstarter model, there may be extras offered if there is room on the sprues, but anything extra in the form of products adds to the costs and I will not be bulking the costs to deal with that. I am trying to keep the price per kit to you as low as I possibly can.
Most of our campaigns will be short, ten to fifteen days with as much warning as I can provide about an upcoming campaign. I will be active during the campaign, answering questions, taking feedback and interacting with my customers but by the time the project launches, the current product will be locked in and not subject to revision or design changes.
The conversations I have with my customers before a campaign will allow us to develop products together and help deliver the kinds of items you would like to see.

Scale in millimeters:


5 de mar. de 2020

These Walmart PC Accessory Sales Make Working From Home A Little Easier - Ars Technica

These Walmart PC accessory sales make working from home a little easier

People Behind The Meeples - Episode 206: Charley Cross

Welcome to People Behind the Meeples, a series of interviews with indie game designers.  Here you'll find out more than you ever wanted to know about the people who make the best games that you may or may not have heard of before.  If you'd like to be featured, head over to http://gjjgames.blogspot.com/p/game-designer-interview-questionnaire.html and fill out the questionnaire! You can find all the interviews here: People Behind the Meeples. Support me on Patreon!


Name:Charley Cross
Email:charleycross@arboartsllc.com
Location:Springfield, IL
Day Job:Work at an elementary school part time, carpenter part time, game designer full time.
Designing:Over ten years!
Facebook:Arbo Arts LLC
YouTube:R'Bow
Other:Not yet.
Find my games at:Just direct right now.
Today's Interview is with:

Charley Cross
Interviewed on: 8/16/2019

This week we get to meet Charley Cross, a designer from Springfield, Illinois who likes to make casual, family style card games. You can currently buy a copy of R'Bow, a light color matching, card shedding game with similarities to classics like Uno and Skip-Bo from Arbo Arts, LLC. He's also working on a game called QUEUE and others! Read on to learn more about Charley and his other projects.

Some Basics
Tell me a bit about yourself.

How long have you been designing tabletop games?
Over ten years!

Why did you start designing tabletop games?
I realized that I have a talent for creating really good family style games.

What game or games are you currently working on?
R'Bow, Queue, and several others not yet ready to discuss.

Have you designed any games that have been published?
R'Bow

What is your day job?
Work at an elementary school part time, carpenter part time, game designer full time.

Your Gaming Tastes
My readers would like to know more about you as a gamer.

Where do you prefer to play games?
Home, Parties

Who do you normally game with?
Friends and family

If you were to invite a few friends together for game night tonight, what games would you play?
They really like Queue. R'Bow, and sometimes Spades.

And what snacks would you eat?
Chips, Dip, Hummus

Do you like to have music playing while you play games? If so, what kind?
Not really, like the conversation.

What's your favorite FLGS?
Titan, Springfield, IL

What is your current favorite game? Least favorite that you still enjoy? Worst game you ever played?
Favorite QUEUE. Least but enjoy, Trivial Pursuit. Worst: Old Commodore Game: Docking a Space Shuttle.

What is your favorite game mechanic? How about your least favorite?
Favorite is shedding or collecting. Least is wagering.

What's your favorite game that you just can't ever seem to get to the table?
A lot of people do not want to play Monopoly, but they rarely play it by the actual rules, so it goes on forever. I understand, but if you play it by the exact rules it is a real challenge and doesn't usually take that long.

What styles of games do you play?
I like to play Card Games

Do you design different styles of games than what you play?
I like to design Board Games, Card Games, Other Games?

OK, here's a pretty polarizing game. Do you like and play Cards Against Humanity?
No

You as a Designer
OK, now the bit that sets you apart from the typical gamer. Let's find out about you as a game designer.

When you design games, do you come up with a theme first and build the mechanics around that? Or do you come up with mechanics and then add a theme? Or something else?
My games are all modifications of a specific theme.

Have you ever entered or won a game design competition?
no

Do you have a current favorite game designer or idol?
no

Where or when or how do you get your inspiration or come up with your best ideas?
I start with a basic structure and keep adding and subtracting options.

How do you go about playtesting your games?
Family and friends.

Do you like to work alone or as part of a team? Co-designers, artists, etc.?
Alone mostly, and with my husband.

What do you feel is your biggest challenge as a game designer?
I have already conquered several. The biggest one now is exposure.

If you could design a game within any IP, what would it be?
One of the family favorites like UNO, Rook, Phase 10 etc.

What do you wish someone had told you a long time ago about designing games?
Cover all your bases before you spend any money.

What advice would you like to share about designing games?
Seek advice, be self critical, and believe in your project.

Would you like to tell my readers what games you're working on and how far along they are?
Published games, I have: R'Bow Have a few thousand, will sell these to see how well people like them.
Games that will soon be published are: Queue: Will hopefully publish this year or early next year
I'm planning to crowdfund: Hope to approach Kickstarter as soon as I build more of an online presence.
Games I feel are in the final development and tweaking stage are: We are ready to go.
Games that I'm playtesting are: We are ready to go.

Are you a member of any Facebook or other design groups? (Game Maker's Lab, Card and Board Game Developers Guild, etc.)
no.

And the oddly personal, but harmless stuff…
OK, enough of the game stuff, let's find out what really makes you tick! These are the questions that I'm sure are on everyone's minds!

Star Trek or Star Wars? Coke or Pepsi? VHS or Betamax?
Star Trek, No High Fructose Corn Syrup!!! VHS

What hobbies do you have besides tabletop games?
carpentry, music, opera, theatre, cooking, gardening.

What is something you learned in the last week?
My adult daughter is dating someone.

Favorite type of music? Books? Movies?
blues, motown, mozart, books, sci fi and historical fiction, action

What was the last book you read?
Les Miserables

Do you play any musical instruments?
no

Tell us something about yourself that you think might surprise people.
I have lived in over thirty places.

Tell us about something crazy that you once did.
rope swing on cliff above creek, couldn't reach it from the ground so I jumped off the cliff (low one) to catch the rope in mid air. I missed.

Biggest accident that turned out awesome?
Speeded up my car and used a driveway as a ramp to avoid a collision and landed straddling a ditch, saving myself and my coworker.

Who is your idol?
Bernie Sanders

What would you do if you had a time machine?
Break it into very small bits before I destroyed the world with it.

Are you an extrovert or introvert?
extrovert

If you could be any superhero, which one would you be?
I am actually Superman.

Have any pets?
Not in a long time.

When the next asteroid hits Earth, causing the Yellowstone caldera to explode, California to fall into the ocean, the sea levels to rise, and the next ice age to set in, what current games or other pastimes do you think (or hope) will survive into the next era of human civilization? What do you hope is underneath that asteroid to be wiped out of the human consciousness forever?
QUEUE. Racism just has to go.

If you'd like to send a shout out to anyone, anyone at all, here's your chance (I can't guarantee they'll read this though):
Everybody. Play QUEUE. It really is the best card game since someone took a game played with two decks of playing cards, dressed it up, and became the most successful game since King's Reverse.

Just a Bit More
Thanks for answering all my crazy questions! Is there anything else you'd like to tell my readers?

Email me, I will answer.




Thank you for reading this People Behind the Meeples indie game designer interview! You can find all the interviews here: People Behind the Meeples and if you'd like to be featured yourself, you can fill out the questionnaire here: http://gjjgames.blogspot.com/p/game-designer-interview-questionnaire.html

Did you like this interview?  Please show your support: Support me on Patreon! Or click the heart at Board Game Links , like GJJ Games on Facebook , or follow on Twitter .  And be sure to check out my games on  Tabletop Generation.

Suzy Cube Update: April 27, 2018

#SuzyCube #gamedev #indiedev #madewithunity @NoodlecakeGames 
You want pretty pictures this week!? We got your pretty pictures right here!
Read more »

4 de mar. de 2020

The Strategic Slump


Last night I began playing Fire Emblem Awakening again. It had been lost for two years after moving to Hawaii, but I recently found the small cache of games I'd brought with me to play on the trip stowed away in a small DS pouch sitting under my nose all this time. It was nearly a year ago I started playing Fire Emblem Fates that I wanted to go through Awakening again and do all the things I had neglected to do originally -- but I couldn't find it until now. Among the things I never did was play through on Classic-style (permanent deaths of units) and Lunatic difficulty. That's not even it's final form! There's a Lunatic + that unlocks if you clear it.

So I booted it up and found I had a Lunatic file on Chapter 15. I honestly don't even remember how many Chapters the game has because it's been so long since seen it, let alone played it. So I decided to start a new file. I spent a minimum of four hours trying to get through Chapter 1-4 last night. It was probably more than that including time spent reading some strategies and tips on how to play the random number generator just right. Then I discovered I don't have access to my old DLC content on this newer 3DS because I neglected to import the data from my old SD card and for some reason my Nintendo Network ID won't simply let me re-download it. That's bogus. This is bad news.

So like a fool, I decided that my current run wasn't good enough. That without the support of the DLC maps, I wouldn't be able to push much farther unless I made a few god-like characters over the first 5 chapters -- Fredrick and Robin, I'm looking at you. So I restarted with an updated player character [Robin] and went through that slog again this morning trying out some new strategies -- and generally it went a lot faster.

There is still this issue of getting to the last 2-3 enemies and watching as their 33% chance to hit and 6% chance of gaining a critical hit off of that 33% turn their expected 14 damage (to my 33 HP on Frederick) into 60 damage. Negating about 35 minutes of careful planning, because now I have to restart the entire map again. These situations are excruciatingly frustrating. I'm sitting here now because I'm asking myself -- am I having fun? I honestly can't tell.

The number of times you'll miss with 85% chance to hit and the enemy will land a hail Mary 4x damage critical combo on you with only a 5% chance are really the tip of the iceberg on how frustrating this experience has been thus far. I'm certainly irritated by the 10th reset due to crappy dice rolls that screw over a unit's survival or give my superstar characters a piss-poor level up gain. Then again when it all comes together, and Lady Luck smiles down on some clutch misses in my favor, it feels pretty damn good to push through the map and take down the boss. Is that moment of victory enough to keep me going? An hour or two of turmoil for an instant of triumph? I wish I knew.

What I do know is that I really want to play Fire Emblem Awakening one more time, and backing down from Lunatic at this time feels like giving up. Can I be the hero Ylisse needs right now if I back down from this challenge and take the easy road? I don't think my pride will allow it, but I'm not having much fun slogging my way through trial and error on these maps -- resetting every 15-25 minutes. How long will it even go on like this? Will I just give up and walk away from this great game, or can I suffer through this hardship and lead my troops to a new level of victory? I don't have any of the answers, friends.

- TOP
@TOPGamingBlog


IKEA BEDROOM SET - NOVVVAS