Non-binary fuzz? Looking to set a range for fuzz options so there's an interpolation, not a binary mask
convert SignatureOnWhite.jpg -fuzz 30% -transparent white SignatureTransparent.png Is crap because it is binary, if the pen is semiopaque I'd like to take all values that trend towards white and make them trend towards transparency on the alpha channel, feather the threshold of the fuzz option over a specified range. Also in 6.9, mogrify with the above comment with * and -format png did nothing - very unintuitive.
It's that time of year again, and we've got a new version of macOS on our hands! This year we've finally jumped off the 10.xx naming scheme and now going to 11! And with that, a lot has changed under the hood in macOS. As with previous years, we'll be going over what's changed in macOS and what you should be aware of as a macOS and Hackintosh enthusiast.
Has Nvidia Support finally arrived?
What has changed on the surface
A whole new iOS-like UI
Broken Kexts in Big Sur
What has changed under the hood
New Kernel cache system: KernelCollections!
New Kernel Requirements
Secure Boot Changes
No more symbols required
Broken Kexts in Big Sur
MSI Navi installer Bug Resolved
New AMD OS X Kernel Patches
Other notable Hackintosh issues
Several SMBIOS have been dropped
Extra long install process
X79 and X99 Boot issues
New RTC requirements
Legacy GPU Patches currently unavailable
What’s new in the Hackintosh scene?
Dortania: a new organization has appeared
Dortania's Build Repo
True legacy macOS Support!
Intel Wireless: More native than ever!
Clover's revival? A frankenstein of a bootloader
Death of x86 and the future of Hackintoshing
Getting ready for macOS 11, Big Sur
Has Nvidia Support finally arrived?
Sadly every year I have to answer the obligatory question, no there is no new Nvidia support. Currently Nvidia's Kepler line is the only natively supported gen. However macOS 11 makes some interesting changes to the boot process, specifically moving GPU drivers into stage 2 of booting. Why this is relevant is due to Apple's initial reason for killing off Web Drivers: Secure boot. What I mean is that secure boot cannot work with Nvidia's Web Drivers due to how early Nvidia's drivers have to initialize at, and thus Apple refused to sign the binaries. With Big Sur, there could be 3rd party GPUs however the chances are still super slim but slightly higher than with 10.14 and 10.15.
What has changed on the surface
A whole new iOS-like UI
Love it or hate it, we've got a new UI more reminiscent of iOS 14 with hints of skeuomorphism(A somewhat subtle call back to previous mac UIs which have neat details in the icons) You can check out Apple's site to get a better idea:
A feature initially baked into APFS back in 2017 with the release of macOS 10.13, High Sierra, now macOS's main System volume has become both read-only and snapshotted. What this means is:
3rd parties have a much more difficult time modifying the system volume, allowing for greater security
OS updates can now be installed while you're using the OS, similar to how iOS handles updates
Time Machine can now more easily perform backups, without file inconsistencies with HFS Plus while you were using the machines
However there are a few things to note with this new enforcement of snapshotting:
OS snapshots are not calculated as used space, instead being labeled as purgeable space
Disabling macOS snapshots for the root volume with break software updates, and can corrupt data if one is applied
What has changed under the hood
Quite a few things actually! Both in good and bad ways unfortunately.
New Kernel Cache system: KernelCollections!
So for the past 15 years, macOS has been using the Prelinked Kernel as a form of Kernel and Kext caching. And with macOS Big Sur's new Read-only, snapshot based system volume, a new version of caching has be developed: KernelCollections! How this differs to previous OSes:
Kexts can no longer be hot-loaded, instead requiring a reboot to load with kmutil
OS Snapshots are now verified on each boot to ensure no system volume modifications occurred
apfs.kext and AppleImage4.kext verify the integrity of these snapshots
While technically these security features are optional and can be disabled after installation, many features including OS updates will no longer work reliably once disabled. This is due to the heavy reliance of snapshots for OS updates, as mentioned above and so we highly encourage all users to ensure at minimum SecureBootModel is set to Default or higher.
Note: ApECID is not required for functionality, and can be skipped if so desired.
Note 2: OpenCore 0.6.3 or newer is required for Secure Boot in Big Sur.
No more symbols required
This point is the most important part, as this is what we use for kext injection in OpenCore. Currently Apple has left symbols in place seemingly for debugging purposes however this is a bit worrying as Apple could outright remove symbols in later versions of macOS. But for Big Sur's cycle, we'll be good on that end however we'll be keeping an eye on future releases of macOS.
New Kernel Requirements
With this update, the AvoidRuntimeDefrag Booter quirk in OpenCore broke. Because of this, the macOS kernel will fall flat when trying to boot. Reason for this is due to cpu_count_enabled_logical_processors requiring the MADT (APIC) table, and so OpenCore will now ensure this table is made accessible to the kernel. Users will however need a build of OpenCore 0.6.0 with commit bb12f5for newer to resolve this issue. Additionally, both Kernel Allocation requirements and Secure Boot have also broken with Big Sur due to the new caching system discussed above. Thankfully these have also been resolved in OpenCore 0.6.3. To check your OpenCore version, run the following in terminal: nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version If you're not up-to-date and running OpenCore 0.6.3+, see here on how to upgrade OpenCore: Updating OpenCore, Kexts and macOS
Broken Kexts in Big Sur
Unfortunately with the aforementioned KernelCollections, some kexts have unfortunately broken or have been hindered in some way. The main kexts that currently have issues are anything relying on Lilu's userspace patching functionality:
Big Sur dropped a few Ivy Bridge and Haswell based SMBIOS from macOS, so see below that yours wasn't dropped:
iMac14,3 and older
Note iMac14,4 is still supported
MacPro5,1 and older
MacMini6,x and older
MacBook7,1 and older
MacBookAir5,x and older
MacBookPro10,x and older
If your SMBIOS was supported in Catalina and isn't included above, you're good to go! We also have a more in-depth page here: Choosing the right SMBIOS For those wanting a simple translation for their Ivy and Haswell Machines:
iMac13,1 should transition over to using iMac14,4
iMac13,2 should transition over to using iMac15,1
iMac14,2 and iMac14,3 should transition over to using iMac15,1
Note: AMD CPUs users should transition over to MacPro7,1
iMac14,1 should transition over to iMac14,4
Currently only certain hardware has been officially dropped:
"Official" Consumer Ivy Bridge Support(U, H and S series)
These CPUs will still boot without much issue, but note that no Macs are supported with consumer Ivy Bridge in Big Sur.
Ivy Bridge-E CPUs are still supported thanks to being in MacPro6,1
Ivy Bridge iGPUs slated for removal
HD 4000 and HD 2500, however currently these drivers are still present in 11.0.1
Similar to Mojave and Nvidia's Tesla drivers, we expect Apple to forget about them and only remove them in the next major OS update next year
Due to the new snapshot-based OS, installation now takes some extra time with sealing. If you get stuck at Forcing CS_RUNTIME for entitlement, do not shutdown. This will corrupt your install and break the sealing process, so please be patient.
X79 and X99 Boot issues
With Big Sur, IOPCIFamily went through a decent rewriting causing many X79 and X99 boards to fail to boot as well as panic on IOPCIFamily. To resolve this issue, you'll need to disable the unused uncore bridge:
With macOS Big Sur, AppleRTC has become much more picky on making sure your OEM correctly mapped the RTC regions in your ACPI tables. This is mainly relevant on Intel's HEDT series boards, I documented how to patch said RTC regions in OpenCorePkg:
For those having boot issues on X99 and X299, this section is super important; you'll likely get stuck at PCI Configuration Begin. You can also find prebuilts here for those who do not wish to compile the file themselves:
For some reason, Apple removed the AppleIntelPchSeriesAHCI class from AppleAHCIPort.kext. Due to the outright removal of the class, trying to spoof to another ID (generally done by SATA-unsupported.kext) can fail for many and create instability for others. * A partial fix is to block Big Sur's AppleAHCIPort.kext and inject Catalina's version with any conflicting symbols being patched. You can find a sample kext here: Catalina's patched AppleAHCIPort.kext * This will work in both Catalina and Big Sur so you can remove SATA-unsupported if you want. However we recommend setting the MinKernel value to 20.0.0 to avoid any potential issues.
Legacy GPU Patches currently unavailable
Due to major changes in many frameworks around GPUs, those using ASentientBot's legacy GPU patches are currently out of luck. We either recommend users with these older GPUs stay on Catalina until further developments arise or buy an officially supported GPU
What’s new in the Hackintosh scene?
Dortania: a new organization has appeared
As many of you have probably noticed, a new organization focusing on documenting the hackintoshing process has appeared. Originally under my alias, Khronokernel, I started to transition my guides over to this new family as a way to concentrate the vast amount of information around Hackintoshes to both ease users and give a single trusted source for information. We work quite closely with the community and developers to ensure information's correct, up-to-date and of the best standards. While not perfect in every way, we hope to be the go-to resource for reliable Hackintosh information. And for the times our information is either outdated, missing context or generally needs improving, we have our bug tracker to allow the community to more easily bring attention to issues and speak directly with the authors:
Kexts here are built right after commit, and currently supports most of Acidanthera's kexts and some 3rd party devs as well. If you'd like to add support for more kexts, feel free to PR: Build Repo source
True legacy macOS Support!
As of OpenCore's latest versioning, 0.6.2, you can now boot every version of x86-based builds of OS X/macOS! A huge achievement on @Goldfish64's part, we now support every major version of kernel cache both 32 and 64-bit wise. This means machines like Yonah and newer should work great with OpenCore and you can even relive the old days of OS X like OS X 10.4! And Dortania guides have been updated accordingly to accommodate for builds of those eras, we hope you get as much enjoyment going back as we did working on this project!
Intel Wireless: More native than ever!
Another amazing step forward in the Hackintosh community, near-native Intel Wifi support! Thanks to the endless work on many contributors of the OpenIntelWireless project, we can now use Apple's built-in IO80211 framework to have near identical support to those of Broadcom wireless cards including features like network access in recovery and control center support. For more info on the developments, please see the itlwm project on GitHub: itlwm
Note, native support requires the AirportItlwm.kext and SecureBootModel enabled on OpenCore. Alternatively you can force IO80211Family.kext to ensure AirportItlwm works correctly.
Airdrop support currently is also not implemented, however is actively being worked on.
Clover's revival? A frankestien of a bootloader
As many in the community have seen, a new bootloader popped up back in April of 2019 called OpenCore. This bootloader was made by the same people behind projects such as Lilu, WhateverGreen, AppleALC and many other extremely important utilities for both the Mac and Hackintosh community. OpenCore's design had been properly thought out with security auditing and proper road mapping laid down, it was clear that this was to be the next stage of hackintoshing for the years we have left with x86. And now lets bring this back to the old crowd favorite, Clover. Clover has been having a rough time of recent both with the community and stability wise, with many devs jumping ship to OpenCore and Clover's stability breaking more and more with C++ rewrites, it was clear Clover was on its last legs. Interestingly enough, the community didn't want Clover to die, similarly to how Chameleon lived on through Enoch. And thus, we now have the Clover OpenCore integration project(Now merged into Master with r5123+). The goal is to combine OpenCore into Clover allowing the project to live a bit longer, as Clover's current state can no longer boot macOS Big Sur or older versions of OS X such as 10.6. As of writing, this project seems to be a bit confusing as there seems to be little reason to actually support Clover. Many of Clover's properties have feature-parity in OpenCore and trying to combine both C++ and C ruins many of the features and benefits either languages provide. The main feature OpenCore does not support is macOS-only ACPI injection, however the reasoning is covered here: Does OpenCore always inject SMBIOS and ACPI data into other OSes?
Death of x86 and the future of Hackintoshing
With macOS Big Sur, a big turning point is about to happen with Apple and their Macs. As we know it, Apple will be shifting to in-house designed Apple Silicon Macs(Really just ARM) and thus x86 machines will slowly be phased out of their lineup within 2 years. What does this mean for both x86 based Macs and Hackintoshing in general? Well we can expect about 5 years of proper OS support for the iMac20,x series which released earlier this year with an extra 2 years of security updates. After this, Apple will most likely stop shipping x86 builds of macOS and hackintoshing as we know it will have passed away. For those still in denial and hope something like ARM Hackintoshes will arrive, please consider the following:
We have yet to see a true iPhone "Hackintosh" and thus the likely hood of an ARM Hackintosh is unlikely as well
There have been successful attempts to get the iOS kernel running in virtual machines, however much work is still to be done
Apple's use of "Apple Silicon" hints that ARM is not actually what future Macs will be running, instead we'll see highly customized chips based off ARM
For example, Apple will be heavily relying on hardware features such as WX, kernel memory protection, Pointer Auth, etc for security and thus both macOS and Applications will be dependant on it. This means hackintoshing on bare-metal(without a VM) will become extremely difficult without copious amounts of work
Also keep in mind Apple Silicon will no longer be UEFI-based like Intel Macs currently are, meaning a huge amount of work would also be required on this end as well
So while we may be heart broken the journey is coming to a stop in the somewhat near future, hackintoshing will still be a time piece in Apple's history. So enjoy it now while we still can, and we here at Dortania will still continue supporting the community with our guides till the very end!
Getting ready for macOS 11, Big Sur
This will be your short run down if you skipped the above:
Lilu's userspace patcher is broken
Due to this many kexts will break:
WhateverGreen's DRM and -cdfon patches
Many Ivy Bridge and Haswell SMBIOS were dropped
See above for what SMBIOS to choose
Ivy Bridge iGPUs are to be dropped
Currently in 11.0.1, these drivers are still present
For the last 2, see here on how to update: Updating OpenCore, Kexts and macOS In regards to downloading Big Sur, currently gibMacOS in macOS or Apple's own software updater are the most reliable methods for grabbing the installer. Windows and Linux support is still unknown so please stand by as we continue to look into this situation, macrecovery.py may be more reliable if you require the recovery package. And as with every year, the first few weeks to months of a new OS release are painful in the community. We highly advise users to stay away from Big Sur for first time installers. The reason is that we cannot determine whether issues are Apple related or with your specific machine, so it's best to install and debug a machine on a known working OS before testing out the new and shiny. For more in-depth troubleshooting with Big Sur, see here: OpenCore and macOS 11: Big Sur
This is the CLI & GUI v0.17.1.3 'Oxygen Orion' point release. This release predominantly features bug fixes and performance improvements. Users, however, are recommended to upgrade, as it includes mitigations for the issue where transactions occasionally fail.
We encourage users to check the integrity of the binaries and verify that they were signed by binaryFate's GPG key. A guide that walks you through this process can be found here for Windows and here for Linux and Mac OS X.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 # This GPG-signed message exists to confirm the SHA256 sums of Monero binaries. # # Please verify the signature against the key for binaryFate in the # source code repository (/utils/gpg_keys). # # ## CLI 38a04a7bd00733e9d943edba3004e44730c0848fe5e8a4fca4cb29c12d1e6b2f monero-android-armv7-v0.17.1.3.tar.bz2 0e94f58572646992ee21f01d291211ed3608e8a46ecb6612b378a2188390dba0 monero-android-armv8-v0.17.1.3.tar.bz2 ae1a1b61d7b4a06690cb22a3389bae5122c8581d47f3a02d303473498f405a1a monero-freebsd-x64-v0.17.1.3.tar.bz2 57d6f9c25bd1dbc9d6b39fcfb13260b21c5594b4334e8ed3b8922108730ee2f0 monero-linux-armv7-v0.17.1.3.tar.bz2 a0419993fbc6a5ca11bcd2e825acef13e429824f4d8c7ba4ec73ac446d2af2fb monero-linux-armv8-v0.17.1.3.tar.bz2 cf3fb693339caed43a935c890d71ecab5b89c430e778dc5ef0c3173c94e5bf64 monero-linux-x64-v0.17.1.3.tar.bz2 d107384ff7b1f77ee4db93940dbfda24d6045bf59c43169bc81a0118e3986bfa monero-linux-x86-v0.17.1.3.tar.bz2 79557c8bee30b229bda90bb9ee494097d639d60948fc2ad87a029359b56b1b48 monero-mac-x64-v0.17.1.3.tar.bz2 3eee0d0e896fb426ef92a141a95e36cb33ca7d1e1db3c1d4cb7383994af43a59 monero-win-x64-v0.17.1.3.zip c9e9dde61b33adccd7e794eba8ba29d820817213b40a2571282309d25e64e88a monero-win-x86-v0.17.1.3.zip # ## GUI 15ad80b2abb18ac2521398c4dad9b8bfea2e6fc535cf4ebcc60d99b8042d4fb2 monero-gui-install-win-x64-v0.17.1.3.exe 3bed02f9db5b7b2fe4115a636fecf0c6ec9079dd4e9284c8ce2c67d4996e2a4a monero-gui-linux-x64-v0.17.1.3.tar.bz2 23405534c7973a8d6908b76121b81894dc853039c942d7527d254dfde0bd2e8f monero-gui-mac-x64-v0.17.1.3.dmg 0a49ccccb561445f3d7ec0087ddc83a8b76f424fb7d5e0d725222f3639375ec4 monero-gui-win-x64-v0.17.1.3.zip # # # ~binaryFate -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEgaxZH+nEtlxYBq/D8K9NRioL35IFAl+oVkkACgkQ8K9NRioL 35Lmpw//Xs09T4917sbnRH/DW/ovpRyjF9dyN1ViuWQW91pJb+E3i9TY+wU3q85k LyTihDB5pV+3nYgKPL9TlLfaytJIQG0vYHykPWHVmYmvoIs9BLarGwaU3bjO0rh9 ST5GDMdvxmQ5Y1LTwVfKkmBJw26DAs0xAvjBX44oRQjjuUdH6JdLPsqa5Kb++NCM b453m5s8bT3Cw6w0eJB1FQEyQ5BoDrwYcFzzsS1ag/C4Ylq0l6CZfEambfOQvdUi 7D5Rywfhiz2t7cfn7LaoXb74KDA/B1bL+R1/KhCuFqxRTOQzq9IxRywh4VptAAMU UR7jFHFijOMoyggIbkD48JmAjlBnqIyQJt4D5gbHe+tSaSoKdgoTGBAmIvaCZIng jfn9pTNzIJbTptsQhhyZqQQIH87D8BctZfX7pREjJmMNGwN2jFxXqUNqYTso20E6 YLtC1mkZBBZ294xHqT1mQpfznc6uVJhhoJpta0eKxkr1ahrGvWBDGZeVhLswnBcq 9dafAkR14rdK1naiCsygb6hMvBqBohVu/bWuhycJcv6XRvlP7UHkR6R8+s6U4Tk2 zaJERQF+cHQpEak5aEJIvDlb/mxteGyvPkPyL7UmADEQh3C4nREwkDSdnitYnF+e HxJZkshoC98+YCkWUP4+JYOOT158jKao3u0laEOxVGOrPz1Nc64= =Ys4h -----END PGP SIGNATURE-----
Note that you should be able to utilize the automatic updater in the GUI that was recently added. A pop-up will appear shortly with the new binary. In case you want to update manually, you ought to perform the following steps:
Extract the new binaries (the .zip file (Windows) or the tar.bz2 file (Mac OS X and Linux) you just downloaded) to a new directory / folder of your liking.
Open monero-wallet-gui. It should automatically load your "old" wallet.
If, for some reason, the GUI doesn't automatically load your old wallet, you can open it as follows:  On the second page of the wizard (first page is language selection) choose Open a wallet from file  Now select your initial / original wallet. Note that, by default, the wallet files are located in Documents\Monero\ (Windows), Users//Monero/ (Mac OS X), or home//Monero/ (Linux). Lastly, note that a blockchain resync is not needed, i.e., it will simply pick up where it left off.
You ought to perform the following steps:
Download the new binaries (the .zip file (Windows) or the tar.bz2 file (Mac OS X and Linux)) from the official website, the direct download links in this thread, or Github.
Extract the new binaries to a new directory of your liking.
Copy over the wallet files from the old directory (i.e. the v0.15.x.x, v0.16.x.x, or v0.17.x.x directory).
Start monerod and monero-wallet-cli (in case you have to use your wallet).
Note that a blockchain resync is not needed. Thus, if you open monerod-v0.17.1.3, it will simply pick up where it left off.
In the wizard, you can either select Simple mode or Simple mode (bootstrap) to utilize this functionality. Note that the GUI developers / contributors recommend to use Simple mode (bootstrap) as this mode will eventually use your own (local) node, thereby contributing to the strength and decentralization of the network. Lastly, if you manually want to set a remote node, you ought to use Advanced mode. A guide can be found here: https://www.getmonero.org/resources/user-guides/remote_node_gui.html
Don't Be A Basic Bench: A Comprehensive Introductory Guide
Hello everyone! In an effort to keep the subreddit and its wiki filled with good and useful information, we are compiling guides for the main lifts (deadlift, squat, bench, potentially others). These guides will be added to the wiki and posted as posts as they are completed. The goal of these guides is to provide basic lift information, descriptions of some common variations, equipment considerations, related and complimentary exercises, additional resources for further reading, and to showcase incredible women (and non-binary folks) performing these lifts. This is the second entry in this lift series. Check out the first entry, The Deadlift Guide in the FAQ! If you have suggestions regarding things that should be added to these guides, or other subjects you'd like to see in the wiki, please message the mods!
The Bench Press
Bench Press Form and Variations
The main muscle group worked by the bench press is the pectoralis major, which is the largest muscle in the chest area. The pectoralis major muscle has two sections that are named for the bones they attach to – the sternal portion attaches to the breast bone and makes up the bulk of the muscle fibers, making up the middle and lower section; the clavicular portion attaches to the collarbone and is the more superior (upper) portion. The bench press also heavily involves the triceps (back of the upper arm), and recruits the deltoid muscles (shoulder), and pectoralis minor to lesser extents. I’ll first be discussing the form for a standard, flat, “neutral/wide” grip bench press. Variations on this will be discussed below it. This guide is written for barbell bench pressing, but all of these variations can be performed with dumbbells as well. Flat bench – the standard/”default” bench press Start out flat on the bench with bar directly over your eyes (with spotter) or over your nose/mouth (without spotter), feet flat, butt and upper back planted firmly on the bench. Arching of the lumbar spine is normal, fine, and absolutely legal in lifting competitions. Scapulas (shoulderblades) should be retracted or “pinched together” to provide both a stable flat surface for your upper back to settle on the bench, and to minimize undue tension on your shoulder joints. Retracting your scapulae will also puff your chest up and put your shoulders in a safer position for the lift. The bar should rest in the heel of your palm so that it is stacked above the wrist, forearm, and elbows through the lift. A slight internal rotation of the hands will help with this positioning and will angle your elbows out slightly. For a standard flat bench press, your hands will be a bit further apart than shoulder width – about 1.5-2x shoulder width is the average position – position your hands so that your forearms will be almost completely perpendicular to the floor at the bottom of the lift. Retract your scapulae (as if you’re trying to pick up a pencil off the bench between them), keep actively pushing your chest up, take in a big belly breath, and hold it before pushing the bar away from the rack and locking out at the elbows. Bring the bar down your torso so that it is directly over the line of your shoulders – this is likely going to be about the level of the middle of your sternum or your nipple line, but may vary depending on your individual anatomy and the degree of arching your back is doing. The bar should be directly above your elbows at all times during the movement of the lift. This not only increases stability during the lift, but also prevents undue stress on your triceps or your shoulders. It also is the most efficient configuration for using the majority of the muscle fibers within the pectoralis major. Speaking of efficiency in recruiting pectoral muscle fibers, let’s talk about arching your back during a bench press. This is a faux controversy like “sumo deadlifting is cheating” – the claim is that an arch will significantly decrease the range of motion for the bar, making the lift “easier”. While the purpose of the arch is to slightly decrease the range of motion, it also makes the lift safer at the bottom of the movement, which is the riskiest for your shoulder joints. It also serves to recruit more of your pectoral muscle fibers to the lift – this should increase the amount of weight one can lift and impact muscle growth when the goal is hypertrophy. Degree of arching is going to be up to personal preference and anatomy, but some degree of arch is natural and normal. Check out the natural position of the spine and you can see that the lumbar spine (lower back) has a natural forward curve (lordosis) which helps with loadbearing since we’re just hairless upright apes. An arch during bench press may be anywhere from your normal lumbar spine position to an exaggeration of your body’s natural lordosis. As you lower the bar, keep tension in your upper body by trying to “break the bar in half” or “rip the bar apart” until it touches your mid-to-lower sternum (depending on anatomy and degree of arch). After a touch (and brief pause, if you’re powerlifting), push the bar back upwards and slightly backwards towards your face to lockout. You can now exhale that big belly breath you’ve been holding for the duration of the rep.
Stronger by Science also has a very in depth How To Bench article. It is more in depth than this guide intends to be, and definitely worth a read. It also covers the anatomy and physics behind the bench press – things you should be interested in if your goal is to move weight safely (even if your goal does not necessarily involve moving a lot of weight).
Dumbbell bench: These are not only great when you aren’t yet able to use the barbell, but also for correcting muscle imbalances and general strength improvements that can translate into a barbell bench press. These also have more flexibility with grip positioning – if a barbell bench press irritates your shoulders, consider trying dumbbell bench press with a neutral grip (the dumbbells will be parallel to your body instead of perpendicular). Dumbbell bench press also allows for an increased range of motion, developing small stabilizer muscles in the upper body, and can be used to correct muscle imbalances.
Incline bench – performed with the bench angled about 15-30 degrees up from parallel to the floor. As you change the bench to a more upright position, the front shoulder muscle (anterior deltoids) will become more involved in the lift compared to lower degrees of incline and flat bench. The purpose of incline benching is to recruit more shoulder involvement and also more of the upper (clavicular) parts of the pectoralis major muscles. Bar will still track to be over your shoulders, about the nipple line/mid sternum. Grip width just wider than shoulder width so forearms will be completely perpendicular to the floor at the lowest point of the press.
Decline bench: There are benches and racks specifically for decline benching. If you only have access to a flat bench, you can potentially “make” your own decline by elevating the foot end of the bench. If you do this, make sure it’s very stable before trying the lift. The benefit of a decline bench is to utilize the lower portions of the sternal portion of the pecs more, and also decrease the amount of involvement of shoulder muscles. If you have a shoulder injury but are still cleared to lift, this can be a better option for you than a flat or incline bench press. In this position, the barbell will be over the lower part of your breast bone (sternum) and will touch the chest lower than in a flat or incline bench press.
Close grip bench: As the name suggests, this bench press variation has a more narrow grip width than standard or wide grip bench press. The purpose for this positioning is to increase the involvement of the triceps muscles during the lift. Proper grip width for this is over the shoulder joints – too narrow of a grip can internally rotate the shoulder joint which can lead to strain and injury. In this variation, the bar will touch your chest even lower than a decline or flat bench press – the bottom of the movement should still have your forearms perpendicular to the floor, with the wrists and bar stacked over the elbows.
Supinated/reverse grip bench: This variation can be very challenging, especially as weights increase. The benefit to supinating your hands so that the palm is facing your chin during the bench press is to reduce strain on the shoulders. It can be challenging to keep the bar in the fleshy part of your hands without dropping the bar on your face. Definitely practice with an empty bar or light dumbbells.
Floor press: Not just an exercise for when the benches are all occupied. Floor press is good in its own right or as an accessory for bench press. Set up is basically the same as a flat bench press, but you’re on the floor. Personally I prefer to have my knees bent and my feet flat, but one could also keep the legs flat out and completely remove lower body involvement/drive. These are especially great with dumbbells for folks with shoulder pain or issues, because you can use a neutral grip. These can help with lockout strength at the top of the bench press as well as if your sticking point on bench press is on the ascent.
Larsen press: The set up for the Larsen press is identical to a standard flat bench press. The biggest difference is that once you unrack the weight and have the bar over your chest, the feet are lifted off the ground, either straight out or resting on something else at the heel (toes up). “This forces athletes to really focus on maintaining their upper back tightness without the feet and legs compensating for poor bar path, set positioning, and inadequate force displacement.” The biggest benefit to this variation is to force the lifter to maintain a tight upper back during the bench press, though it also serves as a way to increase relative intensity/difficulty of the exercise without adding more weight to the bar.
Helpful Bench Press Cues
Try to “break the bar” while pushing it away from you. Imagine it is a big long dry spaghetti noodle and you are trying to turn it into two pieces of spaghetti by snapping it away from you. This will help engage your upper body muscles and ensure that your upper back is tight and flat, promoting a safer and more stable lift.
Grip the bar very hard, with special focus on gripping hard with your pinkies. This can help engage your latissimus dorsi for the lift!
Stack the bar over your wrists over your elbows. This means your forearm will be perpendicular to the floor and the barbell and increases stability, improves form, and reduces undue strain on your shoulders and elbows.
Push yourself away from the bar and push your body down into the bench during the actual press portion (from the bottom back up to the top) of the lift. This will help keep your upper body muscles engaged appropriately and keep you in place on the bench.
For leg drive, plant your feet and apply force down on the floor and towards your head. This will help keep your upper back planted so long as you aren't slick and sweaty and keep optimal form and tightness through the lift.
Push ups –Push ups are basically the body weight exercise version of the bench press – the movement and position is very similar and translate well into bench press gains. Succeeding in bench press will benefit your push ups, and succeeding in push ups will benefit your bench press. The bodyweightfitness subreddit guide for pushups is excellent and goes over a suggested progression program if you are not yet able to do full push ups on your toes. Note also that you can do a narrow width diamond pushup to increase involvement of your triceps.
MegSquats also recently posted a “3 tips for push ups” post that several of our users have already mentioned as being helpful.
Svend/pinch press - a great accessory exercise for pectoral muscle growth, especially right in the middle along the sternum. You’ll be squeezing a plate or other weight between your hands at mid chest level and pushing the weight straight out away from your body – make sure you’re squeezing the weight through the whole motion. This can be done either standing upright or lying flat on your back (supine). The supine version recruits your triceps more, and the standing version recruits your anterior deltoid more.
Chest flies - another favorite chest accessory. These also hit the pectoralis minor, along with pectoralis major. These can help your bench press by increasing the strength of the pectoral muscles, but are also great for changing the aesthetics of your chest muscles. Flys can be performed flat or at an incline – like incline bench press vs flat, increasing the angle away from the ground will increase the involvement of the upper aspect of the pectoral muscles as well as the anterior deltoid muscles.
Cable crossoveiron cross: Very similar to chest flies, but you’re using the cable tower and performing these upright. These engage the core and abdominal muscles more, but are still primarily for strengthening the chest, shoulders, and triceps. The best part about cable flyes or cable crossovers is that you can adjust the height of the cables to target different aspects of your chest muscles – higher cable anchors target the lower pectoral fibers, middle (shoulder-ish) height target the middle fibers, especially along the sternum, and low cable anchor points target the upper pectoral muscle fibers.
Dips are challenging body weight exercises that can have either a chest or triceps focus. Essentially, these are vertical pushups – you will be suspended from a rack or pull up/dip ‘machine’. Start with your arms fully extended while you’re holding onto the handles. Bend your arms to lower your body, leaning forward slightly, until your shoulders are just below your elbows. Lift yourself back up while straightening your arms until you lock out at the top. You can also do bench dips which may be easier on your shoulders. Surprisingly good wikihow guide on bench dips.
Around the Worlds - an exercise for pectoral and shoulder muscle strength and development. Can be done supine or standing – supine will be a chest focus, while upright will be a shoulder focused movement (but don’t worry – both groups are definitely involved in both versions). Hold dumbbells or small weight plates with your palms facing forward throughout the motion. Start with your hands at your sides and, keeping elbows slightly bent, slowly move your arms away from your body like you’re making a snow angel until they are side by side over your head. Do the reverse movement to return to the starting position with the weights by your side – this is one rep.
Triceps Pushdowns are one of many triceps extension exercises that can help you get that stylish horseshoe muscle appearance, and improve your bench press. You can do triceps pushdowns with a cable tower, pull down station, or even resistance bands.
Triceps extensions encompass a wide variety of exercises aimed at isolating the triceps for hypertrophy (size) and strength.
Equipment, Tools, and Other Considerations
These items are not required to be successful in bench pressing, but can be beneficial to lifters that bench press at any skill or weight level.
Wrist wraps can help keep your wrists straight and supported during bench press. They can help keep the weight safely and evenly distributed through your wrist and thus through the entire forearm and elbow.
Slingshot: A device invented by powerlifter Mark Bell who can bench 545lbs without special tools and 854lbs “equipped”. It wraps around your elbows and can allow you to overload your bench press by “10-15%” with the help of elastic tension from the Slingshot. It can also be helpful in taking some of the stress off shoulders and elbows during a bench press but is NOT a substitute for proper form and safe lifting.
Blocks or boards - board pressing uses wooden boards or something like benchblokz between the bar and your chest during a bench press. This decreases the range of motion for the lift and can help lifters work through sticking points (relative weak points in the range of motion), which can lead to improved bench without tools (“raw”). Here’s another article, from elitefts on board pressing and its uses.
GameMaker Studio 2.3.1 will allow you to build games for Raspberry Pi - here's how to get it all working!
GameMaker: Studio 2.3.1 will be introducing a significant amount of support for platforms running on ARM. For the most part, exporting to these platforms is a subset of the target platforms (specifically Mac OS and Ubuntu/Linux) that already are supported by GMS2, but the magic happens in the export! If the platform you’re targeting is running on an ARM processor, the build process will handle the heavy lifting. I’ve left a full guide below to getting your projects running on a Raspberry Pi - here are the important take-away’s if you’re familiar with the Ubuntu export process
When building for Linux normally, GMS2 builds a 64-bit binary. This is NOT the case with the ARM build process - it in fact DEPENDS on you running a ARMv7 architecture, which is great news for older hardware (Raspberry Pi 2 + 3).This also means that building your project with a Raspberry Pi 4 running Ubuntu Desktop is out of the question for now, as only 64-bit binaries exist officially.
You can build and run your project with Raspbian (the default Raspberry Pi linux distribution)
Warning: Depending on your project, performance will vary significantly - you should expect to overclock your Raspberry Pi CPU and GPU clock speeds to achieve best performance in graphically intense games. Most folks have their Pi’s overclocked, and it’s a very straight forward process that you can learn about here. I suggest getting a case for your Pi with heatsinks and fan, regardless of your configuration.
Known Supported Linux Distributions for building GMS2 projects on RPi
Ubuntu MATE (ARMhf version)
It’s important to note, while I haven’t tried it, the binaries generated should work fine on most distros running on ARMv8.
What you’ll need:
GameMaker: Studio 2.3.1 (beta currently available on the YYG website) with Desktop export running on either Windows or Mac OS
A Raspberry Pi (I have only done this with the Raspberry Pi 4 model B, but it should work with RPi 3’s as well at the very least).
A linux distribution that is for ARMhf or ARMv7 (The default Raspbian OS works perfectly)
Step 1: Setting up your Raspberry Pi
There are plenty of guides for how to do this online, so I’ll assume you can figure most of this out.Prepare your SD card with either Raspbian or Ubuntu MATE and boot into it on your Raspberry Pi. I suggest going with Raspbian, and most of my notes in here will be specific to it - it will be the most straight-forward option and likely the best performance on Pi. Once Raspbian has booted, let it update using the built-in update manager (it might take a little while) Find a way to entertain yourself... this might take a little bit.
Step 2: Install the dependencies
This is pretty much the same as it would be in any regular Linux setup to build your GMS2 projects, however, if you’re using Raspbian some of the regular dependencies will already be installed - so I’ve skipped the ones we won’t need right now in the list below. If you’re having an issue or using Ubuntu MATE, check out the full list here. > Open "Terminal" For each of these you’ll type “sudo apt install” followed by the listed name, so for the first one we’ll go:
Raspbian has the OpenSSH server dependency that GameMaker: Studio needs already installed, but it’s inactive by default. Browse to the Raspberry Pi Configuration window (located in the Raspberry Pi icon menu > Preferences > Raspberry Pi Configuration and over to the tab “Interfaces”. Enable SSH and press OK. Do not forget to enable SSH!
Step 4: Reboot
I can’t stress this enough - Reboot your Pi. Just do it, it may or may not do anything at this point, but it’s better than not doing it.
Step 5: Set up your connection in GameMaker
This is pretty straight-forward. In the upper right hand corner of your IDE window, change your target platform to Ubuntu.Add a Device for your Raspberry Pi. You can set the Display Name to anything you’d like to, Host Name should be the local ip address for the Raspberry Pi - an easy way to get this is by typing “hostname -I” into your terminal on the Raspberry Pi. By default, if using Raspbian, your username is “pi” and your password is what you set during the Raspbian setup. Here's what my device looks like - your hostname is most definitely different <3 Press “Test Connection” - you should see a message that the connection was successful! If not, double check that the IP address you dropped into Host Name is correct and that you followed step 3 to enable the SSH server. Press “OK” once you’ve gotten a Connection Successful message, and you’re off to the races!
A non-D&D game you *need* to play: Ironsworn (FREE)
Why you need to play Ironsworn:
Ironsworn is a Viking themed low fantasy game it's completely FREE and you can play it in a group, with or without a GM or completely solo.
It has a highly customizable, modular setting.
It has a streamlined and elegant system that focuses on the narrative whilst still being deep and robust.
There are no classes, characters are created freely by mixing and matching modular thematic abilities.
The combat system is fast, dramatic and full of tension.
The game requires absolutely 0 prep, the rules and random tables how you make a satisfying game with no prior prep
It can be played completely alone or in a group with or without a GM. The games rules and random tables ensure that even without a GM it still goes in interesting directions you could never anticipate.
And it's COMPLETELY FREE.
I give the game a glowing recommendation and if that's enough for you here is the link. For those of you who need more details, I go into them below...
SETTING Ironsworn is set in the Ironlands, a gritty low fantasy wild frontier. The Ironlanders settled here a few generations ago after a cataclysm drove them out of the Old World. The Ironlander live in small settlements and villages or nomad and are constantly threatened by the things that lurk in the dark. You are an Ironsworn, one of the few people brave enough to venture wild for glory and adventure. The setting is fully customizable. There is a setting book that comes with pages on major setting elements like "communities" "religion" or "magic". These pages have 3 different options for what to do with the set element as well as a plot hook to go with it. You can choose one of these options or create your own using the setting elements as guidance. Creating a setting is quick, easy and engaging. PLAYER CHARACTERS You are an Ironsworn, a badass adventurer that travels the land fulfilling oaths called "Iron Vows." The game is human-centric, it assumes you are human but you can choose to flavour your character as a different race. Character creation is freeform, characters are made out of stats and assets. Stats: There are 5 stats: Iron (stcon), Edge (dex), Wits (wis/int), Shadow (stealth/deception), Heart (cha). Assets: PC's start with 3 assets. Assets are cards with 3 abilities tied to a specific theme, you start with one of these abilities marked and can spend XP to gain more of an asset's abilities or get new entirely (there are 70+ assets to choose from). These abilities generally aren't just number bonuses they are meant to give your more gameplay options or make you feel more like your character. A few example assets: Alchemist, Infiltrator, Archer, Swordmaster, Cave lion companion, Raven Companion, Divination ritual, Awakening ritual. CORE MECHANICS The game revolves around the action roll when you do something risky you roll 1d6 +stat vs 2d10s.There are 3 different results to a roll, unlike D&D binary system. If the d6 is higher than both d10s then you succeed, if it's only higher than 1d10 you succeed but at a cost or consequence, if it isn't higher than either then you fail and something bad happens. If you roll the same number on both d10's then its a critical success or failure. Only the PC's roll, how NPC's react depends on the result of your roll. The game gives you specific guidance on what to do through a system called moves. Moves are a chunk of rules that tell you how to resolve a specific part of the game, like fighting or compelling people to do what you want. Moves give you specific guidance on how to resolve the situation in an interesting way based on the result of your roll and often give you choices on how you would like to move the story forward. SOLO / GMLESS PLAY EXPLAINED You can play Ironsworn with a GM, with multiple players and no GM or completely alone. Playing without a GM just works, everything about the game's rules facilitate GMless play. The moves substitute for a GM by pushing the story in interesting and unexpected directions, and the game features many random tables to roll on if you get stuck. You won't even feel the GM's absence. COMBAT Combat is fast fluid and dramatic and it places a heavy emphasis on tension. It is nothing like D&D wargame-like combat system. There no, turn order or action economy or complex rules. Combat flows like a movie scene, you describe your action, you trigger a move and roll dice then depending on your role the enemies react appropriately. The combat system is designed to create quick, adrenaline and dynamic fights. A fight that could take an hour or more in D&D could take 10-15 minutes in Ironsworn and be just as compelling if not more. Ironworn's combat is nothing like D&D's slow tactical combat, but It is still filled with depth and meaningful decisions. You also don't have to have to worry about NPC stat blocks, an entire encounter can be designed on the fly. SEEING THE GAME IN ACTION Ironsworn is likely, unlike any game you've played before, so you may need to see it in action before you fully understand it. If you want an in-depth reading of the rules I recommend Adam Koebel's "Ironsworn First Look." If you want to an actual play of the game I recommend "Ask the Oracle," it's an actual play podcast made by the game's designer Shawn Tomkin and I also recommend the youtube series "Me Myself and Die" season 2 by Trevor Devall, (you don't need to watch season 1 first.) Thanks for reading those post I really hope you give my favourite game a try :)
My brother and I just released alpha of our open source declarative programming language (implemented in Haskell!) for writing modern web apps (i.e. React/Node/Prisma) with no boilerplate. We are still learning Haskell and would love to get your feedback / advice!
Web page: https://wasp-lang.dev Docs: https://wasp-lang.dev/docs Github repo: https://github.com/wasp-lang/wasp We have been playing with Haskell for years now, but always on the side, and this is the first bigger project we are doing in Haskell (we thought Haskell would be a good fit for compiler), so we encountered interesting challenges and we are learning a lot as we are solving them. We are mostly sticking to “Boring Haskell”, due to us still learning some of the more complex concepts, but also in order to enable less experienced Haskellers to potentially contribute to the codebase. Some of the interesting Haskell-related challenges we encountered so far:
Building distributable binaries for OSX/Linux/Win. After a lot of research (haskell helped a lot here) we set up CI to build dynamic binaries for all 3 OSes. With stack, this was all actually pretty easy. One interesting problem was https://github.com/commercialhaskell/stack/issues/848 -> no way to provide portable binary with a path to data_dir. Next step will be to build static libraries. We plan to write a blog post about our experiences soon, we will put it in haskell when it is done!
We are dealing with file paths a lot, and at some point it became hard to figure out which path is relative, absolute, file, dir … -> introducing https://hackage.haskell.org/package/path helped us a lot with this. We actually ended up building our own solution on top of `path` that moves even more information into types, we plan to publish it as a package soon (although it might be slightly niche regarding use cases).
Testing IO code, specifically mocking while testing it. I believe we identified the most common solution(s), and we used it on some parts of the IO code, but we still feel it is pretty hard to do. Probably we need to get more experience with the needed mechanisms.
Record labels/fields not scoped by record. This is well known pain, but it took us some time to research all the options and figure out the best practices. At the end we settled for prefixing labels with _ and separating a record into its own module if there are naming conflicts with other records that would cause names to be overly long / complicated. This works fine so far, and while we are looking at Lens, we haven’t started using them yet.
Running multiple external processes at the same time and streaming their output was interesting and fun, we learned about and used the `async` package (very easy to use!) and used `Data.Conduit.Process` for running a single process while streaming its stdout and stderr.
Some bigger Haskell-related things on our roadmap:
Right now the language syntax is pretty ad-hoc, and we would like to formalize language more at some point, which means probably switching from parsec to Happy. Or, at least replacing parsec with megaparsec.
Implementing proper error reporting in the generator phase of the compiler. Right now we are using `error` which is very crude, we plan to instead introduce a monad transformer stack with ExceptT in it, so we can handle errors, maybe even do some recovery and similar.
Building static binaries (or at least packaging dynamic binaries with the libraries they need to make them effectively more static -> OSX).
Figuring out a better way to work with templates. Right now we are using `mustache` package, but our surface between Haskell and templates is pretty loose type-wise, creating space for runtime errors. Plan is to either define data types that precisely describe each template, or (would be better) to find another mechanism for templates that is somehow better integrated with Haskell. We are looking at the `heterocephalus` package as a possible solution.
We are looking for alpha testers, contributors, feedback, so let us know if you would like to participate!
Why is it such an abysmal pain to use libraries in C++ compared to pretty much anything else?
I recently realized something that's been annoying me for so long
Type npm install 'library' in a shell on your project's directory.
How to add a library in C#:
Type dotnet add package 'library' in a shell on your project's directory.
How to add a library in Go:
Type go get 'library_link' in a shell.
How to add a library in Rust (And this is so "C++ is compiled" isn't an excuse):
Lookup the last version of the library.
Type 'library' = 'library_version' on your project file.
Restart your editor so the language server can get the symbols from the new library.
If you install cargo-edit you can alternatively just:
Type cargo add 'library' in a shell on your project's directory. cargo-edit will do everything for you.
How to add a library in C++:
Prepare two folders for header include files, and library binaries.
Append flags to your compiler to recognize them accordingly.
Investigate which way the library works, praying the documentation of that is actually good. ### If the library is header-only:
Add the header's required to your include path.
You should probably moduralize the code or spend 30 minutes setting up precompiled headers to avoid adding a lot to your compile times.
And also lower your warning level, because even if you put #pragmas around the headers editors probably wont recognize them. ### Else, if the library distributes its binaries:
Download the .lib or .a files from the last release and put them in your library folder.
Tell the compiler to link your libraries.
Put the downloaded header files in your include folder.
If the library needs a .dll, download it and paste it in the folder of your compiled executable. Distribute it with your shipped application.
If you want to keep your application as a single executable, or distribute less dependencies, or have no need for an installer, all perfectly valid reasons, library owners usually have a static version.
If they don't have a static version, spend an afternoon fighting the linker figuring out how to build the library yourself.
If you want the library to link against the static runtime, the step above is required as well.
Make sure to select the correct runtime library, or face really weird linker errors. ### If the library doesn't distribute its binaries:
Clone the repository of the library and figure out how to build it yourself. There's usually a tutorial so it's not that complicated.
Make sure to select the correct runtime library, or face really weird linker errors.
Do this for every platform you want to distribute in. ### If the library uses CMake ᵒʰ ᵍᵒᵈ ʷʰʸ:
You can choose two options: #### Use CMake too
Abandon your project's build system and spend days learning an entirely new language that everyone complains about
Probably suffer from a loss in build time #### Generate files for your compiler
Install CMake GUI
Learn how to use it and configure what you desire.
Alternatively, learn yet another command line tool, or a tiny bit of CMake syntax to change what you want.
Generate the files according to your platform and IDE.
Build the library with a bloated IDE, or alternatively research how to build it with the much less known and documented command line tools.
Make sure to select the correct runtime library, or face really weird linker errors. ### If you run into linker errors when running your program (and you will):
If it's an unresolved external symbol, most likely your library needs another dependency linked. Lookup the function's name, what library it belongs to, and link against that too.
If the unresolved function belongs to the standard library, you messed up. Compile the library again with the runtime library your compiler wants.
If it's something else, google the error code and spend 30 minutes staring at StackOverflow. # Just... why? Am I missing something? Am I stupid and doing everything wrong? I really hope that's the case so I can get back to programming instead of fighting the linker. Every single time I see I need a library I'm like "Oh fuck..." to the point sometimes I just don't bother and decide to write things myself. Sorry about the rant. I'm kinda tired. Do you all have any similar experiences with this? Any tips to ease on the pain a bit? Thank you.
distcc with a cluster of identical embedded machines (ppc32)
TL;DR I have at least a dozen embedded PowerPC boxes (512MB RAM), and want to leverage distcc to speed up compilation. As a gentoo newbie, I have questions ...
How should I start?
How do I avoid out-out-sync gcc versions?
Background: I have some Meraki MX60 / MX60Ws which can run OpenWrt just fine. The SoC is an APM82181 -- one of the last ppc440x compatible SoCs made by AMCC. All but one or two of the patches for mainline Linux are done (mine are on OpenWrt 19.07.4 / Linux 4.14, but OpenWrt master branch is at 5.6 and boots fine on them). They're beefy, other than their single-core SoC. 512MB RAM, there are solder pads for a SATA connector, performance is great. So, I figured, I'd try to get something like Restic running on them (written in Go). Since the internal Go toolchain does not natively support ppc32, I was hoping to try gccgo with some of these. As best I understand it, however, gccgo requires native compilation if you don't want things to break. I found someone bootstrapping Gentoo onto a WD MyBook Live (same SoC, less RAM), so I followed their guide and set up Gentoo in a chroot: https://community.wd.com/t/guide-install-gentoo-on-wd-my-book-live/246611 ... and I'm nearly done with stage 3 emerging gcc, but it's taken a whole 24 hours. (No surprise, the SoC is about as fast as a Raspberry Pi 1B). I have many of these machines and can acquire many more for less than $10 apiece. Ideally, I'd like to be able to set up distcc to build OpenWrt for these on these, so as to support ppc32 development as the bitrot slowly overclaims ppc32 cross-compilation. I just don't know where to start.
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!
Hello ladies, gays, enbys, and other pots-and-pans enthusiasts and welcome to the 2019 Hyperpop Rate! I'm your host, quenched, and am here to guide you through this month's rate full of boundary-pushing, experimental, over-the-top bubblegum bass, or as it is more commonly called, hyperpop. The genre has come a long way since it's humble PC Music beginnings and has grown to boast a large cult fanbase, majority of which is made of members of the LGBTQ+ community. Here are the cling clang bitches we will be rating: In case you're impatient like me and already know the drill... HERE is the link to the Spotify playlist HERE is the link to submit scores
Up first, we have Slayyyter, queen of high-budget-sounding-but-actually-low-budget Grindrcore music, with her self-titled debut mixtape. After releasing a string of singles starting in 2018 with BFF, featuring hyperpop legend Ayesha Erotica, she has held the attention of gays and hyperpop fans everywhere, propelled by her dominating stan-like presence on social media. While not every loose single made the cut for her mixtape, she still has a versatile discography with zero misses, whether making filthy, horny bangers on songs like "Candy" and "Daddy AF", braggadocious bops "Cha Ching" and "Celebrity", or glittery bubblegum pop such as fan-favorite "Mine". Warning: you will become slightly gayer upon album completion.
This rate marks the first time in Popheads rate history we have cut an album from a rate and replaced it with another. LIZ's album "Planet Y2K" was supposed to be in the rate initially, but it came to my attention that she is a transphobic Trump supporter with NO apology or backtrack ever given. So, I posted this comment one day in a Daily Discussion post, and after 72 votes, 65% of you wanted LIZ to be replaced with 100 gecs (which honestly is better anyways musically speaking). 100 gecs are definitely one of the more well known hyperpop acts. The critically acclaimed duo are one of the few hyperpop acts to reach well beyond the LGBTQ+ audience. Consisting of Dylan Brady and Laura Les (who is trans!!!), the duo's debut album, especially money machine, has gone semi-viral within the music sphere and TikTok alike. If you can say one thing about this album, it's that you never know what to expect or what crazy sounds you're going to hear next! They also released a phenomenal remix album called "1000 gecs and The Tree of Clues", reimagining every song on this album and featuring many Popheads favorites such as Charli XCX and Kero Kero Bonito. gecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgecgec
Challenging heteronormativity and the gender binary, Dorian exploded onto the scene with many loose singles, beginning with Clitopia in 2016. These singles led up to Flamboyant, an abrasive, electropop album that doesn't have a single skip! The album also features some production by Dylan Brady, who is one-half of 100 gecs, also present in this rate. Beyond the songs themselves all being bangers, lyrically Dorian explores different aspects of their sexuality and masculinity in songs such as "Emasculate", "Flamboyant", and Adam & Steve, a song which is sure to resonate which any religious gays participating in the rate. Dorian has already released their second album "My Agenda", which I also definitely recommend everyone streams after doing the rate! Note: Dorian uses they/them pronouns so I'm gonna be mad if I get any ballots using anything otherwise!
Lastly we have Hannah Diamond, who has been around the longest of the artists in this rate, releasing her first song in 2013. She was one of the first names in PC Music, taking her until 2019 to release her debut album (giving Sky Ferreira a run for her money as far as album waits go). Featuring A.G. Cook production and dreamy vocals from Hannah, this album was definitely worth the long wait!
Unfortunately for this rate, we couldn't include the queen of hyperpop, Emily Montes, as she did not debut until 2020, therefore not fitting the rate theme. At only 5 years old, she is already receiving fairly decent critical reception. She has two projects on Spotify, the self-titled debut album, Emily Montes and the also self-titled EP, Emily. Featuring experimental production, lyrics that touch on serious topics such as COVID-19 and BLM, and never-before-seen insight into a 5 year old's life, both projects are masterpieces. Despite the seemingly large amount of songs, the bonus rate only lasts 7 minutes and 47 seconds so I definitely recommend setting aside this short amount of time to participate and experience a true visionary. This part is completely optional and is just for fun. You may rate as many or as few songs as you'd like. No 0's or 11's, and and no minimum artist average. Here are the songs for the bonus rate:
Updated projectile VFX to better represent its hitbox, especially when it is traveling towards your POV
We’re keeping an eye on the overall power level of Paranoia, but as a first step wanted to resolve visual issues where players hit with Paranoia appear outside of its impact on their screen.
Blade Storm (Burst Fire)
The time between consecutive Burst Fire use has increased from 0.33 seconds >>> 0.45 seconds
Daggers thrown in Burst now have a damage falloff that begins at 12 meters and drops steadily (to 35 damage) at max falloff
Headshot multiplier on Burst Fire reduced from 3x >>> 2x
While we continue to investigate some of her outsized strengths, we think the burst fire on her Blade Storm has been over-performing at long ranges. The burst fire is intended to be a close range attack, but we found it frequently getting frags at over 20 meters away. These changes aim to rein in its effective range while retaining its close range potency.
Viper now starts the round at 100 fuel (previously 50)
Now that Viper can place her wall pre-round, we want her to be able to act with her team right at barrier drop without the tension of also trying to maximize her fuel for an initial move.
Vulnerable debuff applied from Snake Bite now lingers for 2 seconds after leaving Viper’s acid
Immediately dropping the vulnerable debuff upon exit wasn’t creating the threat we’ve hoped for when we added it. This change should make the Viper (and team) advantage window more realistic, as well as project a unique threat on opponents playing around it.
Move speed doubled while casting
Viper now fast equips her weapon after casting, re-equip times vary per gun—but on average will reduce her weapon down time by .4 seconds
The combination of a slow placement and re-equip time was resulting in Viper players getting too hurt or killed while casting ults in a situation we felt should be pretty safe. This change should increase the positional options available while casting, and get your weapon up sooner.
Fire rate bonus decreased from 25% >>> 15%
At its previous fire rate, we felt Empress was too effective when using heavies/smgs, AND too fast to master the change in spray pattern on rifles. We hope this change allows us to address both issues at once, while also giving us a chance to have a unified fire rate increase (matching Brimstone’s stim below) that players can learn and master.
Fire rate bonus increased from 10% >>> 15%
Paired with Reyna’s change (above), we felt Brimstone’s stim could use a little more punch. This also unifies our two fire rate increase buffs, making them easier to learn.
Increased price from 4500 >>> 5000
Decreased scoped movement speed from 76% >>> 72%
Adjusted weapon deadzone from becoming inaccurate at 30% movement speed >>> 15% (become inaccurate sooner, become accurate later when stopping)
Firing rate reduced from .75 >>> .6
Instant equip time adjusted from 0.3 >>> 0.5 (instant equip plays after tapping orb, bomb defuse/plant tap, Jett Cloud Burst, and Phoenix Curveball)
Leg shot damage decreased from 127 >>> 120
Jump land inaccuracy state changed from gradual >>> binary
Jump land inaccuracy duration increased from .2 >>> .225
Jump land inaccuracy value increased from 5.0 >>> 7.0 (more inaccurate for .225s after a land)
During this patch, the chances of being in an hour+ queue should be notably reduced
This is already a very rare occurrence, but it can happen more often for high rank players—especially in premade groups. We are also doing some tuning behind the scenes to keep high rank matches found after long queue times reasonably balanced and fair.
Riot ID Reviews
Players that have been reported for inappropriate Riot IDs will now be reviewed automatically after the match has ended. If their name is flagged as inappropriate, they will be forced to change their Riot ID the next time they log in to the Riot Client.
Removed Multi-line Breaks in Chat
Some sneaky people were impersonating system messages to troll others into quitting a match. Enough!
Changes to party push to talk settings will now take effect immediately
The chat window can now be pinned to stay open across menus
Social Panel Sorting Logic
Sorting algorithm for the social panel has been updated to make it more intuitive for players as they interact with it.
Fixed issue where Sova’s hitbox was incorrect while using his Owl Drone
Fixed bug where Omen’s glowing eyes weren’t properly removed when he cancelled his ult
Fixed a bug where Custom Game preferences would be wiped after navigating away from the Custom Game lobby
After the excellent Wasteland 2, we were excited to get our hands on the new installment, and we can say without fear that it has met expectations. Wasteland 3 is a sign of the love that InXile has for his work and Brian Fargo for the genre that has created a name for him. If you are a lover of the saga or the genre, do not hesitate to enjoy it.
Wasteland 3 doesn’t pull any punches with its subject matter in sexuality, violence, and language. But if you are fine with that, I would highly recommend you give Wasteland 3 a shot, especially if you were (or still are) a Fallout fan.
On Paper Wasteland 3 sounds like the perfect RPG-Dream but the execution leaves much to be desired. Bugs, Glitches and graphics that doesn't really represent a game that releases and the end of this console generation are a bit of a letdown. Everything else from the great story, entertaining NPCs, solid battle system, clever leveldesign over to the love for details is amazing, besides some flaws that should soon be fixed, as inXile and Brian Fargo promise. Everyone that wasn't happy with the latest Fallout Games will surely love Wasteland 3.
Wasteland 3 is a old-school role-playing game, with a compelling story, a combat system that promises but is not groundbreaking and some funny moments and black mood, which always remind us that we are in a post apocalyptic world, but with a smile. Don't forget the powerful character editor, rhythm voices, and the beautiful scenery that puts you in that atmosphere of cold and snowy Colorado.
Wasteland 3 can be a bit of slog if you're gunning for marathon gaming sessions with it at the helm. Combat, whilst exciting initially can fall into the traps of repetition. A little more variety could have negated some of the repeated player actions. That said, the story is compelling and the characters an interesting assortment of misfit survivors, although perhaps fitting post-apocalyptic stereotypes. It's a fun, easy to play game overall though that should well-please fans of the series and keep players entertained for quite some time with its high replay-value. However, aside from some bugs here and there, the impressive amount of voice-work on offer, the character building is the best part of the experience where you can really nurture your ranger squad in this snowy post-apocalyptic world.
At least in my time with it, Wasteland 3 has been a fascinating experience. I’ve come to appreciate its depth of gameplay, character, building, and exploration, even if some of its pieces and parts still feel very foreign to me.
I will be even happier with Wasteland 3 once it’s patched and most of the bugs that bit me end up getting squashed. Even in its current state I’m having a grand ol’ time bringing some justice to the cold depths where no Ranger has dared to before. But for as much of a blast as I’m having out northeast in the cold, I hope I can make it back to sunny Arizona in time to save my fellow lawmen!
Wasteland 3 is a throwback to the old School RPGs of yesteryear, while providing a new combat experience and a bigger world. Players that liked previous Fallout Games, or games like Wasteland 2 or Baldur's Gate will feel right at home with this title, and will have the opportunity to try X-Com like combat. For the amount of content provided, 60 USD is a very good price, and fans of the genre should get more than their money's worth.
Wasteland 3 doesn't bring much new to the table, both as a CRPG and as a piece of post-apocalyptic fiction. But, it's a terrifically executed role-playing game that rewards player investment from beginning to end.
Wasteland 3 is a heady crescendo of post-apocalyptic story-telling. Its combat is compelling and fun while its characters and overall plot are engrossing, even when it goes to some dark places. A must-play for tactical RPG fans.
We’ll update this review if the game is fixed, and the issues outlined are fixed or at least addressed; and then I’ll pick it back up. As it stands now, I’ll be playing something else that isn’t as apt to crash. Buyer beware.
There are a few misgivings related to Wasteland 3's technical aspects, mechanics, and overall challenge. However, its cast of characters (both old and new), the switch to a traditional turn-based combat system, and branching paths filled with decisions and dire consequences make for a superb journey with the Desert Rangers.
With a focus on freedom of choice that is second-to-none, Wasteland 3 has set the benchmark for CRPG narratives, all the while being supported by wonderfully engaging gameplay and roleplaying mechanics.
It took me a while to realize how much these interactions, whether it be the interpersonal conversation or combat encounters themselves, stuck with me. Wasteland 3 has rules, but they only exist for you to bend them. With limitless character creation combinations, branching dialogue choices that affect what quests you do or don’t experience, and multiple endings, Wasteland 3 is an expanse of content and opportunity. The change in locale does wonders, no longer relying on a tired post-apocalyptic biome. Wasteland 3 has a wonderful backdrop in Colorado’s frozen wastes, making it the perfect place to spend a nuclear winter.
Wasteland 3 takes players to a new location and presents them with equally unfamiliar challenges, yet still perfectly demonstrates all of the reasons why this series has had die-hard fans for over three decades, and is absolutely worth playing for anyone looking for their next post-apocalyptic fix.
Wasteland 3 doesn't change its predecessor's successful formula but, outside of certain design limitations, it perfects and modernizes it. It's easily the best game in the franchise, in terms of pure technique, and one that clearly gives you an idea of what inXile is able to achieve.
Wasteland 3 is a good role-playing game, technically passable but enriched by a dense network of intriguing subplots that will push the most dedicated to play it several times. Watch out for the ever-present release bugs, though – best to wait a couple patches if you want to avoid unnecessary hurdles.
Wasteland 3 features everything only the best role-playing games do: an engaging story powered by excellent writing, compelling characters, tons of customization options, and a deep tactical combat system that feels fresh even after dozens of hours. But, most of all, it features a living world that reacts to what the player does, and changes depending on how the player decides to deal with the troubles ahead, providing a role-playing experience of the highest degree, one that very few games can boast of.
Wasteland 3 is a testament to the power of the branching narrative, taking it far beyond binary choices and into a grand canopy of cause and effect. It gives the wintry climbs of Colorado a lifelike quality that must have been painstaking to build. The most impressive RPG in years, Wasteland 3 is a masterpiece.
Wasteland 3 shines with clear dedication to crafting the best game its genre has ever seen. Excellent visuals are matched by top notch voice work and some of the best and most natural writing I have seen in a video game not made by Naughty Dog. The combat is a brutal dance where one wrong move can spell disaster, but victory is an exhilarating rush that never becomes old. Wasteland 3 cements inXile as one of the best in the business in the RPG genre and affirms that Xbox has something truly special on their hands.
Recently on the csharp subreddit, the post C# 9.0 records: immutable classes linked to a surprisingly controversial article discussing how C# 9.0's records are, underneath it all, immutable classes. The comments are full of back-&-forth over whether one should use records for ease or structs for performance. The pro-struct argument revolved around the belief that performance should always be a developer's #1 priority, and anything less was the realm of the laggard. Here is a real-world example that shows with stark clarity why that kind of thinking is wrong. Consider the following scenario:
You're working on a game with dozens, maybe hundreds of people on the team; you don't know because when you were cross with facilities about them removing all the fluorescents, you got accused of being against the new energy saving initiative. Now you swim in a malevolent ocean of darkness that on some very late nights alone in the office, you swear is actively trying to consume you.
The team that preceded you inherited an engine that is older than OOP, when source repositories were stacks of 8-inch floppies, and it looked as if Jefferson Starship was going to take over the world. One year ago they bequeathed upon the company this nightmare of broken, undocumented GOTO spaghetti & anti-patterns. You're convinced this was their sadistic revenge for all getting fired post-acquisition.
Management denied your request to get headcount for an additional technical artist, but helpfully supplied you with an overly nervous intern. After several weeks working alongside them, you're beginning to suspect they're pursuing something other than a liberal arts degree.
Despite the many getting started guides you spent countless evenings writing, the endless brownbags nobody attended, and the daily dozen emails you forward to oppressively inquisitive artists comprised of a single passive-aggressive sentence suggesting they scroll down to the part that begins FW: FW: FW: FW: FW: FW: RE: WE BROKE TOOL NEED WORKAROUND ASAP ...
...yes, despite all of that, the engineering team still spent days tracking down why the game kept crashing with Error 107221: У вас ошибка after re-re-re-re-re-throwing an ex_exception when it couldn't (and should never even try to) load a 16K-textured floor mat.
Despite your many attempts to politely excuse yourself, one blissfully unaware artist exhausts 48 minutes of your lunch break explaining how the Pitchfork review for the latest "dope slab" of this TikTok-Instagram-naphouse artist you never heard of was just sooooo unfair.
And then in their hurry to finish up & catch the 2:30 PM bus home, they forget to toggle Compress To CXIFF (Custom Extended Interchange File Format), set the Compression slider 5/6ths of the way between -3 & -2, look to their left, look to their right, click Export As .MA 0.9.3alpha7, and make absolutely, positively, 100% SURE not to be working in prod. And THAT is how the game explodicated.
You know better than anyone the intermediate file format the main game loop passes to Game.dll, memory mapping it as a reverse top-middle Endian binary structure.
You know for 381 of the parameter fields what their 2-7 character names probably mean.
YOU know which 147 fields always have to be included, but with a null value, and that the field ah_xlut must ALWAYS be set to 0 unless it's Thursday, in which case that blackbox from hell requires its internal string equivalent: TRUE.
YOU know that the two tech artists & one rapidly aging intern that report to you would totally overhaul tooling so artists would never "happen" again, but there just aren't enough winters, springs, summers, falls, July 4ths, Christmas breaks, Presidents Days, and wedding anniversaries in a year to properly do so.
And so somehow you do. A blurry evening or two here. A 3:00 AM there. Sometimes just a solitary lunch hour.
Your dog no longer recognizes you.
You miss your wife calling to say she's finally cleaning out the hall closet and if you want to keep this box of old cards & something in plastic that says Underground Sea Beta 9.8 Grade, you better call her back immediately.
And your Aunt Midge, who doesn't understand how SMS works, bombards you one evening: your father is... no longer with us... they found him... 1 week ago... in an abandoned Piggly Wiggly... by an old culvert... split up... he was then... laid down to rest... sent to St. Peter's... and your father... he's in a better place now... don't worry... it's totally okay... we decided we will all go... up to the mountain
You call your sister in a panic and, after a tidal wave of confusion & soul-rending anxiety, learn it was just Hoboken Wireless sending the messages out of order. This causes you to rapidly cycle.
On your bipolar's upswing, you find yourself more productive than you've ever been. Your mind is aglow with whirling, transient nodes of thought careening through a cosmic vapor of invention. It's like your brain is on 200mg of pure grade Adderall.
Your fingers ablaze with records, clean inheritance, beautiful pattern matching, bountiful expression syntax, aircraft carriers of green text that generate the most outstanding CHM for an internal tool the world has ever seen. Readable. PERFECTLY SOLID.
After much effort, you gaze upon the completed GUI of your magnum opus with the kind of pride you imagine one would feel if they hadn't missed the birth of their son. Clean, customer-grade WPF; tooltips for every control; sanity checks left & right; support for plugins & light scripting. It's even integrated with source control!
THOSE GODDAMNED ARTISTS CAN'T FAIL. YOUR PIPELINE TOOL WON'T LET THEM.
All they have to do is drag content into the application window, select an options template or use the one your tool suggests after content analysis, change a few options, click Export, and wait for 3-5 minutes to generate Game.dll-compatible binary.
Your optimism shines through the commit summary, your test plan giddy & carefree. With great anticipation, you await code review.
A week goes by. Then two. Then three. Nothing. The repeated pinging of engineers, unanswered.
Two months in you've begun to lose hope. Three months, the pangs of defeat. Four months, you write a blog post about how fatalism isn't an emotion or outlook, but the TRANSCENDENCE of their sum. Two years pass by. You are become apathy, destroyer of wills.
December 23rd, 2022: the annual Winter Holidays 2-hour work event. The bar is open, the Kokanee & Schmidt's flowing (max: 2 drink tickets). The mood a year-high ambivalent; the social distancing: acceptable. They even have Pabst Blue Ribbon, a beer so good it won an award once.
Standing beside you are your direct reports, Dave "Macroman" Thorgletop and wide-eyed The Intern, the 3 of you forming a triumvirate of who gives a shit. Dave is droning on & on about a recent family trip to Myrtle Beach. You pick up something something "can you believe that's when my daughter Beth scooped up a dead jellyfish? Ain't that something? A dead jellyfish," and "they even had a Ron Jons!"
You barely hear him, lost as you are in thought: "I wishIhad 2 days of vacation." You stare down ruefully at your tallboy.
From the corner of your eye you spot Milbert, index finger pointed upward, face a look of pure excitement.
"Did I tell you about my OpenWinamp project? It's up on SourceForge", he says as he strides over. It's unsettling how fast this man is.
Dave snickers. The Intern keeps staring wide-eyed. You position yourself somewhat close to the studio's 3 young receptionists, hoping they serve as a kind of ritual circle of protection.
It works... kind of. Milbert is now standing uncomfortably close to The Intern, Dave nowhere to be seen.
From across the room you distinctly hear "Think about it, the 1st-person UI could be Lua-driven Electron."
The Intern clearly understands that words are being spoken to them, but does not comprehend their meaning.
You briefly feel sorry for the sacrificial lamb.
You slide across the wall, putting even more distance between you & boredom made man. That's when you spot him, arrogantly aloof in the corner: Glen Glengerry. Core engineering's most senior developer.
Working his way up from a 16-year old game tester making $4.35 an hour plus free Dr. Shasta, to pulling in a cool $120K just 27-years later, plus benefits & Topo Chicos. His coding style guides catechism, his Slack pronouncements ex cathedra; he might as well be CTO.
You feel lucky your team is embedded with the artists. You may have sat through their meetings wondering why the hell you should care about color theory, artistic consistency, & debates about whether HSL or CMYK was the superior color space (spoiler: it's HSL), you were independent and to them, a fucking code wizard, man.
And there he stands, this pseudo-legend, so close you could throw a stapler at him. Thinning grey-blonde tendrils hanging down from his CodeWarrior hat, white tee with This Guy VIMs on the back, tucked into light blue jeans. He's staring out into the lobby at everything and yet... nothing all at.
Maybe it's the 4.8% ABV. Maybe it's the years of crushing down anger into a singularity, waiting for it to undergo rapid fiery expansion, a Big Bang of righteous fury. Maybe it's those sandals with white socks. Maybe it's all three. But whatever it is, it's as if God himself compels you to march over & give him a piece of your mind, seniority be damned.
"Listen, you big dumb bastard..."
That... is maybe a little too aggressive. But Glen Glengerry barely reacts. Pulling a flask out of his back pocket, he doesn't look over as he passes it to you.
Ugh. Apple Pucker.
"I thought bringing in your own alcohol was against company policy", wiping sticky green sludge from your lips. He turns with a look of pure disdain & snorts.
"You think they're going to tell ME what I can & can't bring in?" He grabs the flask back, taking a big swig.
For what feels like an eternity, you both stand in silence. You swallow, speaking softly. "None of you even looked at my code. I worked very, very hard on that. My performance review for that year simply read 'recommend performance improvement plan." The words need no further context.
"I know", Glen² replies. "That was me."
Now you're not a weak man, and maybe in some other circumstance you would have punched him in the goddamn lip. But you feel nothing, just a hollowness inside. "Why?", you ask, wondering if the answer would even matter.
"Because you don't use Bulgarian notation. Because your method names aren't lower camel case. Because good code doesn't require comments. Because you use classes & records over more performant structs, pointlessly burdening the heapstack. BECAUSE. YOUR CODE. IS. SHIT."
You clinch your fists so tightly the knuckles whiten.
He looks away from you, taking another sip of green goo. "You're not a coder. You're an artist masquerading as one" he speaks, as if it were fact.
The only thing artistic about you is the ability to create user-friendly internal tooling using nothing but a UI framework, broken down garbage nobody wants to touch, & sheer willpower. If your son's life depended on you getting accepted into art instruction school, you couldn't even draw a turtle.
He doesn't pause. "I'll champion ruthless micro-optimization until the day I die. But buddy, I'm going to let you in on a little secret: you aren't here to improve workflow. You're here to LOOK like you're doing something NOBODY else can."
He goes on. "What do you think those artists are going to do when they have to stare at a progress bar for 4, 5 minutes? They're going to complain your tool is slow."
"Sure, it may take them 20, 30 minutes to do it the old way, there'll be an error, and either they'll stare at it for 30 minutes before adding that missing semi-colon or they'll come get you. And you'll fix it. And 1 week later, they won't remember how. And you'll stay employed. And every. Body. Wins."
A little bit of the pride, the caring, wells back up inside from somewhere long forgotten.
"You don't think we should care about rapid application development & KISS, quickly getting things out that help our team, instead devoting ourselves to shaving off ticks here & there? What do you think artists are going to do with those 4 minutes you talk about?
You don't stop. "I'll tell you what they'll do. They'll 9GAG for 20 minutes straight. They'll listen to podcasts about dialectical materialism vis-a-vis the neo-feudalism that is a natural extension of the modern world's capitalist prison. They'll Reddit."
His silence gives you the bravery to push the limits.
"Christ, man. Are you only in it for the $120K..."
He corrects you: "...$123K."
"...only in it for the $123K/year? The free snacks from the microkitchen? The adulation? Have you no sense of comraderie?? No desire to push us to something better?! No integrity?!!!"
His eyes sharply narrow, face creases in anger. You clearly have overstepped your bounds.
"You thinkIdon't have integrity? No sense of teamwork? I'm only in it for the cold cash? You think I don't care about you all?", he roars.
A light volley of small green flecks land on your face.
"Why do you think they made a 16-year old tester the lead developer of a 1993 Doom clone?! Because my code was clean & painless to work with?! Because I made coding look easy?! No! IT WAS BECAUSE I WAS A GOD TO THEM.
And from a God, a PANTHEON. We built monuments to over-engineering! We crafted that of 7 weeks onboarding, that of immortal bugs, demonic hosts spawned by legion from the very loins of a fix. It took 2 years before a developer could BEGIN to feel confident they knew what they were doing. And by that time, they were one of US!
You think the team we laid off November '19 was fired because they were bad at their jobs? NO! It was because they worked themselves out of one. They didn't leave us a broken pipeline. They left an internal Wiki, a wealth of tools & example projects, and a completely transparent code base.
We couldn't have THAT, now could we? No, we couldn't. So we got rid of it. ALL OF IT. Poof. Gone. Just like that. Before anyone even knew a THING."
He leans forward, so close his psoriasis almost touches yours. With an intensity that borders on frightening, he whispers "You think they left us Game.dll? I fucking *MADE** Game.dll."*
The words hit hard like a freight train.
And without another word, he turns & leaves. You're left there, alone, coworkers milling about, with only one thought.
Were one to get a hobby, should it be cocaine?
It's these kinds of situations that make me believe there are far more important considerations than a ruthless dedication to performance, even in the game industry as my real-world scenario so clearly demonstrates.
EDIT: MAJOR UPDATE AT BOTTOM Welcome to the "Speculations" mega thread for the device possibly upcoming in the Oculus Quest line-up. This thread will be a compilation of leaks, speculation & rumors updated as new information comes out. Let's have some fun and go over some of the leaks, rumors, speculation all upcoming before Facebook Connect, we'll have a full mega thread going during Connect, but this should be a great thread for remembrance afterward. Facebook Connect is happening September 16th at 10 AM PST, more information can be found here. Leaks In March, Facebook’s public Developer Documentation website started displaying a new device called ‘Del Mar’, with a ‘First Access’ program for developers. In May, we got the speculated specs, based off the May Bloomberg Report (Original Paywall Link) • “at least 90Hz” refresh rate • 10% to 15% smaller than the current Quest • around 20% lighter • “the removal of the fabric from the sides and replacing it with more plastic” • “changing the materials used in the straps to be more elastic than the rubber and velcro currently used” • “a redesigned controller that is more comfortable and fixes a problem with the existing controller” On top of that, the "Jedi Controller" drivers leaked, which are now assumed to be V3 Touch Controllers for the upcoming device. The IMUs seem significantly improved & the reference to a 60Hz (vs 30hz) also seems to imply improved tracking. It's also said to perhaps have improved haptics & analog finger sensing instead of binary/digital. Now as of more recent months, we had the below leaks. Render (1), (2) Walking Cat seems to believe the device is called "Quest 2", unfortunately since then, his twitter has been taken down. Real-life pre-release model photos Possible IPD Adjustment From these photos and details we can discern that:
there will likely be at least one white model of Quest in the future.
The camera positions and angles have been changed slightly. This might be to improve tracking coverage overhead.
The tracking ring has become somewhat larger and has been angled backward, presumably so they face the cameras better at all times.
The thumb-area has widened significantly & the capacitive thumb-area seems to have returned from the original CV1 touch controllers.
The HMD seems to have become smaller in terms of depth. This could perhaps mean a severe decrease in weight; balancing the headset more.
The head strap is similar to that of the Oculus Go.
It appears there are two microphone holes on the bottom of the headset. This implies the headset might have stereo microphones. Getting two over getting one decent microphone might also mean the two microphones have better recording quality than the original Quest?
Further features speculation based on firmware digging (thanks Reggy04 from the VR Discord for quite a few of these), as well as other sources, all linked.
Additional Sources: 1/2/3/4 Headset Codenames We've seen a few codenames going around at this point, Reggy04 provided this screenshot that shows the following new codenames.
Oculus Del Mar - HOLLYWOOD
Oculus Seacliff - SEACLIFF
Pricing Rumors So far, the most prevalent pricing we've seen is 299 for 64gb, and 399 for 256GB These were shown by a Walmart page for Point Reyes with a release date of September 16 and a Target price leak with a street date of October 13th Speculation What is this headset? Speculation so far is this headset is a Quest S or Quest 2 OR This is a flat-out cheaper-to-manufacture, small upgrade to the Oculus Quest to keep up with demand and to iterate the design slowly. Again, This is all speculation, nothing is confirmed or set in stone. What do you think this is and what we'll see at FB Connect? Let's talk! Rather chat live? Join us on the VR Discord EDIT: MAJOR UPDATE - Leaked Videos. 6GB of RAM, XR2 Platform, "almost 4k display" (nearly 2k per eye) Source I am mirroring all the videos in case they get pulled down. Mirrors: Oculus Hand Tracking , Oculus Casting, Health and Safety, Quest 2 Instructions, Inside the Upgrade
One of the main complaints about QC is the lack of a server browser. In DBT we have a server browser but nobody uses it. I wonder what is the reason: is this feature not really needed or is this feature not exposed enough? I would rather lean towards the 2nd option. I have some random ideas on how to Make Server Browser Great Again:
Server browser doesn't stand out enough. It's hidden under the "Custom games" button:
Rename "Custom games" to "Community servers".
Display the number of custom servers over the "Community servers" button. Use the same UI that indicates the number of new items in the Locker (the yellow thingy). This will encourage people to click on this button.
Alternatively move "Custom Games" to the main screen - put it on the Quick Play screen (not really sure is it a good idea)
Display players list and their ranks in a popup when the mouse cursor is over the custom server name
Display an icon that tells what is the average rank of players that are currently playing on the server
Make it possible to set a rank cap or a minimum/maximum rank
Add presets. At the moment if we want to set up a custom server we have to select a bunch of options. Let's add some thumbnails that, when clicked, would start a server with exactly the same settings that public games have (Wipeout, FFA, MacGuffin, etc). I would even make such a selection to be the primary screen when one clicks a "create a new game" button. So basically starting a new server should be as easy as joining a quick play game.
In the future, when server binaries are available, let private servers "talk" to the master server and let players browse private servers via "Community servers" tab.
I won't add "let us play custom maps" to the list because I know it's on the roadmap.
Some binary options contracts do not even require the trader to get the direction of the asset correct. For instance, trading the OUT contract will need the asset to hit one price boundary or the other for profit to be made. So it takes the trader being able to identify a suitable trade contract to be able to fashion a suitable strategy. What is used to trade the Up/Down contract is not the ... Trading in binary options is not a guessing game, and it is not about luck. Instead, it is about careful analysis of financial assets to make informed decisions. Not every trader has the time or the skills to do this analysis though. This is why binary options signals are so important. They are created by Due to regulatory rules set forth by the CFTC, the money you deposit must be held in segregated bank accounts to ensure your funds are safe and secure. The Nadex Trader Platform lets you place orders directly to the exchange using their proprietary software. You can filter over 5,000 contracts daily by asset class, expiry time, and price. For binary options, Nadex charges a $1 trading fee per ... Obwohl Set Option kein perfekter Broker ist, gibt es viele Dinge – wie die lange Liste von Vermögenswerten – die sowohl neue als auch erfahrene Trader besonders attraktiv finden werden. In dieser SetOption Bewertung erfahren Sie alles, was Sie über diesen Broker wissen sollten. Software und Funktionen Die Broker-Plattform von SetOption wird mit der extrem erfolgreichen und gut designten ... Binary options are a different kind of option than any you're likely familiar with. They follow their own set of simple rules and trade on their own special exchange that has been set up just for them. But what makes binary options so great is not just that they're different. Their real beauty is that they offer special advantages, especially ... There are many automatic binary options trading systems available, but not all are created equal. The largest percentage of these automatic trading systems do not give the trader any control over the settings that their system will use in performing trades on the investor’s account. Yes, the trader may be able to set the amount of each trade, but other than that, they have no control over ... binary Options. How to trade? Risk Warning. Trading derivatives such as options carry a high risk of loss. Digital Options. Digital Options is a trading instrument that allows you to speculate on the extent of the price change, rather than just on the general price direction. If the price of the underlying asset is to reach the threshold selected by the trader (known as the 'strike price ... Binary options trading is legal in the United States, but the restrictions are a little different than they are in other countries across the globe. Binary options are considered gambling, on a level similar to that of casinos and other venues, due to the risk to funds associated with them. Therefore, only brokers and exchanges regulated or licensed by the CFTC are permitted for US traders ... Binary options allow you to trade on a wide range of underlying markets. One of the advantages of trading binary options is that you are not buying or selling an actual asset, only a contract that determines how that asset performs over a period of time. This limits your risk and makes it easy for anyone to start trading. Binary Options is a trading instrument that offers a guaranteed return for a correct prediction about an asset's price direction within a selected timeframe. An Option is part of the derivatives types of assets. This means that their value is intrinsically tied to the value of an underlying asset. When you buy or sell an option, you do not own the underlying asset. You're typically speculating ...
This is how to trade Binary Options Full Time! - YouTube
Best Binary Options Brokers for this Strategy: 1. 💲💹IQ Option FREE DEMO: http://www.cryptobinarylivingway.com/IQOption1 2. 💲💹Pocket Option FREE DEMO: http This is how I have traded Binary for the past 3 years. Thank you for watching my videos, hit the subscribe button for more content. Check out our members res... The road to success through trading IQ option Best Bot Reviews Iq Option 2020 ,We make videos using this softwhere bot which aims to make it easier for you t... Ichimoku Set ups For Binary Options get trading bots contact with telegram https://bit.ly/3aR8baT get pro or free signals https://bit.ly/2N5PLrp get strategy trading, visit my twitter https://b... Barrier Offset No Touch Ticks Binary Options Strategy - 100% Winning Subscribe to this youtube channel for How to make money online and more winning videos!!... IQ Options -https://affiliate.iqoption.com/redir/...Please subscribe and leave a like for more videos.Online trading is a very risky investment/profession. It i...