10 interesting stories served every morning and every evening.
I’m a 19-year-old girl in Gaza, Palestine studying Computer Engineering who just was selected for a summer internship at Google and Repl.it. I never imagined this is possible. I am sharing my story hoping it will help people in any way!
I became passionate about programming in high school. My teacher selected me for a robotics competition. We built a line follower robot using Arduino. I totally loved the logic behind programming.
I started taking online courses to learn how to program: an Edx class called “Introduction to Computer Science” and I also joined Technovation, a coding competition for high school girls. We built an app using App Inventor which is similar to Scratch. Gaza Sky Geeks connected us to mentors to help us with building the app. It helped physically abused women reach specialists for help. I loved building something so useful.
I was really excited to study Computer Engineering in university but I was nervous about ﬁnding a job after university. In Gaza, there is such high unemployment. Even Computer Engineering graduates face unemployment.
The university program was mostly focused on theoretical fundamentals about technology and computers. I thought I needed something more practical. Lucky me I saw a Facebook post for a fullstack software development bootcamp called RBK in Jordan. It used a Silicon Valley based Hack Reactor curriculum and was focused on hands-on experience and it had a scholarship from Anera.
I applied and was thrilled to be one of 30 who were accepted with the scholarship out of an applicant pool of ~800. I don’t know if you know how unusual it is for an 18-year female to leave Gaza. Thankfully my family was supportive and we were able to get the permits.
At RBK I built 3 fullstack apps using the MERN stack using agile development. I loved working with my scrum team and I think we learned a lot about soft skills, how to work with a team and meet deadlines.
I came back to Gaza and lucky me, I saw another Facebook post in one of the tech facebook groups for Gazans. The post was about Manara which connects people in Palestine and the Middle East to jobs or internships at global tech companies. I thought “Is that even possible?”!
I got excited and applied and got in. We started the ﬁrst two months with technical prep. Doing Leetcode, Pramp, and weekly lectures and homework on Data Structure and Algorithm assignments. I used to think that solving coding problems was torture. But I started enjoying this kind of challenge. I competed with my classmates to see who could solve more, and discussing our solutions. It was really interesting to see how different people solved the same problem.
We also got access to Educative.io course “Grokking the Coding Interview: Patterns for Coding Questions” which really helped me organize all the learning.
Here it comes the interesting part, we had the chance to e-meet with Silicon Valley engineers and practice interviews with them. That really made a difference. I practiced their advice every day. They were all so nice and supportive. Some of them even told me how difﬁcult interviews used to be when they started practicing.
The studying was very intense but I felt motivated because of my classmates, mentors, mock interviewers, and the Manara staff. Most of my classmates got a “hire” recommendation on a mock interview before I did. That motivated me to work even harder!
In October 2020 Manara provided referrals to Repl.it and Google. It was amazing. I knew I would apply to Google but I didn’t know about Repl.it. Repl.it is my best friend as a developer. I use it every day. I didn’t realize I could work there!
In November 2020, my applications for Google and Repl.it were both accepted and the interviews were scheduled soon after. I had my midterm exams with university during that time so I asked if it is possible to reschedule Google interviews for two more weeks so I have the time to prepare. The recruiters are so understanding and my interviews were rescheduled.
I still didn’t feel I was ready. I studied 10 hours a day. And that’s when I got my ﬁrst “hire” recommendation on a mock interview, just a few days before my Google interview. I started feeling more conﬁdent and that motivated me to work even harder.
In December 2020, I had my interviews at both companies.
At Google there were interviews exactly like what Manara prepared us for: data structures & algorithms problem-solving. Each interview was an hour long and they were on the same day with an hour break between. The interviewers were super nice and that helped me through the interview. I was able to discuss the thinking process out loud while coding. I can say that I had a really fun time making the interviews.
Repl.it’s interviews were really different. First they gave me an operational transformation homework assignment. This was completely new for me. The interviewer talked to me about the assignment and again it felt more like we were having a discussion, sharing ideas we had. I felt well-prepared for the questions I received during the interview, they were just like the homework assignment.
For my second interview, about two weeks later, I had to prepare a presentation with ideas to improve the product. Manara connected me to a mentor to practice my presentation and that gave me the conﬁdence that I was ready.
At Repl.it the interviewer was the same person each time, and he was really smart & funny!
On January 1, 2021, I received an email from Repl.it letting me know that I had been selected. That was the BEST new year’s day I’ve ever had!
Later in January I received an email from my Google recruiter to inform me that I got positive feedback on the interviews and had passed the Google hiring committee. That was a feeling that I will never forget!
At Google I still had to ﬁnd a team. A few days later, my recruiter emailed me because there was a potential team interested in me. I had a 30-minute “intern placement interview call.” The call was nothing technical, it was to get to know the team’s mission and ﬁnd out if the intern is interested in joining, and to let the team know about my skills.
A few days later, my recruiter informed me that I got matched with the team and that I had reached the ﬁnal step of the process which is obtaining approval for my offer! HOW AMAZING — I almost couldn’t believe it!!
Now, here I am, with offers from two of the most famous tech companies in the world! I got a little stressed actually… I wanted to do both but they said I can’t because they’re both during the summer.
What I loved about Repl.it was the feeling that I could explore different areas: frontend, backend, infrastructure. I’m still young and I’m not really sure yet what I’ll want to do so a company that lets me explore like this would be ideal! I also really liked the recruiter and the engineer who interviewed me and felt like I ﬁt into the team.
I chose Google because they will send me to Europe for the internship. Having the chance to spend the summer in Europe will be life-changing for me. I’ve never been on an airplane before. My only time out of Gaza was when I went to RBK in Jordan! And I think I will learn a lot at Google.
I’m also really excited about earning money. I want to help my parents pay for my younger brother’s education and maybe I can help others too.
I am so proud to say that 4 out of 6 people who applied to Google from my Manara cohort got offers there. We will meet for the ﬁrst time in Europe this summer! The other 3 classmates (Muath, Mohammed, and Hamza) live in the West Bank. I live in Gaza. It’s not far away but I can’t go to the West Bank and they can’t come here. I can’t wait to take a selﬁe in front of the Google ofﬁce together and share it with everyone at Manara. :-)
I traveled close to the West Bank once when I was going to Jordan for RBK but the permit I had only let me go straight to the border, I wasn’t allowed to stop on the way.
I am so thankful for everything and everyone that helped through this journey and especially everyone at Manara!! Thank you to all the mentors, mock interviewers, and staff!
As part of YCW21, Dendron was eligible for significant credits from all major cloud providers. This articles goes over my experience redeeming credits in two in particular: AWS and Google Cloud.
DISCLAIMER: I used to work at AWS and have both conscious and unconscious biases towards my former employer 😅
scheduling a call a few days out
talked to AWS Startup Rep, a team comprised of former startup founders
talk about my use case and also got connected with team leads of folks in respective AWS services where I had questions
got all credits applied immediately after the call
access to AWS YC slack as well as free business support
book an appointment with a sales rep
sales rep wanted to know how much money I would spend with google cloud and repeatedly came back to that question (even though we were a pre-revenue startup with no pricing model at this point)
told rep about infrastructure we were thinking of using but they needed a dollar monthly amount since they were in sales and didn’t have an understanding of the infrastructure
after some hypothetical numbers, got forwarded to a google cloud partner, a third party consulting ﬁrm that would help get me credits
ﬁrst available slot for partner was three weeks out
got a small chunk of google cloud credit with terms that more would be added if these credits ran out
got all credits and perks right away
access to ﬁrst party support from AWS
process is still ongoing (its been three weeks now)
get credits in chunks and still not sure what the terms are and when they renew
ﬁrst point of contact was a sales rep, now talking to a third party partner
We used to have a joke at Amazon that if someone didn’t make it pass the interview loop, then they were once again upgraded to the position of a customer. While I personally loved my time there, it is awesome being at the other end of the customer obsessed machine.
As for google, I’m wondering at this point if I’ll even get to talk to a google account manager. The initial onboarding call was entirely about how much money I was planning on spending with google (as opposed to the Amazon call where they wanted to help me architect my service). Google Cloud has really nice ergonomics and world class engineers but an awful reputation for customer support. My anecdotal experience seems to support this.
The U. S. Air Force’s top ofﬁcer wants the service to develop an affordable, lightweight ﬁghter to replace hundreds of Cold War-vintage F-16s and complement a small ﬂeet of sophisticated—but costly and unreliable—stealth ﬁghters.
The result would be a high-low mix of expensive “ﬁfth-generation” F-22s and F-35s and inexpensive “ﬁfth-generation-minus” jets, explained Air Force Chief of Staff Gen. Charles Brown Jr.
If that plan sounds familiar, it’s because the Air Force a generation ago launched development of an affordable, lightweight ﬁghter to replace hundreds of Cold War-vintage F-16s and complement a small future ﬂeet of sophisticated—but costly and unreliable—stealth ﬁghters.
But over 20 years of R&D, that lightweight replacement ﬁghter got heavier and more expensive as the Air Force and lead contractor Lockheed Martin packed it with more and more new technology.
Yes, we’re talking about the F-35. The 25-ton stealth warplane has become the very problem it was supposed to solve. And now America needs a new ﬁghter to solve that F-35 problem, ofﬁcials said.
With a sticker price of around $100 million per plane, including the engine, the F-35 is expensive. While stealthy and brimming with high-tech sensors, it’s also maintenance-intensive, buggy and unreliable. “The F-35 is not a low-cost, lightweight ﬁghter,” said Dan Ward, a former Air Force program manager and the author of popular business books including The Simplicity Cycle.
The F-35 is a Ferrari, Brown told reporters last Wednesday. “You don’t drive your Ferrari to work every day, you only drive it on Sundays. This is our ‘high end’ [ﬁghter], we want to make sure we don’t use it all for the low-end ﬁght.”
“I want to moderate how much we’re using those aircraft,” Brown said.
Hence the need for a new low-end ﬁghter to pick up the slack in day-to-day operations. Today, the Air Force’s roughly 1,000 F-16s meet that need. But the ﬂying branch hasn’t bought a new F-16 from Lockheed since 2001. The F-16s are old.
In his last interview before leaving his post in January, Will Roper, the Air Force’s top acquisition ofﬁcial, ﬂoated the idea of new F-16 orders. But Brown shot down the idea, saying he doesn’t want more of the classic planes.
The 17-ton, non-stealthy F-16 is too difﬁcult to upgrade with the latest software, Brown explained. Instead of ordering fresh F-16s, he said, the Air Force should initiate a “clean-sheet design” for a new low-end ﬁghter.
Brown’s comments are a tacit admission that the F-35 has failed. As conceived in the 1990s, the program was supposed to produce thousands of ﬁghters to displace almost all of the existing tactical warplanes in the inventories of the Air Force, Navy and Marine Corps.
The Air Force alone wanted nearly 1,800 F-35s to replace aging F-16s and A-10s and constitute the low end of a low-high ﬁghter mix, with 180 twin-engine F-22s making up the high end.
But the Air Force and Lockheed baked failure into the F-35’s very concept. “They tried to make the F-35 do too much,” said Dan Grazier, an analyst with the Project on Government Oversight in Washington, D. C.
There’s a small-wing version for land-based operations, a big-wing version for the Navy’s catapult-equipped aircraft carriers and, for the small-deck assault ships the Marines ride in, a vertical-landing model with a downward-blasting lift engine.
The complexity added cost. Rising costs imposed delays. Delays gave developers more time to add yet more complexity to the design. Those additions added more cost. Those costs resulted in more delays. So on and so forth.
Fifteen years after the F-35’s ﬁrst ﬂight, the Air Force has just 250 of the jets. Now the service is signaling possible cuts to the program. It’s not for no reason that Brown has begun characterizing the F-35 as a boutique, high-end ﬁghter in the class of the F-22. The Air Force ended F-22 production after completing just 195 copies.
Pentagon leaders have hinted that, as part of the U. S. military’s shift in focus toward peer threats—that is, Russia and China—the Navy and Air Force might get bigger shares of the U.S. military’s roughly $700-billion annual budget. All at the Army’s expense.
“If we’re going to pull the trigger on a new ﬁghter, now’s probably the time,” Grazier said. The Air Force could end F-35 production after just a few hundred examples and redirect tens of billions of dollars to a new ﬁghter program.
But it’s an open question whether the Air Force will ever succeed in developing a light, cheap ﬁghter. The new low-end jet could suffer the same fate as the last low-end jet—the F-35—and steadily gain weight, complexity and cost until it becomes, well, a high-end jet.
If that happens, as it’s happened before, then some future Air Force chief of staff might tell reporters—in, say, the year 2041—that the new F-36 is a Ferrari and you don’t drive your Ferrari to work every day.
To ﬁnally replace its 60-year-old F-16s, this future general might say, the Air Force should develop an affordable, lightweight ﬁghter.
California can start enforcing the net neutrality law it enacted over two years ago, a federal judge ruled yesterday in a loss for Internet service providers.
Broadband-industry lobby groups’ motion for a preliminary injunction was denied by Judge John Mendez of US District Court for the Eastern District of California. Mendez did not issue a written order but announced his ruling at a hearing, and his denial of the ISPs’ motion was noted in the docket.
Mendez reportedly was not swayed by ISPs’ claims that a net neutrality law isn’t necessary because they haven’t been blocking or throttling Internet trafﬁc.
“I have heard that argument and I don’t ﬁnd it persuasive,” Mendez said, according to The Hollywood Reporter. “It’s going to fall on deaf ears. Everyone has been on their best behavior since 2018, waiting for whatever happened in the DC Circuit [court case over the FCC’s repeal of net neutrality]. I don’t place weight on the argument that everything is ﬁne and we don’t need to worry.”
Mendez, who was nominated by President Bush in 2008, also said, “This decision today is a legal decision and shouldn’t be viewed in the political lens. I’m not expressing anything on the soundness of the policy. That might better be resolved by Congress than by federal courts.”
The industry lobby groups’ lawsuit against California will continue, but the state can enforce its law while the case is still pending. California Attorney General Xavier Becerra praised the ruling, saying it means that “California can soon begin enforcement of SB 822,” the net neutrality law.
“The ability of an Internet service provider to block, slow down, or speed up content based on a user’s ability to pay for service degrades the very idea of a competitive marketplace and the open transfer of information at the core of our increasingly digital and connected world,” Becerra said.
The lawsuit against California was ﬁled by the major broadband-industry lobby groups representing wired and mobile Internet providers. Those groups are the American Cable Association, CTIA-The Wireless Association, NCTA-The Internet & Television Association, and USTelecom.
“Today’s federal court ruling allowing California to enforce our net neutrality law is a huge victory for open access to the Internet, our democracy, and our economy,” said Sen. Scott Wiener (D-San Francisco), who introduced California’s net neutrality legislation. “The Internet is at the heart of modern life. We all should be able to decide for ourselves where we go on the Internet and how we access information. We cannot allow big corporations to make those decisions for us.”
California’s net neutrality law was also challenged by the Trump administration’s Department of Justice. President Biden’s DOJ voluntarily dropped the lawsuit, leaving the broadband-industry case as the remaining legal obstacle for California.
When the industry and DOJ ﬁled their lawsuits in 2018, California agreed to suspend enforcement of the state law until the end of litigation over then-Federal Communications Commission Chairman Ajit Pai’s actions against net neutrality regulation. Pai’s repeal of FCC net neutrality rules was subsequently upheld, but he lost his attempt to preempt all state laws.
Despite the FCC’s loss on preemption, the Trump administration and broadband industry resumed their ﬁght against California, claiming the state law couldn’t be enforced because the FCC has “exclusive responsibility” for regulating interstate communications and “Internet communications are inherently interstate.” After the Biden administration dropped the US lawsuit against California, the state said that “the United States’ voluntary dismissal of its lawsuit underscores Defendant’s arguments that SB 822 is not preempted.”
The California law prohibits Internet service providers from blocking or throttling lawful trafﬁc. It also prohibits requiring fees from websites or online services to deliver or prioritize their trafﬁc to consumers, bans paid data cap exemptions (so-called “zero-rating”), and says that ISPs may not attempt to evade net neutrality protections by slowing down trafﬁc at network interconnection points.
California still has to win the court case to avoid a future ruling that could overturn its net neutrality law. But with a victory over the ISPs’ request for a preliminary injunction, California and its supporters say they are conﬁdent in their arguments.
Judge Mendez “found that the law is on a solid legal foundation and that the ISPs trying to overturn it are not likely to prevail,” said Stanford Law Professor Barbara van Schewick.
“The previous Federal Communications Commission ensured this outcome when it decided it had no authority over broadband,” said John Bergmayer, legal director at consumer-advocacy group Public Knowledge. “The DC Circuit [federal appeals court] has already made it clear that without the power to regulate, the FCC has no power to prevent states from regulating. Broadband providers nevertheless rushed to court to prevent states from exercising their traditional consumer-protection role. Judge Mendez has rightly rejected their arguments.”
The four broadband lobby groups that ﬁled the lawsuit said in a joint statement that they “will review the court’s opinion before deciding on next steps,” according to The Washington Post.
“A state-by-state approach to Internet regulation will confuse consumers and deter innovation, just as the importance of broadband for all has never been more apparent,” the industry groups said. “We agree with the court that a piecemeal approach is untenable and that Congress should codify rules for an open Internet.”
LinkedIn is developing a freelance work marketplace that could rival fast-growing gig sites Fiverr and Upwork.
The two-sided marketplace will connect freelance service providers with clients in need of temporary workers for one-off projects. Like Fiverr and Upwork, it would focus on knowledge-based work that can be done remotely online, according to The Information.
The feature has been in development at least since September 2019, when LinkedIn agreed to acquire the assets of UpCounsel, a vertical marketplace connecting freelance lawyers and clients.
As part of its agreement with LinkedIn, UpCounsel eventually closed down its own site as founder Matt Faustman and part of his team worked to implement a similar marketplace on LinkedIn.
Faustman is now Marketplaces Product Lead, according to his LinkedIn proﬁle. When he ﬁrst started working with LinkedIn, the idea was to launch a legal-service vertical on LinkedIn and then replicate the model “across 100 different industries.” In a LinkedIn post in April, Faustman stated, “We’ve been working around the clock since September (2019) to bring the ﬁrst phases of our vision with LinkedIn online.”
LinkedIn’s ProFinder feature already allows users to search for service providers. On the providers side, LinkedIn allows users to create company proﬁles, to post “open for business” on individual proﬁles, and to advertise their services.
But the marketplace feature expands on ProFinder by allowing customers to shop around for services, compare rates, and post service reviews, similar to Fiverr, according to an anonymous source cited by The Information. Marketplaces would also allow users to post project proposals to attract freelancers, similar to what Upwork does, the report stated.
Separately, LinkedIn is reportedly seeking to enable onsite payments, which would allow freelancers and clients to transact on the platform. This could help with monetization, and LinkedIn is reportedly considering taking commissions on marketplace transactions, which is already part of Fiverr and Upwork’s business model.
Gig sites are a fast-growing recruitment niche, with both Upwork and Fiverr posting revenue growth through the pandemic. Upwork grew its top line about 20% year-on-year over the ﬁrst three quarters of 2020 and Fiverr posted 77% growth for 2020 as a whole.
Meanwhile, LinkedIn told The Information that it has seen a surge in people searching and requesting services from LinkedIn users who post that they’re “open for business.” This is especially true for users offering help with executive coaching, marketing, design and software development, the company said.
During my graduate studies, I have been enthralled with how books often stay relevant and how quickly papers sink into obscurity. I wanted to write something that had value and durability. Why a book? Because books can last.
I am not old, but I wanted to take a break from theorem proving to write something light-hearted and decidedly non-academic.
My background is in mathematics, theoretical computer science, and machine learning. However, I got started down this path because of my love for data. Data can tell some pretty incredible stories, but it also can be extremely misleading. There are scores of introductory books about data science that start with Aggregation and ﬁnish with $z \sim N(0,1)$. They are designed for a technical audience and are often SO boring.
Don’t get me wrong, I love these books. I helped with the recently released 2nd edition of Kevin Murphy’s famed Machine Learning a Probabilistic Perspective. But I wanted my book to be more inspiration and less perspiration.
This book is for people as untechnical as my Mom or as technical as my Applied Scientist friends working in big tech. The book is a nice, fun, and inspirational collection of stories.
These stories about data should get you thinking about your own life. I hope you ask if there are ways you can collect interesting data and learn something about yourself.
It is 114 pages long with 8 chapters. The chapters cover a wide range of fun data topics like how to use language models (and word vectors) to improve your resume, or how a man used statistics to qualify for the Olympics. As a fun warm up, chapter 2 shows how to use A/B testing to make the perfect glass of lemonade.
It starts with naive A/B testing then moves to Thompson sampling as a solution to Multi-Armed Bandit problems which are significantly more efﬁcient and only takes a few lines of extra code.
Chapter 3 talks about how a man keeping track of his personal health markers detected colon cancer and was able to get life saving treatment just in time. It gives a good example of how to reason about yourself vs the popluation.
Further on I analyze our dog’s potty habits, weight loss using differential equations, and how you can ﬁgure out who is carrying your phone just using on-board accelerometer data.
The book has fun illustrations and nice color coded explanations for equations
I’ve gotten some nice feedback so far, with people saying things like “This is the book I wish I had written”, or “I literally have 3 new ideas of how I’m going to use my daily data”. Plus, my Mom liked it, so that has to count for something.
At the end of the day, I wrote this book to inspire and encourage people to be aware of their lives, be mindful of what is happening around them, and take control with the techniques often used in data science.
If any of this sounds interesting, you’re welcome to buy a copy for yourself. I tried to make the PDF version affordable so it is accessible to everyone.
Buy Paperback on Amazon ($17.49)
Buy PDF on Gumroad ($7.99)
Thanks for reading! Feel free to follow me on twitter or Subscribe for email updates
I used the Tufte-Book Latex template, Procreate on my iPad for ﬁgures, and Kindle Direct Publishing for the physical copy.
I paid a professional editor (but unfortunately there are still a few nice typos) and so far they have made the most from this project.
I want to thank my lovely colleagues who encouraged me and have supported me. And also, I want to thank my Wife for letting me spend 150 extra hours at my computer.
In the Unity for Software Engineers
series, I give an accelerated introduction to game development in Unity.
Subscribers have been following this series over the past few months, often suggesting areas to cover or elaborate on. A few months ago, a reader—also a software engineer—reached out to me (lightly edited, emphasis mine):
The biggest unknown for me is: How do I start? What does the process of creating a game look like? Should I build the scenes ﬁrst? Should I design the gameplay mechanics ﬁrst? With business software, it’s much more familiar. It’s easy to think, “Well, okay, I need to write the DAO or controller, etc.” But with games, I’m lost.
While there is no single correct answer, we can still make some distinctions that can help get us oriented. The answer will also undoubtedly depend on who
is doing the development: an individual, small indie team, or larger studio? If an individual, the answer will also depend on their primary skillset: a developer, artist, or designer?
Here, I’ll give heuristics especially helpful for individual Software Engineers building a game on their own as a side project, hobby, or proof-of-concept.
Before we start, here are some questions you should ask yourself.
Do you know what your game is about? Do you have a sense of what game mechanics your game will have? Do you know what genre, controls, and themes this game will have?
If yes, you’re ready to decide where to start coding. Otherwise, you have a few more questions to ask yourself.
It’s totally ﬁne not to have a project in mind! Maybe you’re prototyping. Perhaps you’re throwing a bunch of mini-games on the wall and seeing what sticks. Or you’re looking for inspiration and trying to implement random mechanics to see what feels fun.
If you’re hoping to begin working on a speciﬁc, cohesive game, you will likely want to know what you’re building. Consider brainstorming and sketching out an informal
game design document. There are
plenty of templates
of various levels of detail you could decide to use. Especially as a software engineer toying with abstract ideas in my brain, I’ll start with a super high-level GDD, covering the feel, themes, genre, and mechanics of the game I have in mind. Maybe a few pictures or sketches for inspiration, and that’s it. The key part of this exercise will be the list of mechanics I’m working on.
If you want to prototype and experiment, you should already have a vague sense of 1-2 mechanics that could be fun: Maybe unusual movement or a different control scheme. It could be a traditional mechanic that you’re wondering how to implement. For instance, I might decide to build a 3rd Person character and camera controller to see the “feel” of it, experiment with it a tiny bit, and do something smooth and polish that I feel good about. I might end up keeping that code in my back pocket for later, or I might use play-through sessions with that controller to move around a scene, add a few assets, and use that as a starting place to see the “feel” various mechanics and designs.
The goal of many iterative software development models is to de-risk software development. You do that by failing fast and getting feedback early. In game development, the primary metric for success is a feeling: the game should be fun. So, when deciding what to start with when working on a game, one good question to ask is: “How can I see if this game is fun as soon as possible?”
or “How can I implement the ‘fun’ part of the game ASAP?”
One way to do that is to look at a game’s mechanics and implement them in some order. The advice that resonates with me is implementing game mechanics in order of what the most “core” mechanic ﬁrst.
Let’s take Strikers 1945—the plane shooting game—as an example. Here’s my attempt at writing its main mechanics in descending order of importance:
Obstacles & Dodging: Player can collide with stationary obstacles and debrisEnemies: Enemies are moving obstacles that can shoot backPlayer Health: A player can take a ﬁnite number of hits before losing the
gameEnemy Health: Some enemies take multiple shots to destroyBoosts: The player can pick up boosts that improve health, shooting, etc.
… and so on.
If I’m trying to develop 1945 from scratch, I will implement that list in that order. The game’s mechanics build on each other, so I can only tell if shooting is “fun” is if I can move around the screen and if there are obstacles I’m trying to clear (otherwise, there’s no urgency to just pressing Space and seeing projectiles coming out of a plane).
In simpler games, we might order our mechanics so that every new feature adds to a game’s feel. So, with every new mechanic you add, you can play the game and tell if it’s adding what you hope for it to add.
In more complex games, some of the “core” mechanics might be too ‘standard’ to be “risky” per se, but you’ll still need the core mechanics implemented to assess how fun the other mechanics are. You might choose to use a simpler throwaway implementation, like a few lines of input-handling code and Unity’s
CharacterController component. You’ll want your core mechanics just smooth enough that they don’t ruin the fun of the things you’ll layer on top of it. Another approach here is to use the asset store. I’ve previously mentioned the
Ultimate FPS (UFPS)
asset, which you might choose to use when building an FPS game, and move on to implementing the combat or some more unique (but still “core” feature of the gameplay ﬁrst).
Within a mechanic, your traditional software engineering intuition becomes helpful. I hope to spend subsequent articles discussing patterns that are especially helpful in Unity, but here are a few to consider:
* Work within Unity’s Object-Component paradigm. If you’re adding a new
capability to your player, write it as its own component.
* Tuning is especially important in game development; representing a
mechanic’s interesting pieces as conﬁgurable, serializable data that
can be input to a component will help you playtest and iterate.
* Don’t shy away from using plain-old data objects to represent core concepts
you’re working with. E.g., health, ammo information, or powerups. Make it
serializable if you want it passed around in the editor (or saved to disk
* Where pieces of a concept don’t correspond to a single object in a scene,
consider using Scriptable Objects to do the jobs. Scriptable Objects
introduce many patterns that might help represent what you’re doing.
A few articles I have already written might prove helpful:
You might also take a look at patterns covered in:
Once you have a stronger intuition of how you can represent different kinds of data and abstractions, the reader’s initial comment also becomes the answer:
It’s easy to think, “Well, okay, I need to write the DAO or controller, etc.” But with games, I’m lost.
Beyond learning about useful patterns and abstractions in game development to make development clearer and cleaner, the real takeaway is to decide what to work on at a macro-level.
As you’re developing a mechanic, what’s a good signal you should move on to the next on your list? Generally, that would be when you’re convinced:
* This mechanic feels fun and adds to the game,
Traditionally, folks will often say to worry about polish at the later stages of your development. In his GDC 2016 micro-talk “Pizzazz First, Polish Later”, Lee Perry makes a distinction in this traditional wisdom.
Certain levels of pizzazz might give you a better sense of your mechanic and how fun it feels. A certain amount of polish or pizzazz can also help you see your game in a new light and motivate you to keep going.
is another form of pizzazz; in certain dull moments of your game design, adding juice might be a low-cost way to get back into the groove of things.
I hope the conﬂicting advice shows there isn’t a silver bullet on what to add when. Rather—as in traditional software development—this choice is about a series of trade-offs that depend on the developer, the project, and lots more.
For some software engineers, we’re often drawn to writing code for systems that seem interesting. Sometimes, I have a game in mind, but really, I’m interested in implementing a cool inventory system where everything in the game is an item. It might not be the core mechanic, but it might be the thing I want to build.
It’s important to recognize when you’re not building a game but building a system. If you just quit your job to be a full-time indie gamedev and have a year of runway before your run out of cash, it is probably a bad idea to start building a complex inventory system that you don’t even know you’ll need. But if you’re programming on the side to ﬂex your game development muscle, then go right at it.
I don’t think I’m qualiﬁed per se to answer the question of “How do I start?“. Yet, I hope that by showing examples of the conﬂicting pieces of advice given to answer this question, you will get a sense of the parameters
you can tune when deciding what to try and what will eventually work for you.
If you’ve had success with one paradigm (especially something I haven’t discussed here), do let me know! Feel free to reach out
on Twitter or
A series where I’m documenting my process of designing and building an e-ink laptop.
Since the E Ink Corporation’s founding in 1997 and the patenting of its microencapsulated electrophoretic display, or epaper, manufacturers started to incorporate e-ink ﬁlm into consumer devices. . Some of the ﬁrst devices were ereaders: The Sony Librie in 2004 and the Amazon Kindle in 2007 .
Throughout the years, we’ve seen several e-ink products and prototypes: e-ink ﬁlm used with larger screens, color, ﬂexible material and most recently have started seeing e-ink displays used in smartphones and tablets, notably from Hisense and Onyx Boox product lines. And while e-ink has been around for 24 years, we have yet to see a laptop with an e-ink panel.
There have been attempts in the past to create a similar device: Pixel Qi and OLPC, Boox Typewriter, Yoga Book C930 and the ThinkBook Plus. These attempts did not materialize, were discontinued, or were not sufﬁciently suitable to meet users’ demands due to hardware or lack of a cohesive UX/UI paradigm. To make matters worse, the E Ink Corporation holds the patents for its e-ink technology and only licenses its technology to large manufacturers making availability or mass adoption difﬁcult.
Fortunately, some of the most exciting work and innovation happening today is in the e-ink modding community. There have been attempts to re-purposing ereaders: as a calendar, to display a static image or site, Kobo devices running GNU/Linux, Amazon Kindle devices repurposed as a development platform, the Remarkable 1 running Parabola, and PINE 64 recently announcing a native e-ink single-board computer.
After following the development of e-ink for some time, I’ve decided to re-use some of the existing hardware I have and create an e-ink laptop.
From about 6 am to 7 pm, I’m in front of a computer or digital device that’s emitting blue light. Throughout the day, I’m supporting students, attending meetings, reading documentation, news articles, programming, learning, using emacs and org-mode to capture information, write down thoughts, create tasks, and conversing with my knowledge management system.
I try to use my e-ink monitor as much as possible throughout the day to reduce eye strain, fatigue and lessen distractions while intermittently taking breaks. The Dasung monitors go a long way to make this possible when I’m home or in a stationary place. Though there are times, I’m not working in front of my desktop or would like to work at a different location. The teardown and set-up of my environment when using an e-ink monitor is somewhat tedious, in addition to changes having to make when switching from an LCD to an e-ink monitor:
* making adjustments and tweaks to the window manager.
I am then having to switch the changes back when using an LCD for meetings or videos. I’ve already solved some of this by writing some scripts and making adjustments in some applications. Still, I would like to design the experience for using an e-ink monitor with a dedicated device from the ground-up.
I’ll be using a ‘headless’ Thinkpad T480 combined with the Dasung HD-FT .
The Thinkpad T480 seems to be an ideal laptop for building an e-ink laptop, The T480 has :
* 13 hours of battery while web browsing with the 72Wh battery.
* Supports up to 64 GB of ram.
* It can be modded to use the classic 7-row keyboard.
The hot-swappable battery and long battery life are essential for any portable setup, especially with an e-ink monitor. The T480 supports up to 64Gb of ram and two Nvme drives, providing plenty of power and expansion as a daily driver.
Since the Dasung monitors connect via HDMI and receives power through USB, the T480 has all of the necessary ports without an adapter. Lastly, after removing the lid cover with the T480, there is room here to hack and mod the Dasung screen to the T480.
Dasung currently is the only manufacturer of e-ink monitors that I’m aware of , and their third-generation monitors are a substantial upgrade from prior generations.
Directly from the monitor, you can:
* Turn on and off the backlight
The ability to easily change the monitor’s modes without software, the fast screen refresh, screen resolution of 2200×1650 and the backlight make it a great base to build an e-ink laptop.
The ﬁrst post went over my reasons for building an e-ink laptop, some history about e-ink technology, the e-ink modding community, recent advancements, and the hardware I’ve selected to create an e-ink laptop.
The next post in the series will be a teardown of the Dasung HD-FT, inspired by Kev Zettler’s work on the Dasung Paperlike Pro.
If this post resonated positively or negatively, send me a direct message on Twitter, and we can talk. Also, ping if you’d like to know the updates on this post or if you have suggestions, comments, questions, or would like to collaborate.
Deep Black Horizon posted an air trafﬁc control broadcast from American Airlines ﬂight AA2292 on Sunday.
The aircraft was ﬂying from Cincinnati to Phoenix and at 1:19 p.m. Central time, while over the northeast corner of New Mexico at around 37,000 feet, reportedly radioed Albuquerque Center.
Do you have any targets up here? We just had something go right over the top of us — I hate to say this but it looked like a long cylindrical object that almost looked like a cruise missile type of thing — moving really fast right over the top of us.
Here’s the audio, posted by Deep Black Horizon and embedded here for ease of listening:
American Airlines for its part tells me, “At this time, we do not have any indication the radio transmission was from the ﬂight crew on board American Airlines Flight 2292.”
Update: American Airlines now conﬁrms the incident, “Following a debrief with our Flight Crew and additional information received, we can conﬁrm this radio transmission was from American Airlines Flight 2292 on Feb. 21.”
Former Senate Majority Leader Harry Reid says the government has been hiding details of UFOs for years. Former CIA Director John Brennan thinks there may be life on other planets too. December’s Covid-19 relief bill included a directive to the Pentagon and intelligence agencies to share what they know about UFOs within 6 months. People with the highest of security clearances think there’s something out there.
‘Something’ of course doesn’t necessarily mean extraterrestrial in origin, even though New Mexico is home to Roswell… it’s also home to several military bases, though odd in that case that the airspace wouldn’t have been off limits.