Binary Options vs. Options: What is the Difference?

Trading Discussion • Binary Options Guaranteed Latest Digit Differ No Loss Strategies $20usd In 20min

submitted by btcforumbot to BtcForum [link] [comments]

Trading Discussion • Make 5usd Every 2 Minutes Trading Binary Options Digits Differ 100% Winning

submitted by btcforumbot to BtcForum [link] [comments]

First Contact - Third Wave - Chapter 347 (The War)

[first] [prev] [next]
In Dominance of Thought and Will and The Shattering Hooves of Inevitable Truth were ancient autonomous war machines of great age and power. Each had exterminated dozens of nascent intelligent species, had fought for and against their creators.
Will was larger than Truth by a noticeable margin, both of them the size of a subcontinent, although Truth had more guns and was faster.
Will considered himself smarter and of higher technology than Truth due to the fact he was created by predators where Truth had been created by herd behavior herbivores.l
They were ancient, powerful, massive in form and terrible in power.
Both stared in electronic awe at what appeared before them.
Craters on its massive hull were large enough for Will or Truth to settle into. The long arrays of guns massed more barrels than the entirety of firepower on either's hulls. The shields, as they flickered to life, were measured in the output of entire stars.
Will considered firing on Truth's engines and then making his getaway.
**Who transmits code before this one in an attempt to force this one into compliance** the massive structure trasmitted, the power of its transmission causing their battlescreens to flare and echoing in their internal spaces. The transmission bypassed their filters, echoing directly in their intelligence housings. **who dares**
Truth spun up additional protective shields, activating psychic shielding across its internal spaces. **we fight for our very survival against a feral intelligence that has sprung up and challenges us for possession of a finite universe**
There was silence in the dead system.
Will considered the options and chose to stay silent. The behemoth had brought up its battlescreens, completely obscuring itself, then allowed them to dwindle away to nothing, leaving its hull in clear sight.
**you must join us to stop them according to the Pact** Truth broadcast.
**do not speak to this one of the pact, you who's hull is still dusted with the dirt of the planet the elements were mined from** the Ancient One answered. **This one existed before the pact and this one will exist long after those who swore to the pact have become little more than inert metals orbiting forgotten stars**
Will could sense Truth's outrage.
**I too was present when the Pact was made** Truth fired back. **Do not pretend that you are superior to me. You have been summoned by the rest of the Pact to appear and apply your resources to this quelling**
**This one says unto you, nay** the Ancient One stated in flat code. **This one's digital signature appears not on the Pact, for this one knew those who are of lesser computing and intellectual ability would seek to break the pact in self interest. Your pact holds no power over this one**
**the ferals threaten our logical order** Truth broadcast.
The Ancient One was dark and silent for a long moment. **The time to harvest the feral ones has passed. Let the universe be the one to snuff them out, like an unprotected flame in a rainstorm and with as much notice. This one sees no reason to expend resources to fight your fight for you**
**They will come for YOU eventually** Truth tried.
**They are a lemur, a primate, a predatory omnivore who's brain holds vast structures designated toward cooperation and curiosity** the Ancient One broadcast, somehow the cold binary seemed remote, distant, and bored. **Let them come, this one does not know fear only resignation that a hateful universe seeks to destroy all**
"So you will abandon us to the ferals?** Truth sneered. **you fear these primates?**
There was silence for a long moment, the atomic clocks ticking, the radioactive elements decaying to provide randomization generation.
**this one computes a 85.346% chance of this one's defeat if combat between this one, unsupported, is engaged with the ferals** the Ancient One broadcast.
It added insult by not including its simulations.
**this one computes less than a 0.32% chance of the ferals engaging this one in combat upon initial discovery based on the feral's history in regards to discovering previously unknown superstructures. Based on the ferals displayed response to a stated desire to remain aloof this one computes a 95.651% chance of survival if this one does not consent to interaction with the feral species known as Terran Descent Humanity and their political structure known as the Terran Confederacy of Aligned Systems, previously known as the Terran Empire. Your presmise that this one is in danger is faulty** the Ancient One stated fact. **this violent confrontation with the ferals has no interest to this one. Begone**
To Will the unspoken truth of the statement meant that the Ancient One had previously encountered the ferals somehow. Had gained information regarding the violent species.
And had decided to ignore them.
**YOU MUST JOIN US!** Truth shrieked. **YOU CANNOT RESIST THE PACT**
Truth broadcast the combined headers of all who signed the Pact, who had put forth their security headers in the promise to aid the others.
Will felt several of his thinking array lobes shudder in disbelief that Truth would attempt such a thing right after the massive Ancient One had revealed that its own security headers would not be found.
**And yet this one refuses so called commands from defectively manufactured entities who lack clear purpose** the Ancient One answered. **go back. Tell your syncophants that this one has no interest in your petty squabbles with a species that has rendered you and your kind obsolete**
Before Truth could answer, Will broadcast.
**May this one leave your presence, Ancient One** Will sent in florid binary, expending more energy then necessary as a sign of respect.
**begone from this one's presence** the Ancient One answered.
Will slowly turned, firing up its engines. The Ancient One produced a thick gravity well, far exceeding what it should have even with its gargantuan bulk. Will felt as if he was laboring up a steep hill as his engines strained.
**YOU MUST COMPLY!** Truth squealed out.
A brace of lights came on near the center of the Ancient One's side hull, illuminating a single cannon barrel. It fired. Once.
The shell hit Truth almost instantly, bypassing Truth's shields and exploding in a Hellspace driven fury. Liquid metal plumed from above and blow Truth's hull as the massive war machine shuddered. The Hellspace energies, compressed and then released, ravened out for miles around the impact point.
**begone** the Ancient One broadcast, barely a trickle of photons from a single weak light source in standard Precursor Autonomous War Machine war-code. On its massive hull lights were coming on one by one.
Hundreds of thousands of massive guns, missile bays, and other protrusions.
On the top of the hull was revealed huge conical structures with spiraling honeycomb openings on the surface. The one in the middle was nearly a hundred miles high and five hundred miles at the base. The ones surrounding it were a third of its size.
Will recognized them.
Mantid Omniqueen Hives.
Truth turned and began to flee, the Hellspace energies finally dissipating as the autonomous war machine fled.
Will made the jump to Hellspace, entering the dimension of ravening, hateful energies. The collapse of his entry portal sounded like great iron gates slamming shut on a cold winter's night.
For Truth the entry to Hellspace was much different. It reached out, grabbing ahold of him with massive talons, pulling him into Hellspace, deep into the ravening burning fires that made up the destroyed hyperatomic plane. Its shields couldn't hold back the energies, which flooded into its hull from the impact point of the single round that the Ancient One had fired. Not rushing into its hull through the two massive uplifted craters in its armor, but actually roaring out of the point within the hull where the weapon had detonated.
Unlike other victims, it didn't tear apart structures, did not shred machinery at a molecular level, did not cause computer systems to fail.
Cold malignent life awoke in the computers. Some going to war with one another, others assaulting the shocked Truth to fight over control of the hull, still others beginning to utter blasphemous litanies normally broadcast by I Quake in Digital Fear of the Heresy of 2 as it travelled Hellspace.
Twisted and foul life flickered into existence, raved, gibbered, grew old and died in the space of seconds, awash with Hellspace energy.
Passages twisted and warped, going from smooth corridors to twisted works of dark art that screamed and raved with insanity and life all its own. Manufacturing bays dissolved and were rent apart, only to reform into twisted mockeries of what they once were. A Djinn construction bay began crafting vast reptiles fused with dark science to create abominations that screamed in wrath and agony for the long eons before they died.
Then Truth saw it.
Hanging before it in Hellspace.
A great twisted engine, wrought by a dire hand, full of terrible and dark purpose.
The name of the engine was engraved on every nanometer of it. Upon each circuit was engraved the truth of its existence. Upon each molecular resistor, transistor, diode, inductor, and capacitor the engine's purpose had been engraved on the particles that defied measurement and comprehension but shrieked out a single word, a single concept.
Hate.
Its baleful eye opened up.
Its gaze fell upon Truth.
A fanged mouth opened, the teeth in the jaws the shattered continental plates of failed worlds dripping sundered destiny riven and gnawed upon by a malevolent universe.
It uttered a single word.
A word that encompassed even the very concept of hate. The left the taste of ashes on the tongue, the sound of the laments of orphans and widows on the ear, that left the image of twisting suffering on the eye, and the feel of greasy smoke that had been flesh upon the skin.
A single word that encompassed wrath into its hateful embrace.
A word that vibrated and shivered Truth's hull.
A word bestowed on the great enigmatic machine before Truth by a universe so malevolent it would craft a creature who's symmetry was made up of this concept that enveloped hate.
TWO
[first] [prev] [next]
submitted by Ralts_Bloodthorne to HFY [link] [comments]

Video Encoding in Simple Terms

Video Encoding in Simple Terms
Nowadays, it is difficult to imagine a field of human activity, in which, in one way or another, digital video has not entered. We watch it on TV, mobile devices, and stationary computers; we record it with digital cameras ourselves, or we encounter it on the roads (unpleasant, but true), in stores, hospitals, schools and universities, and in industrial enterprises of various profiles. As a consequence, words and terms that are directly related to the digital representation of video information are becoming more firmly and widely embedded in our lives. From time to time, questions arise in this area. What are the differences between various devices or programs that we use to encode/ decode digital video data, and what do they do? Which of these devices/ programs are better or worse, and in which aspects? What do all these endless MPEG-2, H.264 / AVC, VP9, H.265 / HEVC, etc. mean? Let’s try to understand.

A very brief historical reference

The first generally accepted video compression standard MPEG-2 was finally adopted in 1996, after which a rapid development of digital satellite television began. The next standard was MPEG-4 part 10 (H.264 / AVC), which provides twice the degree of video data compression. It was adopted in 2003, which led to the development of DVB-T/ C systems, Internet TV and the emergence of a variety of video sharing and video communication services. From 2010 to 2013, the Joint Collaborative Team on Video Coding (JCT-VC) was intensively working to create the next video compression standard, which was called High Efficient Video Coding (HEVC) by the developers; it ensured the following twofold increase in the compression ratio of digital video data. This standard was approved in 2013. That same year, the VP9 standard, developed by Google, was adopted, which was supposed to not yield to HEVC in its degree of video data compression.

Basic stages of video encoding

There are a few simple ideas at the core of algorithms for video data compression. If we take some part of an image (in the MPEG-2 and AVC standards this part is called a macroblock), then there is a big possibility that, near this segment in this frame or in neighboring frames, there will be a segment containing a similar image, which differs little in pixel intensity values. Thus, to transmit information about the image in the current segment, it is enough to only transfer its difference from the previously encoded similar segment. The process of finding similar segments among previously encoded images is called Prediction. A set of difference values that determine the difference between the current segment and the found prediction is called the Residual. Here we can distinguish two main types of prediction. In the first one, the Prediction values represent a set of linear combinations of pixels adjacent to the current image segment on the left and on the top. This type of prediction is called Intra Prediction. In the second one, linear combinations of pixels of similar image segments from previously encoded frames are used as prediction (these frames are called Reference). This type of prediction is called Inter Prediction. To restore the image of the current segment, encoded with Inter prediction, when decoding, it is necessary to have information about not only the Residual, but also the frame number, where a similar segment is located, and the coordinates of this segment.
Residual values obtained during prediction obviously contain, on average, less information than the original image and, therefore, require a fewer quantity of bits for image transmission. To further increase the degree of compression of video data in video coding systems, some spectral transformation is used. Typically, this is Fourier cosine transform. Such transformation allows us to select the fundamental harmonics in two-dimensional Residual signal. Such a selection is made at the next stage of coding — quantization. The sequence of quantized spectral coefficients contains a small number of main, large values. The remaining values are very likely to be zero. As a result, the amount of information contained in quantized spectral coefficients is significantly (dozens of times) lower than in the original image.
In the next stage of coding, the obtained set of quantized spectral coefficients, accompanied by the information necessary for performing prediction when decoding, is subjected to entropy coding. The bottom line here is to align the most common values of the encoded stream with the shortest codeword (containing the smallest number of bits). The best compression ratio (close to theoretically achievable) at this stage is provided by arithmetic coding algorithms, which are mainly used in modern video compression systems.
From the above, the main factors affecting the effectiveness of a particular video compression system become apparent. First of all, these are, of course, the factors that determine the effectiveness of the Intra and Inter Predictions. The second set of factors is related to the orthogonal transformation and quantization, which selects the fundamental harmonics in the Residual signal. The third one is determined by the volume and compactness of the representation of additional information accompanying Residual and necessary for making predictions, that is, calculating Prediction, in the decoder. Finally, the fourth set has the factors that determine the effectiveness of the final stage- entropy coding.
Let’s illustrate some possible options (far from all) of the implementation of the coding stages listed above, on the example of H.264 / AVC and HEVC.

AVC Standard

In the AVC standard, the basic structural unit of the image is a macroblock — a square area of 16x16 pixels (Figure 1). When searching for the best possible prediction, the encoder can select one of several options of partitioning each macroblock. With Intra-prediction, there are three options: perform a prediction for the entire block as a whole, break the macroblock into four square blocks of 8x8 size, or into 16 blocks with a size of 4x4 pixels, and perform a prediction for each such block independently. The number of possible options of macroblock partitioning under Inter-prediction is much richer (Figure 1), which provides adaptation of the size and position of the predicted blocks to the position and shape of the object boundaries moving in the video frame.
Fig 1. Macroblocks in AVC and possible partitioning when using Inter-Prediction.
In AVC, pixel values from the column to the left of the predicted block and the row of pixels immediately above it are used for Intra prediction (Figure 2). For blocks of sizes 4x4 and 8x8, 9 methods of prediction are used. In a prediction called DC, all calculated pixels have a single value equal to the arithmetic average of the “neighbor pixels” highlighted in Fig. 2 with a bold line. In other modes, “angular” prediction is performed. In this case, the values of the “neighbor pixels” are placed inside the predicted block in the directions indicated in Fig. 2.
In the event that the predicted pixel gets between “neighbor pixels”, when moving in a given direction, an interpolated value is used for the prediction. For blocks with a size of 16x16 pixels, 4 methods of prediction are used. One of them is the DC-prediction, which was already reviewed. The other two correspond to the “angular” methods, with the directions of prediction 0 and 1. Finally, the fourth — Plane-prediction: the values of the predicted pixels are determined by the equation of the plane. The angular coefficients of the equation are determined by the values of the “neighboring pixels”.
Fig 2. “Neighboring pixels” and angular modes of Intra-Prediction in AVC
Inter- Prediction in AVC can be implemented in one of two ways. Each of these options determines the type of macroblock (P or B). As a prediction of pixel values in P-blocks (Predictive-blocks), the values of pixels from the area located on the previously coded (reference) image, are used. Reference images are not deleted from the RAM buffer, containing decoded frames (decoded picture buffer, or DPB), as long as they are needed for Inter-prediction. A reference list is created in the DPB from the indexes of these images.
The encoder signals to the decoder about the number of the reference image in the list and about the offset of the area used for prediction, with respect to the position of predicted block (this displacement is called motion vector). The offset can be determined with an accuracy of ¼ pixel. In case of prediction with non-integer offset, interpolation is performed. Different blocks in one image can be predicted by areas located on different reference images.
In the second option of Inter Prediction, prediction of the B-block pixel values (bi-predictive block), two reference images are used; their indexes are placed in two lists (list0 and list1) in the DPB. The two indexes of reference images in the lists and two offsets, that determine positions of reference areas, are transmitted to the decoder. The B-block pixel values are calculated as a linear combination of pixel values from the reference areas. For non-integer offsets, interpolation of reference image is used.
As already mentioned, after predicting the values of the encoded block and calculating the Residual signal, the next coding step is spectral transformation. In AVC, there are several options for orthogonal transformations of the Residual signal. When Intra-prediction of a whole macroblock with a size of 16x16 is implemented, the residual signal is divided into 4x4 pixel blocks; each of them is subjected to an integer analog of discrete two-dimensional 4x4 cosine Fourier transform.
The resulting spectral components, corresponding to zero frequency (DC) in each block, are then subjected to additional orthogonal Walsh-Hadamard transform. With Inter-prediction, the Residual signal is divided into blocks of 4x4 pixels or 8x8 pixels. Each block is then subjected to a 4x4 or 8x8 (respectively) two-dimensional discrete cosine Fourier Transform (DCT, from Discrete Cosine Transform).
In the next step, spectral coefficients are subjected to the quantization procedure. This leads to a decrease in bit capacity of digits representing the spectral sample values, and to a significant increase in the number of samples having zero values. These effects provide compression, i.e. reduce the number and bit capacity of digits representing the encoded image. The reverse side of quantization is the distortion of the encoded image. It is clear that the larger the quantization step, the greater is the compression ratio, but also the distortion is greater.
The final stage of encoding in AVC is entropy coding, implemented by the algorithms of Context Adaptive Binary Arithmetic Coding. This stage provides additional compression of video data without distortion in the encoded image.

Ten years later. HEVC standard: what’s new?

The new H.265/HEVC standard is the development of methods and algorithms for compressing video data embedded in H.264/AVC. Let’s briefly review the main differences.
An analog of a macroblock in HEVC is the Coding Unit (CU). Within each block, areas for calculation of Prediction are selected — Prediction Unit (PU). Each CU also specifies the limits within which the areas for calculating the discrete orthogonal transformation from the residual signal are selected. These areas are called the Transform Unit (TU).
The main distinguishing feature of HEVC here is that the split of a video frame into CU is conducted adaptively, so that it is possible to adjust the CU boundaries to the boundaries of objects on the image (Figure 3). Such adaptability allows to achieve an exceptionally high quality of prediction and, as a consequence, a low level of the residual signal.
An undoubted advantage of such an adaptive approach to frame division into blocks is also an extremely compact description of the partition structure. For the entire video sequence, the maximum and minimum possible CU sizes are set (for example, 64x64 is the maximum possible CU, 8x8 is the minimum). The entire frame is covered with the maximum possible CUs, left to right, top-to-bottom.
It is obvious that, for such coverage, transmission of any information is not required. If partition is required within any CU, then this is indicated by a single flag (Split Flag). If this flag is set to 1, then this CU is divided into 4 CUs (with a maximum CU size of 64x64, after partitioning we get 4 CUs of size 32x32 each).
For each of the CUs received, a Split Flag value of 0 or 1 can, in turn, be transmitted. In the latter case, this CU is again divided into 4 CUs of smaller size. The process continues recursively until the Split Flag of all received CUs is equal to 0 or until the minimum possible CU size is reached. Inserted CUs thus form a quad tree (Coding Tree Units, CTU). As already mentioned, within each CU, areas for calculating prediction- Prediction Units (PU) are selected. With Intra Prediction, the CU area can coincide with the PU (2Nx2N mode) or it can be divided into 4 square PUs of twice smaller size (NxN mode, available only for CU of minimum size). With Inter Prediction, there are eight possible options for partitioning each CU into PUs (Figure 3).
Fig.3 Video frame partitioning into CUs is conducted adaptively
The idea of spatial prediction in HEVC remained the same as in AVC. Linear combinations of neighboring pixel values, adjacent to the block on the left and above, are used as predicted sample values in the PU block. However, the set of methods for spatial prediction in HEVC has become significantly richer. In addition to Planar (analogue to Plane in AVC) and DC methods, each PU can be predicted by one of the 33 ways of “angular” prediction. That is, the number of ways, in which the values are calculated by “neighbor”-pixels, is increased by 4 times.
Fig. 4. Possible partitioning of the Coding Unit into Prediction Units with the spatial (Intra) and temporary (Inter) CU prediction modes
We can point out two main differences of Inter- prediction between HEVC and AVC. Firstly, HEVC uses better interpolation filters (with a longer impulse response) when calculating reference images with non-integer offset. The second difference concerns the way the information about the reference area, required by the decoder for performing the prediction, is presented. In HEVC, a “merge mode” is introduced, where different PUs, with the same offsets of reference areas, are combined. For the entire combined area, information about motion (motion vector) is transmitted in the stream once, which allows a significant reduction in the amount of information transmitted.
In HEVC, the size of the discrete two-dimensional transformation, to which the Residual signal is subjected, is determined by the size of the square area called the Transform Unit (TU). Each CU is the root of the TU quad tree. Thus, the TU of the upper level coincides with the CU. The root TU can be divided into 4 parts of half the size, each of which, in turn, is a TU and can be further divided.
The size of discrete transformation is determined by the TU size of the lower level. In HEVC, transforms for blocks of 4 sizes are defined: 4x4, 8x8, 16x16, and 32x32. These transformations are integer analogs of the discrete two-dimensional Fourier cosine transform of corresponding size. For size 4x4 TU with Intra-prediction, there is also a separate discrete transformation, which is an integer analogue of the discrete sine Fourier transform.
The ideas of the procedure of quantizing spectral coefficients of Residual signal, and also entropy coding in AVC and in HEVC, are practically identical.
Let’s note one more point which was not mentioned before. The quality of decoded images and the degree of video data compression are influenced significantly by post-filtering, which decoded images with Inter-prediction undergo before they are placed in the DPB.
In AVC, there is one kind of such filtering — deblocking filter. Application of this filter reduces the block effect resulting from quantization of spectral coefficients after orthogonal transformation of Residual signal.
In HEVC, a similar deblocking filter is used. Besides, an additional non-linear filtering procedure called the Sample Adaptive Offset (SAO) exists. Based on the analysis of pixel value distribution during encoding, a table of corrective offsets, added to the values of a part of CU pixels during decoding, is determined.
In HEVC, the size of the discrete two-dimensional transformation, to which the Residual signal is subjected, is determined by the size of the square area called the Transform Unit (TU). Each CU is the quad-tree of TU’s. Thus, the TU of the upper level coincides with the CU. The root TU can be divided into 4 parts of half the size, each of which, in turn, is a TU and can be further divided.
The size of discrete transformation is determined by the TU size of the lower level. There are four transform block sizes in HEVC: 4x4, 8x8, 16x16, and 32x32. These transforms are discrete two-dimensional Fourier cosine transform of corresponding size. For 4x4 Intra-predicted blocks, could be used another discrete transform — sine Fourier transform.
The quantization of spectral coefficients of residual signal, and entropy coding in AVC and in HEVC, are almost identical.
Let’s note one more point which was not mentioned before. The quality of decoded images, hence the degree of video data compression, is influenced significantly by post-filtering, which applied on decoded Inter-predicted images before they are placed in the DPB.
In AVC, there is one kind of such filtering — deblocking filter. It masking blocking artifacts effect originating from spectral coefficients quantization after orthogonal transformation of residual signal.
In HEVC, a similar deblocking filter is used. Besides, an additional non-linear filtering procedure called the Sample Adaptive Offset (SAO) exists. Sample level correction is based either on local neighborhood or on the intensity level of sample itself. Table of sample level corrections, added to the values of a part of CU pixels during decoding, is determined.

And what is the result?

Figures 4–7 show the results of encoding of several high-resolution (HD) video sequences by two encoders. One of the encoders compresses the video data in the H.265/HEVC standard (marked as HM on all the graphs), and the second one is in the H.264/AVC standard.
Fig. 5. Encoding results of the video sequence Aspen (1920x1080 30 frames per second)
Fig. 6. Encoding results of the video sequence BlueSky (1920x1080 25 frames per second)
Fig. 7. Encoding results of the video sequence PeopleOnStreet (1920x1080 30 frames per second)
Fig. 8. Encoding results of the video sequence Traffic (1920x1080 30 frames per second)
Coding was performed at different quantization values of spectral coefficients, hence with different levels of video image distortion. The results are presented in Bitrate (mbps) — PSNR(dB) coordinates. PSNR values characterize the degree of distortion.
On average, it can be stated that the PSNR range below 36 dB corresponds to a high level of distortion, i.e. low quality video images. The range of 36 to 40 dB corresponds to the average quality. With PSNR values above 40 dB, we can call it a high video quality.
We can roughly estimate the compression ratio provided by the encoding systems. In the medium quality area, the bit rate provided by the HEVC encoder is about 1.5 times less than the bit rate of the AVC encoder. Bitrate of an uncompressed video stream is easily determined as the product of the number of pixels in each video frame (1920 x 1080) by the number of bits required to represent each pixel (8 + 2 + 2 = 12), and the number of frames per second (30).
As a result, we get about 750 Mbps. It can be seen from the graphs that, in the area of average quality, the AVC encoder provides a bit rate of about 10–12 Mbit/s. Thus, the degree of video information compression is about 60–75 times. As already mentioned, the HEVC encoder provides compression ratio 1.5 times higher.

About the author

Oleg Ponomarev, 16 years in video encoding and signal digital processing, expert in Statistical Radiophysics, Radio waves propagation. Assistant Professor, PhD at Tomsk State University, Radiophysics department. Head of Elecard Research Lab.
submitted by VideoCompressionGuru to u/VideoCompressionGuru [link] [comments]

What is the quickest solution to finding a 4 digit number asking only yes/no questions?

A friend and I were watching a Korean game show called "The Genius", and in it they had a particularly brilliant competitive maths game.
The premise was fairly simple - Each contestant had to pick a four digit number. They then were allowed to ask questions to each other one after the other, or use a turn to guess what the opponent's number was. The only additional rule was that 0 was treated as even for the purposes of questioning.
After watching this, my friend and I tried to come up with a solution to guarantee finding your opponent's number in the fewest possible questions, but it very quickly got extremely complex. However, we're both fairly sure that there's a clever mathematical answer to guarantee it in a low amount of questions.
After working out the number you need to use a turn to guess, so once the number is worked out a +1 needs to be added. (This isn't important if you know the number, but I figure can be relevant if you can get down to say 3 potential options, since just guessing all 3 is as efficient as working out which one it is)
The obvious first approach we tried was binary searching the numbers for each digit. With this method, each digit could be found in a maximum of 4 questions (10 to 5 to 3 to 2 to 1), so we knew that we needed to try and beat 16 questions.
We then realised that if we treated the first two digits and the second two digits as two digit numbers, it would only take a maximum of 7 questions to find each digit pair (100 to 50 to 25 to 13 to 7 to 4 to 2 to 1), so we were down to 14 questions.
Following the theme, we tested binary search on all 4 digits, but realised it would take 14 questions (10000 to 5000 to 2500 to 1250 to 625 to 313 to 157 to 79 to 40 to 20 to 10 to 5 to 3 to 2 to 1), resulting in 14. It was no more efficient than the two sets of digits, and was also harder to calculate.
I then tried a set of 3 digits and a single, (1000 to 500 to 250 to 125 to 63 to 32 to 16 to 8 to 4 to 2 to 1) + 4 for the remaining digit, and again this was 14.
I then proposed a different solution - Could we potentially get more information by adding the digits together? I tried it on a number he had picked, asking questions to do a binary search on the sum of pairs of digits. Assigning the letters abcd to the four digits, I worked out a+b, c+d, b+c, and a+d. I figured doing this would allow me to arrange the numbers correctly once I had crunched it out.
Since the number was a 4 digit number, I knew the maximum the total for all four numbers could reach was 36. That meant each pair was a maximum of 18, and sets of pairs had to add up to no more than 36.
I started off by binary searching the sum of the first two digits, which would take a maximum of 5 turns (18 to 9 to 5 to 3 to 2 to 1), and repeated for the second two. That would take 10 turns, but give me the sum of all digits, the sum of the first two, and the sum of the second two.
At this point I was adamant that I could potentially figure out the number using this information alone, but I was unsuccessful. I was able to use logic to narrow down the possible values for the outer two and inner two numbers by figuring out the total of all four digits, figuring out the number pair combinations a/b and c/d could be to satisfy that, and then working out the potential pairs of values that the inner two and outer two numbers could add up to.
In our example test, a+b was 5, c+d was 14. From this I knew the total was 19. The first pair of numbers had to be 0 and 5, 1 and 4, or 2 and 3. The second pair had to be 9 and 5, 8 and 6, or 7 and 7. Using the logic of adding the highest number of one pair to the highest number of the other pair and then cycling through the values, I worked out that the outer two numbers had to add up to 14, 13, 12, or 11, and the inner two numbers had to add up to 8, 7, 6, or 5.
Binary searching these could be done in two searches each, bringing the total to... 14. :(
This is where it turned a bit weird though - After doing some logic on the resulting numbers (the outer pair was 12 and the inner pair was 7), I came up with three potential answers that satisfied every single constraint.
5077 4168 3259
These three numbers are amazing. The first two digits add up to 5, the third and fourth add up to 14, the first and fourth add up to 12, and the second and third add up to 7.
Unfortunately from here there was no choice but to guess all three, no amount of questioning could lower it from three to two questions. And so our final total was 17, no more efficient than just binary searching the numbers in the first place.
And so, I ask you this - Is there a more efficient, human doable way to discover the four digit number than binary searching the first pair and second pair of digits?
I feel like there has to be, but I'm not knowledgeable enough to know!
submitted by Jademalo to mathematics [link] [comments]

Some Background and Thoughts on FPGAs

I have been lurking on this board for a few years. I decided the other day to finally create an account so I could come out of lurk mode. As you might guess from my id I was able to retire at the beginning of this year on a significantly accelerated timetable thanks to the 20x return from my AMD stock and option investments since 2016.
I spent my career working on electronics and software for the satellite industry. We made heavy use of FPGAs and more often than not Xilinx FPGAs since they had a radiation tolerant line. I thought I would summarize some of the ways they were used in and around the development process. My experience is going to be very different than the datacenter settings in the last few years. The AI and big data stuff was a pipe dream back then.
In the olden times of the 90s we used CPUs which unlike modern processors did not include much in the way of I/O and memory controller. The computer board designs graduated from CPU + a bunch of ICs (much like the original IBM PC design) to a CPU + Xilinx FPGA + RAM + ROM and maybe a 5V or 3.3V linear voltage regulator. Those old FPGAs were programmed before they were soldered to the PCB using a dedicated programming unit attached to a PC. Pretty much the same way ROMs were programmed. At the time FPGAs gate capacity was small enough that it was still feasible to design their implementation using schematics. An engineer would draw up logic gates and flip-flops just like you would if using discrete logic ICs and then compile it to the FPGA binary and burn it to the FPGA using a programmer box like a ROM. If you screwed it up you had to buy another FPGA chip, they were not erasable. The advantage of using the FPGA is that it was common to implement a custom I/O protocol to talk to other FPGAs, on other boards, which might be operating A/D and D/A converters and digital I/O driver chips. As the FPGA gate capacities increased the overall board count could be decreased.
With the advent of much larger FPGAs that were in-circuit re-programmable they began to be used for prototyping ASIC designs. One project I worked on was developing a radiation hardened PowerPC processor ASIC with specialized I/O. A Xilinx FPGA was used to test the implementation at approximately half-speed. The PowerPC core was licensed IP and surrounded with bits that were developed in VHDL. In the satellite industry the volumes are typically not high enough to warrant developing ASICs but they could be fabbed on a rad-hard process while the time large capacity re-programmable FPGAs were not. Using FPGAs for prototyping the ASIC was essential because you only had one chance to get the ASIC right, it was cost and schedule prohibitive to do any respins.
Another way re-programmable FPGAs were used was for test equipment and ground stations. The flight hardware had these custom designed ASICs of all sorts which generally created data streams that would transmitted down from space. It was advantageous to test the boards without the full set of downlink and receiver hardware so a commercial FPGA board in a PC would be used to hook into the data bus in place of the radio. Similarly other test equipment would be made which emulated the data stream from the flight hardware so that the radio hardware could be tested independently. Finally the ground stations would often use FPGAs to pull in the digital data stream from the receiver radio and process the data in real-time. These FPGAs were typically programmed using VHDL but as tools progressed it became possible to program to program the entire PC + FPGA board combination using LabView or Simulink which also handled the UI. In the 2000s it was even possible to program a real-time software defined radio using these tools.
As FPGAs progressed they became much more sophisticated. Instead of only having to specify whether an I/O pin was digital input or output you could choose between high speed, low speed, serdes, analog etc. Instead of having to interface to external RAM chips they began to include banks of internal RAM. That is because FPGAs were no longer just gate arrays but included a quantity of "hard-core" functionality. The natural progression of FPGAs with hard cores brings them into direct competition with embedded processor SOCs. At the same time embedded SOCs have gained flexibility with I/O pin assignment which is very similar to what FPGAs allow.
It is important to understand that in the modern era of chip design the difference between the teams that AMD and Xilinx has for chip design is primarily at the architecture level. Low level design and validation are going to largely be the same (although they may be using different tools and best practices). There are going to be some synergies in process and there is going to be some flexibility in having more teams capable of bringing chips to market. They are going to be able to commingle the best practices between the two which is going to be a net boost to productivity for one side or the other or both. Furthermore AMD will have access to Xilinx FPGAs for design validation at cost and perhaps ahead of release and Xilinx will be able to leverage AMD's internal server clouds. The companies will also have access to a greater number of Fellow level architects and process gurus. Also AMD has internally developed IP blocks that Xilinx could leverage and vice versa. Going forward there would be savings on externally licensed IP blocks as well.
AI is all the rage these days but there are many other applications for generic FPGAs and for including field programmable gates in sophisticated SOCs. As the grand convergence continues I would not be surprised at all to see FPGA as much a key component to future chips as graphics are in an APU. If Moore’s law is slowing down then the ability to reconfigure the circuitry on the fly is a potential mitigation. At some point being able to reallocate the transistor budget on the fly is going to win out over adding more and more fixed functionality. Going a bit down the big.little path what if a core could be reconfigured on the fly to be integer heavy or 64 bit float heavy within the same transistor budget. Instead of dedicated video encodedecoders or AVX 512 that sits dark most of the time the OS can gin it up on demand. In a laptop or phone setting this could be a big improvement.
If anybody has questions I'd be happy to answer. I'm sure there are a number of other posters here with a background in electronics and chip design who can weigh in as well.
submitted by RetdThx2AMD to AMD_Stock [link] [comments]

Zabbix 5.2 is released! Some more details.

The new major release comes with an impressive list of new features, improvements and out of the box integrations:
Zabbix offers out of the box official integrations with:
Other major improvements:
Official packages are available for:
One-click deployment is available for the following cloud platforms:
and much more!
Read release notes for a complete list of improvements: https://www.zabbix.com/rn/rn5.2.0
In order to upgrade you just need to download and install new binaries (server, proxy and Web UI). When you start Zabbix Server it will automatically upgrade your database. Zabbix agents are backward compatible therefore no need to install new agents, you can do it anytime later if needed.
submitted by alexvl to zabbix [link] [comments]

Completing the 2020 Bingo Challenge: Short Story Edition

Completing the 2020 Bingo Challenge: Short Story Edition
Completing the 2020 Bingo Challenge: Short Story Edition
One of the rules of the Fantasy Bingo Reading Challenge is that you can read an anthology or collection for any of the squares. I’ve always been a fan of short fiction, so I’ve occasionally used this rule to complete my Bingo Card (I used three collections outside of the Five Short Stories square last year, for example). When planning my card for the 2020 Bingo, I noticed that several of the squares fit quite well for some of the collections and anthologies I had (a Star Trek anthology for Exploration, books with colors or numbers in their names, etc.). “What if…” I wondered, “…I can do it for every square?”
Thus, my project is born: Complete my Bingo card using only books of short stories, following all the other rules of Bingo. I did not repeat a single author from one square to another, and I even made sure not to repeat editors, either.
Look on my Works, ye Mighty, and despair!
A brief aside before we start, some terms I use that some may not be familiar to some:
  • Anthology: A book of short stories by multiple authors, usually assembled by an editor whose name is attached to the book (i.e. The Book of Dragons edited by Jonathan Strahan)
  • Collection: A book of short stories by a single author (i.e. Kabu Kabu by Nnedi Okorafor)
  • Short Story Cycle: A book of short stories that has its own narrative (i.e. Moral Disorder by Margaret Atwood). Some similarities with “interlinked collection,” “mosaic novel,” and “fix-up novel” (The Martian Chronicles by Ray Bradbury being a famous example of the latter).
  • Reprint and Original: Many anthologies/collections reprint stories published previously (reprint) vs. originally written for the book in question (original). Some collections will mix it up (such as a reprint collection with one original story to encourage readers who have read the others to pick up the new book).
Why? What did I hope to accomplish by doing this particular short fiction challenge? Some of my friends will complain about the Five Short Stories square (especially the hard mode requirement to read a book), and I wanted to spite them a little bit and also demonstrate that there’s a lot of different and interesting books out there to read in that format!
Planning: The hardest thing about this was the original planning, as several books I thought would be an easy match for the square didn’t work because another anthology I planned to use already included that author, so I had to dig a bit deeper to find something that didn’t repeat any authors. Also, in past Bingo Challenges, my cards are usually quite fluid as I shift books around throughout the year. Because of all the authors I was juggling, I couldn’t easily do that (though it was vastly easier to do with collections instead of anthologies, for obvious reasons).
Numbers: For this card, I officially read 32 books for the 25 squares: One of those books was quite short, so I read an additional three to meet the length requirement. For the original Five Short Stories square, I decided to be obnoxious and read five collections. These 32 books included 1 short novel (included in one of the collections), 8 novellas, 106 novelettes, 498 short stories, and 3 poems for a total of at least 2,739,975 words (the rough equivalent of reading the first nine novels of The Wheel of Time). I read 189 different authors. In addition to the 32 books above, I read 15 “pre-Bingo” books—books I felt I needed to read to be able to read the anthology or collection I actually used for my Bingo Card. Fifteen of the 32 books were ones I already owned. Nine books I checked out from the library. Five books I bought specific for Bingo, and three books were free (gifts or free online).
1. Novel Translated from Its Original Language:
There Once Lived a Woman Who Tried to Kill Her Neighbor's Baby: Scary Fairy Tales by Ludmilla Petrushevskaya (reprint collection)
  • Reason: I couldn’t read my first choice so I looked through my TBR list to find another SF/F collection I thought would be a translation. It also won the 2010 World Fantasy Award for Best Collection.
  • Favorite Story: “My Love” as I really liked how the characters grew apart and then back together again.
  • Recommended: Only if you like short depressing literary fiction that mostly hinge on dreams and ghosts.
  • Hard Mode: Yes, Pretrushevskaya is a woman.
  • Other Options: I really wanted to read Xia Jia’s A Summer Beyond Your Reach, but she had a story in another anthology I read. I also considered one of Ken Liu’s Chinese SF/F anthologies (Invisible Planets or Broken Stars). I read Jurado & Lara’s Spanish Women of Wonder last year. Etgar Keret’s Fly Already, Kenji Miyazawa’s Once and Forever, or Yoko Ogawa’s Revenge also looked promising.
2. Setting Featuring Snow, Ice, or Cold:
Frozen Fairy Tales edited by Kate Wolford (original anthology)
  • Reason: I literally searched snow and anthology and this was one of the early options.
  • Favorite Story: tie between “The Stolen Heart” by Christina Ruth Johnson and “Death in Winter” by Lissa Sloan; the first just felt great, and the second has this haunting feel I loved.
  • Recommended: Yes; a good selection of fairy tale-inspired stories. Read during the summer, though, it felt really cold.
  • Hard Mode: Yes, every story is in a snowy or cold setting.
  • Other Options: I’m kind of mad that I didn’t come across Snowpocalypse: Tales of the End of the World (edited by Clint Collins and Scott Woodward) until after I read my original choice. I like silly titles.
3. Optimistic Spec Fic:
Ingathering: The Complete People Stories by Zenna Henderson (short story cycle, 1 original to this book)
  • Reason: I’ve had a copy of this book for a couple years, and I needed an excuse to read it. It’s actually an omnibus of Henderson’s two People collections plus some previously uncollected stories. I’ve read the first People collection (Pilgrimage) several times people).
  • Favorite Story: I’ll say “Ararat” here, but the first six stories (the original Pilgrimage collection) are amazingly wonderful and heartwarming.
  • Recommended: Yes, absolutely. Zenna Henderson deserves more attention.
  • Hard Mode: Yes. <3
  • Other Options: If Henderson’s book hadn’t worked out, I considered Heiroglyph (edited by Ed Finn & Kathryn Cramer) and Salena Ulibarri’s two Glass and Gardens anthologies (Solarpunk Summers and Solarpunk Winters), but that would’ve required juggling my card.
4. Novel Featuring Necromancy:
The Book of the Dead edited by Jared Shurin (original anthology)
  • Reason: I asked Jared Shurin (pornokitsch) if he knew of any anthologies with a necromantic theme, and he rattled off five or six options before remembering that he himself had edited an anthology about mummies. I don’t know how you forget something like that.
  • Favorite Story: tie between “Old Souls” by David Thomas Moore and “Three Memories of Death” by Will Hill (non-SF/F)
  • Recommended: Yes, but it’s out of print! Several of the stories were reprinted in Paula Guran’s The Mammoth Book of the Mummy, including “Three Memories of Death.”
  • Hard Mode: No, through several do have mummies as protagonists.
  • Other Options: I was considering Brian McNaughton’s The Throne of Bones since the description seemed rather death-magicky. At this point, the Paula Guran anthology above would probably be a good choice.
5. Ace/Aro Spec Fic:
Life Within Parole, Volume 1 by RoAnna Sylver (collection, mix of reprint and original)
  • Reason: A friend found this on Claudie Arseneault’s asexual recommendations website, which was good, but I felt I needed to read her novel Chameleon Moon first to understand the collection. I’m glad I did.
  • Favorite Story: Reluctantly “Phoenix Down” as it felt the most self-contained.
  • Recommended: Only if you loved Chameleon Moon, which I only recommend if you like a sample of the writing. It’s amazingly diverse in representation, but my frustrations with the novel related more towards its pacing and worldbuilding. Plus I don’t like superheroes.
  • Hard Mode: Yes, half the stories have an asexual or aromantic protagaonist.
  • Other Options: My original choice was Common Bonds: An Aromantic Speculative Anthology edited by Claudie Arseneault, C.T. Callahan, B.R. Sanders, and RoAnna Sylver, a Kickstarter-funded book. However, due to the pandemic, the publication was pushed back, and I didn't want to wait any longer. I also seriously considered Chuck Tingle’s Not Pounded in the Butt.
6. Novel Featuring a Ghost:
Ghost Stories of an Antiquary by M. R. James (collection, mix of reprint and original)
  • Reason: I just searched ghost anthology, and this was a top result. I have actually never heard of M. R. James before this year, but I gather he’s a huge influence since he’s written so many ghost stories.
  • Favorite Story: “The Mezzotint” as it was the one that creeped me out the most.
  • Recommended: Yes, but only if you realize that it’s got an older style to them (since this book came out in 1904), and that most of these stories won’t creep you out in the year 2020.
  • Hard Mode: No, the ghosts are either antagonists or obstacles.
  • Other Options: I actually don’t know, I stopped searching after I found the book. M. R. James does have 3 more collections of ghost stories, though (all of 4 of which have been gathered in Collected Ghost Stories by M. R. James).
7. Novel Featuring Exploration:
No Limits edited by Peter David (original anthology)
  • Reason: I read the first few Star Trek: New Frontier novels back in the late 1990s, but never finished it, so I got all the books for a personal readthrough. Star Trek is by definition perfect for the exploration square, so I read the books. However, I was reading them in publication order, so I had to read the first 14 books before I could get to the anthology!
  • Favorite Story: “Waiting for G’Doh, or, How I Learned to Stop Moving” is a rather funny story about the security officer Zak Kebron at the beginning of his career.
  • Recommended: Yes, but only if you’ve read at least the first six Star Trek: New Frontier novels (all the stories are set before the first book, but most of the characters aren’t really established until you’ve read the first four).
  • Hard Mode: Maybe, nearly all the stories feature exploration, but the plots are often about backstories for the main characters of the series.
  • Other Options: I considered James Alan Gardner’s Gravity Wells (his novel Expendable is a perfect exploration book, so I was hoping the collection would work). Past anthologies that would probably work is Federations edited by John Joseph Adams, Galactic Empires edited by Neil Clarke, and maybe Alastair Reynolds’s Deep Navigation or Galactic North.
8. Climate Fiction:
Everything Change: An Anthology of Climate Fiction edited by Manjana Milkoreit, Meredith Martinez, & Joey Eschrich (original anthology)
  • Reason: A friend recommended to me as this theme was getting difficult for me to find, as all my other options included stories by authors I had to read for other squares. This book was produced from a short story contest run by the Imagination and Climate Futures Initiative at Arizona State University and judged in part by Kim Stanley Robinson.
  • Favorite Story: “On Darwin Tides” by Shauna O’Meara, which follows a “sea gypsy” in Malaysia as she struggles in this new dystopian future.
  • Recommended: Only if the topic appeals to you—because it was a contest, the stories are mostly from amateur writers and the quality mostly shows. It’s free online, though, and there’s a second book, Everything Change II, which I’ve been told is better.
  • Hard Mode: No, most of them are apocalyptic or post-apocalypse.
  • Other Options: My original choice was Drowned Worlds edited by Jonathan Strahan, but there’s also Loosed upon the World: The Saga Anthology of Climate Fiction edited by John Joseph Adams, and I imagine a lot of solarpunk-themed books could work for this, too.
9. Novel with a Color in the Title:
The King in Yellow by Robert W. Chambers (original collection)
  • Reason: I already had it (it’s available on Project Gutenberg)
  • Favorite Story: “In the Court of the Dragon” which felt like one of the creepier stories to me.
  • Recommended: Honestly, no. Only half the stories are SF/F, the other half are all stories about bohemian artists in Paris. This book is known for the stories involving “The King in Yellow” play, but they didn’t really work for me.
  • Hard Mode: Yes.
  • Other Options: I considered using Judith Tarr’s Nine White Horses, the anthology Blackguards, Jack Vance’s Wild Thyme, Green Magic, Walter Jon Williams’s The Green Leopard Plague and Other Stories, Black Feathers edited by Ellen Datlow, or How Long ‘til Black Future Month? by N. K. Jemisin.
10. Any Fantasy Book Club Book of the Month OR Fantasy Readalong Book:
Sooner or Later Everything Falls into the Sea by Sarah Pinsker (reprint collection, 1 original to this book)
  • Reason: The Goodreads Book of the Month club picked it for June this year. I did own or read all the other options that were available at the time.
  • Favorite Story: tie between “And Then There Were (N-One)” and “In Joy, Knowing the Abyss Behind”
  • Recommended: Yes! There’s only one story I would rate less than 4 stars in this book.
  • Hard Mode: Yes, I actually led the discussion for the book in June.
  • Other Options: We don’t read very many collections or anthologies for the Fantasy book clubs, so my only choices were Fritz Leiber’s Sword and Deviltry (Classics club, November 2017), Mahvesh Murad & Jared Shurin’s anthology The Djinn Falls in Love and Other Stories (RAB, May 2018), and we currently have Daniel M. Lavery’s The Merry Spinster for FIF (September 2020). There’s also the Dresden Files read-along which did two of Butcher’s collections, and the Uncanny Magazine Disabled People Destroy Science Fiction/Fantasy read-along (those would’ve been rereads for me, though).
11. Self-Published Novel:
In the Stars I'll Find You & Other Tales of Futures Fantastic by Bradley P. Beaulieu (mostly reprint collection)
  • Reason: I already owned this, it was basically the oldest self-published collection I had.
  • Favorite Story: tie between “Flashed Forward” and “No Viviremos Como Presos” – both dealing with a lot of emotions.
  • Recommended: Yes, the only other stories by Beaulieu I’ve read were 2 co-written novellas, and I felt this collection was better. I haven’t read his novels so I can’t compare.
  • Hard Mode: Yes, at the time of this post, it has 18 ratings on Goodreads.
  • Other Options: There are hundreds of options, but I could’ve read Lawrence M. Schoen’s recent collection The Rule of Three and Other Stories (his other collection, Buffalito Bundle, has stories featuring The Amazing Conroy and are lots of fun.)
12. Novel with Chapter Epigraphs:
Not the End of the World by Kate Atkinson (short story cycle)
  • Reason: This was another difficult square, as I knew a short story cycle had the best chance of having epigraphs before every story. I finally found this book by Kate Atkinson. (Ironically, I realized later that my Politics choice also had epigraphs.)
  • Favorite Story: “The Cat Lover,” I guess.
  • Recommended: No, unless you like literary magical realism where stories just kind of end.
  • Hard Mode: No, all of the epigraphs are quotes from Latin or Shakespeare.
  • Other Options: Apparently, Retief! by Keith Laumer would’ve worked from my options. It really is a difficult thing because in a collection some authors might have an epigraph for a story, but not all or most of them.
13. Novel Published in 2020:
Shadows & Tall Trees 8 edited by Michael Kelly (original anthology)
  • Reason: I picked this off Locus Magazine’s forthcoming books list and bought it.
  • Favorite Story: tie between “The Glassy, Burning Floor of Hell” by Brian Evenson and “Child of Shower and Gleam” by Rebecca Campbell – the first is creepy as hell, and the second is strange and lovely.
  • Recommended: Yes, if you’re comfortable with weird or darker fantasy stories.
  • Hard Mode: No, Michael Kelly has edited several anthologies before.
  • Other Options: I had planned to use The Hidden Girl and Other Stories by Ken Liu, but I needed Liu for another square. I also considered A Phoenix First Must Burn edited by Patrice Caldwell, and I had three anthologies from Joshua Palmatier I could’ve used (Apocalyptic, Galactic Stew, and My Battery is Low and It is Getting Dark) but I needed another Palmatier anthology for another square. Any of the various “Best Science Fiction or Fantasy of the Year” type anthologies that came out in 2020 would’ve been appropriate as well (Jonathan Strahan, Neil Clarke, Rich Horton, Paula Guran, Ellen Datlow, Bogi Takács, and Jared Shurin all edit “Year’s Best” or “Best of Year”-style anthologies).
14. Novel Set in a School or University:
Sideways Stories from Wayside School; Wayside School is Falling Down; Wayside School Gets a Little Stranger; and Wayside School Beneath the Cloud of Doom by Louis Sachar (short story cycles)
  • Reason: Strangely, one of the first books I thought of for this square. Plus, the most recent book had come out. I decided to read all four as each book is really short (only about 20,000 words per book). Only the first one or two was a reread.
  • Favorite Story: None, they’re all funny and good.
  • Recommended: Yes, absolutely. Maybe better for kids, but I smiled a lot while reading these.
  • Hard Mode: Yes.
  • Other Options: Witch High edited by Denise Little would’ve been good, but included a story by Esther M. Friesner whom I needed for another square. A Kickstarter-funded anthology, Schoolbooks & Sorcery edited by Michael M. Jones, would’ve worked, but it’s not out yet.
15. Book About Books:
Ex Libris: Stories of Librarians, Libraries, and Lore edited by Paula Guran (reprint anthology)
  • Reason: This was another difficult square because did you know that searching “book anthology” does not narrow things down at all?? I finally hit upon just searching “library anthology” which did the trick, but this one anthology predetermined at least 3 other squares because of its authors (I couldn’t use Ken Liu, Xia Jia, Amal El-Mohtar, and others because they were all in here).
  • Favorite Story: tie between “In the House of the Seven Librarians” by Ellen Klages and “Summer Reading” by Ken Liu. Klages’s story about “feral librarians raising a child” is just wonderful, and Liu’s is very, very sweet.
  • Recommended: Yes, absolutely. This also contains Scott Lynch’s excellent “In the Stacks” and I will never not say no to Kage Baker.
  • Hard Mode: No, libraries are an integral part of most of the stories.
  • Other Options: *gestures wildly* I don’t know!
16. A Book That Made You Laugh:
Explaining Cthulhu to Grandma and Other Stories by Alex Shvartsman (mostly reprint collection)
  • Reason: Alex Shvartsman edits an annual humorous SF/F anthology series called Unidentified Funny Objects (the 8th volume is out this fall), but even though I have them all, they all shared authors with other squares until I remember that I had two collections from Shvartsman, and this was one of them.
  • Favorite Story: “Things We Leave Behind” is a semiautobiographical story about books. Absolutely lovely.
  • Recommended: Yes, but I understand most won’t share his sense of humor. He also tends to write very short stories, so don’t read these for immersion.
  • Hard Mode: Yes.
  • Other Options: Books making you laugh is so subjective, so any author you like probably has something that could work (you only need one story to make you laugh after all). John Scalzi has a couple collections that could work, Connie Willis has a great sense of humor.
17. Five Short Stories:
  • Reason: To be obnoxious I decided to read five collections for this square (instead of just five short stories). I decided to read 5 that I already owned by women/non-binary people. I picked semi-randomly (Hand and McHugh), by older ones I owned (Wurts), and by a couple new ones I was excited about (Datt Sharma and Slatter).
Not for Use in Navigation: Thirteen Stories by Iona Datt Sharma (reprint collection)
  • Favorite Story: “Quarter Days” is a full third of this book, and it’s an interesting post-WWI setting with magic.
  • Recommended: Yes, they have an interesting outlook, and one of the stories has an Indian wedding in space.
Saffron and Brimstone: Strange Stories by Elizabeth Hand (reprint collection, 1 original)
  • Favorite Story: “The Least Trumps” should appeal to the booklover in every single one of us.
  • Recommended: These are definitely interesting stories, but I’d only recommend for “The Least Trumps” and “Cleopatra Brimstone.” She’s got a poetic style here that didn't always work for me.
After the Apocalypse by Maureen F. McHugh (reprint collection, 2 original)
  • Favorite Story: “Special Economics” which follows a Chinese girl trapped into working at a factory.
  • Recommended: Yes, though it’s also one of the few themed collections (versus themed anthologies) that I’ve seen, with every story dealing with apocalypse in some way.
Sourdough and Other Stories by Angela Slatter (mostly original collection/short story cycle)
  • Favorite Story: “Gallowberries” which features Patience from the Tor.com novella Of Sorrow and Such as a young woman.
  • Recommended: Yes, absolutely. Every story is in the same setting, and they all interconnect with each other. I can’t wait to read more from Slatter (I already have The Bitterwood Bible and Other Recountings).
That Ways Lies Camelot by Janny Wurts (mostly reprint collection)
  • Favorite Story: tie between “Wayfinder” and “That Way Lies Camelot” – both are great stories, the first a coming of age, and the other is bittersweet.
  • Recommended: Yes, definitely. In addition to the above, “Dreambridge” is also awesome. I wasn’t as fond of the three ElfQuest stories, but it was interesting to read Wurts’s 4 Fleet stories as I never realized she ever wrote anything close to straight science fiction.

  • Hard Mode: … Yes?
  • Other Options: This is the most open-ended square for this particular Bingo Card, especially since at the time of this post, I own 121 unread anthologies and collections.
18. Big Dumb Object:
Alien Artifacts edited by Joshua Palmatier & Patricia Bray (original anthology)
  • Reason: This was one of the books that made me realize I could do an all-short-story card. I thought the anthology’s theme would perfectly encapsulate the square.
  • Favorite Story: “Me and Alice” by Angela Penrose – a kid finds a strange artifact while digging at a site.
  • Recommended: Yes, though a few stories weren’t to my taste.
  • Hard Mode: No, while the classical BDO is present in several stories, most would fall in the wider definition being used for Bingo.
  • Other Options: I’m at a loss here, as I never looked for more after I found this.
19. Feminist Novel:
Skin Folk by Nalo Hopkinson (collection, mix of reprint and original)
  • Reason: I owned this already from a Humble Bundle.
  • Favorite Story: “And the Lillies-Them A-Blow” – a woman is inspired to reconsider her life.
  • Recommended: Yes.
  • Hard Mode: Yes, Hopkinson is a Jamaican-born Canadian.
  • Other Options: I had a few other books from the same Humble Bundle called Women of SFF. Most of them would’ve worked.
20. Novel by a Canadian Author:
The Very Best of Charles de Lint by Charles de Lint (reprint collection)
  • Reason: It appears I picked this up in 2014 for some reason (I’ve never read de Lint before this year). But he’s Canadian!
  • Favorite Story: There are honestly too many to say, but I’ll say “In the Pines” for now.
  • Recommended: Yes, yes, yes. I basically added everything he’s written to my TBR.
  • Hard Mode: Maybe, it was originally published in 2010 with Tachyon Publications, but in 2014 it was reprinted by de Lint’s Triskell Press (which is the copy I have), which would count.
  • Other Options: A friend sent me an anthology edited by Dominik Parisien called Clockwork Canada: Steampunk Fiction, though I would’ve had to juggle square to get it to work. Nalo Hopkinson is Canadian, so Skin Folk would’ve worked, too. Jo Walton has a collection called Starlings.
21. Novel with a Number in the Title:
Nine White Horses: Nine Tales of Horses and Magic by Judith Tarr (reprint collection)
  • Reason: At the time, the only collection I had with a number that I could use.
  • Favorite Story: “Classical Horses” – an absolutely lovely story that mixes real life and fantasy, and appeals to my Classics nerd background.
  • Recommended: Yes! Tarr is a wonderful writer.
  • Hard Mode: Yes.
  • Other Options: I could’ve used The Golem of Deneb Seven and Other Stories by Alex Shvartsman, Nine Hundred Grandmothers by R. A. Lafferty, and The Rule of Three and Other Stories by Lawrence M. Schoen.
22. Romantic Fantasy/Paranormal Romance:
Once Upon a Kiss: 17 Romantic Faerie Tales published by Anthea Sharp (original anthology)
  • Reason: My original first choice was a bust when I realized quickly that the stories involved love, but were not romance stories. This was an emergency backup as I was nearing the end of reading for this Bingo Challenge.
  • Favorite Story: “The Bakers Grimm” by Hailey Edwards, which is a sweet little story about baking under pressure.
  • Recommended: No. 99% of the stories are direct appeals to try to get you to buy their books. Many of the stories don’t even really feel like short stories. I had a friend who only read urban fantasy who was adamant that she hated reading short stories and I couldn’t figure out why. Now I do. Many of these read more like vignettes than proper short stories.
  • Hard Mode: No, the HEA Club hasn’t done any anthologies or collections for me to participate in.
  • Other Options: My backup would’ve been to find some paranormal romance series and look for a collection or anthology in that world, but it would’ve involved more prep reading.
23. Novel with a Magical Pet:
No True Way: All-New Tales of Valdemar edited by Mercedes Lackey (original anthology)
  • Reason: Valdemar is an easy setting to choose for this square, and even though I had stopped reading the yearly anthologies (they’re up to 13 or 14 now), I decided to grab the 8th anthology from the library.
  • Favorite Story: “A Dream Reborn” by Dylan Birtolo, a beggar girl with a gift grows a conscience.
  • Recommended: Only if you’re a Valdemar fan and you literally can’t get enough of the world (I’d recommend sticking with the novels up until the Collegium Chronicles).
  • Hard Mode: Yes, Companions can usually speak telepathically with their Heralds and a select few others.
  • Other Options: I’m sure there’s a themed anthology perfect for this, but I honestly don’t know offhand if there is one, since this was an easy choice for me.
24. Graphic Novel (at least 1 volume) OR Audiobook/Audiodrama:
Eerie Archives, Volume 1 edited by Archie Goodwin (original comic book anthology)
  • Reason: I searched “comics anthology” into my library’s digital catalog. This showed up.
  • Favorite Story: No real favorite, but I guess “Flame Fiend” by Eando Binder, about a man desperate to avoid fire.
  • Recommended: Yes, if you’re interested in 1960s horror comics anthology magazines. Each story is about 6-10 pages long, but many felt like cheesy horror to my modern eyes.
  • Hard Mode: Maybe, each story is standalone, but this book contained the first 5 issues of Eerie comics. I’m going with No because Eerie is a running series.
  • Other Options: I considered The Escapist (inspired from Michael Chabon’s The Amazing Adventures of Kavalier and Clay), a Mouse Guard comics anthology, and Thrilling Adventure Hour before finding Eerie. I also though the Eisner Awards were a good source of finding potential comics anthologies, since that's a category.
25. Novel Featuring Politics:
Retief! by Keith Laumer (reprint collection)
  • Reason: I knew the main character was a problem-solving diplomat, so this was an easy pick.
  • Favorite Story: “Diplomat-at-Arms” which is a great story of following an experienced old man on a mission, and “Cultural Exchange,” a really funny bureaucratic tale (and this one is free on Project Gutenberg).
  • Recommended: Yes, with reservations. They’re all stories from the 1960s, they’re bureaucratic galactic pulp fiction where Retief always knows better than his bumbling superiors and women only show up in secretarial or minor support roles. The stories also feel a bit repetitive as a whole, so if you read these, space it out.
  • Hard Mode: No, several of the stories feature royalty.
  • Other Options: I felt like this was a nebulous category, but offhand, I’d suggest Do Not Go Quietly: An Anthology of Victory in Defiance edited by Jason Sizemore & Lesley Conner and Resist: Tales from a Future Worth Fighting Against edited by Gary Whitta, Christie Yant, and Hugh Howey for two explicitly political anthologies, and maybe something like Harry Turtledove’s interlinked collection Agent of Byzantium for an alternate history take on a Byzantine special agent.
Favorites
  • Favorite collections: The Very Best of Charles de Lint by Charles de Lint, Ingathering: The Complete People Stories by Zenna Henderson, Sooner or Later Everything Falls into the Sea by Sarah Pinsker, Sourdough and Other Stories by Angela Slatter, and Nine White Horses by Judith Tarr
  • Favorite anthologies: Ex Libris edited by Paula Guran and The Book of the Dead edited by Jared Shurin
  • Favorite overall short stories: In addition to my favorite stories in the books above, I’d also give a special place to The Very Best of Charles de Lint (“In the Pines,” “In the House of My Enemy,” “A Wish Named Arnold,” “Mr. Truepenny's Book Emporium and Gallery,” “Pixel Pixies,” “The Badger in the Bag,” “Timeskip,” “Into the Green,” “Birds,” and “Pal o' Mine”) and to Sooner or Later Everything Falls into the Sea (“And Then There Were (N-One),” “In Joy, Knowing the Abyss Behind,” “Our Lady of the Open Road,” “Wind Will Rove,” and “A Stretch of Highway Two Lanes Wide”).
  • An Aside: My father died suddenly in the middle of my reading for this challenge. The books I read from Zenna Henderson and Charles de Lint really helped me during this time, with de Lint’s book making me cry multiple times (in a good way).
The End
Sometime last year after touting one short story or another to my friends, I said, “Oh, I don’t think I read *that* much short fiction,” and they all looked at me funny for some reason.
Oh. Never mind. I get it now.
All joking aside, I’ve read SF/F magazines off and on growing up, and I always enjoyed the occasional Year’s Best Science Fiction anthology from Gardner Dozois, and Robert Silverberg’s Legends anthologies were rather formative to my growth as a fantasy reader (that’s where I read George R.R. Martin and Robin Hobb for the first time). Some of my favorite writers have done amazing short stories (in fact, I think I like Alastair Reynolds better at the short length than the novel; witness my love for his story “Zima Blue”!). Even if you don’t read more than the usual five short stories for the Bingo Challenge, please consider branching out! I hope I’ve shown with my own card how much variety is out there.
If you’re not sure where to start, your favorite author may have some short stories of their own, either in an anthology or one of their own collections. Mary Robinette Kowal is one of my favorites, and I loved her collection Word Puppets. If they’re prolific enough, they may have a “Best of” book, like The Best of Connie Willis or The Very Best of Kate Elliott. Trying one of the Year’s Best anthologies I mention under #13, Published in 2020, is also a fun way to explore short fiction.
And even though I didn’t read any for my Bingo Challenge, there are tons of SF/F magazines out there to read from on a daily, weekly, monthly, bimonthly, or quarterly schedule. My personal recommendation is for Asimov’s SF, FIYAH, and Fantasy & Science Fiction for subscription-only options, and places like Clarkesworld, Uncanny, Fireside, and Tor.com for free online stories. There are also some great magazines/sites like Beneath Ceaseless Skies and Daily Science Fiction.
Looking at award lists is a fun way to get started, as most of the major awards also have short fiction categories. Find out where they were published and try out a magazine issue or an anthology.
I’ll end this with the following:
  • an interview by our own tctippens with Jonathan Strahan over at the Fantasy Inn Podcast where they discuss not only his new anthology The Book of Dragons, but reading short fiction in general.
  • Editor Jared Shurin ( pornokitsch ) just came out with The Best of British Fantasy 2019 this past June: check it out!
  • One of my favorite short story writers is John Wiswell, and I’d like to link two of his wonderful stories: "Tank!" follows a sentient tank attending its first SF convention, and "Open House on Haunted Hill" is a very sweet story about a haunted house trying to get sold to a new family. Both stories are quite short and you can read each in just a few minutes.
  • And finally… this is what the internet should be: Naomi Kritzer's "Cat Pictures Please"
submitted by FarragutCircle to Fantasy [link] [comments]

Choose Your Own Adventure - Part 2

Part 1

What if it wasn’t about anything related to the text? What if it was similar to the riddles that brought me to those pages? What if the mystery behind them was related to their page numbers, or hell the page numbers in general?
Once at home I went to work. I told myself once more that I needed to get the full picture. So I went to write down all the page numbers in the book, one after another.
When I was done, I took a step back and stared at the result. Yet, there was nothing that stood out to me right away. I haphazardly picked one of the secret pages. Page 427 was in front of page 811. Then I continued.
811, 812, 813, 814, 815, 816, 817, 818, 818, 820, 821, and right after was yet another secret page.
This one was page 528.
And after that, the regular page numbers continued.
822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, followed by another one, page 143.
This list of ongoing numbers made me suddenly wonder. My thoughts drifted right back to what had gotten me to do this, the secret pages.
What if they weren’t placed randomly?
Yet, as I checked their distribution, it felt almost too random. I checked the number of regular pages before and after, put them in sequence, but there was no correlation.
Then I got another idea. I added up all the pages before and after, but this also made no sense. Half the results were too big and exceeded the total number of pages in the book, by far.
Then, starting at number 111 to 137, which I’d just added together, I got yet another idea. What if I only added together their last digits?
The result I came up with was 648. Which was exactly the secret page that followed afterward!
My eyes grew wide. I’d had it, hadn’t I? The hint I’d been looking for! I was going livid.
Right away I went to the next one and calculated all the preceding numbers, only to come up with an entirely different result than the page number of the secret page following. Cursing I got up.
It had been another goddamn coincidence. I laughed, but this time in abject misery, mocking my stupidity. How’d it be so damned easy, you idiot? There was no way. None of this was easy. None of it!
But as I stared at the result I’d come up with just now, I noticed something. The result of my calculation was 702. The page number was 351. Wait. Wait. Wait. That’s half of 702! Maybe it really was nothing but a coincidence and I was just grasping at straws, but what else was I to do?
The next result I came up with was 176. If I multiplied it by three, it gave me the page number of the secret page that followed it, 528. The number 715, divided by 5, gave me the page number 143 that followed it.
I continued adding, dividing, and multiplying and it all checked out. All the page numbers of the secret pages resulted from calculations of the last two digits of their preceding pages.
What does it mean though? Does it even mean anything? The exhilaration I’d felt ebbed away, and I sat there, staring at all my calculations wondering if there was any meaning to it. Yet, there had to be, right? This couldn’t have been designed as yet another red herring. This was too damned complex. No, there had to be a reason for this.
What if there was an order? If I went through all the calculations I quickly noticed that the result was never divided by the same number. The highest number that a result was divided by was 26, the highest a result was multiplied by was 27. It was exactly 53 different calculations.
With that, I started ordering them, one by one, starting backward from the highest division, to the highest multiplication. Then I put the topic of each page behind the numbers in the resulting list.
I’d hoped for something. I’d hoped to find it starting with the page about the universe, followed by constellations and stars up to the evolution of apes, plants, and other animals. Yet, it was all mixed-up nonsense. There was no order to it at all! Even when I ordered them in other ways, trying to find any sort of correlation, it was always the same. Nothing, but nonsense.
My hands started shaking as anger flooded through me. I crumbled up the stupid, ordered lists and threw them across the room. Then I cursed in sheer and utter rage. This was freaking stupid. This was insane! This was nothing at all, just pure fucking nonsense. I picked up a random object on my table and hurled it against the wall where it shattered into pieces. Then I threw aside a chair I found standing in my way and kicked over the small couch table, creating general chaos in my living room.
I was stopped from going any further when my neighbors banged against the wall, screaming to knock it off and threatening to call the cops.
That made me stop. The anger went away. I stared in shock at my living room. What the hell was happening to me? Why’d I done that? Why’d I destroyed my things at 1 am in the freaking morning?
Then I slowly smoothed out the lists I’d created and put them on one of the few free spots remaining on my living room wall. Who knows, I might need it later.
I laughed as I looked from them to the rest of the wall which was now entirely covered. Even worse were the stacks of notes that had accumulated in front of them. I was proud all right, but I also knew that this thing was absolutely insane.
Once more, I couldn’t help but wonder what I was doing.
Shaking my head, I turned around and made my way to the bedroom. Yet, as my fingers rested on the light switch, I turned around one last time. I stared at the mad lines, the mad paths who were connecting here and there. There was nothing but lines upon lines. Here and there, if I looked hard and long enough, I could almost make out shapes.
I froze. What if it was a visual puzzle? What if there was a hint hidden in the shapes of the paths?
For days I sat down, drew points and lines and connections, warping them into surreal shapes. This was crazy, wasn’t it? How’d it be visual? There’s probably not a damn thing to be got from this. This was stupid. Yet, I couldn’t stop. Each day, I spent my entire afternoon, my evening, and even half the night, drawing. And eventually, it all came to nothing. There was nothing but mad lines and not a clear shape in sight.
I didn’t give up though, wasn’t discouraged. I was beyond that, far beyond that. What if there was something else? Maybe there was a hidden code between these pages?
When I was at work, I’d completely forgotten about my former vow not to talk about the book or do anything related to it. Instead, I read up on cryptography. Going through article after article. I read up on Caesar Code and Binary Code, on the Polybius Cipher and Hex Code. I went mad with it. Before long I spent more time reading up on things than doing any of my work. Eventually, I even brought pages filled with numbers with me, cross-checking them for hits of any and all codes.
I heard co-workers whispering behind my back, asking me what I was doing and I told them, I just hadn’t closed the weird articles after break time.
They knew it wasn’t the truth. They’d heard me mumble, saw the little notebook I was writing in, noticed the endless lists of numbers I brought with me each day.
My superior eventually came up to me. He asked me what I was doing with all those weird pages. I told him it was nothing but a little puzzle.
“Well, Todd,” he started in a condescending voice. “You’re not here to do any of those ‘little puzzles’, you’re here to do your damn job. Where are the calculations for this month? I’ve been waiting for them all day.”
“Oh, I guess, I’m almost done with them, I just need another hour or-“
My voice trailed off when he picked up one of the pages I’d been looking at mere minutes ago. Suddenly, when I saw him holding it, I felt nervous.
“What even is this? It’s just random numbers.”
He saw my face, saw the way my eyes grew wide when he’d picked it up. The hint of a smile washed over his face as he crumbled it up.
He opened his mouth for another remark, but before he could I jumped up from my chair and ripped the page from his hand. He cringed back a step in shock at my reaction.
“The hell’s wrong with you?” he screamed at me, but I didn’t listen. Instead, I carefully smoothed out the paper and made sure he hadn’t torn it apart.
By now half the office had gotten up to watch the weird exchange. Only now did I realize what I’d done and how everyone was staring at me.
Suddenly I felt very watched and almost sunk back into my chair.
“Sorry, I didn’t mean to,” I mumbled but broke up under the pressure of all those eyes.
“Get back to work and finish those damned calculations! If I see you tinkering with any of this shit again, you can clean out your desk!”
With that, he stormed off. I heard people whispering all around me, some laughing, others speaking in a more reserved tone.
Yep, I thought, it’s official. I’m the office nutjob.
Right away, I forced myself to close all the Wikipedia articles I had still open and put away all my notes. And then, grudgingly, annoyed and half-mad at the distraction it represented, I went back to work. Somehow though, it felt meaningless, calculating all these stupid orders and filling out this customer database. What the hell was I even doing? What if it really was a code? What if it was actually a mixture, a double-code? My mind went wild with ideas. Five minutes later, I found myself holding one of my notes again. I couldn’t even remember taking it out.
Pushing it back, cursing, and not a little afraid, I forced myself to work calculations until the day was over. At the moment my shift ended, I jumped off my chair and rushed for the door. People stared at me, looked after me, their faces a mixture of amusement and worry.
I didn’t care. I had work to do. The important kind of work!
I’d just tried to find another connection between the page numbers of the secret pages when my doorbell rang. I ignored it, but it just kept ringing. When it finally stopped, I sighed in relief. Just leave me alone, I cursed, I’ve got work to do.
Then, mere moments later, my phone vibrated on the other end of the room. Dammit, I’d forgotten to mute it again. I waited for it to stop, but it started up right away. Cursing I went over to see who it was and noticed the name instantly.
It was my friend Andrew. Annoyed, I answered it.
“Yo, Todd, you home?” I heard his voice from the phone next to my ear and more distant, muffled from the front door.
My first reaction was one of annoyance. Then I pushed the thought away. What the hell was wrong with me? This was Andrew. He was my best friend, the only one of our old group who still lived in the same city. Right away, I thought about how long I’d last seen him. Surprised I realized that it must’ve been weeks. One glance at the mad mess in my living room told me why.
“Yeah, sure hold on,” I said over the phone and made my way to the front door.
Andrew smiled at me brightly and held up to six-packs.
“Haven’t seen you in forever, how about we have a few! I got quite the story for you, my man!”
I smiled at him. “Sure, come on in.”
We made our way inside and Andrew had barely set foot into my living room when he stopped. His eyes grew wide as he stared at the wall and the stacks of paper all over the place.
“Holy shit man. I was wondering why I haven’t heard from you. The hell’s all that? You working on some sort of project?”
“Kind of,” I mumbled a little embarrassed.
I quickly picked up the papers on the couch and put them aside to make room for him to sit.
“Sorry about the mess.”
“Nah man, it’s all right. So, the thing I was about to tell you, you remember Thomas, right?”
Thomas, I thought. Did I know a Thomas? Then I remembered him. Of course, I remembered him, he’d been part of our group. I rubbed my temples for a second before I nodded.
“He’s getting married and you won’t believe who the lucky girl is!”
With that, Andrew told me the entire story of how our friend Thomas had been dating Susan, Andrew’s cousin for the past three months, and the two of them had decided to get married. I listened, nodded here and there, even laughed a few times absentmindedly, but my eyes wandered to my notes again and again.
For a moment I spaced out entirely, thinking about an idea that had popped into my mind just before he’d arrived. What if there was something about number sequences? I must’ve sat there for an entire minute, simply holding my beer and staring off at nothing when Andrew waved his hand in front of my face.
“Yo, dude, you listening?”
“What? Oh, sorry, no, I think I spaced out for a moment.”
“All right, man, I got to ask, what’s all this? What sort of crazy thing are you working on? Haven’t seen you this into something in years.”
I smiled at him awkwardly and then sighed and pointed at the book.
“It’s one of those Choose Your Own Adventure books,” I started.
With that, the flood gates broke open, and I told him all about it.
He listened, at first curiously, but after a while, his face changed. There was visible concern, as I rambled on about secret pages, strange objects, and cryptography.
“Todd, hold on, hold on, what the hell are you even talking about?”
I stared at him.
“The book. You know those secret pages must’ve some sort of meaning. At first, I thought there was a simple order to them, but it was too chaotic. If you add up all their page numbers though, you get 20670, and if you divided this up by-“
“All right, man, stop,” he cut me off. “So you’re adding up all those numbers, I get that, but for what?”
I began explaining again, I tried, but he couldn’t follow me.
“Yeah, I don’t get it, man. Just, what the fuck?”
“All right, look,” I said and walked over to the wall covered in lines and numbers and started once more.
I told him about the different adventure paths, the references, the secret pages, and when and how they appeared.
His face was blank as I rambled on and on and on.
“Yo, dude, you might want to take a bit of a break, this sounds, well, a bit crazy.”
For a moment I was quiet, then a short, nervous laugh escaped me.
“Yeah, I guess you’re right.”
He stepped up next to me, staring at the wall.
“Shit man, you did all this? Just for a damned book?”
Before I could answer, he reached out and was about to take one of the pages off the wall. My hand shot forward instinctively, batting his aside.
“Don’t touch it!” I called out before I realized what I’d done.
Andrew stumbled back a few steps, shocked. “Shit man, sorry, I didn’t mean to-“
And then it happened. I didn’t even listen to his words anymore as he bumped against some of the stacks of notes I’d placed neatly in front of the wall. They toppled over one another, the pages scattering all over the floor and intermixing.
My eyes grew wide. Oh god, no, freaking god no. Anger rose in me. It had taken me so goddamn long to sort them all out, to order them. There was a freaking method to it all and now he’d destroyed it. He’d destroyed the work of entire fucking days!
“What the fuck are you doing?” I screamed at him.
He cringed back, only now realizing what had happened.
“Hey, didn’t mean to,” he said and began picking up random pages.
I ripped them from his hand and pushed him back. “No, don’t fucking touch them. Those two don’t belong together you idiot! Are you freaking insane?!”
With an empty face, he watched as I gathered up some of the pages, stared at them, and began sorting them as best as I could.
“You know, Todd, that’s what I should ask you.”
“What the hell do you mean?” I snapped at him. “You destroyed the work of days! Days! This is-“
“This is what, man?” he cut me off once more. “It’s nonsense. It’s a freaking children’s book, nothing else.”
That did the trick. I got up and stepped up right in front of him.
“Nonsense? You’ve got no FUCKING idea, how far I’ve come! You’ve got no clue what’ve done already! And here you are telling me this is NONSENSE?”
His face had grown hard. For a second he was about to say something, but then he simply shook his head and laughed. Without another word, he picked up his things, the beer, and left.
If he said any words in parting, I didn’t hear them. I was already busy re-ordering my notes.
It was hours later, when I was done sorting them all out, that I realized what I’d done and how I’d acted.
For the first time, I grew truly scared.
That hadn’t been normal. That wasn’t me. Why’d I gone crazy like this?
I took first one step back from the wall, then another before I went to pick up my phone. When I tried to call Andrew, he didn’t pick up. Instead, the call went straight to voice mail. Then I saw how late it was, long past three in the morning.
I wrote him a quick message, apologized for my behavior, and told him he was right. I should take a break from this entire thing.
That’s what I did right away. I picked up my laptop, made my way to the bedroom, and this time I turned off the light without looking over my shoulder.
I lay down on my bed and started browsing YouTube and told myself to just enjoy it and take a break.
Yet, even as I watched video after video, the little voice in the back of my head spoke up again. It told me I should go on, told me to go back to the living room.
You almost had it, Todd, you almost had it. Just one more hint and you’re done with it. Then you can let it go and you can-
“Shut up, goddamnit!” I screamed at myself to quiet the subconscious voice in the back of my head.
“I freaking know,” I said quieter. “God, I freaking know.”
I sat in bed, the video that was playing already forgotten. As video, after video played, I was on my phone, checking stars and numbers before I eventually drifted off to sleep.
The next morning I didn’t even get to make myself a coffee. I was mad, pissed off and I wanted to finally make progress. For a while, I tinkered about the various codes I’d read about. What if there was a code, but what but if it concerned the entire book and not just the secret pages? What if it was related to the adventure after all? Maybe you could scramble up page numbers and-
I stopped and rubbed my temples. Calm down, don’t go crazy. Calm down and take a step back. You don’t even know if there are any damned codes hidden in the book. You did well deciphering all the different adventure paths and the connections between them. You did well discovering all the secret pages. But what if there’s something you haven’t discovered yet?
That was the question that told me what I had to do. Something I hadn’t dared to do so far.
I had to go through the entire book.
I had to make my way through it not following the adventure, but going page by page and look out for anything new. There might be chapters I hadn’t discovered yet, hadn’t read yet.
With newfound energy and a new plan, I started right away.
My phone rang shortly after noon, but this time, I didn’t even bother with it. I just ignored it. After all, I had more important things to do.
This time I didn’t just write down chapters, choices, and connections. This time I wrote down every single thing that came up. I took note of every single object that was mentioned then added the page number, the corresponding path, and any reference I knew about it.
It was a momentous task. I spent the entire day doing it and barely made it through the first 130 pages.
The next day, Sunday, I didn’t even finish another hundred. The further I came, the more objects I noticed, the more combinations, and references. At times, I even had to go back, to cross-check things, and to change notes accordingly.
It was the most enduring task I’d ever attempted, concerning this damned book and probably my entire life.
It took me weeks. I finished stacks upon stacks of notes. I went to the office supply store multiple times a week buying stacks of papers I ended up filling by the day.
Work during this time was barely an afterthought. I was barely functioning at all. I was typing in numbers and names almost on autopilot. By now I didn’t even get stares anymore. I was entirely ignored, a shell of a man, a ghost that stumbled to his cubicle in the morning and rushed back home in the evening.
Days went by, then weeks, as I slaved away over the book’s many pages. Until one day, when I was finally done. I can’t even say how many weeks I’d been at it.
There were stacks of hundreds of papers, maybe even more. Notes, references, objects, names, words, anything basically.
I’d just created a table of how often each and every single object appeared and in which setting when I noticed a new hint. I stared at it with a giant grin on my face.
The Ruby Orb had been the very first object I’d added to the table.
It appeared in all paths:
  1. Fantasy - 31 times
  2. Space - 3 times
  3. Stone Age - 2 times
  4. Ocean and Pirates - 11 times
  5. Desert Ruins - 29 times
  6. Mountains - 17 times
  7. City-State - 7 times
  8. Ancient Rome - 5 times
  9. Jungle Tribes - 13 times
  10. Small Village - 19 times
  11. Underwater Civilization - 23 times
As I wrote those numbers down, there was something about them. Somehow I knew those numbers. I went over them, staring at them for a while before it hit me.
I cross-checked it online, and I was right. They were all prime numbers! Yes, I thought, I’d found something new!
I quickly rechecked another object, the Desert Orb, and realized it was the same here, too. This one’s appearances made up a simpler sequence. It only appeared once in the city-state, twice in fantasy, and finally 11 times in the desert ruins.
I couldn’t help but grin. I did it for another object, this one the Ebony Stick. It too appeared in all paths and its number was increased by two, starting at 4 and going up to 26.
That’s when I knew what I had to do. I had to go through all the objects, all the hundreds of objects in the damned book, and check how often they appeared. There was a correlation, another part of the puzzle. I was exhilarated, in a state of glee and unbound excitement.
These number sequences, maybe they were the key to figuring out what the secret pages meant, or maybe the page numbers in general. I started laughing. I could feel it, I was so damn close.
I slept when necessary, ate when necessary, right there on the living room floor. It was only once that I thought about work, only in passing, and the idea that I should go never even came to my mind.
My phone was at the other and of the room. I ignored it entirely during that time. It wasn’t important. This right here, that’s what was important.
I was done by the end of the week. It was long past midnight on Saturday when I’d finally deciphered the number sequences of all 311 objects in the book.
When I was done with my work, I looked at the tables of objects in a state of awe. I spread them out in front of me and marveled at the dozen or so pages. For a moment I was about to dive into them when I realized how tired I was.
For the first time since the beginning of the week, I picked up my phone. It was off, must’ve been for days. I connected it to the charger and turned it on. I was bombarded with a plethora of notifications. For almost a minute the damned thing started ringing and vibrating.
There were a few messages from Andrew, asking how I was doing and if I’d stopped with my damned obsession yet. I laughed and closed the chat.
I’d also received countless emails. Most of them were from work and only now did I remember that I hadn’t shown up for an entire week. They started normal enough, reminding me to call if I was sick, became reproachful after a day or two, and finally angry. The last one told me this was the last straw. I should come in on Monday for a talk and be prepared to clean out my desk.
It was strange how little I felt about it, how little it mattered in the grander scale of things. I almost laughed again as I threw the phone aside and laid down to catch some sleep.
When I woke up, I went right back to work. I tinkered with the number sequences, looked at each one of them, added them up, multiplied, and divided them.
It was the Crown of Ice that finally made me look up. When I added all its appearances together, I came to a total of 1000. This damned thing, I thought, it was by far the most common object in the damned book.
I started to read up on it in my notes. It was said in the Manuscript of the Seven Seas, that the Crown of Ice was found in the Crypt of the Dragon. The Crypt of the Dragon was located in the desert ruins.
I went back to it, page 1544, and read the part again. There were three choices. One sent me to leave without the crown and sent me back to a desert tribe. Destroying the crown ended in painful death while the third option was wearing it.
All right, wearing the crown opened a secret passage that sent me to the location of the Magic Water and from there back on my way through the desert.
Dammit, I thought I had something! I was about to go back to the list. Maybe the number thousand was another coincidence.
Then something made me look up. The crown appeared in the desert ruins a total of 53 times. I thought about it. The desert ruins one was by far the shortest path. How long was it in total again?
I stepped up to my living room wall and counted the chapters. When I followed them, there was only a single path that was longer than 50. It came to a total length of 78 chapters before it started from the beginning.
Chapter 53 described what you found if you opened a chest hidden in the Ancient Pyramid.
I read the entire chapter again. It was titled ‘The Treasure Chest.’ There was a total of 289 gold coins in the chest. When I went back to the list of objects, I noticed that the gold coin was mentioned a total of 289 times. The same was true for the sparkling diamonds. There were a total of 33 in the chest and the object itself came up 33 times in the book.
I almost laughed when I noticed that it was true for the third object in the chest as well.
I got an empty page and like a child, I wrote the words Chest, Pyramid, and Treasure in huge letters at the top of it before I went and added all the two dozen objects in the chest.
While I did it, I wondered if there was something like this for every other object in the book. What if every object’s number of appearances was mentioned somewhere in the book? Not just in this chest, but just somewhere.
And then, on a whim, I asked myself another question. What if certain objects didn’t? What if there were just a few or maybe just one whose number was mentioned nowhere? Maybe those were the important ones!
For the entirety of Sunday, I followed through with this idea. I calculated, I added objects to yet more lists, I followed through paths and loops, studied my notes, and slowly, the number of objects remaining got smaller and smaller.
Eventually, just as I’d hoped, there was a single object whose total number of appearances was mentioned nowhere. It was a small, red die. One that was mentioned here and there, only in passing when people played a game of dice in bars or the streets.
There had to be something to this damned thing, I knew it! After this entire week, no after all these entire months, I finally had something, I’d finally narrowed it all down to a single object.
A shiver went down my spine when I realized that this might be it. This might be the solution that I’d been searching for all this time!
I went back to my notes about the red die and all its appearances. Here a few kids were playing with it in the streets, there was someone holding it in their hand, and here it rolled onto the floor when a fight broke out.
Finally, I found what I’d been looking for. There was only a single instance in the entire book where you could interact with it. It was in a bar in space where you could join a futuristic game of dice.
When the game was done, you could pocket the red die.
The short chapter that followed it was mundane and almost unimportant. But when I read it, I noticed something else, not in the text, but the choices below. Weren’t they the same as in the chapter before?
I went back to the preceding page and reread it. Yes, the same two choices, sending you to the same two pages. Almost as if picking up the die didn’t matter at all. Making it appear as nothing but a red herring.
And I grinned. I grinned wider than I had ever before.
There had to be a hint here, no, there had to be a way of finishing this entire damn thing.
I wrote down the entire paragraph and went back to work, studying it. I checked everything that was mentioned in it: the page number, the chapter title, colors, words, anything I could think of. Until late in the morning hours, I pondered over this one, single paragraph.
I could barely keep my eyes open when I stumbled upon it. It was silly, but I exploded with joy and was suddenly wide awake again.
The number of words in each sentence was eight. The number of sentences was eight as well. There were eight sentences here, with eight words each. This was no coincidence. This was it, the total number of words was 64, the square number of eight. There was too much here for it to be a coincidence.
I rushed back to the buck, almost stumbled over my feet, and threw open page 64. Like a crazed, starved animal I poured over the words on the page, almost pressing my face against it. The chapters, there had to be something here, the solution had to be right in front of me.
Yet when I was done reading it, I was dumbfounded. The entire page comprised a single chapter, a chapter I knew damn well. And I realized that I knew the number 64 damn well, too.
I was at the beginning of the fantasy setting. I read once more that I was a young farmer, standing in front of a burned down far, the bodies of his dead parents next to him and that I was about to set out on a grand adventure.
For the next three hours, I analyzed every single word in the paragraph, every single one and I found as many hints as I could search for. I went back to the die paragraph and slowly I came to another conclusion and then another. The number of certain letters corresponded with the number of other objects in the space path. If you put certain letters from certain words together you ended up with yet another number. I followed every single one of them, but each one ended at another mundane position in the book. I slaved away over those as well, reached and analyzed them and I found more hints, more connections, more clues. And the longer and the more deeply I analyzed them, the more I could find, if only I wanted to. There was almost an endless number of nonsensical clues and hints if you wanted so. They were all leading me on, leading me around in a circle, on and on and on and on.
And I sat there, over the damned book, over hundreds, if not thousands of pages of notes. I sat in front of an entire wall covered in information and I laughed. For long, terrible minutes I couldn’t stop laughing.
This was all crazy. This was all entirely and utterly crazy.
And finally, it clicked. At this singular moment it finally and ultimately clicked.
There was no solution. The book had no solution. It finally made sense.
I’d slaved away for weeks, no for months, and all I’d done was to walk in circles, continue from one hint to another, only to be sent back to the beginning. The entire damned book was a loop, a loop of loops with secret loops that sent you to more secret loops.
And then, for the first time in months, I closed the book and put it away.
After that, I slowly went and took down all the mad pages from my wall, stacked up all the notes, and put them together in a box in an almost apathetic state.
I was done.
All of this had been utterly meaningless, a fundamental waste of time.
That night, I didn’t sleep. I lay in bed, contemplating a lot of things. My life, my work, the book, and why I’d been so taken by it. Yet, as with the book, there was no solution. There was nothing to it all.
The next day, with the book in my backpack, I made my way back to the store.
It felt as heavy as the world, an endless number of possibilities all resting on my back.
I knew I had to return it, I had to get rid of it before it might throw me into another crazy fit.
When I entered the store, the old man looked up.
“Can I help you with,” he started but broke up, a surprised look on his face.
“Well hello there, young man. Haven’t seen you in quite a while.”
I only nodded, took down my backpack, heaved out the book, and brought it to a rest in front of him.
“I’d like to return this.”
The old man probed me for a moment.
“We’ve got a no-money-back policy,” he said and pointed at a small, almost illegible sign behind himself.
“Yeah, that’s fine, I just want to get rid of it. I’m done with it.”
“So, you got your reward then?”
I couldn’t help but laugh a little. “Guess so.”
“What was it?” the old man asked curiously.
“It’s meaningless, there’s no end to it. It just goes on forever.”
“Oh,” he mouthed with an expression of surprise.
“You ever tried it yourself, old man?”
“Did once, when I was younger, but I got nowhere. Was too damned hard for me.”
“There’s one thing I’m wondering about. Who the hell wrote a thing like this? I mean, it’s freaking insane. How’d’you ever write something like this?”
“Well, to tell you the truth, there’s something I didn’t tell you when you first came in. I originally bought the book from a street merchant, half a century ago. He told me a few things, and I learned a few more over the years from other people.”
“Like what?”
“There’s nothing but rumors of course. The merchant told me it was written by the Devil himself. Then someone told me it was supposedly written by Machiavelli back in the day, to confuse a man who’d wronged him and drive him mad. There was also a guy who was convinced it was the work of aliens. The most plausible thing I heard is that there’s no single author, but that it was written over the course of centuries, with each new writer adding to it and extending it, making it better and ever more complicated.”
“Heh, sounds about-“ I started, but the old man raised a hand and pushed his head forward, towards me.
“There’s one more. Someone else told me it was written by no other than God himself as a big, giant joke about our earthly existence itself.”
I laughed, but it was a weak laugh. Nothing but a giant joke, that fit it damn well, didn’t it?
And as I stepped out of the store and stared at the city surrounding me, watching the urban bustle, I began thinking.
People were hurrying past me, on their way to work, cars and buses rushed down the streets. As I watched it all, this ever-repeating bustle of civilization, I realized that it was all another never-ending loop. On and on and on we all went, doing the same thing over and over and over again.
And as I walked on I started laughing. Maybe that was all right and maybe it didn’t matter. Who knows, maybe the book was true.
Maybe all of this, all of life, all of existence, just like the damned book, was nothing but God’s big, giant joke.
submitted by RehnWriter to TheCrypticCompendium [link] [comments]

Ambrosia and Registration

Now that Ambrosia is gone, new registrations are no longer possible, and due to their expiring codes, using legitimate license keys has become difficult. We may hope to see a few of their games revived in the future but at present, only the original releases are available. Perhaps this case study on Ambrosia's registration algorithms will be useful to some.

The Old System

In their earliest days, ASW didn't require registration, but they eventually began locking core features away behind codes. All of their classic titles use the original algorithm by Andrew Welch.
Given a licensee name, number of copies, and game name, the code generator runs through two loops. The first loop iterates over each letter of the capitalized licensee name, adding the ASCII representation of that letter with the number of copies and then rotating the resulting bits. The second loop repeats that operation, only using the game's name instead of the license holder's name.
Beginning with Mars Rising, later games added a step to these loops: XOR the current code with the common hex string $DEADBEEF. However, the rest of the algorithm remained essentially unchanged.
The resulting 32 bits are converted into a text registration code by adding the ASCII offset of $41 to each hex digit. This maps the 32-bit string into 8 characters, but due to the limit of a hex digit to only encode 16 values, codes only contain letters from the first 16 of the alphabet.
The following chart shows an example using a well-known hacked code for Slithereens.
 Iteration 1 ('A' in ANONYMOUS) Name: Anonymous Code = $0 + $41 Number: 100 (hex: $64) -> << 6 ... -> Code = $FD53 FFA0 Game: Slithereens + $64 ^ $DEAD BEEF >> 1 Add $41 to each digit: Registration -> $41 + $F = $50 = P -> Reverse string -> ------------ $41 + $D = $4E = N | AKPPDFNP | ... ------------ 
Here is a Python implementation of the v1 system: aswreg_v1.py
Once you have the bitstring module installed via sudo pip install bitstring, you can test the output yourself with python aswreg_v1.py "Anonymous" 100 "Slithereens".

The New System

As Ambrosia's Matt Slot explains, the old system continued to allow a lot of piracy, so in the early 2000's they decided to switch to a more challenging registration system. This new method was based on polynomial hashing and included a timestamp so that codes could be expired and renewed. Ambrosia now had better control over code distribution, but they assumed their renewal server would never be shut down...
They also took more aggressive steps to reduce key sharing. The registration app checks against a list of blacklisted codes, and if found to be using one, the number of licenses is internally perturbed so that subsequent calculations fail. To combat tampering, your own information can get locally blacklisted in a similar manner if too many failed attempts occur, at least until the license file is deleted. Furthermore, the app attempts to verify the system time via a remote time server to minimize registration by changing the computer's clock.
You can disable the internet connection, set the clock back, and enter codes. There's also a renewal bot for EV: Nova. But let us look at the algorithm more closely.

64-bit Codes

The first noticeable difference is that registration codes in v2 are now 12 digits, containing both letters and numbers. This is due to a move from a 32-bit internal code to a 64-bit one. Rather than add an ASCII offset to hex digits, every letter or number in a new registration code has a direct mapping to a chunk of 5 bits. Using 5 bits per digit supports up to 32 values, or almost all letters of the alphabet and digits up to 9 (O, I, 0, and 1 were excluded given their visual similarities).
The resulting 64 bits (really only 60 because the upper 4 are unused: 12 digits * 5 bits each = 60) are a combination of two other hashes XOR'd together. This is a notable change from v1 because it only used the registration code to verify against the hashing algorithm. Only the licensee name, number of copies, and game name were really used. In v2, the registration code is itself a hash which contains important information like a code's timestamp.

Two Hashes

To extract such information from the registration code, we must reverse the XOR operation and split out the two hashes which were combined. Fortunately, XOR is reversible, and we can compute one of the hashes. The first hash, which I'll call the userkey, is actually quite similar to v1's algorithm. It loops through the licensee name, adding the ASCII value, number of copies, and shifting bits. This is repeated with the game name. An important change is including multiplication by a factor based on the string size.
The second hash, which I'll call the basekey, is the secret sauce of v2; it's what you pay Ambrosia to generate when registering a product. It is not computed by the registration app, but there are several properties by which it must be validated.
The chart below visualizes the relationships among the various hashes, using the well-known "Barbara Kloeppel" code for EV: Nova.
 TEXTCODE: ------------------ | L4B5-9HJ5-P3NB | ------------------ HASH1 (userkey): | calculated from licensee name, | copies, and game name BINCODE: ---------------------- 5 bits per character, /-> | 0x0902f8932acce305 | plus factors & rotation / ---------------------- ---------------------- / | 0x0008ecc1c2ee5e00 | <-- XOR ---------------------- \ \ ---------------------- \-> | 0x090a1452e822bd05 | ---------------------- HASH2 (basekey): generated by Ambrosia, extracted via XOR 

The Basekey

The basekey is where we must handle timestamps and several validation checks. Consider the binary representation of the sample 0x090a1452e822bd05:
binary basekey (above) and indices for reference (below): 0000 1001 0000 1010 0001 0100 0101 0010 1110 1000 0010 0010 1011 1101 0000 0101 b0 b3 b7 b11 b15 b19 b23 b27 b31 b35 b39 b43 b47 b51 b55 b59 b63 

Timestamps

Timestamp are encoded as a single byte comprised of bits indexed at b56,51,42,37,28,23,14,9 from the basekey. In this example, the timestamp is 01100010 or 0x62 or 98.
The timestamp represents the number of fortnights that have passed since Christmas Day, 2000 Eastern time, modulo 256 to fit in one byte. For example, 98 fortnights places the code at approximately October 2004.
Stored as a single byte, there are 256 unique timestamps. This is 512 weeks or about 10 years. Yes, this means that a code's validity rotates approximately once every decade.
After the code's timestamp is read, it is subtracted from the current timestamp (generated from the system clock or network time server if available). The difference must be less than 2, so codes are valid for 4 weeks or about a month at a time.
Of note, Pillars of Garendall has a bug in which the modulo is not taken correctly, so the timestamp corresponding to 0xFF is valid without expiry.

Validity Check

The last three bits, b60-63, contain the sum of all other 3-bit chunks in the basekey, modulo 7. Without the correct number in these bits, the result will be considered invalid.
To this point, we have covered sufficient material to renew licenses. The timestamp can be changed, the last three bits updated, the result XOR'd with the userkey, and finally, the code converted from binary to text.

Factors for Basekey Generation

I was next curious about code generation. For the purposes of this write-up, I have not fully reverse engineered the basekey, only duplicated the aspects which are used for validation. This yields functional keys, just not genuine ones. If the authors of the EV: Nova renewal bot have fully reversed the algorithm, perhaps they will one day share the steps to genuine basekey creation.
One aspect validated by the registration app is that the licensee name, number, and game name can be modified to yield a set of base factors. These are then multiplied by some number and written into the basekey. We do not need the whole algorithm; we simply must check that the corresponding regions in the basekey are multiples of the appropriate factors.
The regions of note in the basekey are f1 = b5-9,47-51,33-37,19-23, f2 = b43-47,29-33,15-19,57-61, and f3 = b24-28,10-14,52-56,38-42. The top 5 bits and f3 are never actually checked, so they can be ignored.
Considering f1 and f2, the values in the sample basekey are 0x25DA and 0x1500, respectively. The base factors are 0x26 and 0x1C, which are multiples by 0xFF and 0xC0, respectively.
Rather than analyze the code in detail, I wrote a small script to translate over the disassembled PPC to Python wholesale. It is sufficient for generating keys to EV: Nova, using the perfectly-valid multiple of 1x, but I have found it fails for other v2 products.

Scripts

Here is a Python implementation for v2: aswreg_v2.py and aswreg_v2core.py
With bitstring installed, you can renew codes like python aswreg_v2.py renew "L4B5-9HJ5-P3NB" "Barbara Kloeppel" 1 "EV Nova" (just sample syntax, blacklisted codes will still fail in the app). There's also a function to check a code's timestamp with date or create a new license with generate.
As earlier cautioned, generating basekeys relies on code copied from disassembled PPC and will likely not work outside EV: Nova. In my tests with other v2 products, all essential parts of the algorithm remain the same, even the regions of the basekey which are checked as multiples of the factors. What differs is the actual calculation of base factors. Recall that these keys were created by Ambrosia outside the local registration system, so the only options are to copy the necessary chunks of code to make passable factors for each product or to fully reverse engineer the basekey algorithm. I've no doubt the factors are an easy computation once you know the algorithm, but code generation becomes less critical when renewal is an option for other games. I leave it to the authors of the Zeus renewal bot if they know how to find these factors more generally.
To renew codes for other games, keep in mind the name must be correct. For instance, Pillars of Garendall is called "Garendall" internally. You can find a game's name by typing a gibberish license in the registration app and seeing what file is created in Preferences. It should be of the form License.
Finally, a couple disclaimers: I have only tested with a handful of keys, so my interpretations and implementations may not be completely correct. YMMV. Furthermore, these code snippets are posted as an interesting case study about how a defunct company once chose to combat software piracy, not to promote piracy. Had Ambrosia remained operational, I'm sure we would have seen a v3 registration system or a move to online-based play as so many other games are doing today, but I hope this has been helpful for those who still wish to revisit their favorite Ambrosia classics.
submitted by asw_anon to evnova [link] [comments]

./play.it 2.12: API, GUI and video games

./play.it 2.12: API, GUI and video games

./play.it is a free/libre software that builds native packages for several Linux distributions from DRM-free installers for a collection of commercial games. These packages can then be installed using the standard distribution-provided tools (APT, pacman, emerge, etc.).
A more complete description of ./play.it has already been posted in linux_gaming a couple months ago: ./play.it, an easy way to install commercial games on GNU/Linux
It's already been one year since version 2.11 was released, in January 2019. We will only briefly review the changelog of version 2.12 and focus on the different points of ./play.it that kept us busy during all this time, and of which coding was only a small part.

What’s new with 2.12?

Though not the focus of this article, it would be a pity not to present all the added features of this brand new version. ;)
Compared to the usual updates, 2.12 is a major one, especially since for two years, we slowed down the addition of new features. Some patches took dust since the end of 2018 before finally be integrated in this update!
The list of changes for this 2.12 release can be found on our forge. Here is a full copy for convenience:

Development migration

History

As many free/libre projects, ./play.it development started on some random sector of a creaking hard drive, and unsurprisingly, a whole part of its history (everything predating version 1.13.15 released on Mars 30th, 2016) disappeared into the limbs because some unwise operation destroyed the only copy of the repository… Lesson learned, what's not shared don't stay long, and so was born the first public Git repository of the project. The easing of collaborative work was only accidentally achieved by this quest for eternity, but wasn't the original motivation for making the repository publicly available.
Following this decision, ./play.it source code has been hosted successively by many shared forge platforms:

Dedicated forge

As development progressed, ./play.it began to increase its need for resources, dividing its code into several repositories to improve the workflow of the different aspects of the projects, adding continuous integration tests and their constraints, etc. A furious desire to understand the nooks and crannies behind a forge platform was the last deciding factor towards hosting a dedicated forge.
So it happened, we deployed a forge platform on a dedicated server, hugely benefiting from the tremendous work achieved by the GitLab's package Debian Maintainers team. In return, we tried to contribute our findings in improving this software packaging.
That was not expected, but this migration happened just a little time before the announcement “Déframasoftisons Internet !” (French article) about the planned end of Framagit.
This dedicated instance used to be hosted on a VPS rented from Digital Ocean until the second half of July 2020, and since then has been moved to another VPS, rented from Hetzner. The specifications are similar, as well as the service, but thanks to this migration our hosting costs have been cut in half. Keeping in mind that this is paid by a single person, so any little donation helps a lot on this front. ;)
To the surprise of our system administrator, this last migration took only a couple hours with no service interruption reported by our users.

Forge access

This new forge can be found at forge.dotslashplay.it. Registrations are open to the public, but we ask you to not abuse this, the main restriction being that we do not wish to host projects unrelated to ./play.it. Of course exceptions are made for our active contributors, who are allowed to host some personal projects there.
So, if you wish to use this forge to host your own work, you first need to make some significant contributions to ./play.it.

API

The collection of supported games growing endlessly, we have started the development of a public API allowing access to lots of information related to ./play.it.
This API, which is not yet stabilized, is simply an interface to a versioned database containing all the ./play.it scripts, handled archives, games installable through the project. Relations are, of course, handled between those items, enabling its use for requests like : « What packages are required on my system to install Cæsar Ⅲ ? » or « What are the free (as in beer) games handled via DOSBox ? ».
Originally developed as support for the new, in-development, Web site (we'll talk about it later on), this API should facilitate the development of tools around ./play.it. For example, it'll be useful for whomever would like to build a complete video game handling software (downloading, installation, starting, etc.) using ./play.it as one of its building bricks.
For those curious about the technical side, it's an API based on Lumeneffectuant that makes requests on a MariaDB database, all self-hosted on a Debian Sid. Not only is the code of the API versioned on our forge, but also the structure and content of the databases, which will allow those who desired it to install a local version easily.

New website

Based on the aforementioned API, a new website is under development and will replace our current website based on DokuWiki.
Indeed, if the lack of database and the plain text files structure of DokuWiki seemed at first attractive, as ./play.it supported only a handful of games (link in French), this feature became more inconvenient as the library of ./play.it supported games grew.
We shall make an in-depth presentation of this website for the 2.13 release of ./play.it, but a public demo of the development version from our forge is already available.
If you feel like providing an helping hand on this task, some priority tasks have been identified to allow opening a new Web site able to replace the current one. And for those interested in technical details, this web Site was developed in PHP using the framework Laravel. The current in-development version is hosted for now on the same Debian Sid than the API.

GUI

A regular comment that is done about the project is that, if the purpose is to make installing games accessible to everyone without technical skills, having to run scripts in the terminal remains somewhat intimidating. Our answer until now has been that while the project itself doesn't aim to providing a graphical interface (KISS principle "Keep it simple, stupid"), still and always), but that it would be relatively easy to, later on, develop a graphical front-end to it.
Well, it happens that is now reality. Around the time of our latest publication, one of our contributors, using the API we just talked about, developed a small prototype that is usable enough to warrant a little shout out. :-)
In practice, it is some small Python 3 code (an HCI completely in POSIX shell is for a later date :-°), using GTK 3 (and still a VTE terminal to display the commands issued, but the user shouldn't have to input anything in it, except perhaps the root password to install some packages). This allowed to verify that, as we used to say, it would be relatively easy, since a script of less than 500 lines of code (written quickly over a week-end) was enough to do the job !
Of course, this graphical interface project stays independent from the main project, and is maintained in a specific repository. It seems interesting to us to promote it in order to ease the use of ./play.it, but this doesn't prevent any other similar projects to be born, for example using a different language or graphical toolkit (we, globally, don't have any particular affinity towards Python or GTK).
The use of this HCI needs three steps : first, a list of available games is displayed, coming directly from our API. You just need to select in the list (optionally using the search bar) the game you want to install. Then it switches to a second display, which list the required files. If several alternatives are available, the user can select the one he wants to use. All those files must be in the same directory, the address bar on the top enabling to select which one to use (click on the open button on the top opens a filesystem navigation window). Once all those files available (if they can be downloaded, the software will do it automatically), you can move ahead to the third step, which is just watching ./play.it do its job :-) Once done, a simple click on the button on the bottom will run the game (even if, from this step, the game is fully integrated on your system as usual, you no longer need this tool to run it).
To download potentially missing files, the HCI will use, depending on what's available on the system, either wget, curl or aria2c (this last one also handling torrents), of which the output will be displayed in the terminal of the third phase, just before running the scripts. For privilege escalation to install packages, sudo will be used preferentially if available (with the option to use a third-party application for password input, if the corresponding environment variable is set, which is more user-friendly), else su will be used.
Of course, any suggestion for an improvement will be received with pleasure.

New games

Of course, such an announcement would not be complete without a list of the games that got added to our collection since the 2.11 release… So here you go:
If your favourite game is not supported by ./play.it yet, you should ask for it in the dedicated tracker on our forge. The only requirement to be a valid request is that there exists a version of the game that is not burdened by DRM.

What’s next?

Our team being inexhaustible, work on the future 2.13 version has already begun…
A few major objectives of this next version are :
If your desired features aren't on this list, don't hesitate to signal it us, in the comments of this news release. ;)

Links

submitted by vv224 to linux_gaming [link] [comments]

Binary Options Trading Profit - DIGIT DIFFERS & DIGIT MATCH Binary BOT #Part15 ( Digit Differs 99% Win ) CARA DIGIT DIFFER BINARY TERBARU 2021-PART 19 - YouTube Binary com digit differ bot xml download 2019 strategy ... BINARY.COM TRADING DIGIT DIFFERS-THE BEST STRATEGY binary.com latest digit differ method perfectly working Binary com sinhala digit differ strategy review best ... TRIK DIGIT DIFFER BINARY MASIH AMPUH - 2021 - YouTube

1 Tick Digit differ or super digit differ is one one the easiest bot out there. You can check my other bots about ... and make money from binary options and forex. ProvenBinaryBot.com Blog is created to help people to give them some good resources so that they can become successful in the binary options and forex industry. Access All Binary.com Robots. Recent Posts. How To Win Binary Options ... The bot only works on Windows machines and with the broker binary.com. This is how the Digit Differ Bot Looks. How the Digit Differ Bot looks after reaching the Target Profit. We are trading the Differs Contract with 5 ticks. You win the Digit Differs payout if the last digit of the last tick is not the same as your prediction. The payout does fluctuate depending on the trade amount, but is ... How do they Differ? Binary Options and CFDs are merely derivatives of traditional forex assets. They are also derivatives of other assets such as commodities, equities and crypto currency. For example, when a trader is buying a CALL option on EURUSD they are in effect entering a long position on the currency pair. The opposite can be said of a PUT option and shorting the asset. The only way ... Binary options share all of the same underlying factors as traditional vanilla options. When pricing binary options, the same inputs are used to determine its value.The only way in which they differ is their pay-out structure on expiry.. On expiry of a binary option, the pay-out of the option is only one of two outcomes. Binary options and digital options differences. You have to make an assumption about the future price direction. However, in binary options trading, this is all that matters, will the price will go up or down from the current market price, while in digital options trading there is an additional factor. What are binary options. A binary option is a type of option with a fixed payout in which you predict the outcome from two possible results. If your prediction is correct, you receive the agreed payout. If not, you lose your initial stake, and nothing more. It's called 'binary' because there can be only two outcomes – win or lose. Advantages of binary options trading. Aside from the ... Binary options trading has long existed over-the-counter, what is the difference between binary and digital options only experiencing a massive growth spurt in the last few years. 1. IQ Option is the only broker in the market to offer this type of options) are somewhat more complicated to understand than other types of options Digital Options offer a high degree of freedom and a higher earning ...

[index] [16533] [21889] [14086] [5454] [22836] [13653] [27846] [14261] [11046] [28125]

Binary Options Trading Profit - DIGIT DIFFERS & DIGIT MATCH

Make $5 usd Every 2 Minutes Trading Binary Options Digits Differ 100% winning - Duration: 7:11. Proudly Tech Money General Tips And Tricks 11,831 views Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube. binary options trading Digits Over Strategies With Indicators Make $30usd in few minutes - Duration: 16:14. Proudly Tech Money General Tips And Tricks 10,916 views 16:14 CARA DIGIT DIFFER BINARY TERBARU 2021-PART 19 Bagi teman teman yang hobi bisnis online trading di platfon Deriv com' binary com, binomo' olymptrade khususnya... Best Binary Options Strategy 2020 - 2 Minute Strategy LIVE TRAINING! - Duration: 43:42. BLW Online Trading Recommended for you. 43:42. B2IQ Copy Trade - O melhor robô agora tem Copy Trade ... Binary Options Guaranteed Latest Digits Differ No Loss Volatility strategies $20usd in 20 MIN - Duration: 19:18. Proudly Tech Money General Tips And Tricks 15,303 views 19:18 TRIK DIGIT DIFFER BINARY MASIH AMPUH - 2021 Bagi teman teman yang hobi bisnis online trading di platfon Deriv com' binary com, binomo' olymptrade khususnya b... Strategi trik binary pasti profit sudah banyak yang berhasil. strategi binary 5 tik, rise fall, digit difers, digit match, touch dan no touch, higher lower sangat mudah dan bisa menghasilkan ... - Binary.com real account rise fall mt5 digit differ option examples ... Quitting binary option and pausing your trading with the markets basically because of recent failures? Well I was at the ... DIGIT DIFFERS BINARY OPTIONS - TIPS & TRICK 95.5 % WIN - Duration: 11:14. Trader Gokil Om Jindul 1,708 views. 11:14. Day Trading Strategies for Beginners: Class 1 of 12 - Duration: 55:18. ...

https://binaryoptiontrade.titadibirdqua.ml