Best Binary Options Brokers 2020 - Platforms & Reviews

Raven Reviews: IxSHE Tell Part 1, The Mechanics of a Book.

TL;DR I review the novel without talking about the plot.
A FRIENDLY DISAGREEMENT
Recently I had a discussion with a stranger on a forum who was adamantly apposed to what he called "Harem Games" and novels that featured harem elements. To recount the whole conversation would take pages and wouldn't be entirely relevant to this review but i'd like to summarize two key points he expressed to me that informed his opinion. The first is that Japanese society, and even American society, is not supportive of a man having multiple partners. While I was able to get him to admit that recent years have seen a rise in polyamory in the United States he remained adamant that any form of harem was unrealistic for the culture. Secondly, he expressed an opinion that mechanically and from a game design perspective harem routs were a "copout" because they are very rarely the true route or most naturally feeling resolution to a story and only exist for people who quote "Feel bad for the girls they rejected even though most of the time that would be better for them and they're okay with it!" He would go on to say that Japanese views on romance are incompatible with harems because of their focus on "firsts" and "being someones only" but being someone who is not native Japanese myself and has only experienced their culture through works like the subject of this review I can't say I'm able to talk about that point much. I feel like VNs portray an idealized version of Japanese culture just like American media does and just like I wouldn't say someone who was seen every episode of any three american sitcoms knows American culture I would not say I know Japanese culture from reading VNs.
Out of respect for his privacy I'm not going to name him here but if by some chance you're reading this stranger I spoke to this review will serve as my response to the summery of your points. While I know you're aware I disagree with you, I want to provide a better example then simply listing novels I though were good as I did in our original discussion. As I am well aware however that providing my response like this, if it were to miraculously reach you, is somewhat unfair since you have no good platform to respond with outside of a comment below please feel free to DM me and I will gladly respond. This review will be addressed to a wider audience obviously but I think it will be easy to tell what parts I have drawn from the information you gave me.
"BEST HAIR" CHOICE STRUCTURE
IxSHE Tell is a recently translated romantic comedy about P-kun (Ninomiya Hajime) and his difficult choice between five girls who confess to him one after the other. That plot synopsis may have drawn up some negative connotations for you but I encourage you to judge this story on its own merits because I was also skeptical but pleasantly surprised with the quality of the work presented. The novel is split in three parts. A lengthy prologue that takes somewhere between an hour and two hours to read. A common route of about fifteen hours, and then individual romance paths for each heroine that are about three hours long apiece. This clocks the total novel read time at about thirty hours but I would imagine a fast reader could finish it in twenty if they choose to. My personal time to completion is skewed slightly longer as I'm a masochist who wouldn't feel satisfied without being certain I've seen every possible line of dialog but I can't imagine this novel taking more the forty or forty five hours for the slowest reader. While their are a number of gimmicks in this novel I will discuss below without the H-patch the game makes the bold choice to provide the player with only a single meaningful choice and thereby creates a unique atmosphere I can't say I've ever experienced before.
Anyone who has read more then one or two visual novels will know that commonly the narrative choices are less then open to a reader pursuing more then one heroine. I hesitate to say common structure punishes readers for choosing options favorable to more then one romance route but it certainly discourages it. To explain what I mean lets take a look at a few examples. Muv-Luv, specifically Muv-Luv Extra, has a difficult to unlock "Bad" ending where if the reader favors a specific heroine but fails to choose her options in one of a few specific scenes the game ends abruptly without satisfyingly concluding. Their is also a second "Bad" end which occurs only if the player makes two specific choices, both of which are little more then rejections of the branch path to romance routes. Effectively, failure to fully pursue one of the game's heroines results in the game ending in its second act, but paradoxically while the game has two dozen or so choices any combination of those options will result in a romance route and "good" end so long as the reader chooses the appropriate option at one of the deciding points. IMHHW by contrast has a failure route you can only trigger by selecting one specific option in one specific scene that is obviously the wrong choice and then locks you into a route shortly after. I actually think one of the most enjoyable jokes I can find in a VN is finding the path that lets you spend the least amount of time with a heroine but still puts you on her romance path, then watching as P-kun trips over himself to explain how he fell in love with her instead of the girl he spent most of the last week with. Unfortunately though I can rarely do this without failing out before the final act because of this exact type of choice structure.
Some novels are more subtle about this lack of choice. Katawa Shoujo comes to mind as even at its worse you do have SOME free will to jump ship to a different heroine mid act but the binary choice between Lilly and Shizune never sat well with me and Emi being a one choice lock is just disappointing. While not every novel is blatant enough to go the Muv-Luv route and literally name the heroines in the choices so its impossible to miss who you're siding with its a rare treat to find a novel that doesn't spell out which options are the "right" ones to some degree. This brings me back to IxST because the design choice to make only one choice truly relevant, which I would call a weakness in any other novel, but replacing "Best Hair" choices with a gold star reward system opens the narrative and allows for a more natural and less pressured experience.
REAL CHOICE
This section might not be entirely 100% necessary but I wanted to break down exactly why I think the mechanics of this VN are so revolutionary and vastly superior to the rest of the genre. Honestly, while I know it wouldn't fit every novel I think future VNs would benefit greatly from this example. So the common route in IxST is divided into 5 subsections the novel labels as "days" but are probably better thought of as plot beats. Each subsection allows the reader to assign up to ten "hearts" in any combination to the five girls pursuing P-kun and with one major exception allows this to happen at any time. In the words of the games tutorial paraphrased, if a girl does something you like you can reward her with a heart. You're under no obligation to hand out hearts and can ignore the system all together if you choose but regardless at the end of each plot event you are prompted to select a girl for an extra scene and are then moved to the next plot beat with a new allotment of hearts. At the end of the last subsection if you overwhelmingly favored one girl with hearts over the others P-kun falls for that girl and you have the option to accept her confession. But even at this point you have the option to change your mind and pick another girl who will give you one final pitch about why you should choose them before giving you yet ANOTHER chance to back out and commit to the girl you favored.
Maybe the weight of how much this changes the feel of reading a VN isn't clear so lets do a comparison. Muv-Luv Extra isn't a great novel, certainly not terrible but it's about as average as I could hope to find. Their is no other single VN to me that is as aggressively 5/10 as Muv-Luv Extra. Placing it beside IxST both games have a prologue introducing their respective flavors of P-kun and follow it with an intro movie. I know i'm vastly oversimplifying things as the prologues to these two stories are nothing alike but mechanically they have no difference so the important part is that when the common route starts the reader is mentally in the same place. In IxST the player is almost immediately presented with all the choice mechanic they will be interacting with for the next three or so hours of the novel in the form of the heart system. Muv-Luv by contrast spends its opening to the common route with one of the five heroins and less then half an hour into the experience presents the first choice which is a binary question of if you enjoyed yourself with her. Unless you are brand new to visual novels you will know immediately that Muv-Luv's choice should give you pause because without even letting you meet four of the five romance options you are already having to make a choice that you have no way of knowing the significance of. While not all novels do this it's not uncommon for a visual novel to soft lock out of a route when you don't get every choice for a heroine correct and so this small moment to a first time reader can feel needlessly stressful because choosing one option may lock you on one path for the narrative and the other may permanently lock you out of it without telling you either result for HOURS.
In roughly the same time a reader will make their way through IxST's first section of common route to the extra scene choice that same reader in Muv-Luv will likely have to make two additional choices if not more all of which are binary "Best Hair" choices encouraging the reader to pursue one of the five heroines hours before the common route ends. This almost makes the choices irrelevant as the reader is primed to select whichever option continues the path their on and discourages them from picking the option they would prefer over the option that is more likely to result in a "good" end. Now to be fair IxST does not communicate to the reader that who they pick for the extra scene is not a soft lock but even if we assume the reader is ignoring the hearts and has already selected which romance route they want to shoot for the hearts system tutorial screen and the extra scene tutorial are definitely geared toward the opposite priming. Every girl is available to be chosen no mater how few hearts you gave her and this ties neatly into the games presentation. The cross view system that temporarily takes away the hearts counters and allows the reader to experience short scenes with each girl further primes the reader to the idea that no matter their choice at this stage the narrative will continue without soft locking. To summarize Muv-Luv and its traditional use of choices makes its narrative feel like the choices exist as a quiz of "what would this girl like me to do?" IxST and its heart system feel like you are organically favoring the girl or girls you enjoy and presents everyone with an equal chance for you to grow attached to them.
THE PROBLEM WITH COMMON ROUTES
I have another review in the works explaining why I dislike the presentation of most common routes using IMHHW as an example but I'll summarize my points here so I can explain how much better IxST is at getting a reader to seriously consider all the heroines as potential options then a traditional visual novel. Everyone knows their are certain types of characters that feature heavily in visual novels and to an extent has their preferences. Class Representatives, lolis, little sisters etc are all common starting points for heroines. I personally tend to dislike Tsunderes and have a preference for childhood friends but that's just me. Common routes ideally should follow four basic rules but often fail to uphold them.
1.) The common route should introduce but NOT develop characters only important in one or two romance routes and should involve background characters as much as possible while developing the heroines.
2.) The common route should develop each heroine equally and if possible should provide them with as close to equal screen time as feasible.
3.) The common route should have a reason for existing outside of developing characters and this reason should not be resolved before the romance routes begin unless those routes have their own conflict.
4.) The common route should have just as many CGs as the individual romance routes if not more and showcase each heroine evenly in them.
I came up with these rules because the entire reason a common route exists is to allow the reader to familiarize themselves with the world and characters and specifically the heroines. If it fails to accomplish that then what was the point of having it? IMHHW happens to fail at ALL of these rules but that's a topic for another day. Let me know in the comments if you're interested in that review and I'll push it up the list. However before I explain why IxST does so well by following these guidelines let me explain my reasoning for each.
Rule one recognizes that visual novels need characters other then the protagonist and heroines to feel believable, otherwise the world feels empty and flat. These characters come in three flavors. Background, Side, and Spriteless. Background characters are things like the protagonists best friend or their teacher, definitely important people with a role in the narrative but not romance options. Ideally background characters should be introduced in the prologue to establish their personality and due to their development typically remaining static involved as much as possible with the character in the common route so that by the time the romance routes are reached they can serve their narrative purpose without taking away from the heroine. We should know everything important about them before the half way mark so they can be used and referenced easily as needed. A perfect example is Mikoto in Muv-Luv Extra, who is introduced about a quarter of the way through the game and has basically finished his development by the half way point. Side characters are the opposite, and should be developed in romance routes after being introduced in the common route. A good example here is if a heroine has a little sister, although not every little sister character is like this in general this example works. Ideally, the reader should know the heroine has a little sister and be introduced to her sprite but this is only to allow her to be expanded on in the romance route later so that each run of the game feels unique. Just like in real life growing closer to people means your circle of friends shifts and its more interesting to a reader to have to work to know every character in the game then to always have that information from the beginning. The last category of Spriteless are small time or single use characters that well, don't have a sprite. I might come back in a future review and talk about this group but they don't bear much relevance to the current topic so I'm going to move on.
The second rule is pretty self explanatory but to be thorough one of the greatest sins a common route can commit is focusing on one character over the others. Yes, I am aware that some novels have "true" ends that are meant to advance a larger story. Yes, I am also aware that in real life it is very unlikely people you only see at school or work or whatever will have an equal amount of exposure to you as people you've been friends with for years or who you have class with. None of those things matter in a novel. The author has the ability to portray each character evenly even if the protagonist does not have an even amount of interaction with each character. The thing about real life and realism is that life is often incredibly boring. I have yet to see a novel that forced me to sit through every class period the protagonist experienced, because that would be excruciating. I also don't have to wait six hours for the protagonist to wake up after going to sleep nor witness every bite of breakfast every day. This isn't a question of what is realistic this is a question of allowing the reader to get a decent understanding of the characters. This doesn't always mean they are given literally to the second the same amount of dialogue and screen time, but a good common route will let each heroine have an equal time to shine without favoring any of them.
The third rule is the one I most often see broken and as such has become my personal most important of the four. I am far more willing to forgive a novel that can follow this rule, even if it isn't for every run, then i am a novel that can not. I have no problems with slice of life narratives. It can sometimes be incredibly cathartic to just drop into the shoes of someone else and pretend to be them for a day. But stories do not exist without conflict and no, choosing which girl you like is not sufficient conflict for the story unless the protagonist is just as concerned about it as you are. Ideally, a novel's conflict should involve all the characters though that's rather difficult so settling for just the protagonist and heroins is fine. The conflict should also have enough leeway to be solved in multiple ways so that each heroines route can provide their own solution. How a heroine uniquely resolves conflict or avoids it is a huge opportunity to squander by ignoring the inclusion of a story.
The fourth rule is most concerned with creating a balanced feeling to the novel and has less to do with the common route specifically then it does with the novel as a whole but I tend to include it here because well, it just makes since. Obviously the romance routes are going to have a higher density of CGs then the common route. If you include extra scenes and optional scenes as part of a heroine's run rather then common route content that rule is doubly true. However this doesn't mean that the common route is totally devoid of CGs because that is obviously not the case. Most VNs use the prologue as an excuse to give each heroine an opening CG but the common route is where the majority of group shots and for lack of a better term "casual" scenes allow the artists to showcase each heroine outside of their static sprites. If you've read the other rules explanations you may have noticed that I haven't elaborated on the notion that the common route's main goal is to make the heroine's interesting to the reader and I've saved that point for this moment because outside of their sprites, which are a vital part of a heroine's ability to express themselves, CGs are the most important facet to letting these characters "breath." If you've ever listened to the dialogue in a visual novel without looking at the screen (Admittedly you'd have to know at least a bit of Japanese to do this but lets just assume you have the bare minimum understanding of what the characters are saying.) its actually really hard to distinguish each heroine's personality purely off the words they say. Maybe we don't often think about it but this genre is not just tied to its visual element it is at this point utterly undivorcable from it because it has come to rely on tropes and ideas that repeat themselves so often they tend to blur. How many visual novels have heroines that are constantly getting "shy" or "flustered?" How many use the same literal words like Segoi, Baka, Hentii, to describe things? Language is both endlessly expressive and limiting and even the best VNs, perhaps ESPECIALLY the best, would make TERRIBLE novels if they were printed as is in the form of a paperback. The entire reason for CGs even existing is to play off established tropes and the story to give the reader a snapshot of why the moment they are currently reading is significant and unique, and in a romance novel that more often then not translates to why the heroine is significant and unique. Neglecting this visual element therefore is a huge disservice to the the reader.
MERGING THE IDEAS
Having said all that IxST uses its unique choice system to facilitate a change in the reader's approach to reading and thus makes itself vastly more enjoyable. This novel could have so easily been nothing more then a self insert fantasy about being pursued by multiple women but because it encourages you to engage with every line of dialogue and spread your focus between all of the characters the story feels fresh and different. The last major choice mechanic I have to mention in IxST, the cross view system, is the epitome of this because while I do have problems with some of the scenes I'll talk about in part 2 of this review the fact it's the only time you can't access the hearts menu was a stroke of genius.
Cross view occurrences are once per subsection of the common route and present you with six to nine short scenes involving characters not in P-kun's immediate vicinity talking about or thinking about him. Their is always one scene for each of the heroines but most of the background characters get one each go around as well as usually a scene from the perspective of a random nameless classmate. These scenes are 100% optional but choosing not to read them is a real disservice because letting yourself get into the mindset of the heroins and characters really fleshes out their actions and puts context to the events that happen toward the end of each subsection. I think you'd really miss out if you skipped them. What elevates them for me though is the fact that since you can't access the hearts menu you're forced to think about the scenes for a longer period of time before immediately rewarding the heroines with a heart. By the time you get the menu back you may feel compelled to hand out two or three of your ten points and that choice is a really good moment to sit and consider how you actually feel about each of the characters. If you haven't been interested in one of the girls but their inner thoughts persuaded you they mean well or vise versa then these moments of returned choice can really shake up who you favor for the eventual act three. It feels like i'm praising this game for taking away my options during these sections, because I am, but that's only because you have such freedom everywhere else you become hyper aware and observant when it's scaled back.
Going back to the common route rules above this altered mindset falls perfectly in line with fulfilling those goals. Because the reader also cross views background characters to get their perspective they get to relegate development in the main story away from interactions with the protagonist and still fulfill the requirement they be showcased. Because each heroine always has a cross fade section each of them gets a roughly equal amount of time to win over a reader and because they have this extra time they can have more interesting personal conflicts that carry over to their romance routes while the main plot focuses on P-kun's struggles.
A RESPONSE TO A DIFFERENT POINT
I want to wrap up this first part of my review by addressing why I think "harem" games are uniquely suited to have better, more developed experiences then equal surface quality novels. IxST would not have worked as a story if the protagonist had been the one to confess to the heroines. I don't mean it would have just been different I mean the structure of this game and what made it so interesting and special would have been worthless if that one detail were changed. The choice system of IxST only works because all options are treated equally and never pull the reader too far in one direction. The mindset of someone who is balancing a relationship with five people is fundamentally different from pursuing one out of five. I can't make it any clearer then that, reading this VN is just fundamentally different because the atmosphere is different.
Am I saying ALL harem games are like this? Absolutely not. Especially those that have the harem route as an option but clearly do not focus on it or worse work like Harem Party where harem means nothing more then the Echii scenes keep changing girls. But I am saying its easier to break out of the mindset visual novels often fall into where you can only pursue one girl at a time and regardless of what the context of the situation is you should always pick the option that girl will like or be punished for it. The quote that really stuck with me from my conversation referenced in the intro above was "I can never get invested in the characters because they treat everyone the same."
I didn't say it at the time but isn't that a good thing? Do you WANT the characters to be inherently unequal? Everyone has their kinks and this is a kinky kinky genre you're allowed to pick favorites based upon what you like but doesn't it stand to reason that if you're reading a novel and one character is favored over another that the person who likes that unfavored character is going to wish they had been treated more equally? That's to say nothing about the fact that every novel is someones first and if a brand new VN reader gets hold of this story don't you want them to have a fair representation of the different character types? Isn't the entire point of having options to be able to explore them unbiased? If you really wanted to pursue just one type of character then their are dozens of novels with only one heroine, admittedly far less then their are with several choices but it's not like they don't exist! Now if the novel is poorly written and the characters have to all share two or three personality traits then yeah fine you have a point there but that's not the harems fault that's just a bad novel in general.
I can't say I'm a "fan" of harem VNs, I think I own maybe five total that could even plausibly count out of a sizable collection but I can't deny that problems I constantly complain about in other VNs are at worse absent in the sub-genre and at worst have active solutions like in IxST that I feel NEED to be praised. I don't feel comfortable writing off these stories because "One man can't possibly satisfy five girls." His words not mine.
WHY I CHOOSE TO SPLIT THIS REVIEW
Well for starters i'm already going far over what I think is reasonable for a single post and haven't even TOUCHED on the actual game's story but more importantly I think my opinion on the VN itself and the mechanics of the game are two separate things. I'll be clear and say I do like IxST, in fact it might crack my top 15, but I have a lot more to say about its narrative then I do about this topic so I decided it would be best to segregate the two ideas. Next week I'll be posting my views on the story, characters, music, art, and my overall opinion with a few extras thrown in. I expect it will end up being even longer then part 1 so be prepared for that I guess. I'm interested to see which of these two parts do better overall so if you liked what you read consider showing some support. I'll consider your updoot to be a substitute for a heart. This is my fourth review in this series so I'm still full of ideas but if these longer reviews do well I might consider moving to a slower release schedule to be sure I can be more detailed. Let me know what you think and if you agree with my points or the stranger I argued against. Stay well everyone!
submitted by OneSilverRaven to visualnovels [link] [comments]

AJ ALMENDINGER

glimpse into the future of Roblox

Our vision to bring the world together through play has never been more relevant than it is now. As our founder and CEO, David Baszucki (a.k.a. Builderman), mentioned in his keynote, more and more people are using Roblox to stay connected with their friends and loved ones. He hinted at a future where, with our automatic machine translation technology, Roblox will one day act as a universal translator, enabling people from different cultures and backgrounds to connect and learn from each other.
During his keynote, Builderman also elaborated upon our vision to build the Metaverse; the future of avatar creation on the platform (infinitely customizable avatars that allow any body, any clothing, and any animation to come together seamlessly); more personalized game discovery; and simulating large social gatherings (like concerts, graduations, conferences, etc.) with tens of thousands of participants all in one server. We’re still very early on in this journey, but if these past five months have shown us anything, it’s clear that there is a growing need for human co-experience platforms like Roblox that allow people to play, create, learn, work, and share experiences together in a safe, civil 3D immersive space.
Up next, our VP of Developer Relations, Matt Curtis (a.k.a. m4rrh3w), shared an update on all the things we’re doing to continue empowering developers to create innovative and exciting content through collaboration, support, and expertise. He also highlighted some of the impressive milestones our creator community has achieved since last year’s RDC. Here are a few key takeaways:
And lastly, our VP of Engineering, Technology, Adam Miller (a.k.a. rbadam), unveiled a myriad of cool and upcoming features developers will someday be able to sink their teeth into. We saw a glimpse of procedural skies, skinned meshes, more high-quality materials, new terrain types, more fonts in Studio, a new asset type for in-game videos, haptic feedback on mobile, real-time CSG operations, and many more awesome tools that will unlock the potential for even bigger, more immersive experiences on Roblox.

Vibin’

Despite the virtual setting, RDC just wouldn’t have been the same without any fun party activities and networking opportunities. So, we invited special guests DJ Hyper Potions and cyber mentalist Colin Cloud for some truly awesome, truly mind-bending entertainment. Yoga instructor Erin Gilmore also swung by to inspire attendees to get out of their chair and get their body moving. And of course, we even had virtual rooms dedicated to karaoke and head-to-head social games, like trivia and Pictionary.
Over on the networking side, Team Adopt Me, Red Manta, StyLiS Studios, and Summit Studios hosted a virtual booth for attendees to ask questions, submit resumes, and more. We also had a networking session where three participants would be randomly grouped together to get to know each other.

What does Roblox mean to you?

We all know how talented the Roblox community is from your creations. We’ve heard plenty of stories over the years about how Roblox has touched your lives, how you’ve made friendships, learned new skills, or simply found a place where you can be yourself. We wanted to hear more. So, we asked attendees: What does Roblox mean to you? How has Roblox connected you? How has Roblox changed your life? Then, over the course of RDC, we incorporated your responses into this awesome mural.
📷
Created by Alece Birnbach at Graphic Recording Studio

Knowledge is power

This year’s breakout sessions included presentations from Roblox developers and staff members on the latest game development strategies, a deep dive into the Roblox engine, learning how to animate with Blender, tools for working together in teams, building performant game worlds, and the new Creator Dashboard. Dr. Michael Rich, Associate Professor at Harvard Medical School and Physician at Boston Children’s Hospital, also led attendees through a discussion on mental health and how to best take care of you and your friends’ emotional well-being, especially now during these challenging times.
📷
Making the Dream Work with Teamwork (presented by Roblox developer Myzta)
In addition to our traditional Q&A panel with top product and engineering leaders at Roblox, we also held a special session with Builderman himself to answer the community’s biggest questions.
📷
Roblox Product and Engineering Q&A Panel

2020 Game Jam

The Game Jam is always one of our favorite events of RDC. It’s a chance for folks to come together, flex their development skills, and come up with wildly inventive game ideas that really push the boundaries of what’s possible on Roblox. We had over 60 submissions this year—a new RDC record.
Once again, teams of up to six people from around the world had less than 24 hours to conceptualize, design, and publish a game based on the theme “2020 Vision,” all while working remotely no less! To achieve such a feat is nothing short of awe-inspiring, but as always, our dev community was more than up for the challenge. I’ve got to say, these were some of the finest creations we’ve seen.
WINNERS
Best in Show: Shapescape Created By: GhettoMilkMan, dayzeedog, maplestick, theloudscream, Brick_man, ilyannna You awaken in a strange laboratory, seemingly with no way out. Using a pair of special glasses, players must solve a series of anamorphic puzzles and optical illusions to make their escape.
Excellence in Visual Art: agn●sia Created By: boatbomber, thisfall, Elttob An obby experience unlike any other, this game is all about seeing the world through a different lens. Reveal platforms by switching between different colored lenses and make your way to the end.
Most Creative Gameplay: Visions of a perspective reality Created By: Noble_Draconian and Spathi Sometimes all it takes is a change in perspective to solve challenges. By switching between 2D and 3D perspectives, players can maneuver around obstacles or find new ways to reach the end of each level.
Outstanding Use of Tech: The Eyes of Providence Created By: Quenty, Arch_Mage, AlgyLacey, xJennyBeanx, Zomebody, Crykee This action/strategy game comes with a unique VR twist. While teams fight to construct the superior monument, two VR players can support their minions by collecting resources and manipulating the map.
Best Use of Theme: Sticker Situation Created By: dragonfrosting and Yozoh Set in a mysterious art gallery, players must solve puzzles by manipulating the environment using a magic camera and stickers. Snap a photograph, place down a sticker, and see how it changes the world.
OTHER TOP PICKS
HONORABLE MENTIONS
For the rest of the 2020 Game Jam submissions, check out the list below:
20-20 Vision | 20/20 Vision | 2020 Vision, A Crazy Perspective | 2020 Vision: Nyon | A Wild Trip! | Acuity | Best Year Ever | Better Half | Bloxlabs | Climb Stairs to 2021 | Double Vision (Team hey apple) | Eyebrawl | Eyeworm Exam | FIRE 2020 | HACKED | Hyperspective | Lucid Scream | Mystery Mansion | New Years at the Museum | New Year’s Bash | Poor Vision | Predict 2020 | RBC News | Retrovertigo | Second Wave | see no evil | Sight Fight | Sight Stealers | Spectacles Struggle | Specter Spectrum | Survive 2020 | The Lost Chicken Leg | The Outbreak | The Spyglass | Time Heist | Tunnel Vision | Virtual RDC – The Story | Vision (Team Freepunk) | Vision (Team VIP People ####) | Vision Developers Conference 2020 | Vision Is Key | Vision Perspective | Vision Racer | Visions | Zepto
And last but not least, we wanted to give a special shout out to Starboard Studios. Though they didn’t quite make it on time for our judges, we just had to include Dave’s Vision for good measure. 📷
Thanks to everyone who participated in the Game Jam, and congrats to all those who took home the dub in each of our categories this year. As the winners of Best in Show, the developers of Shapescape will have their names forever engraved on the RDC Game Jam trophy back at Roblox HQ. Great work!

‘Til next year

And that about wraps up our coverage of the first-ever digital RDC. Thanks to all who attended! Before we go, we wanted to share a special “behind the scenes” video from the 2020 RDC photoshoot.
Check it out:
It was absolutely bonkers. Getting 350 of us all in one server was so much fun and really brought back the feeling of being together with everyone again. That being said, we can’t wait to see you all—for real this time—at RDC next year. It’s going to be well worth the wait. ‘Til we meet again, my friends.
© 2020 Roblox Corporation. All Rights Reserved.

Improving Simulation and Performance with an Advanced Physics Solver

August

05, 2020

by chefdeletat
PRODUCT & TECH
📷In mid-2015, Roblox unveiled a major upgrade to its physics engine: the Projected Gauss-Seidel (PGS) physics solver. For the first year, the new solver was optional and provided improved fidelity and greater performance compared to the previously used spring solver.
In 2016, we added support for a diverse set of new physics constraints, incentivizing developers to migrate to the new solver and extending the creative capabilities of the physics engine. Any new places used the PGS solver by default, with the option of reverting back to the classic solver.
We ironed out some stability issues associated with high mass differences and complex mechanisms by the introduction of the hybrid LDL-PGS solver in mid-2018. This made the old solver obsolete, and it was completely disabled in 2019, automatically migrating all places to the PGS.
In 2019, the performance was further improved using multi-threading that splits the simulation into jobs consisting of connected islands of simulating parts. We still had performance issues related to the LDL that we finally resolved in early 2020.
The physics engine is still being improved and optimized for performance, and we plan on adding new features for the foreseeable future.

Implementing the Laws of Physics

📷
The main objective of a physics engine is to simulate the motion of bodies in a virtual environment. In our physics engine, we care about bodies that are rigid, that collide and have constraints with each other.
A physics engine is organized into two phases: collision detection and solving. Collision detection finds intersections between geometries associated with the rigid bodies, generating appropriate collision information such as collision points, normals and penetration depths. Then a solver updates the motion of rigid bodies under the influence of the collisions that were detected and constraints that were provided by the user.
📷
The motion is the result of the solver interpreting the laws of physics, such as conservation of energy and momentum. But doing this 100% accurately is prohibitively expensive, and the trick to simulating it in real-time is to approximate to increase performance, as long as the result is physically realistic. As long as the basic laws of motion are maintained within a reasonable tolerance, this tradeoff is completely acceptable for a computer game simulation.

Taking Small Steps

The main idea of the physics engine is to discretize the motion using time-stepping. The equations of motion of constrained and unconstrained rigid bodies are very difficult to integrate directly and accurately. The discretization subdivides the motion into small time increments, where the equations are simplified and linearized making it possible to solve them approximately. This means that during each time step the motion of the relevant parts of rigid bodies that are involved in a constraint is linearly approximated.
📷📷
Although a linearized problem is easier to solve, it produces drift in a simulation containing non-linear behaviors, like rotational motion. Later we’ll see mitigation methods that help reduce the drift and make the simulation more plausible.

Solving

📷
Having linearized the equations of motion for a time step, we end up needing to solve a linear system or linear complementarity problem (LCP). These systems can be arbitrarily large and can still be quite expensive to solve exactly. Again the trick is to find an approximate solution using a faster method. A modern method to approximately solve an LCP with good convergence properties is the Projected Gauss-Seidel (PGS). It is an iterative method, meaning that with each iteration the approximate solution is brought closer to the true solution, and its final accuracy depends on the number of iterations.
📷
This animation shows how a PGS solver changes the positions of the bodies at each step of the iteration process, the objective being to find the positions that respect the ball and socket constraints while preserving the center of mass at each step (this is a type of positional solver used by the IK dragger). Although this example has a simple analytical solution, it’s a good demonstration of the idea behind the PGS. At each step, the solver fixes one of the constraints and lets the other be violated. After a few iterations, the bodies are very close to their correct positions. A characteristic of this method is how some rigid bodies seem to vibrate around their final position, especially when coupling interactions with heavier bodies. If we don’t do enough iterations, the yellow part might be left in a visibly invalid state where one of its two constraints is dramatically violated. This is called the high mass ratio problem, and it has been the bane of physics engines as it causes instabilities and explosions. If we do too many iterations, the solver becomes too slow, if we don’t it becomes unstable. Balancing the two sides has been a painful and long process.

Mitigation Strategies

📷A solver has two major sources of inaccuracies: time-stepping and iterative solving (there is also floating point drift but it’s minor compared to the first two). These inaccuracies introduce errors in the simulation causing it to drift from the correct path. Some of this drift is tolerable like slightly different velocities or energy loss, but some are not like instabilities, large energy gains or dislocated constraints.
Therefore a lot of the complexity in the solver comes from the implementation of methods to minimize the impact of computational inaccuracies. Our final implementation uses some traditional and some novel mitigation strategies:
  1. Warm starting: starting with the solution from a previous time-step to increase the convergence rate of the iterative solver
  2. Post-stabilization: reprojecting the system back to the constraint manifold to prevent constraint drift
  3. Regularization: adding compliance to the constraints ensuring a solution exists and is unique
  4. Pre-conditioning: using an exact solution to a linear subsystem, improving the stability of complex mechanisms
Strategies 1, 2 and 3 are pretty traditional, but 3 has been improved and perfected by us. Also, although 4 is not unheard of, we haven’t seen any practical implementation of it. We use an original factorization method for large sparse constraint matrices and a new efficient way of combining it with the PGS. The resulting implementation is only slightly slower compared to pure PGS but ensures that the linear system coming from equality constraints is solved exactly. Consequently, the equality constraints suffer only from drift coming from the time discretization. Details on our methods are contained in my GDC 2020 presentation. Currently, we are investigating direct methods applied to inequality constraints and collisions.

Getting More Details

Traditionally there are two mathematical models for articulated mechanisms: there are reduced coordinate methods spearheaded by Featherstone, that parametrize the degrees of freedom at each joint, and there are full coordinate methods that use a Lagrangian formulation.
We use the second formulation as it is less restrictive and requires much simpler mathematics and implementation.
The Roblox engine uses analytical methods to compute the dynamic response of constraints, as opposed to penalty methods that were used before. Analytics methods were initially introduced in Baraff 1989, where they are used to treat both equality and non-equality constraints in a consistent manner. Baraff observed that the contact model can be formulated using quadratic programming, and he provided a heuristic solution method (which is not the method we use in our solver).
Instead of using force-based formulation, we use an impulse-based formulation in velocity space, originally introduced by Mirtich-Canny 1995 and further improved by Stewart-Trinkle 1996, which unifies the treatment of different contact types and guarantees the existence of a solution for contacts with friction. At each timestep, the constraints and collisions are maintained by applying instantaneous changes in velocities due to constraint impulses. An excellent explanation of why impulse-based simulation is superior is contained in the GDC presentation of Catto 2014.
The frictionless contacts are modeled using a linear complementarity problem (LCP) as described in Baraff 1994. Friction is added as a non-linear projection onto the friction cone, interleaved with the iterations of the Projected Gauss-Seidel.
The numerical drift that introduces positional errors in the constraints is resolved using a post-stabilization technique using pseudo-velocities introduced by Cline-Pai 2003. It involves solving a second LCP in the position space, which projects the system back to the constraint manifold.
The LCPs are solved using a PGS / Impulse Solver popularized by Catto 2005 (also see Catto 2009). This method is iterative and considers each individual constraints in sequence and resolves it independently. Over many iterations, and in ideal conditions, the system converges to a global solution.
Additionally, high mass ratio issues in equality constraints are ironed out by preconditioning the PGS using the sparse LDL decomposition of the constraint matrix of equality constraints. Dense submatrices of the constraint matrix are sparsified using a method we call Body Splitting. This is similar to the LDL decomposition used in Baraff 1996, but allows more general mechanical systems, and solves the system in constraint space. For more information, you can see my GDC 2020 presentation.
The architecture of our solver follows the idea of Guendelman-Bridson-Fedkiw, where the velocity and position stepping are separated by the constraint resolution. Our time sequencing is:
  1. Advance velocities
  2. Constraint resolution in velocity space and position space
  3. Advance positions
This scheme has the advantage of integrating only valid velocities, and limiting latency in external force application but allowing a small amount of perceived constraint violation due to numerical drift.
An excellent reference for rigid body simulation is the book Erleben 2005 that was recently made freely available. You can find online lectures about physics-based animation, a blog by Nilson Souto on building a physics engine, a very good GDC presentation by Erin Catto on modern solver methods, and forums like the Bullet Physics Forum and GameDev which are excellent places to ask questions.

In Conclusion

The field of game physics simulation presents many interesting problems that are both exciting and challenging. There are opportunities to learn a substantial amount of cool mathematics and physics and to use modern optimizations techniques. It’s an area of game development that tightly marries mathematics, physics and software engineering.
Even if Roblox has a good rigid body physics engine, there are areas where it can be improved and optimized. Also, we are working on exciting new projects like fracturing, deformation, softbody, cloth, aerodynamics and water simulation.
Neither Roblox Corporation nor this blog endorses or supports any company or service. Also, no guarantees or promises are made regarding the accuracy, reliability or completeness of the information contained in this blog.
This blog post was originally published on the Roblox Tech Blog.
© 2020 Roblox Corporation. All Rights Reserved.

Using Clang to Minimize Global Variable Use

July

23, 2020

by RandomTruffle
PRODUCT & TECH
Every non-trivial program has at least some amount of global state, but too much can be a bad thing. In C++ (which constitutes close to 100% of Roblox’s engine code) this global state is initialized before main() and destroyed after returning from main(), and this happens in a mostly non-deterministic order. In addition to leading to confusing startup and shutdown semantics that are difficult to reason about (or change), it can also lead to severe instability.
Roblox code also creates a lot of long-running detached threads (threads which are never joined and just run until they decide to stop, which might be never). These two things together have a very serious negative interaction on shutdown, because long-running threads continue accessing the global state that is being destroyed. This can lead to elevated crash rates, test suite flakiness, and just general instability.
The first step to digging yourself out of a mess like this is to understand the extent of the problem, so in this post I’m going to talk about one technique you can use to gain visibility into your global startup flow. I’m also going to discuss how we are using this to improve stability across the entire Roblox game engine platform by decreasing our use of global variables.

Introducing -finstrument-functions

Nothing excites me more than learning about a new obscure compiler option that I’ve never had a use for before, so I was pretty happy when a colleague pointed me to this option in the Clang Command Line Reference. I’d never used it before, but it sounded very cool. The idea being that if we could get the compiler to tell us every time it entered and exited a function, we could filter this information through a symbolizer of some kind and generate a report of functions that a) occur before main(), and b) are the very first function in the call-stack (indicating it’s a global).
Unfortunately, the documentation basically just tells you that the option exists with no mention of how to use it or if it even actually does what it sounds like it does. There’s also two different options that sound similar to each other (-finstrument-functions and -finstrument-functions-after-inlining), and I still wasn’t entirely sure what the difference was. So I decided to throw up a quick sample on godbolt to see what happened, which you can see here. Note there are two assembly outputs for the same source listing. One uses the first option and the other uses the second option, and we can compare the assembly output to understand the differences. We can gather a few takeaways from this sample:
  1. The compiler is injecting calls to __cyg_profile_func_enter and __cyg_profile_func_exit inside of every function, inline or not.
  2. The only difference between the two options occurs at the call-site of an inline function.
  3. With -finstrument-functions, the instrumentation for the inlined function is inserted at the call-site, whereas with -finstrument-functions-after-inlining we only have instrumentation for the outer function. This means that when using-finstrument-functions-after-inlining you won’t be able to determine which functions are inlined and where.
Of course, this sounds exactly like what the documentation said it did, but sometimes you just need to look under the hood to convince yourself.
To put all of this another way, if we want to know about calls to inline functions in this trace we need to use -finstrument-functions because otherwise their instrumentation is silently removed by the compiler. Sadly, I was never able to get -finstrument-functions to work on a real example. I would always end up with linker errors deep in the Standard C++ Library which I was unable to figure out. My best guess is that inlining is often a heuristic, and this can somehow lead to subtle ODR (one-definition rule) violations when the optimizer makes different inlining decisions from different translation units. Luckily global constructors (which is what we care about) cannot possibly be inlined anyway, so this wasn’t a problem.
I suppose I should also mention that I still got tons of linker errors with -finstrument-functions-after-inlining as well, but I did figure those out. As best as I can tell, this option seems to imply –whole-archive linker semantics. Discussion of –whole-archive is outside the scope of this blog post, but suffice it to say that I fixed it by using linker groups (e.g. -Wl,–start-group and -Wl,–end-group) on the compiler command line. I was a bit surprised that we didn’t get these same linker errors without this option and still don’t totally understand why. If you happen to know why this option would change linker semantics, please let me know in the comments!

Implementing the Callback Hooks

If you’re astute, you may be wondering what in the world __cyg_profile_func_enter and __cyg_profile_func_exit are and why the program is even successfully linking in the first without giving undefined symbol reference errors, since the compiler is apparently trying to call some function we’ve never defined. Luckily, there are some options that allow us to see inside the linker’s algorithm so we can find out where it’s getting this symbol from to begin with. Specifically, -y should tell us how the linker is resolving . We’ll try it with a dummy program first and a symbol that we’ve defined ourselves, then we’ll try it with __cyg_profile_func_enter .
[email protected]:~/src/sandbox$ cat instr.cpp int main() {} [email protected]:~/src/sandbox$ clang++-9 -fuse-ld=lld -Wl,-y -Wl,main instr.cpp /usbin/../lib/gcc/x86_64-linux-gnu/crt1.o: reference to main /tmp/instr-5b6c60.o: definition of main
No surprises here. The C Runtime Library references main(), and our object file defines it. Now let’s see what happens with __cyg_profile_func_enter and -finstrument-functions-after-inlining.
[email protected]:~/src/sandbox$ clang++-9 -fuse-ld=lld -finstrument-functions-after-inlining -Wl,-y -Wl,__cyg_profile_func_enter instr.cpp /tmp/instr-8157b3.o: reference to __cyg_profile_func_enter /lib/x86_64-linux-gnu/libc.so.6: shared definition of __cyg_profile_func_enter
Now, we see that libc provides the definition, and our object file references it. Linking works a bit differently on Unix-y platforms than it does on Windows, but basically this means that if we define this function ourselves in our cpp file, the linker will just automatically prefer it over the shared library version. Working godbolt link without runtime output is here. So now you can kind of see where this is going, however there are still a couple of problems left to solve.
  1. We don’t want to do this for a full run of the program. We want to stop as soon as we reach main.
  2. We need a way to symbolize this trace.
The first problem is easy to solve. All we need to do is compare the address of the function being called to the address of main, and set a flag indicating we should stop tracing henceforth. (Note that taking the address of main is undefined behavior[1], but for our purposes it gets the job done, and we aren’t shipping this code, so ¯\_(ツ)_/¯). The second problem probably deserves a little more discussion though.

Symbolizing the Traces

In order to symbolize these traces, we need two things. First, we need to store the trace somewhere on persistent storage. We can’t expect to symbolize in real time with any kind of reasonable performance. You can write some C code to save the trace to some magic filename, or you can do what I did and just write it to stderr (this way you can pipe stderr to some file when you run it).
Second, and perhaps more importantly, for every address we need to write out the full path to the module the address belongs to. Your program loads many shared libraries, and in order to translate an address into a symbol, we have to know which shared library or executable the address actually belongs to. In addition, we have to be careful to write out the address of the symbol in the file on disk. When your program is running, the operating system could have loaded it anywhere in memory. And if we’re going to symbolize it after the fact we need to make sure we can still reference it after the information about where it was loaded in memory is lost. The linux function dladdr() gives us both pieces of information we need. A working godbolt sample with the exact implementation of our instrumentation hooks as they appear in our codebase can be found here.

Putting it All Together

Now that we have a file in this format saved on disk, all we need to do is symbolize the addresses. addr2line is one option, but I went with llvm-symbolizer as I find it more robust. I wrote a Python script to parse the file and symbolize each address, then print it in the same “visual” hierarchical format that the original output file is in. There are various options for filtering the resulting symbol list so that you can clean up the output to include only things that are interesting for your case. For example, I filtered out any globals that have boost:: in their name, because I can’t exactly go rewrite boost to not use global variables.
The script isn’t as simple as you would think, because simply crawling each line and symbolizing it would be unacceptably slow (when I tried this, it took over 2 hours before I finally killed the process). This is because the same address might appear thousands of times, and there’s no reason to run llvm-symbolizer against the same address multiple times. So there’s a lot of smarts in there to pre-process the address list and eliminate duplicates. I won’t discuss the implementation in more detail because it isn’t super interesting. But I’ll do even better and provide the source!
So after all of this, we can run any one of our internal targets to get the call tree, run it through the script, and then get output like this (actual output from a Roblox process, source file information removed):
excluded_symbols = [‘.\boost.*’]* excluded_modules = [‘/usr.\’]* /uslib/x86_64-linux-gnu/libLLVM-9.so.1: 140 unique addresses InterestingRobloxProcess: 38928 unique addresses /uslib/x86_64-linux-gnu/libstdc++.so.6: 1 unique addresses /uslib/x86_64-linux-gnu/libc++.so.1: 3 unique addresses Printing call tree with depth 2 for 29276 global variables. __cxx_global_var_init.5 (InterestingFile1.cpp:418:22) RBX::InterestingRobloxClass2::InterestingRobloxClass2() (InterestingFile2.cpp.:415:0) __cxx_global_var_init.19 (InterestingFile2.cpp:183:34) (anonymous namespace)::InterestingRobloxClass2::InterestingRobloxClass2() (InterestingFile2.cpp:171:0) __cxx_global_var_init.274 (InterestingFile3.cpp:2364:33) RBX::InterestingRobloxClass3::InterestingRobloxClass3()
So there you have it: the first half of the battle is over. I can run this script on every platform, compare results to understand what order our globals are actually initialized in in practice, then slowly migrate this code out of global initializers and into main where it can be deterministic and explicit.

Future Work

It occurred to me sometime after implementing this that we could make a general purpose profiling hook that exposed some public symbols (dllexport’ed if you speak Windows), and allowed a plugin module to hook into this dynamically. This plugin module could filter addresses using whatever arbitrary logic that it was interested in. One interesting use case I came up for this is that it could look up the debug information, check if the current address maps to the constructor of a function local static, and write out the address if so. This effectively allows us to gain a deeper understanding of the order in which our lazy statics are initialized. The possibilities are endless here.

Further Reading

If you’re interested in this kind of thing, I’ve collected a couple of my favorite references for this kind of topic.
  1. Various: The C++ Language Standard
  2. Matt Godbolt: The Bits Between the Bits: How We Get to main()
  3. Ryan O’Neill: Learning Linux Binary Analysis
  4. Linkers and Loaders: John R. Levine
  5. https://eel.is/c++draft/basic.exec#basic.start.main-3
Neither Roblox Corporation nor this blog endorses or supports any company or service. Also, no guarantees or promises are made regarding the accuracy, reliability or completeness of the information contained in this blog.
submitted by jaydenweez to u/jaydenweez [link] [comments]

Summary of Tau-Chain Monthly Video Update - August 2020

Transcript of the Tau-Chain & Agoras Monthly Video Update – August 2020
Karim:
Major event of this past month: Release of the Whitepaper. Encourages everyone to read the Whitepaper because it’s going to guide our development efforts for the foreseeable future. Development is proceeding well on two major fronts: 1. Agoras Live website: Features are being added to it, only two major features are missing 2. TML: We identified ten major tasks to be completed before the next release. Three of them are optimization features which are very important for the speed and performance features of TML. In terms of time requirements, we feel very good to stay on schedule for the end of this year. We also are bringing in two extra resources to help us get there as soon as possible.
Umar:
Been working on changes in the string relation, especially moving from binary string representation to unistring. The idea is that now rather than having two arguments in the term, you would have a single argument for the string. Thus, the hierarchy changes from two to one and that has an effect on speed and on the storage. So the first few numbers that we calculated showed that we are around 10% faster than with the binary string. There are some other changes that need to be made with regards to the string which he is working on.
Tomas:
Had to revise how we encode characters in order to be compatible with the internet. It also was the last missing piece in order to compute persistence. The reason is that the stored data has to be portable and if TML needs characters and strings internally in the same encoding as it stores its own data, we can map strings directly into files and gain lots of speed with it. The code is now pushed in the repository and can be tested. He’s also working on a TML tutorial and likely before next update, there should be something available online.
Kilian:
Transcribed past month’s video update. You can find it on Reddit. Also, he has done more outreach towards potential partner universities and research groups and this month the response rate was better than earlier, most likely because of the whitepaper release. Positive replies include: University of Mannheim, Trier (Computational Linguistics & Digital Humanities), research group AI KR from within the W3C (https://www.w3.org/community/aik) articulated strong interest in getting a discussion going, particularly because they had some misconceptions about blockchain. They would like to have a Q&A session with a couple of their group members but first it’s important for us to have them read the whitepaper to get a basic understanding and then be able to ask respective questions. Other interested parties include the Computational Linguistics research group of the University of Groningen, Netherlands and also the Center for Language Technology of the University of Gothenburg, Sweden. We also got connected to the Chalmers University of Technology, Sweden. Also has done some press outreach in combination with the whitepaper, trying to get respective media outlets to cover our project, but so far hasn’t gotten feedback back. Been discussing the social media strategy with Ohad and Fola, trying to be more active on our channels and have a weekly posting schedule on Twitter including non-technical and technical contests that engage with all parts of our community. Furthermore, has opened up a discussion on Discord (https://discord.gg/qZtJs78) in the “Tau-Discussion” channel around the topics that Ohad mentioned he would first like to see discussed on Tau (see https://youtu.be/O4SFxq_3ask?t=2225):
  1. Definitions of what good and bad means and what better and worse means.
  2. The governance model over Tau.
  3. The specification of Tau itself and how to make it grow and evolve even more to suit wider audiences. The whole point of Tau is people collaborating in order to define Tau itself and to improve it over time, so it will improve up to infinity. This is the main thing, especially initially, that the Tau developers (or rather users) advance the platform more and more.
If you are interested in participating in the discussion, join our Discord (https://discord.gg/qZtJs78) and post your thoughts – we’d appreciate it! Also has finished designing the bounty claiming process, so people that worked on a bounty now can claim their reward by filling out the bounty claiming form (https://forms.gle/HvksdaavuJbu4PCV8). Been also working on revamping the original post in the Bitcointalk-Thread. It contains a lot of broken links and generally is outdated, so he’s using the whitepaper to give it a complete overhaul. With the whitepaper release, the community also got a lot more active which was great to see and thus, he dedicated more time towards supporting the community.
Mo’az:
Finished multiple milestones with regards to the Agoras Live website: 1. Question part where people post their requests and knowledge providers can help them with missing knowledge. 2. Have been through multiple iterations of how to approach the services in the website. How the service seeker can discover new people through the website. 3. Connected the limited, static categories on the website to add more diversity to it. By adding tags, it will be easier for service seekers to find what they are looking for. 4. Onboarding: Been working on adding an onboarding step for the user, so the user chooses categories of his interest and as a result, he will find the homepage to be more personalized towards him and his interests. 5. New section to the user profile added: The service that the knowledge provider can provide. Can be added as tags or free text. 6. Search: Can filter via free text and filter by country, language, etc. 7. Been working on how to display the knowledge providers on the platform.
Andrei:
Improved look of the Agoras Live front page: Looks more clean. Finetuned search options. Redesigned the header. It now has notification icons. If you query a knowledge provider for an appointment, he will receive a notification about the new appointment to be approved or rejected. You can also add a user to your favorites. Front page now randomly displays users. Also implemented email templates, e.g. a thank you email upon registration or an appointment reminder. What is left to do is the session list and then the basic engine will be ready. Also needs to implement the “questions” section.
Juan:
Has switched towards development of TML related features. Been working mainly on the first order logic support. Has integrated the formula parser with the TML core functionality. With this being connected, we added to TML quantified Boolean function solving capability in the same way as we get the first order logic support. It’s worth mentioning that this feature is being supported by means of the main optimized BDD primitives that we already have in the TML engine. Looking forward to make this scalable in terms of formula sizes. It’s a matter of refining the Boolean solution and doing proper tests to show this milestone to the community in a proper way.
Fola:
Have been discussing the feasibility of a token swap towards ERC20 from the Omni token with exchanges and internally with the team. Also has been discussing the social media strategy with Kilian. As we update with the new visual identity and the branding, it’s a good time to boost our social media channels and look ready for the next iteration of our look and feel. Continuing on the aspects of our visual identity and design, he’s been talking to quite a number of large agencies who have been involved in some of the larger projects in the software space. One being Phantom (https://phantom.land) who designed the DeepMind website (https://deepmind.com), the other one being Outcast (https://theoutcastagency.com) who have been working with Intel and SalesForce. We aren’t sure yet with which company we go but it’s been good to get insight into how they work and which steps they’d take into getting our project out to the wider audience. That whole process has been a lot of research into what kind of agencies we’d want to get involved with. Also, with the release of the whitepaper being such a big milestone in the history of the company, he’s been doing a lot of reading of that paper. We’re also looking to get more manpower involved with the TML website. Also going to hire a frontend developer for the website and the backend will be done according to Ohad’s requirements. Also, as a response of the community’s feedback towards the Omni deck not being user friendly, he did some outreach to the Omni team and introduced them to a partner exchange for Agoras Live. They have an “exchange-in-a-box” service which may help Omni to have a much more usable interface for the Omni Dex, so hopefully they will be working together to improve the usability of the Omni Dex.
Ohad:
Finished writing the community draft of the whitepaper. The final version will contain changes according to the community’s feedback and more elaboration on more topics that weren’t inserted in the current paper, including logics for law and about the full process of Tau. And, as usual, he’s been doing more research of second order logic, specifically, Boolean options and also analyzing the situation where the formulas in conjunctive normal form trying to extract some information from such a cnf. Also, what Juan mentioned about first order logic: People who are already familiar with TML will see that now with this change, the easiness of using TML got much more advanced. In first order formulas, expressing yourself has become much easier than before.
Q&A:
Q: What is the difference between Horn Second Order Logic and Krom Second Order Logic?
A: Horn and Krom are special cases of cnf (conjunctive normal form). Conjunctive normal form means the formula has the form of n conjunction between clauses. This clause and this clause while each clause is a disjunction of atoms: It’s this or this or this or that. And now any formula can be written in conjunctive form. Any formula can be brought to this form. Krom is the case where each clause contains exactly two atoms and Horn is the case where at most one atom in every clause is positive – thre rest are negated, that’s the definition.
Q: Now that the whitepaper has been released, how do you think it will affect the work of the developers?
A: We see the whitepaper as being a roadmap of development for us, so it will essentially be the vision that we are working to implement. Of course, we have to turn it into much more specific tasks, but as you saw from the detailed progress from last month, that’s exactly what we do.
Q: When can we expect the new website?
A: We’ve just updated the website with the whitepaper and the new website should be launching after we get the branding done. There’s a lot of work to be done and a lot of considerations taking place. We have to get the graphics ready and the front end done. The branding is the most important step we have to get done and once that is complete, we will launch the new website.
Q: What needs to be resolved next before we get onto a solid US exchange?
A: With the whitepaper released, that’s probably been the biggest hurdle we had to get over. At this point, we still have to confirm some elements of the plan with the US regulators and we do need to have some sort of product available. Be that the TML release or Agoras Live, there needs to be something out for people to use. So, in conjunction with the whitepaper and approval from the US regulators, we need to have a product available to get onto US exchanges.
Q: Does the team still need to get bigger to reach cruising speed, if so, how much by and in which areas?
A: Of course, any development team would like to have as many resources as possible but working with the resources we that have right now, we are making significant progress towards the two development goals that we have, both the Agoras Live website and the TML engine. But we are bringing in at least two more resources in the near future but there’s no lack of work to be done and also there’s no lack of progress.
Q: Will Prof. Carmi continue to work in the team and if so, in what capacity?
A: Sure, Prof. Carmi will continue coordinating with us. Right now, he’s working on the mathematics of certain features in the derivatives market that Agoras is planned to have, and also ongoing research in relevant logic.
Q: Will you translate the whitepaper into other languages?
A: Yes, we expect translations of the whitepaper to occur. The most important languages that comprise our community, e.g. Chinese. What languages exactly, we cannot tell right now, but mainly the most prominent languages that comprise our community.
Q: Is the roadmap on the website still correct and, when will we move to the next step?
A: We will be revamping the website soon including the roadmap that will be a summary of what’s been published in the whitepaper but the old version of the roadmap on the website is no longer up-to-date.
Q: What are the requirements for Agoras to have its own chain?
A: If the question means why Agoras doesn’t have its own chain right now, well there is no special reason. We need to reach there and we will reach there.
Q: When Agoras switches to its own chain, will you need to create a new payments system from scratch?
A: No, we won’t have to. We will have to integrate with the new payment channel but that’s something we are planning to do anyway. We will be integrating with several exchanges and several payment channels so it won’t be a huge task. Most of the heavy lifting is in the wallet and key management which will be done on the client side but we’re already planning on having more than one payment gateway anyway so having one more is no problem.
Q: When can we see Tau work with a real practical example?
A: For examples of applications of TML, we are currently working on a TML tutorial and a set of demos. Two of our developers are currently working on it and it’s going to be a big part of our next release.
Q: How can we make speaking in formal languages easier, with an example?
A: Coming up with a usable and convenient formal language is a big task which maybe it’s even safe to say no one achieved up until today. But we solve this problem indirectly yet completely by not coming up with any language but letting languages to be created and evolve over time through the internet of languages. We don’t have any solution of how to make formal languages very easy for everyone. It will be a collaborative effort over Tau together to reach there over time. You can see in the whitepaper in the section 4.2 about “The Critical Mass and the Tau Chain Reaction”.
Q: What are the biggest limitations of Tau and, are they solvable?
A: TML cannot do everything that requires more than polynomial space to be done and there are infinitely many things like this. For example, you can look up x time or x space complete problems. We would want to say elementary but there is no elementary complete problem but there are complete problems in each of the levels of elementary. All those, TML cannot do because this is above polynomial space. Another drawback of TML which comes from the usage of BDDs is arithmetic. In particular, multiplication. Multiplication is highly inefficient in TML because of the nature of BDDs and of course BDDs bring so many more good things that even this drawback of slow multiplication is small compared to all the possibilities that this gives us. Another limitation, which we will emphasize in the next version of the whitepaper, is the satisfiability problem. The satisfiability problem of a formula without a model to ask whether a model exists – not a model checking like right now but to ask whether a model exists – this is undecidable already on very restricted classes as follows from Trakhtenbrot’s theory. So in particular, the containment problem, the scalability problem, the validity problem, they all are undecidable in TML as is and for them to be decidable, we need to restrict even more the expressive power and look at narrower fragments of the language. But again, this will be more emphasized in the next version of the whitepaper.
Q: It looks years for projects such as Maidsafe to build something mediocre, why should Agoras be able to do similar or better in less time?
A: Early on in the life of the Tau project, we’ve identified the computational resources marketplace as one of the possible applications of Tau, so it is very much on our roadmap. However, as you mentioned, there are some other projects, e.g. Filecoin, which is specifically focusing on the problem of storage. So even though it’s on our roadmap, we’re not there yet but we are watching closely what our competitors in this field are doing. While they haven’t yet delivered on their promise of an open and distributed storage network, we feel that at some point we will have more value to bring to the project. So distributed storage is on our roadmap but it’s not a priority for us right now but eventually we’ll get there.
Q: What are the requirements in scalability, e.g. permanent storage etc.?
A: We haven’t answered that question yet.
Q: Will Tau be able to run on a mobile phone?
A: Definitely, Yes. We’re planning on being available on all computational platforms, be it a server, laptop, phone or an iPad type of device.
Q: Given a vast trove of knowledge, how can Tau determine relevance? Can it also build defenses against spam attacks and garbage data?
A: Tau doesn’t offer any predetermined solution to this. It is basically all up to the user. The user will have to define what’s criminal and what’s not. Of course, most users will not bother with defining this but they will be able to automatically agree to people who already defined it and by that import their definitions. So bottom line: It’s really up to the users.
Q: What are your top priorities for the next three months?
A: Our goal for this year (2020) is to release a first version of Agoras Live and of TML.
Q: Ohad mentioned the following at the start of the year: Time for us to work on Agoras. We need to create the Agoras team and commence work. We made a major improvement in one of Agoras’ aspects in the form of theatrical breakthrough but we’re not ready yet to share the details publicly. Is there any further news or progress with the development of Agoras?
A: If the question is whether there has been more progress in the development of Agoras, specifically with regards to new discoveries for the derivatives market, then the answer is of course yes. Professor Carmi is now working on those inventions related to the derivatives market. We still keep them secret and of course, with Agoras Live, knowledge sharing for money is coming.
submitted by m4nki to tauchain [link] [comments]

Top sites to practice hacking skills (legally)

Top sites to practice hacking skills (legally)
credit- icssindia.in
These Websites to exercise your hacking skills whether you are a hacker, cybersecurity, pen-tester, or still a noob.
These vulnerable websites are great for developing our minds, increasing our capacity to solve problems, new innovative ideas come to our minds. Also, you will face brainfuck a lot of difficulties. Never give up always try to give your best. Because if you want to be a professional hacker, then you must know about the hacker attitudes and …
“real hackers never give up”
There are a lot of gaping holes in almost every security system. And to discover these is this is also a great opportunity to also discover the various tools that are needed for hacking. What the different options are etc. Use these websites to practice your hacking skills so you can be the best defense.
An attack is definitely the best form of defense
This applies to a lot of companies, they are hacking their own websites and even recruiting ethical hackers in an attempt to find vulnerabilities before the bad guys do as such ethical hacking is now a much sought after skill.

pwnable.kr

pwnable.kr is a non-commercial wargame site which provides various pwn challenges regarding system exploitation. the main purpose of pwnable.kr is ‘fun’. please consider each of the challenges as a game. while playing pwnable.kr, you could learn/improve system hacking skills but that shouldn’t be your only purpose.

pwnable.tw

Pwnable.tw is a wargame site for hackers to test and expand their binary exploiting skills.
HOW-TO
  • Try to find out the vulnerabilities that exist in the challenges, exploit the remote services to get flags.
  • The flag is usually at /home/xxx/flag, but sometimes you have to get a shell to read them.
  • Most of the challenges are running on Ubuntu 16.04/18.04 docker image.
  • You can share a write-up or exploit code in your profile, only players who also solved the same challenge are able to see them.

hack.me

Hack.me is a FREE, community-based project powered by eLearnSecurity. The community can build, host, and share vulnerable web application code for educational and research purposes. It aims to be the largest collection of “runnable” vulnerable web applications, code samples and CMS’s online. (This is more a test website. But still can improve your hacking skills a lot ..!)
The platform is available without any restriction to any party interested in Web Application Security:
  • students
  • universities
  • researchers
  • penetration testers
  • web developers

CTFlearn

CTFlearn is an ethical hacking platform that enables tens of thousands to learn, practice, and compete. The main attraction, of course, is the user-submitted Problems and Challenges which span the typical CTF theology such as Binary Exploitation, Cryptography, Reverse engineering, Forensics, Web attacks (see XSS, SQL Injection and the likes). There are also group the challenges by Popularity, level of Difficulty, and order of Appearance.

Google Gruyere

Gruyere It’s not often we see the pairing of cheese and hacking, but this website is a lot like good cheese—full of holes. It also uses a “cheesy” code and the entire design is cheese-based. Gruyere is a great option for beginners who want to dive into finding and exploiting vulnerabilities, but also learn how to play on the other side and defend against exploits.
Gruyere is written in Python, with bugs that aren’t specific to Python, and offers a substantial number of security vulnerabilities chosen to suit beginners. Some of the vulnerabilities are:
  • Cross-site scripting (XSS)
  • Cross-site request forgery (XRF)
  • Remote code execution
  • DoS attacks
  • Information disclosure
Gruyere code lab has divided vulnerabilities into different sections, and in each section, you will have a task to find that vulnerability. Using both black and white box hacking, you’ll need to find and exploit bugs.

Root Me

Root Me A multilanguage security training platform, Root Me is a great place for testing and advancing your hacking skills. It features over 300 challenges which are updated regularly and more than 50 virtual environments, all to provide a realistic environment. Root Me also has a passionate community of over 200,0000 members, all of whom are encouraged to participate in the development of the project and earn recognitions.
Different subjects covered on Root Me include:
  • Digital investigation
  • Automation
  • Breaking encryption
  • Cracking
  • Network challenges
  • SQL injection
It’s a solid platform and a great way to practice your hacking skills, although it’s not as beginner-friendly as some of the other entries on this list.

Hack The Box

Hack The Box (HTB) is an online platform allowing you to test your penetration testing skills. It contains several challenges that are constantly updated. Some of them simulating real-world scenarios and some of them leaning more towards a CTF style of challenge. It contains several challenges that are constantly updated. Some of them simulating real-world scenarios and some of them leaning more towards a CTF style of challenge. You should try this site out if you have an interest in network security or information security.
I suggest you to try to hack your way into this website.”

Hacking-Lab

Hacking-Lab is an online ethical hacking, computer network, and security challenge platform, dedicated to finding and educating cybersecurity talents. … HackingLab’s goal is to raise awareness towards increased education and ethics in information security.provides the CTF (Capture The Flag) challenges for the European Cyber Security Challenge but hosts challenges on their own platform which anyone can take part in once you have registered.
Hacking-Lab is providing CTF and mission style challenges for international competitions like the European Cyber Security Challenge, and free OWASP TOP 10 online security labs. Hacking-Lab’s goal is to raise awareness towards increased education and ethics in information security.

Game of Hacks

Game of Hacks, This game was designed to test your application hacking skills. You will be presented with vulnerable pieces of code and your mission if you choose to accept it is to find which vulnerability exists in that code as quickly as possible. In the game, developers and security professionals test their application hacking skills, improve their code security know-how, and facilitate better security practices in hope of reducing the number of vulnerabilities in their applications.
Available for desktop, tablet, and mobile, Game of Hacks presents developers with vulnerable pieces of code and challenges them to identify the application layer vulnerability as quickly as possible. It even has a two-player mode allowing head-to-head competition. Players analyze vulnerabilities including SQL injection, XSS, log forgery, path traversal, parameter tampering, and others in myriad programming languages.

OverTheWire

OverTheWire The wargames offered by the OverTheWire community can help you to learn and practice security concepts in the form of fun-filled games. To find out more about a certain wargame, just visit its page linked from the menu on the left. Suggested order to play the games in
  1. Bandit
  2. Leviathan or Natas or Krypton
  3. Narnia
  4. Behemoth
  5. Utumno
  6. Maze
Each shell game has its own SSH port Information about how to connect to each game using SSH is provided in the top left corner of the page. Keep in mind that every game uses a different SSH port.

microcorruption.com

microcorruption.com Scattered throughout the world in locked warehouses are briefcases filled with Cy Yombinator bearer bonds that could be worth billions comma billions of dollars. You will help steal the briefcases.
Cy Yombinator has cleverly protected the warehouses with Lockitall electronic lock devices. Lockitall locks are unlockable with an app. We’ve positioned operatives near each warehouse; each is waiting for you to successfully unlock the warehouse by tricking out the locks. The Lockitall devices work by accepting Bluetooth connections from the Lockitall LockIT Pro app. We’ve done the hard work for you: we spent $15,000 on a development kit that includes remote-controlled locks for you to practice on, and reverse engineered enough of it to build a primitive debugger.
Using the debugger, you’ll be able to single-step the lock code, set breakpoints, and examine memory on your own test instance of the lock. You’ll use the debugger to find an input that unlocks the test lock, and then replay it to a real lock. It should be a milk run. Good luck. We’ll see you on a beach in St Tropez once you’re done.

XSS game

XSS game Cross-site scripting (XSS) bugs are one of the most common and dangerous types of vulnerabilities in Web applications. These nasty buggers can allow your enemies to steal or modify user data in your apps and you must learn to dispatch them, pronto!
In this training program, you will learn to find and exploit XSS bugs. You’ll use this knowledge to confuse and infuriate your adversaries by preventing such bugs from happening in your applications. There will be cake at the end of the test.

HackThis!!

HackThis!! was initially designed so that the students can be taught how to hack, and teach the students about dumps and defacement. If you are an expert hacker then for you, there are 50 levels of difficulty to offer. The website comes with a great online community to help you with hacking, and it would keep you up to date with the security news.

crackmes.one

crackmes.one This is a simple place where you can download crackmes to improve your reverse engineering skills. If you like to submit a crackme or a solution to one of them, you must register. But before that, I strongly recommend you to read the FAQ

HackThisSite

Hack This Site is a free, safe, and legal training ground for hackers to test and expand their hacking skills. HackThisSite commonly referred to as HTS, is an online hacking and security website founded by Jeremy Hammond. More than just another hacker wargames site, we are a living, breathing community with many active projects in development, with a vast selection of hacking articles and a huge forum where users can discuss hacking, network security, and just about everything. Tune in to the hacker underground and get involved with the project.

Pentest training

Pentest training is a simple website used as a hub for information revolving around the varies services we offer to help both experienced and new penetration testers practice and hone their skills. We offer a fully functioning penetration testing lab that is ever-increasing in size, complexity, and diversity. The lab has a fully functioning Windows domain with various Windows OS’s. There is also a selection of Boot2Root Linux machines to practice your CTF and escalation techniques and finally, pre-built web application training machines.

Hellbound Hackers

Hellbound Hackers provides a hands-on approach to computer security. Learn how hackers break-in, and how to keep them out. Huge resource for computer security researchers. The website emphasizes being hands-on, and it offers you many challenges to make you the best hacker out there. It offers a variety of challenges to teach you how to identify potential vulnerabilities, and it also suggests the ways to patch the vulnerabilities. The website comes with an array of tutorials and a thriving community of more than 100K registered members.

HAX.TOR

hax.tor.hu is a very old site (founded in 2006). But it serves the purpose of learning the stuff. Many problems are not functioning because of technology changes. Because many problems relied on the old PHP version flaws. Also, the player gets a free shell account to use (with web/mail hosting) on a server (with gigabit bandwidth) dedicated to security folks.
A few examples of HaX.ToR challenges:
Level 1. Make a nasa.gov URL display a text of my choice Level 7. snifflog.txt – ngrep format Level 13. PHP with a source – needs exploiting and/or -t-b thinking Level 16. root:hsmfs;[email protected] Level 21. Backdoor on a suspended domain Level 26. PHP file manager with a source – needs more exploit Level 28. telnet://hax.tor.hu:1800 – Google Word Game Level 33. Defense Information Systems Agency – 209.22.99.66 Level 39. China Science And Technology Network Level 48. .htaccess editor vs basic auth Level 49. Forged DNS from the CIA

ThisIsLegal

ThisisLegal, a hacker wargames site with much more – such as forums and tutorials. The aim of the site is to help you learn and improve as much as we can and also provide a community with a chance to chat. The site is always up for suggestions for improvement and any challenge submissions or tutorial content are also welcome so please help to improve our community.
submitted by icssindia to HackingTechniques [link] [comments]

System Programming Language Ideas

I am an embedded electronics guy who has several years of experience in the industry, mainly with writing embedded software in C at the high level and the low level. My goal is to start fresh with some projects in terms of software platforms, so I have been looking at whether to use existing programming languages. I want my electronics / software to be open, but therein lies part of the problem. I have experience using and evaluating many compilers during my experience such as the proprietary stuff (IAR) and open source stuff (clang , gcc, etc.). I have nothing against the open source stuff; however, the companies I have worked for (and I) always come crawling back to IAR. Why? Its not a matter of the compiler believe it or not! Its a matter of the linker.
I took a cursory look at the latest gnu / clang linkers and I do not think that have fixed the major issue we always had with these linkers: memory flood fill. Specifying where each object or section is in the memory is fine for small projects or very small teams (1 to 2 people). However, when you have a bigger team (> 2) and you are using microcontrollers with segmented memory (all memory blocks are not contiguous), memory flood fill becomes a requirement of the linker. Often is the case that the MCUs I and others work on do not have megabytes of memory, but kilobytes. The MCU is chosen for the project and if we are lucky to get one with lots of memory, then you know why such a chip was chosen - there is a large memory requirement in the software.. we would not choose a large memory part if we did not need it due to cost. Imagine a developer is writing a library or piece of code whose memory requirement is going to change by single or tens kilobytes each (added or subtracted) commit. Now imagine having to have this developer manually manage the linker script for their particular dev station each time to make sure the linker doesn't cough based on what everybody else has put it in there. On top of that, they need to manually manage the script if it needs to be changed when they commit and hope that nobody else needed to change it as well for whatever they were developing. For even a small amount of developers, manually managing the script has way too many moving parts to be efficient. Memory flood fill solves this problem. IAR (in addition to a few other linkers like Segger's) allow me to just say: "Here are the ten memory blocks on the device. I have a .text section. You figure out how to spread out all the data across those blocks." No manual script modifications required by each developer for their current dev or requirement to sync at the end when committing. It just works.
Now.. what's the next problem? I don't want to use IAR (or Segger)! Why? If my stuff is going to be open to the public on my repositories.. don't you think it sends the wrong message if I say: "Well, here is the source code everybody! But Oh sorry, you need to get a seat of IAR if you want to build it the way I am or figure out how to build it yourself with your own tool chain". In addition, let's say that we go with Segger's free stuff to get by the linker problem. Well, what if I want to make a sellable product based on the open software? Still need to buy a seat, because Segger only allows non commercial usage of their free stuff. This leaves me with using an open compiler.
To me, memory flood fill for the linker is a requirement. I will not use a C tool chain that does not have this feature. My compiler options are clang, gcc, etc. I can either implement a linker script generator or a linker itself. Since I do not need to support dynamic link libraries or any complicated virtual memory stuff in the linker, I think implementing a linker is easily doable. The linker script generator is the simple option, but its a hack and therefore I would not want to partake in it. Basically before the linker (LD / LLD) is invoked, I would go into all the object files and analyze all of their memory requirements and generate a linker script that implements the flood fill as a pre step. Breaking open ELF files and analyzing them is pretty easy - I have done it in the past. The pre step would have my own linker script format that includes provisions for memory flood fill. Since this is like invoking the linker twice.. its a hack and speed detriment for something that I think should have been a feature of LD / LLD decades ago. "Everybody is using gnu / clang with LD / LLD! Why do you think you need flood fill?" To that I respond with: "People who are using gnu / clang and LD / LLD are either on small teams (embedded) OR they are working with systems that have contiguous memory and don't have to worry about segmented memory. Case and point Phones, Laptops, Desktops, anything with external RAM" Pick one reason. I am sure there are other reasons beyond those two in which segmented memory is not an issue. Maybe the segmented memory blocks are so large that you can ignore most of them for one program - early Visual GDB had this issue.. you would go into the linker scripts to find that for chips like the old NXP 4000 series that they were only choosing a single RAM block for data memory because of the linker limitation. This actually horrendously turned off my company from using gnu / clang at the time. In embedded systems where MCUs are chosen based on cost, the amount of memory is specifically chosen to meet that cost. You can't just "ignore" a memory block due to linker limitations. This would require either to buy a different chip or more expensive chip that meets the memory requirements.
ANYWAYS.. long winded prelude to what has led me to looking at making my own programming language. TLDR: I want my software to be open.. I want people to be able to easily build it without shelling out an arm and a leg, and I am a person who is not fond of hacks because of, what I believe, are oversights in the design of existing software.
Why not use Rust, Nim, Go, Zig, any of those languages? No. Period. No. I work with small embedded systems running with small memory microcontrollers as well as a massive number of other companies / developers. Small embedded systems are what make most of the world turn. I want a systems programming language that is as simple as C with certain modern developer "niceties". This does not mean adding the kitchen sink.. generics, closures, classes ................ 50 other things because the rest of the software industry has been using these for years on higher level languages. It is my opinion that the reason that nothing has (or will) displace C in the past, present, or near future is because C is stupid simple. Its basically structures, functions, and pointers... that's it! Does it have its problems? Sure! However, at the end of the day developers can pick up a C program and go without a huge hassle. Why can't we have a language that sticks to this small subset or "core" functionality instead of trying to add the kitchen sink with all these features of other languages? Just give me my functions and structures, and iterate on that. Let's fix some of the developer productivity issues while we are at it.. and no I don't mean by adding generics and classes. I mean more of getting rid of header files and allowing CTFE. "D is what you want." No.. no it's not. That is a prime example of kitchen sink and the kitchen sink of 50 large corporations across the the block.
What are the problems I think need to be solved in a C replacement?
  1. Header files.
  2. Implementation hiding. Don't know the size of that structure without having to manually manage the size of that structure in a header or exposing all the fields of that structure in a header. Every change of the library containing that structure causes a recompile all the way up the chain on all dependencies.
  3. CTFE (compile time function execution). I want to be able to assign type safe constants to things on initialization.
  4. Pointers replaced with references? I am on the fence with this one. I love the power of pointers, but I realize after research where the industry is trying to go.
These are the things I think that need to be solved. Make my life easier as a developer, but also give me something as stupid simple as C.
I have some ideas of how to solve some of these problems. Disclaimer: some things may be hypocritical based on the prelude discussion; however, as often is the case, not 'every' discussion point is black and white.

  1. Header Files
Replace with a module / package system. There exists a project folder wherein there lies a .build script. The compiler runs the build script and builds the project. Building is part of the language / compiler, but dependency and versioning is not. People will be on both sides of the camp.. for or against this. However, it appears that most module type languages require specifying all of the input files up front instead of being able to "dumb compile" like C / C++ due to the fact that all source files are "truly" dumbly independent. Such a module build system would be harder to make parallel due to module dependencies; however, in total, required build "computation" (not necessarily time) is less. This is because the compiler knows everything up front that makes a library and doesn't have to spawn a million processes (each taking its own time) for each source file.
  1. Implementation hiding
What if it was possible to make a custom library format for the language? Libraries use this custom format and contain "deferrals" for a lot of things that need to be resolved. During packaging time, the final output stage, link time, whatever you want to call it (the executable output), the build tool resolves all of the deferrals because it now knows all parts of input "source" objects. What this means is that the last stage of the build process will most likely take the longest because it is also the stage that generates the code.
What is a deferral? Libraries are built with type information and IR like code for each of the functions. The IR code is a representation that can be either executed by interpreter (for CTFE) or converted to binary instructions at the last output stage. A deferral is a node within the library that requires to be resolved at the last stage. Think of it like an unresolved symbol but for mostly constants and structures.
Inside my library A I have a structure that has a bunch of fields. Those fields may be public or private. Another library B wants to derive from that structure. It knows the structure type exists and it has these public fields. The library can make usage of those public fields. Now at the link stage the size of the structure and all derivative structures and fields are resolved. A year down the road library A changes to add a private field to the structure. Library B doesn't care as long as the type name of the structure or its public members that it is using are not changed. Pull in the new library into the link stage and everything is resolved at that time.
I am an advocate for just having plain old C structures but having the ability to "derive" sub structures. Structures would act the same exact way as in C. Let's say you have one structure and then in a second structure you put the first field as the "base" field. This is what I want to have the ability to do in a language.. but built in support for it through derivation and implementation hiding. Memory layout would be exactly like in C. The structures are not classes or anything else.
I have an array of I2C ports in a library; however, I have no idea how many I2C ports there should be until link time. What to do!? I define a deferred constant for the size of the array that needs to be resolved at link time. At link time the build file passes the constant into the library. Or it gets passed as a command line argument.
What this also allows me to do is to provide a single library that can be built using any architecture at link time.
  1. CTFE
Having safe type checked ways to define constants or whatever, filled in by the compiler, I think is a very good mechanism. Since all of the code in libraries is some sort of IR, it can be interpreted at link time to fill in all the blanks. The compiler would have a massive emphasis on analyzing which things are constants in the source code and can be filled in at link time.
There would exist "conditional compilation" in that all of the code exists in the library; however, at link time the conditional compilation is evaluated and only the areas that are "true" are included in the final output.
  1. Pointers & References & Type safety
I like pointers, but I can see the industry trend to move away from them in newer languages. Newer languages seem to kneecap them compared to what you can do in C. I have an idea of a potential fix.
Pointers or some way is needed to be able to access hardware registers. What if the language had support for references and pointers, but pointers are limited to constants that are filled in by the build system? For example, I know hardware registers A, B, and C are at these locations (maybe filled in by CTFE) so I can declare them as constants. Their values can never be changed at runtime; however, what a pointer does is indicate to the compiler to access a piece of memory using indirection.
There would be no way to convert a pointer to a reference or vise versa. There is no way to assign a pointer to a different value or have it point anything that exists (variables, byte arrays, etc..). Then how do we perform a UART write with a block of data? I said there would be no way to convert a reference ( a byte array for example) to a pointer, but I did not say you could not take the address of a reference! I can take the address of a reference (which points to a block of variable memory) and convert to it to an integer. You can perform any math you want with that integer but you can't actually convert that integer back into a reference! As far as the compiler is concerned, the address of a reference is just integer data. Now I can pass that integer into a module that contains a pointer and write data to memory using indirection.
As far as the compiler is concerned, pointers are just a way to tell the compiler to indirectly read and write memory. It would treat pointers as a way to read and write integer data to memory by using indirection. There exists no mechanism to convert a pointer to a reference. Since pointers are essentially constants, and we have deferrals and CTFE, the compiler knows what all those pointers are and where they point to. Therefore it can assure that no variables are ever in a "pointed to range". Additionally, for functions that use pointers - let's say I have a block of memory where you write to each 1K boundary and it acts as a FIFO - the compiler could check to make sure you are not performing any funny business by trying to write outside a range of memory.
What are references? References are variables that consist of say 8 bytes of data. The first 4 bytes are an address and the next 4 bytes is type information. There exists a reference type (any) that be used for assigning any type to it (think void*). The compiler will determine if casts are safe via the type information and for casts it can't determine at build time, it will insert code to check the cast using the type information.
Functions would take parameters as ByVal or ByRef. For example DoSomething(ByRef ref uint8 val, uint8 val2, uint8[] arr). The first parameter is passing by reference a reference to a uint8 (think double pointer). Assigning to val assigns to the reference. The second parameter is passed by value. The third parameter (array type) is passed by reference implicitly.
  1. Other Notes
This is not an exhaustive list of all features I am thinking of. For example visibility modifiers - public, private, module for variables, constants, and functions. Additionally, things could have attributes like in C# to tell the compiler what to do with a function or structure. For example, a structure or field could have a volatile attribute.
I want integration into the language for inline assembly for the architecture. So you could place a function attribute like [Assembly(armv7)]. This could tell the compiler that the function is all armv7 assembly and the compiler will verify it. Having assembly integrated also allows all the language features to be available to the assembly like constants. Does this go against having an IR representation of the library? No. functions have weak or strong linkage. Additionally, there could be a function attribute to tell the compiler: "Hey when the link stage is using an armv7 target, build this function in". There could also be a mechanism for inline assembly and intrinsics.
Please keep in mind that my hope is not to see another C systems language for larger systems (desktop, phones, laptops, etc.) Its solely to see it for small embedded systems and microcontrollers. I think this is why many of the newer languages (Go, Nim, Zig, etc..) have not been adopted in embedded - they started large and certain things were tacked on to "maybe" support smaller devices. I also don't want to have a runtime with my embedded microcontroller; however, I am not averse to the compiler putting bounds checks and casting checks into the assembly when it needs to. For example, if a cast fails, the compiler could just trap in a "hook" defined by the user that includes the module and line number of where the cast failed. It doesn't even matter that the system hangs or locks up as long as I know where to look to fix the bug. I can't tell you how many times something like this would be invaluable for debugging. In embedded, many of us say that its better for the system to crash hard than limp along because of an array out of bounds or whatever. Maybe it would be possible to restart the system in the event of such a crash or do "something" (like for a cruise missile :)).
This is intended to be a discussion and not so much a religious war or to state I am doing this or that. I just wanted to "blurt out" some stuff I have had on my mind for awhile.
submitted by LostTime77 to ProgrammingLanguages [link] [comments]

Immediate Edge Review, Is Immediate Edge SCAM Or Legit Trading App?

Immediate Edge Review, Is Immediate Edge SCAM Or Legit Trading App?

Immediate Edge Review: Is This Crypto Robot Legit or Scam
Immediate Edge Review and investigation 20twenty. The Immediate Edge app is a crypto, forex and choices trading robot utilized by folks to automatically obtain and sell Bitcoin and create profits. Wanting at the website, many people claim it helped them move from rags-to-riches trading Bitcoin. Further, some claims linked it to Ronaldo and Sir Alex Ferguson

https://preview.redd.it/rttn3i4hohm51.jpg?width=1280&format=pjpg&auto=webp&s=8f0dc345c3ace4032d571d44fabe356f13ff1a33
Is Immediate Edge app legit or scam? Whereas the claims of its linkage to the higher than celebrities are unverifiable, we tend to can verify that the app is not a scam and permits individuals to trade Bitcoin using the Fibonacci strategy with ten minutes time frames
The app, that allows people to deposit at least $250 through mastercard and Sofort, scores 88% rate and a 5 stars as a real software
Since there are several scam cryptos, forex and options brokers who trick individuals to depositing money, and then they run away with the funds, we have taken time to review this software to determine if it is real or a scam.
Is Immediate Edge scam or legit
High success rate is reported by users with this software.
The Immediate Edge web site provides truthful claims about the service though it will not mean the crypto trading risks are eliminated with its use.
Customers should start with the minimum investment and increase it when satisfied with the utilization of the app.
Click the link to access Immediate Edge official web site or keep reading to understand more
This software will not seem to be a scam and users report that it helped them make real money trading on it.b site
What is Immediate Edge App?
Immediate Edgecould be a robot or auto-trading software that allows folks to trade forex, crypto and binary choices. A user deploys the algorithm-primarily based bot, which relies on a trading strategy that's automatically executed on a broker trading platform once deployed.
The strategy is coded or set like to permit the user to automatically get and sell crypto, stock or choices on the broker platform at favorable prices, to form profits. It can do automatic market analysis by analyzing a vast amount of knowledge from completely different sources, at intervals seconds and with high accuracy, then use the data to predict the costs. It can then come up with a transparent buy or sell tradable signal and then execute it automatically by shopping for and/or selling on the broker platform.
The software can, therefore, save a trader thousands of manual hours and labor they might have spent analyzing information to form trading choices and to follow the markets and to position and close trades. You conjointly do not want to understand anything concerning crypto, stock or option trading to use this auto trading app, although it is suggested to possess this information to keep improving on trading.
Trading bots will achieve high success rates of more than 90p.c and have been tested to work. You may be searching for Immediate Edge scam but the website can tell you that you can expect to earn between $950 and $a pair of,two hundred per day using the software but that depends on your expertise. As a newbie, you'll not start making that a lot of immediately and conjointly it depends on how a lot of you invest. With an investment of $250, you'll be able to expect to form a lot of lesser although some people claim to own made $12a pair of in a very few hours using this software.
That will not mean Immediate Edge is error-free. There still is a heap of unpredictable high volatility in crypto and bots will make mistakes and errors to create losses. Auto trading robots are better employed in combination with manual trading strategies.

https://preview.redd.it/1zkt9v3johm51.jpg?width=1280&format=pjpg&auto=webp&s=85f7e7f5d0e9d6b60b4a8a6e37bb344dbbb8305c
Immediate Edge Review
How will Immediate Edge work?
All a user has to try and do is join up at the Immediate Edge web site, then deposit funds to have access to the robot, when which they can begin trading by switching on the bot. It will would like no control or intervention from humans, beyond beginning and stopping it.
You additionally need to stay checking, daily, to observe the performance of the software in doing its job and ensure that it is earning any returns needless to say. From there, you can confirm whether or not to extend or decrease your investment towards crypto, options or stock trading using this robot.
You'll be able to also monitor performance to be ready to regulate the trading settings from your dashboard and optimize totally different features of the trading bot for instance set amount of trades or amount to invest in every trade.
Founder of Immediate Edge
In line with the Immediate Edge website, this trading bot was founded by Edwin James. Reportedly, he created billions with forex, crypto, and binary options trading and still shares his strategies on the way to trade the assets on the app.
He founded the app to create it potential for brand spanking new traders to create cash in less than 3 minutes of signing up.
How to sign up on Immediate Edge:
Registration: Registering or signing up on the website is free but to start trading, you want to deposit no less than $250. You discover a registration type on the top right of the page, on that you type in your email, full names and phone numbers and country code. Create a password to be used for logging in later.
Deposit funds: Depositing funds allows you to connect to a robot broker and then you'll begin the bot to start out trading. You'll deposit with Visa, Wire Transfers, Klarna or Skrill. The currencies supported are Swiss Franc, British Pound, US Greenback, and Euro and using a credit or debit card limits deposits to less than $/£/€/?10,00zero in one day and $/£/€/?40,000 in an exceedingly month.
Immediate Edgeisn’t licensed to handle your funds, it works with brokers to handle the cash once it's deposited.
Demo trading: Relying on the broker you're connected to, you can begin to practice trading with the Immediate Edge software. Some brokers do not have this feature on their platforms. Still, with the latter, you can test their options before you deposit cash to try and do live trading. With the demo options, you'll be able to familiarize yourself with the trading house before beginning to use real money to trade.
Trading: Before and when you've got switched on auto-trading, you would like to check the trading settings daily. You'll regulate some things including stop-loss orders and when to try to to them, amount to speculate per trade and how several trades to try to to per day. You'll be able to also choose that cryptocurrencies to trade, and you'll be able to select all the most in style ones together with Bitcoin and Ethereum. You also get to observe the profits/losses and decide if to continue and/or when to prevent.

https://preview.redd.it/c9scw5fkohm51.jpg?width=1280&format=pjpg&auto=webp&s=3d127be2887c4c8960023a8cf1b1f55297dbf250
Withdrawals, user verification, cost of using the app and alternative options

The payouts or withdrawals are made by filling letter of invitation type on the funds’ management page and it can take two operating days to replicate in your checking account. No fee is charged on withdrawals. You'll withdraw your cash including the capital while not a lot of problem on this app, that is better than several that don't enable withdrawals at any time
While some bots need verifications by asking for your ID and statements, this one will not. You are done once uploading your payment details. The bot charges a commission on profit. Besides, you get twenty fouseven client support on Immediate Edge
Immediate Edge may be a legit, secure, user-friendly trading application for crypto, stocks, and choices. It has a zealous customer service and reports a high success rate. Another smart robot we have recently reviewed is Bitcoin Professional
We tend to hope that this review helped you to make a decision concerning this trading app. Additionally, subscribe to our web site to be invariably notified concerning new software from this industry. For live reviews subscribe to our Youtube Channel or FB Page.

https://www.immediateedge.org/
https://www.facebook.com/immediateedge/
https://www.pinterest.co.uk/immediateedge/
https://twitter.com/EdgeImmediate
https://www.instagram.com/immediateedge/
submitted by EggNecessary9499 to u/EggNecessary9499 [link] [comments]

what is this i just downloaded (youtube code?)

so this is kinda a wierd story. I was planning to restart my computer. (cant remember why) I spend most of my time watching youtube videos so i had alot of tabs open. So i was watching the videos then deleting the tab but not opening new tabs. So i was down 2 i think 1 it was a pretty long video so i tried to open a youtube home page tab just to look while i listened to the video. And this is a short exerp of what i got.





YouTube











submitted by inhuman7773 to techsupport [link] [comments]

BEST 5 BINARY OPTIONS BROKERS IN 2020 - YouTube WHAT is BEST Binary Options Trading Platform in 2019? The Best Guide To Top 10 binary options trading platform ... Things about List of best trading Brokers - Top 10 Binary ... BINARY OPTIONS BROKERS  TOP 3 Binary Options Brokers 2020 ... top 10 binary options platforms - YouTube Top 10 Best Binary Options Brokers and Trading Platforms ...

Binary options cover a wide array of possibilities to make financial gains, and with so many to choose from, it can become a daunting task to know which one will suit you. Keep in mind that many of them offer the same type of options, but it is the subtle differences that really make them different. All-in-all you cannot go wrong with any of the top sites, so-long as you stick with what you ... Our analysis of each broker lays out the most important features, including deposits, returns, bonuses, and supported platforms. This way, you can make an informed decision and get the best protection for your funds. Top 15 Binary Options Brokers 1. IQ Option. IQ Option was established in 2012 and had since then received favorable reviews on the internet. It uses in-house software for trading ... HighLow is an Australian based binary options broker. A number of platforms won’t admit Australian traders. This is one of the best Australian binary options brokers. It is a great platform for those who like trading for short duration times. It is one of the best 60second binary options brokers. The platform prides itself in a wide range of binary options and some of the highest payouts ... It's important to understand that not all binary options trading platforms are created equal. Some binary options sites might have great payouts, while others might have faster withdrawals or bigger deposit bonuses. Picking a trading broker often comes down to what's most important to you. Below you will find our rankings of the top binary options trading brokers of 2020. Table of Contents. 1 ... We have compared the best regulated binary options brokers and platforms in November 2020 and created this top list. Every broker and platform has been personally reviewed by us to help you find the best binary options platform for both beginners and experts. The sortable broker comparison list below shows which binary trading sites came out on top based on different criteria. You can sort the ... Top 10 Best Binary Options Brokers. Binary options contracts are options contracts that attract either a predetermined amount of money (in the case of successful outcomes) or nothing at all (in ... Online Binary Options Trading platforms. The most common way for Binary Options traders to place their daily trades is of course via ac computer or laptop, and below are several commonly asked questions in regards to utilizing online Binary Options trading platforms. Can I access a Binary Options site on a Mac?

[index] [20273] [18911] [14090] [22459] [9633] [18157] [16049] [8945] [6927] [6020]

BEST 5 BINARY OPTIONS BROKERS IN 2020 - YouTube

See These Helpful Hints: https://bit.ly/3ll7V9X - Top 10 Best Binary Options Brokers and Trading Platforms 2020 Things To Know Before You Buy Note! If you ar... binary options trading income secrets, Options Strategies (Consumer Product), Binary Options Trading System, How to Profit in the Stock Market, Binary Option... Best BINARY OPTIONS Trading Platform 2019 (FREE DEMO AVAILABLE) - Duration: 12:18. Andrew 2,860 views. 12:18. THE TRUTH ABOUT BINARY OPTIONS - Duration: 8:19. ... Top 5 TRUSTED BINARY OPTION BROKERS:1. 💲💹IQ Option: http://www.cryptobinarylivingway.com/IQOption12. 💲💹Pocket Option: http://www.cryptobinarylivingway.com ... Click Here For More: https://bit.ly/2DUqUH5 - The Best Guide To Top 10 binary options trading platform in india - Edilson Alves Fidelity app supplies you wit... Learn This Here Now: https://bit.ly/32z0UtP - Things about List of best trading Brokers - Top 10 Binary Options Brokers Client assistance is presently used b... ★★Best Binary Broker List★★ ----- RISK WARNING: YOUR CAPITAL MIGHT BE AT RISK -----...

https://binaryoptiontrade.diamamurtotil.tk