Monday, February 24, 2020

Tech Book Face Off: Seven Languages In Seven Weeks Vs. Seven More Languages In Seven Weeks

Yes, that's right. I learned fourteen programming languages in as many weeks. Actually, it was more like four weeks, but I just couldn't put these books down. I had wanted to work through them ever since I had read Seven Databases in Seven Weeks a few years ago and loved it. Now I finally made the time to read them, and had a blast the whole time. I shouldn't have waited so long to crack these books open. I started off with Seven Languages in Seven Weeks by Bruce Tate, and then quickly moved on to consuming his follow on book, Seven More Languages in Seven Weeks, co-authored with Ian Dees, Frederic Daoud, and Jack Moffitt. It's not as hard as it would seem to learn about so many languages in such a short amount of time, as long as you already have a few under your belt, because really the hardest programming language to learn is the second one. After you overcome the confusion of holding two different languages in your head, it becomes much easier to add another and another and another. The differences get slotted into your brain more readily, and the major hurdle becomes figuring out how to use the new paradigms and features that you run up against. Let's see how these books handled presenting all of these different languages and smoothing the shock of moving from one language to another in rapid succession.

Seven Languages in Seven Weeks front coverVS.Seven More Languages in Seven Weeks front cover

Seven Languages in Seven Weeks


With such an ambitious goal crammed into 300 pages, Bruce Tate certainly had to take some shortcuts with this book. Those cuts included any installation instructions beyond a link and a version number, detailed descriptions of the literals, operators, and control structures of each language, and extended tours of the standard libraries. There's just no time for that crap, and it's expected that if you're reading a book like this, you've been around the block a few times and can either figure out how to write basic lines of code in any language on your own or you know how to google it. There are more important things to cover for these languages.

Each of the seven languages gets its own chapter, split into three days. The first day introduces the basics of a language with some quick examples and an interview with the language's creator. The second day starts covering the unique aspects of the language and gets further into the programming model. The third day usually gets into the concurrency aspects of the language, if it has special constructs for concurrency, or some other special aspect of the language, like metaprogramming in Ruby or monads in Haskell. At the end of each day Tate gives some good exercises to help solidify the ideas presented for that day and lead into the next day.

The discussions were great—concise and to the point while also being clear and extremely helpful for understanding the difficult parts of each language. To make the material even better, all throughout the book the languages are compared with popular movies. It was entertaining to see Tate go from Ferris Bueller's Day Off to The Princess Bride to The Matrix without missing a beat. I never knew which movie reference would pop up next, and it made me keep plowing through for more. It was a wild ride. So what were the seven languages covered?

Ruby
First off was a language I already knew pretty well. Ruby is a beautiful language that achieves its goal of making programmers happy. It's probably my favorite language of all the ones I (now) know. It's a straight-up object-oriented language where everything is an object, including literals and operators. Tate covers duck typing, code blocks, mixins, the almightly Enumerable module, and of course metaprogramming. In three short days you can really get a sense of what makes Ruby a great language for programmers.

Io
Io is a prototypical language, meaning everything is an object, but there are no classes. Objects are derived from other objects and then changed by adding parameters and functions to slots in the object. It's quite a small language without many extra features or syntax, but it is definitely a flexible language. The programmer has complete freedom to change how objects behave by changing their base functions. It took me a little while to wrap my head around how to program in this language, but it was very satisfying to figure it out.

Prolog
This language is probably the weirdest one in the set. Prolog is a pattern-matching (a.k.a. logic programming) language that excels at certain types of problems like scheduling and natural-language processing. Instead of a program being made up of expressions and executing statements in a sequential order, Prolog programs are made up of facts and rules, and the runtime environment solves for the rules given the facts and a question posed to it by trying different combinations of values for the free variables. It's a fascinating language. Mind-bending, but fascinating.

Scala
Scala is a hybrid language that is equal parts object-oriented and functional. It's the modern day equivalent of C++ for hybrid procedural and object-oriented programming, and it runs on the JVM so it has access to the entire Java edifice. Bridging these two programming paradigms makes it an important language to watch, but I could tell Tate thought it was rather boring. This chapter was the dullest of the bunch, and programming in Scala seemed fairly straightforward using either paradigm, compared to many of the other languages.

Erlang
Erlang is built on top of Prolog, so it retains much of the same weirdness of Prolog's pattern-matching logic programming paradigm, but softens it somewhat. What makes Erlang unique is its incredible robustness for highly-concurrent programs. Instead of threads, Erlang spawns lightweight processes for each task that needs to run in parallel, and those processes can be monitored and quickly restarted if they fail. It's a compelling concurrency model. You just have to get over the Prolog roots.

Clojure
Here it is—the one Lisp language of the set. Clojure runs on top of the JVM, like Scala, but it takes the path of a functional language. Personally, I love programming in Lisp. It has a certain elegance and expressiveness that other languages can't duplicate, and it's great to see a version of it have a chance at wider adoption in Clojure. It even eases the code syntax a bit by removing some of the parentheses. This chapter was especially enjoyable to work through.

Haskell
Tate saved the most challenging language for last. Haskell builds on many of the features of the other languages with pattern-matching, lazy evaluation, and list comprehensions. It is strongly-typed like Scala and uses type inference to take much of the burden of specifying types off of the programmer. Haskell's type system is truly legendary, and this chapter only scratches the surface of it. Haskell's also a purely functional language, so monads are needed to handle I/O and mutable state. I feel like I barely caught a glimpse of this language, but this chapter has motivated me to learn more.

I had such a blast going through this book and learning all of these languages, many of which I've been meaning to take a look at for some time. This book allowed me to do that efficiently, and now I know what I want to explore in more depth. While I wouldn't say I learned any of these languages in any detail, I was able to see the strengths and big ideas surrounding each of them, and I have a better sense of which languages are well suited for different kinds of problems. Sometimes that's half the battle of solving a problem. This book is a phenomenal resource for quick tours of different languages and programming paradigms. I can't recommend it highly enough.

Seven More Languages in Seven Weeks


Whereas in the first book I had at least known of all of the languages and was already fluent in one of them, nearly all of the languages in this book I had never heard of before, save one: Elixir. That ended up not mattering much, since almost every language was related to one that I already knew in some way. That meant I could slot the various programming models into my brain based on how they compared and contrasted with other languages. Not knowing of them before hand didn't make any difference in being able to learn about them during the course of the book.

I certainly learned plenty of new things as I went through the book, but by now you may be wondering, why am I subjecting myself to this onslaught of languages between these two books? As Bruce Tate explained in the introduction:
Each new language exposes you to a vocabulary, but not one of words. This new vocabulary is composed of the ideas that you use to shape your world. Though the precise syntax will almost certainly not commute from your sandbox into your production solutions, you'll see that many of the idioms do.
Different languages excel at different things. They have different programming models, and different things that they make easy or hard to do. They have different ways of solving problems. Learning about those different ways of doing things makes every program you write better because you can bring more resources to bear on the problem, even if you don't get to use the language that would be best suited to it. With that perspective in mind, let's see which languages this cadre of authors chose to explore.

Lua
Lua is a scripting language in the truest sense of the word. It's commonly used as the scripting language for video games and big scriptable applications. It runs almost anywhere, and is commonly used in embedded systems as a higher level language than the old stalwart embedded workhorse, C. It also integrates easily with C, and they showed how to do exactly that on day 3 of this chapter. The overarching abstraction in Lua is the table. Everything in the language is a table, and data and functions are added into an object's table to enable state and behavior. Tables even have metatables that allow the programmer to write their own programming models and override basic language behavior. It's an amazingly flexible paradigm for a language.

Factor
This language was the weird one of the bunch for this book. Factor is a stack based language as well as a functional language. While most functional languages use prefix notation (+ 1 1), and most other languages use infix notatation (1 + 1), because of the stack, Factor uses post-fix notation (1 1 +). Prefix notation is hard enough to switch to, but post-fix notation will melt your brain. It took awhile to get the hang of mentally parsing the code, and I don't feel like I truly grasped the advantages of this stack language. It was a fascinating exercise trying to learn it, though, and I'm glad it was included.

Elm
Elm was created specifically to bring some sanity to client-side JavaScript programming. It's a strongly-typed functional language that compiles to JavaScript, and is intended to be used for user interface development. The killer feature that makes Elm so interesting in this regard is signals. Instead of using callbacks to write asynchronous UI code in the browser, Elm programmers can configure signals that are generated by various interface elements and can be received by other code in the program to initiation relevant processing. It's a welcome escape from callback hell, and a really clean programming model for the browser. If only the language would hold still for a little while. It had changed significantly between the writing of the book and now, so it took some time to get certain parts of the code examples working.

Elixir
What I knew of Elixir already was that, like Ruby, it has a ton of syntax sugar to make code compact and beautiful. That's true, but it's not all. Elixir is built on the Erlang VM, so it comes with the same robustness and safety for concurrent programming that Erlang has refined for decades, as well as access to the Erlang libraries. Elixir is also a functional language, and adds other fresh programming features like the pipe |> operator for chaining functions together and for comprehensions, which are kind of like list comprehensions on steroids. To top it all off, Elixir has a powerful Lisp-like macro system to enable metaprogramming.

Julia
Julia is meant to be a scientific programming language in the same vein as MATLAB, R, and Python (well, Python is not specifically for scientific programming, but it's heavily utilized for that purpose). Julia is a dynamic language, but it's compiled so it doesn't suffer from the same performance slowdowns as the other interpreted languages. The goal is to get scientific computing performance from an easy to use language, and Julia makes some interesting trade-offs there. It also has plenty of syntax sugar for doing linear algebra and DSP calculations. I'll be curious to see if it makes any inroads into the machine learning space.

miniKanren
This language is the logic programming language of the group, but it doesn't have the weird syntax of Prolog. It's built on top of Clojure, so it has the weird syntax of Lisp instead. The neat idea with miniKanren is that because it's layered on top of Clojure, it's a logic-and-functional programming language, and that combination greatly increases the problem space for which it's well suited. Clojure can be used for program I/O and pre- and post-processing, and miniKanren can be used precisely where it shines with solving logical problems cleanly and efficiently. Another fun fact is that miniKanren is an implementation of the logic programming language developed in The Reasoned Schemer, which is another book I've been meaning to read.

Idris
The final language is another pure functional language with a strong type system, like Haskell in the previous book. They always save the most complicated language for last, don't they? Idris is written in Haskell, and it takes Haskell's type system to the next level with dependent types. This type system enables new kinds of type-checking sorcery by specifying that a vector type must be a certain length, for example, or that the output matrix must have the same dimensions as the input matrix. Types can even be dependent on operations of other types, so we're really programming in types here. I'm not sure, but Idris' type system might be Turing complete in and of itself.

The format of these seven chapters was fairly similar to the last book, but with four different authors, the tone was a bit different. The analogies with movies were still there, although I would say they weren't quite as entertaining. Instead, on each third day the authors showed the reader how to implement something relatively significant in the chosen language, and that exercise was quite satisfying. From a mini-game with bouncing heads in Elm to a rudimentary JPEG compression algorithm in Julia, the programming tasks they came up with were good and showed off the strengths of each language. It's another highly recommended book on multiple languages that was extremely well done.


So did I learn fourteen languages in four weeks? No, of course not, but that's not the point. All four authors from the second book said it best near the end of the book:
Some will try to tell you that this journey is worthless, that you can't truly learn a language in seven days any more than you can learn Italian by eating at the Olive Garden once a week. If you've worked through these exercises, you know different. Traveling for the sake of traveling is not worthless. True, on your brief trip you've not yet accumulated the fluency of a permanent resident, but you have been there.
I've learned a ton of new things from these two books and fourteen languages. They were all so different that the number of ideas covered was incredible. I had no idea that the world of programming languages was so rich and varied, and I've come away from this experience wanting to learn even more. I'm certainly going to explore Clojure, Prolog (or miniKanren), Elixir, and Elm more deeply, and I may even delve into Io and Haskell if I can find the time. These books have shown me much more of the map, and that it is filled with fascinating destinations. Now I know better where I want to go.

Sunday, February 23, 2020

Dead Or Alive 6 Review (XB1)

Written by Anthony L. Cuaycong


Developer: Koei Tecmo Games Co., Ltd.
Publisher: Koei Tecmo Games Co., Ltd.
Genre: Fighting
Price: $59.99
Also Available On: PS4, Steam



Considering that the Dead or Alive franchise first came about due to necessity, it couldn't but have drawn inspiration from successful titles in its genre. Pressed to produce a videogame that would prop up Tokyo-based Tecmo's flat sales figures, designer Tomonobu Itagaki saw fit to survey the landscape and take what he felt were the most popular features of the best titles on the market. Dead or Alive, the result of his exertions, combined aspects found in such notables as Sega's Virtua Fighter, SNK's Fatal Fury, and Midway Games' Mortal Kombat series. And, even as it was so named in reference to his do-or-die mandate, it took coin-operated machines by storm in 1996 and promptly spurred work on Sega Saturn and Sony PlayStation versions.




That Dead or Alive gained a foothold in the already-crowded arcade scene despite the pressure on Tecmo to produce a hit speaks to the polish of Itagaki's creation. Setting out to mesh disparate elements and make them work is much easier said than done; the industry's history is littered with examples of failures to pluck juicy fruits from low-hanging branches. In this regard, it proved the exception to the rule. It tried to cast as wide a net as possible, seeking to entice newcomers with cutting-edge graphics and longtime fighting-game fans with gameplay depth — along with a twist: It aimed to bank on its three-dimensional presentation for visual provocation, showing fighters in skimpy attire and, more tellingly, employing exaggerated physics to show bouncing bosoms.

For all the obvious objectification, Dead or Alive was a certified hit. It sparked controversy, got the attention it sought, and then made gamers stay on for more because of its sheer complexity. It separated itself from the competition by pushing the envelope on both fleeting visuals and lasting value. It may have appealed to baser instincts to catch the attention of otherwise-occupied consumers, but it most definitely relied on far more crucial elements to get them to keep dipping on the well. It found a winning formula, and not surprisingly replicated it in subsequent releases for the main series, and even for spinoffs.




Close to 25 years later, Koei Tecmo continues to adopt the same tack. As the fifth sequel in the series, Dead or Alive 6 again follows the exploits of familiar characters, again banks on their outsized manifestations, and again thrives on the intricacies of its interface. At the heart of its differentiation is its utilization of offensive and defensive "hold" — as opposed to the traditional, and purely passive, "block" — mechanics, which afford gamers four options to counter specific attacks given proper timing. Active commands in Dead or Alive provided freshness to the genre, and, in its latest iteration, remains the series' single biggest come-on.

At the same time, Dead or Alive 6 ramps up its visual effects, tapping slow motion to highlight crucial movements, accentuating character reactions during fights, and affording gamers the luxury of adjusting sexiness and violence levels to their preferences. Interestingly, it likewise increases its attraction to neophytes by introducing the Fatal Rush mechanic, which rewards button mashing with the execution of a simple combo at any given time, and of a Critical Blow when the Break Gauge (essentially an attack meter) is full. Needless to say, these serve to put to the fore its proactive predilections; such seemingly neutral maneuvers as crouching and sidestepping become preambles to forward thrusts.




Dear or Alive 6 takes fighting seriously, and thus goes through extra lengths to make sure gamers are fully apprised and completely aware of move lists and how to consummate them. There are three — yes, three — training modes to prep them for collocated or online matches, DOA Quest being the most interesting with a unique carrot-and-stick approach to foster learning; rewards by way of character costumes are unlocked following the mastery of instructions, earned through the fulfillment of set objectives. Which is to say education comes by way of what is akin to the Story Mode, but without the story.

Speaking of the narrative, Dead or Alive 6 picks up from where its immediate past predecessor left off. All the main characters are back, with developments on their end told separately. The disjointed exploits, including those of the new additions to the roster of fighters, don't always tie up in the end, but there can be no denying the purpose they serve in enriching the series lore. Creditably, the cutscenes are well-produced, with the audio-visual presentation complementing the game's technical proficiency.




Taken as a whole, Dead or Alive 6 is a testament to the efforts of Team Ninja to improve on the franchise and subsequently present a title that appears to have everything for everybody. Whole slews of options are at gamers' disposal — from the characters to their fighting styles to their moves to the manner in which familiarity with them can be gained. it even offers, albeit at a whopping price tag, a season pass that offers more content for completionists. Proficiency requires not considerable investment of time and effort, but the inordinate degree of handholding en route to the inevitable payoff makes them worthwhile.



THE GOOD:
  • Outstanding fighting mechanics
  • Tons of options presented to gamers
  • Tutorials abound, allowing newbies to hit the ground running

THE BAD:
  • Disjointed narrative
  • Still too much fanservice
  • Some unlocks have extremely difficult hurdles



RATING: 8.5/10


Thursday, February 20, 2020

Up Against The Wall - 1944 Scenario AAR



The problem with having a lot of figure collections is not being able to use them very often, I try and get round most of the stuff I have at least once a year but my 6mm WW2 has been away too long (April 2016) so it was about time we continued our journey from D-Day to the Assault on the Rhine.

Scale 6mm, Rules Homebrew based on Korp Commander by Bruce Tea Taylor, figure scale approx 1:4.

Based on a scenario from the book White Star Rising, scenarios for Spearhead published in 1997.

A King Tiger waits for its prey on the edge of the village
Historical Background

12th Sept 1944 near Aachen Germany - it's been just three months since the landings and after a slow start it's been a wild ride to get to here but things have been slowing down. Montgomery in Holland and Patton against the Vosges Mountains.

Here in 1st Army sector the going is easier, the plan to punch through the lightly held Siegfried Line and maybe even reach the Rhine, after all the Germans haven't got anything left..... have they ?


The table is 8ft x 6ft and is shown above, you should be able to see all the main features.

Germans set up hidden anywhere to the left (as viewed) of the line of hill, field, hill, field hill on the far right (apologies for adding humour) of the table. Germans set up on numbered counters with 1 blank counter for each real one.

Americans enter the table anywhere along the right table edge.

The Westwall runs along the left hand side of the table.

The game is decided by a points count up after 15 turns.


American Forces

The game will be decided on points you will receive 5pts per town sector held at the end of the game. 2pts for each AFV destroyed and 5pts for any enemy Battalion routed.

Initial Wave consists of 2 Tank Battalions (Morale 5) each with,

BHQ 2 x M4A3E8 Str 5, Recce Company Inf in Jeep Str 3
Gun Co M8HMC Str 3 and a Mortar Company M21 Sgt 3
2 x Tank Companies with 3 x M4A3 Str 5
1 x Tank Companies with 3 x M4A3E8 Str 5
1 x Tank Companies with 3 x M24 Str 5 (Second Battalion has M5s)
Attached 1 Tank Destroyer Company with 3 x M36 Str 4


2 x Armoured Infantry Battalions Morale 5

BHQ in M3 Str5, Recce Company Inf in Jeep Str 3, MMG Coy 3 x MMG in M3
Gun Coy M7 Priest Str 3, Mortar Coy M21 Sgt 3, AT Coy 2 x 57mm AT & Tow Str 5
3 x Inf Companies each with 3 x Inf mounted in M3 Str 6

On table Art 3 Batteries of M7 Priest Str 6

Off table Art, 1 Battery of 8" How Str 6 and 3 Batteries of 105mm How Str 6


Reinforcements

Any remaining assets from a standard US Armoured Division at the time so 1 Tank Battalion, 1 Armoured Infantry Battalion, Recce Battalion, Engineer Battalion, Artillery Battalion (2 Companies left) at a rate of 2 Companies per turn anywhere on the US baseline. Once a Battalion is committed all of its companies must be activated before another Battalion can be selected.

Air Power



Each player rolls 1d20 and any score over 15 will bring a supporting flight of aircraft. Roll a second dice on any success with a 50% chance of receiving a flight of rocket armed Typhoons if not a flight of CAP arrives over the table, they will remain over the table for 6 turns and may perform 1 gun attack on a ground target as they leave.

German Forces



The German player scores 2 points for each enemy Rifle Platoon Killed, 1 point for each Tank Platoon Killed, 10 points for each enemy Battalion routed.

81st Korps Tank Reserve Morale 8
1 Company of 3 x Tiger II tanks Str 4
1 Company of 3 x Jagdpanther Str 4
2 Companies of 3 x Jagdpanzer IV/70 Str 4


48th Volksgrenadier Regt Morale 5

RHQ Str 5 in Horsch Car, Recce Company Inf on Bicycle Sgt 3
Gun Coy 120mm Mortar Sgt 8, Engineer Platoon 3 x Engineer in Sdkfz 10

2 Battalions each with
BHQ Str 4, 81mm Mortar Str 4 and 75mm Infantry Gun Str 6
3 Companies each with 2 x V Gren Str 7

Set up as described above, there is no off table artillery, all German players will receive 1 roll of a d20 per turn with the Luftwaffe turning up on a 20. Roll for type as American.


How did we get on 

This is quite an interesting game with the Germans having all the Gucci toys but the Americans having all the resources. The Germans set their main line of defence down the centre of the table from the large wood in the foreground of the set up shot across the villages using the Armoured resources to form killing grounds in front of the terrain whilst the Infantry waited in Ambush in the cover.

Tigers spotted
The American Players, uncertain of the location began their attack with two main lines of attack. One against the hill nearest the camera on the set up shot, commanded by myself. My plan was to push forward in the centre with my tanks whilst rushing my APC borne Infantry round the wood to flank the hill, leaving my M36 Tank Destroyers on the hill behind on Overwatch. Let's call this the Left Column.

Left Column Advance
The second column pushed forward around the hill and woods in the centre of the American lines, the Infantry heading for the wood, the Tanks for the two section village. I will call this the Right Column.


Both columns came under heavy fire as soon as they broke cover, the Left by a Company of Tiger II, the Left by some Jagdpanthers on a hill and the JpzIV in the village.

Casualties were as expected quite heavy, especially on the right where the Americans were caught in the open as shown in the above. However the main German Armour had been located, it just needed the Air Force to turn up.

German AA waiting .........and waiting 
The problem was it didn't turn up enough and when it did it was CAP and not Ground Attack ! But that's the dice for you. The Luftwaffe wisely didn't turn up at all, it wouldn't have got anywhere anyway as there was around 20 Spitfires over the table waiting for something to chew up.


The American Infantry on the left got into the woods in strength driving out the Volks Grenadiers who had been holding out in there, this allowed them to start turning the flank of the Tigers. On the other side of the table the Americans had brought on their ACAV battalion and scores of Jeeps Greyhounds and M5s started to pour down the right flank.


The game ended after a couple of our evening sessions and all that was left to do was add up the points.

German Losses

6 Tiger II, 6 Jagdpanzer IV, 3 x Recce, 3 x 75mm Infantry Guns and 9 Infantry

24 points to the Americans for 12 AFV kills.

American Losses

Right Flank
15th Tank Battalion 2 x Recce, 27 M4A3, 15 M4A3E8, 9 M24
613 Tank Destroyer Btn 9 x M36 Jackson
9th Armoured Infantry 3 x 57mm AT Guns and 3 Infantry
86th Armoured Cavalry 1 x M5 and 33 M8 and 2 Infantry

Left Flank
69th Tank Battalion 14 x M4A3, 16 M4A3E8
40th Armoured Infantry 2 x Recce and 12 Infantry

17 points to the Germans for 15 Tank Platoon losses and 1 Infantry loss.


A good scenario, the Germans get to shoot loads of stuff but the Americans have the upper edge in numbers. Next up in our WW2 6mm games will be a Market Garden game whilst on the table we have the next instalment of our Op Compass Campaign.

Three Gaming Interfaces To Pay Attention To

In this post, I want to discuss some gaming interfaces and user experience features in games. I will use my three favorite games for this present post, but the subject is broader and allows a bigger discussion that I intend to return to, next month.

DEAD SPACE (PS3)

In the horror-fiction game Dead Space, the interface is something to pay special attention to. The character's (Isaac Clarke) main statuses are disposed in a very strategic way: the life meter is located on his back in the shape of a spinal light, the weapon ammunition is showed as a small number when you aim the gun and, finally, the game has an interesting resource that is a luminous laser to help you easily locate the way the character must go (and it saves time in the complex scenario maze).



HERO (Atari)

This one is a relic from the beginning of the video-gaming era. HERO is an interesting case of user experience (UX) and interface with very limited constrols. Atari's joystick has only one button and one directional stick; with only two resources, HERO's designers implemented a wide range of possibilities: when you press the red button in the joystick the character uses its laser vision to kill enemies; by pressing down the control stick the character launches a dynamite do open walls and, finally, when you hold the control stick up the character flies using a jetpack. A very rich interface and UX created using minimal resources.



Entwined (PS4)

One of my favorite indie games Entwined is a great case of interface and usability. All the gameplay is based on how you can manage the two control sticks from PlayStation's joystick. During the whole experience, you must control the two mystic entities by only using circular movements; the user experience is focused on coordinating two different positions simultaneously (a challenge to your dexterity). Entwined is an incredibly created game, using only circular movements in two control sticks, a master class of game design.



On the three cases related in the post, we can clearly see the ideas of how games must strategically use concepts from the user experience field. To finish this conversation I want to share some content from the site nForm about this subject:

"The user experience is not one simple action – it is an interconnected cycle of attempting to satisfy hopes, dreams, needs and desires. This takes the shape of individuals comparing their expectations to the outcomes generated by their interaction with a system. Managing expectations then becomes key to successfully providing a satisfying "return on experience" that delights users and generates shared, sustainable value".

#GoGamers

[The Hacker News] Deal: Cloud And Networking Certification Training ~ Get 97% OFF

Deal: Cloud And Networking Certification Training ~ Get 97% OFF

Wednesday, February 19, 2020

Kanto Underground

During my visit with Poké Maniac Bill, he mentioned a Pokémon tournament that was being hosted in Vermilion City. He had been invited to attend, but his illness was currently preventing him from traveling. He'd given his tickets to some other trainers, but assured me that if I made it in time they would consider me a contender with two gym badges. So after acquiring the Cascade Badge from Misty, I decided my next destination in Kanto would be Vermilion City. The tournament was held aboard a luxury cruise ship named the S.S. Anne where it was being hosted to entertain passengers with displays of Kanto Pokémon and its trainers. Local trainers were organized into tiers and allowed to battle the crew, interested passengers, and each other for various prizes. Key among the prizes was a Hidden Machine, a secret technical machine, that allowed certain Pokémon the ability to learn useful skills that they wouldn't otherwise have access to. This one in particular was owned by the captain of the S.S. Anne and was able to teach lucky Pokémon how to adeptly cut through overgrowth. I was interested to say the least.
Just south of Cerulean City lived a kind old man in a secluded homestead offering a Pokémon Daycare service. This kind of small business is a lot more widespread nowadays, but back then it was a bit of a novelty. He allowed any trainer registered within the Indigo League of Kanto to leave one Pokémon in his care for a nominal fee. I had never heard of anything like this at the time, but after our brief conversation, I used Bill's transfer system to bring Charlie out of storage and into the old man's care. At the daycare, he would get lots of exercise and activity and be allowed to play and train with other Pokémon instead of just waiting in storage. It seemed like a really good way to get him some extra training in case anything unspeakable ever happened to Kiwi. The old man assured me that he'd been doing this for a long time now and Charlie was in good hands.
I was attacked by some wild Pidgey on Route 5, but I decided to save my Pokéballs for better options since I had Kiwi and Charlie as members of Team Fox. It didn't seem prudent to waste the resources on a third fighting Pidgey. It was during this time between Cerulean and Vermilion that I was starting to think about the future battles. I had to be careful with upcoming Gym Leaders and at the Indigo Plateau and I had to plan accordingly. After passing on acquiring a new Pidgey on Route 5, I made an effort to avoid more wild encounters in the future unless I was ready to add a potential candidate to my team. The way I was training my Pokémon meant that every new capture had to be strategic going forward. An army of Pidgey weren't going to win me the rest of my battles.

I was pretty oblivious to this at the time, but the region of Kanto was in a bit of upheaval the first time I was there. As I mentioned, I wasn't really aware of Team Rocket much before my unfortunate encounter with them at Mount Moon. I didn't realize what a hold they had on the region. I also didn't realize that things were changing rapidly since their operation at Mount Moon crumbled. For a long time the organization moved in the shadows, acquiring Pokémon and using them for illegal activities without drawing much attention to themselves, but things were now changing since two local trainers had them riled up. I mention it now because typically moving south from Cerulean, you would end up in Saffron City before heading to Vermilion City, but Saffron was under a bit of a lock-down thanks to Team Rocket activities. Police sentries were posted on all sides of the city and were not allowing anyone in or out of the city. They tried to explain the situation to me the best they could, but I really didn't understand the gravity of it and they got impatient trying to explain to me why I needed to get to Vermilion another way.
This other way was an underground passage originally intended to be developed into a subway system to and from Saffron City. It's development had been abandoned due to escalating economic tension between the local government and Team Rocket. It now served as a convenient, although shady, underpass between Cerulean and Vermilion, as well as Lavender Town and Celadon City. You could bypass Saffron City entirely this way. The path was reasonably lit and maintained by local volunteers. Pokémon battles were prohibited and efforts were made to repel Pokémon from infiltrating the path as long as it was needed. Apparently Saffron had been cut off from the world for some time in order for this to have been as well established as it was, but again I was ignorant of the state of affairs in Kanto at that time. I merely enjoyed an uninterupted stroll underground, picking up various shiny objects I happened upon.

I arrived in Vermilion City sometime in the evening. I managed to secure a place to sleep for a few nights and then set out to learn what I could about the local Pokémon scene. I could see the S.S. Anne to the south all lit up like an angry Electrode. Tomorrow I would have to find a way to get into the tournament aboard and hopefully earn my access to that Hidden Machine, but I did have a few other concerns. The gym leader in Vermilion was not a push-over and he favored electric attacks above all else. It earned him his nickname as Lt. Surge. As it stood, my team consisted mostly of flying Pokémon who would easily be burst out of the sky by a well placed thunderbolt. Kiwi, Lucky, Vesper and Shakespear were all going to be huge liabilities in the Vermilion Gym. Arnold had recently evolved on his way south through Route 5 and 6, but I wasn't sure that my powerful Gloom could stand up to the kind of voltage Lt. Surge was known to put out. It seemed clear that Arnold and Rascal Jr. Simply weren't going to be enough to ensure a victory here in Vermilion. If I were going to get a new Pokémon, then the battles aboard the S.S. Anne would be a great training ground for them, so I set out that evening to add one more friend to my roster.
Vermilion City is the busiest port in the Kanto region and naturally surrounded mostly by water. Water-based Pokémon weren't going to stand a chance against Lt. Surge when I went to face him, so I had to look somewhere else. I had overheard that just beyond the city limits was a small rock tunnel the locals called Diglett's Cave, because it had been dug out by a large colony of Diglett and Dugtrio. Though it was a bit unsettling to crawl into their nest, I knew a Diglett or a Dugtrio would be the perfect addition to the team and the perfect counter to Lt. Surge. Their ground affinity would make them immune to any electric attacks Lt. Surge could throw at them. So despite my apprehension and the apparent dangers of crawling into a Diglett tunnel at night, I felt I had no choice.

Almost instantly I was assaulted by a Diglett who did not like me mucking around in his home. He was a quick! It was tricky to pin him down with my team. Lucky was able to put him to sleep with the powder off his wings, and it took a few balls to snag him without causing him to faint. Fortunately, we captured Douglas before any reinforcements could arrive and we made a hastey retreat from Diglett's Cave. Douglas replaced Shakespear on my team since official Pokémon League rules only allowed a trainer to carry a maximum of 6 Pokémon. Shakespear would rest comfortably in Bill's Storage System while Douglas stayed with me to train up for the Vermilion Gym. I slept easy that night knowing that Douglas would secure my victory against Lt. Surge and all I had to do now was get aboard the S.S. Anne to do some intensive training - and get my hands on that Hidden Machine.

Current Team:
Attacks in Blue are recently learned.



Bill's Storage: Shakespear (Spearow)

Old Man Daycare: Charlie (Pidgey)

[IACR] ePrint Report: Strong Anti-SAT: Secure And Effective Logic Locking

ePrint Report: Strong Anti-SAT: Secure and Effective Logic Locking

Thursday, February 13, 2020

Brave Browser the Best privacy-focused Browser of 2019



Out of all the privacy-focused products and apps available on the market, Brave has been voted the best. Other winners of Product Hunt's Golden Kitty awards showed that there was a huge interest in privacy-enhancing products and apps such as chats, maps, and other collaboration tools.

An extremely productive year for Brave

Last year has been a pivotal one for the crypto industry, but few companies managed to see the kind of success Brave did. Almost every day of the year has been packed witch action, as the company managed to officially launch its browser, get its Basic Attention Token out, and onboard hundreds of thousands of verified publishers on its rewards platform.

Luckily, the effort Brave has been putting into its product hasn't gone unnoticed.

The company's revolutionary browser has been voted the best privacy-focused product of 2019, for which it received a Golden Kitty award. The awards, hosted by Product Hunt, were given to the most popular products across 23 different product categories.

Ryan Hoover, the founder of Product Hunt said:

"Our annual Golden Kitty awards celebrate all the great products that makers have launched throughout the year"

Brave's win is important for the company—with this year seeing the most user votes ever, it's a clear indicator of the browser's rapidly rising popularity.

Privacy and blockchain are the strongest forces in tech right now

If reaching 10 million monthly active users in December was Brave's crown achievement, then the Product Hunt award was the cherry on top.

The recognition Brave got from Product Hunt users shows that a market for privacy-focused apps is thriving. All of the apps and products that got a Golden Kitty award from Product Hunt users focused heavily on data protection. Everything from automatic investment apps and remote collaboration tools to smart home products emphasized their privacy.

AI and machine learning rose as another note-worthy trend, but blockchain seemed to be the most dominating force in app development. Blockchain-based messaging apps and maps were hugely popular with Product Hunt users, who seem to value innovation and security.

For those users, Brave is a perfect platform. The company's research and development team has recently debuted its privacy-preserving distributed VPN, which could potentially bring even more security to the user than its already existing Tor extension.

Brave's effort to revolutionize the advertising industry has also been recognized by some of the biggest names in publishing—major publications such as The Washington Post, The Guardian, NDTV, NPR, and Qz have all joined the platform. Some of the highest-ranking websites in the world, including Wikipedia, WikiHow, Vimeo, Internet Archive, and DuckDuckGo, are also among Brave's 390,000 verified publishers.

Earn Basic Attention Token (BAT) with Brave Web Browser

Try Brave Browser

Get $5 in free BAT to donate to the websites of your choice.