Get enough sleep. Every single day.
Drink enough water. 2-3L.
Make progress every day, even if it's just a little. Don't put too much pressure on yourself. Just make the most of your down time - on the toilet, in bed before you fall asleep, waiting in line for your coffee, on the bus. Try to always have some reading material on you.
Find a way to enjoy it.
Teach others. Share your knowledge. Teaching is a great way to find holes in your own understanding. Helping others is a great motivator.
Vary your sources. Ask friends and experts. Read the news. Subscribe to mailing lists and blogs. Follow interesting people/groups/organizations in the tech world on Twitter or Facebook or Google Plus. Read books.
Be opportunistic. Always look out for new opportunities to learn. Help friends with their projects.
Have a community. Don't be afraid if you don't fit in, or if you think you're not as smart as everyone else. Or be afraid, but don't let that stop you from asking questions and picking brains and listening.
Be enthusiastic, curious, and humble.
Now, I know everyone is different - but I don't personally think you can keep up with your self-education purely out of a sense of duty. You must love it. So I think the most important thing is to find a way to love it.
I will once again be a contrarian and suggest that focusing on need mentioned in a previous answer is barking up the wrong tree. To me, as a results driven marketer, that's an ineffective corporate-think mentality.
People buy based on emotions and justify their purchase decisions with logic.
When marketing, always sell to the want, never to the need.
For example: People need shampoo. What they really want is to have shinier, more full bodied, luxurious hair. What do they buy? Of course they buy not just shampoo that will get their hair clean, they buy shampoo marketed to appeal to their want, that promises to deliver the results they desire and make them sexier (at least in their own minds).
To discover wants, do keyword research on your product topic and explore the conversations around those keywords in forums, blogs and in various social media streams, as well as in the pages of the top listings for those keywords in the search engines.
Look for the emotional drivers that people are talking about around your potential product.
Also, simply ask large numbers of people what it is they want in a given product category. Post open ended questions on forums, blogs and in social media and accumulate and correlate the answers you receive.
You'll learn a great deal doing those two things and be better positioned to deliver a winner.
Creating a business in Germany is not difficult (the most difficult part is running it). I started my own Berlin-based company in 2015 without speaking a word of German.
For me there are 10 important steps:
Make sure Germany is the best place for your business (culture, talent pool, taxes, regulation etc.)
Find the best legal form. It could be a corporation, a partnership or a single-person structure, it depends on the nature of your business.
Go to the notary to officialize the articles of association or any official document
Open a bank account with a German bank
Enter the Chamber of Commerce’s register
Open your bookkeeping
Register the business at the Trade Office
Register your employees and open the payroll
Register with the professional association
Choose an insurance for the founders
Most of the steps are doable by yourself. Step 1 to 5 doesn’t need external help, especially if you choose to create a standard UG or GmbH.
At step 6 (open the bookkeeping), I would recommend to start working with an accountant. They can also help on all following steps and of course for the future accounting of your company.
Concerning the country pros and cons, that’s my own analysis:
What makes Germany good for business:
it’s not hard to start a company as mentioned above and cheap to do it,
the country has a very good talent pool and attracts many international talents too (especially in Berlin),
the comfort of life is great, German people are very respectful and open, the healthcare system is one of the best in the world, and the country is beautiful when you get to know it,
What are the challenges:
the regulation and bureaucracy may be very heavy and slow-moving sometimes,
having cheap employees like interns for example is very difficult and heavily regulated,
the market is specific in some cases. For example Germans are very concerned about data protection or other topics that are not necessarily important in other markets.
A special mention on the language. The German language barrier may be seen as both a pro and con. On one hand, you can attract international people that don’t speak German and they should not be afraid about living here. On the other hand, they would feel more comfortable if they learn some basis of the language on the long run.
Overall, if you plan to open your business in Germany and you think that the market is attractive for this, I would recommend you to do it. And I would recommend even more Berlin, if you’re looking for a city to settle in!
Practice is the first thing. But you should know what to practice. The art of painting is basically divided in a few fundamentals: materials and tools, drawing, composition, tonality, color theory, brushwork and of course awareness of the message you want to convey. It takes time to master each of this aspects and to integrate them as in a unified painting. Don't be discouraged however! Start today and do not procrastinate!
Don't ask yourself if you have talent. Motivation is the real talent. And you must give it a try to test how much determination you have. You also need help, for both knowing where to start from and to verify how determined you are. Information are now available across the planet like never before. But let me point you some pros and cons of online resources:
Pros
you can easily find teachers, schools and workshops
you can be inspired by tons of artworks by old and new masters
you can search and filter your favorite style, genre and medium
you can view video tutorials, read articles and blogs
you can join communities, social media and connect with other artists
Cons
Starting from books and videos as a complete beginner can be misleading and give you bad habits, hard to correct later
Copying the masters without a clear and specific study purpose (on color, or values, composition, etc.) will most likely lead you to frustration
Using only bi-dimensional reference images, will never give you the life feel you expect
In other words you need to have a more than basic skill level do understand if what you find online can contribute to your learning or pass you a false skills and poor concepts. That’s what I’d recommend you to do:
Start with a teacher in person, who’s art you like and who’s generosity and ability to teach can be verified through other students in the first place.
Try a new one after a while if you think he/her is not the right one for you
Before you drop them, be honest and question yourself: about your motivation, your dedication and focus.
Learn from your fellow painters by joining a class, group or society or travel workshop. Don’t stay barricaded in your studio
Paint from life, both in studio (still, life, figure) and en plein air (nature, city scape, marines).
Avoid shortcuts and do not believe abstract painting is easier. It’s not
As you seriously practiced the above, you can use online resource to integrate, compare and develop what you have learnt with a teacher, with judgment. Do not stop to confront with the guidance of a real person. At least taking a workshop once or twice a year. Embrace the fact that learning is a never ending journey! Even when you become and advanced painter it might be wonderful to have a mentor to help you find your unique voice and develop your full potential as an artist
Your eyes are an important part of your health. There are many things you can do to keep them healthy and make sure you are seeing your best. Follow these simple steps for maintaining healthy eyes well into your golden years.
Have a comprehensive dilated eye exam. You might think your vision is fine or that your eyes are healthy, but visiting your eye care professional for a comprehensive dilated eye exam is the only way to really be sure. When it comes to common vision problems, some people don’t realize they could see better with glasses or contact lenses. In addition, many common eye diseases such as glaucoma, diabetic eye disease and age-related macular degeneration often have no warning signs. A dilated eye exam is the only way to detect these diseases in their early stages.
During a comprehensive dilated eye exam, your eye care professional places drops in your eyes to dilate, or widen, the pupil to allow more light to enter the eye the same way an open door lets more light into a dark room. This enables your eye care professional to get a good look at the back of the eyes and examine them for any signs of damage or disease. Your eye care professional is the only one who can determine if your eyes are healthy and if you’re seeing your best.
Know your family’s eye health history. Talk to your family members about their eye health history. It’s important to know if anyone has been diagnosed with a disease or condition since many are hereditary. This will help to determine if you are at higher risk for developing an eye disease or condition.
Eat right to protect your sight. You’ve heard carrots are good for your eyes. But eating a diet rich in fruits and vegetables, particularly dark leafy greens such as spinach, kale, or collard greens is important for keeping your eyes healthy, too.
i
Research has also shown there are eye health benefits from eating fish high in omega-3 fatty acids, such as salmon, tuna, and halibut.
Maintain a healthy weight. Being overweight or obese increases your risk of developing diabetes and other systemic conditions, which can lead to vision loss, such as diabetic eye disease or glaucoma. If you are having trouble maintaining a healthy weight, talk to your doctor.
Wear protective eyewear. Wear protective eyewear when playing sports or doing activities around the home. Protective eyewear includes safety glasses and goggles, safety shields, and eye guards specially designed to provide the correct protection for a certain activity. Most protective eyewear lenses are made of polycarbonate, which is 10 times stronger than other plastics. Many eye care providers sell protective eyewear, as do some sporting goods stores.
Quit smoking or never start. Smoking is as bad for your eyes as it is for the rest of your body. Research has linked smoking to an increased risk of developing age-related macular degeneration, cataract, and optic nerve damage, all of which can lead to blindness.
Be cool and wear your shades. Sunglasses are a great fashion accessory, but their most important job is to protect your eyes from the sun’s ultraviolet rays. When purchasing sunglasses, look for ones that block out 99 to 100 percent of both UV-A and UV-B radiation.
Give your eyes a rest. If you spend a lot of time at the computer or focusing on any one thing, you sometimes forget to blink and your eyes can get fatigued. Try the 20-20-20 rule: Every 20 minutes, look away about 20 feet in front of you for 20 seconds. This can help reduce eyestrain.
Clean your hands and your contact lensesproperly. To avoid the risk of infection, always wash your hands thoroughly before putting in or taking out your contact lenses. Make sure to disinfect contact lenses as instructed and replace them as appropriate.
Practice workplace eye safety. Employers are required to provide a safe work environment. When protective eyewear is required as a part of your job, make a habit of wearing the appropriate type at all times and encourage your coworkers to do the same.
Best way to send money is through internet banking as it is fast and safe mode of transferring money. It is super good. Even you have a proof as well in the bank statement that money has been transferred to so and so person on so and so date. It helps in keeping track of your money. It is super fast mode of transferring money. Depends from bank to bank, as some banks transfer money in 15 mins to 3 days time span.
One way to get some experience could be to find an open source project dealing with this kind of system and contribute there.
Examples of such open source applications in use for distributed, large scale systems all over the world are tensorflow, elasticsearch, and hystrix; this is just the tip of the iceberg.
Contributions to OSS will also be beneficial if you need to find a job in the business.
A huge part of math is learning how things work, how to look at things, when there’s actually an easier way to do things than that one formula you just learned. Even if a book can perfectly teach you this, you still lose a lot of perspective.
If you get a teacher, or at the very least someone who is helping you, or even just learning alongside you, you’ll learn far more efficiently, as what the other person thinks may be put in a phrasing, or use a tactic, or have some reasoning, the list goes on, that you could never have come up with on your own. Even if you’re smarter than Newton - well - Newton didn’t get to where he got without a little help throughout his life.
HOWEVER.
That’s not to say it’s impossible. If you really have a love for mathematics, there a loads of ways to learn more math. If you’re looking just to get some random math knowledge, then roaming YouTube is actually a pretty effective method of gaining some fun knowledge. Those guys are average joes just like you and I. They always have something fun to get your hands on.
If, however, you’re looking for a specific subject, or something that would otherwise replace a class, then get the best textbook you can find and get a tutor. Maybe you’ll be fine on your own, but two heads are still better than one, especially with education. Math builds on itself. If you just barely scrape by in Algebra, Calculus isn’t going to be fun. You need to have a pretty good understanding of everything. That’s why its so hard.
One last tip: pace yourself. If you think you’ve got a topic after reading it and working on a couple of problems, still take a day on it. You’ll find something you missed, find a shortcut, or something, and it’ll make the next topic just that much easier. And again, that’ll carry on.
You can right click on any file/s and select a colored label from the menu. After that you can click on any of the colored labels on the sidebar and see what files you tagged with which color.
I’ve used both platforms pretty extensively to beef up my data structures and algorithms knowledge.
Hackerank Strengths
Tons, and I mean tons, of questions and organized into Tracks. Want to learn about how to use Regular Expressions/ Java/ SQL/ Algorithms/ Data Structures/ Python/Math? Each one of those topics and more have specific paths with specific sub topics.
If you are using these sites to get interview prep, a lot of companies send their coding challenges through Hacker rank as apart of the interview process, so it’s good to get familiar. Expedia, GE, Goldman Sachs and Optiver to name a few
You get almost all functionality (if not all) from the website for free. On Leetcode without the paid subscription, there are definite drawbacks.
For instance you can’t always submit your solution right away, due to how they run the solution to rank against all other solutions.
Almost all problem statements have examples of 1 or 2 test cases and answers and pretty thorough explanations of why the answer is the way it is. That’s much less common on Leetcode.
Every question posted on Hackerrank has a verified solution on the “Editorial” tab. Not every Leetcode question has one ( Though you could easily get an answer on both platforms clicking on the “discussions” tab)
Both sites have visible test cases to run your code with before submitting. Hackerrank does a pretty good job of making those visible ones the common cases, while Leetcode almost always uses an edge case for the visible test.
Hackerrack has vim bindings! (If you’re into that)
Leetcode Strengths
Something I love about Leetcode is that they have straight to the point problem statements. Hackerrank tends to have a bit lengthy introductions and drawn out scenarios that mask the actual task.
For example: Hackerrank could be like “Sally loves chocolate but only wants to eat chocolate with the lowest amount of sodium. Given an array of sodium levels, return the lowest chocolate with lowest sodium”
Leetcode equivalent would be “Given an array of integers, return the min element”
Both Hackerrank and Leetcode compare the run time costs of your algorithm by timing the solution with test cases. However, once your solution has been approved, it lists it against all approved solutions in the same programming language and the percentage of how many solutions you beat out for speed.
The testing environment is far superior. When you enter a custom test case it also runs the correct solution too so you can immediately know if your’s is right or wrong. On Hackerrank, running a custom test case only runs your solution.
Another thing I love, for every problem, the coding interface requires only working with some predefined function signature. In Hackerrank, a lot of the time you have to handle the input/output, and it runs string matching to validate the answer which can get a little annoying
Seriously… why I should print “YES” or “NO” when the quicker equivalent is just keeping a Boolean object?
Leetcode has that fancy “Question was asked by X Company with Y% frequency”, that you can access with the subscription. I personally think that this tool isn’t that useful, and gives false impression that people can just memorize all those specific questions once they get an interview with X company.
I personally like LeetCode better and, ultimately, it comes down to what you’re using it for.
First choice - Lubuntu 16.04 LTS, it is quite Window$ like in function and appearance.
Second - Ubuntu 16.04 LTS, the full version of Lubuntu. Not quite as Window$ like but close enough for most people to run without too much trouble. My wife’s new build kitchen PC came to life with Ubuntu 14.04, upped to 16.04, and she has had very few issues.
Third - Maybe Fedora, I am trying it out now and seems to install and run very well.
Stay away from Mint, Mate and Cinnamon, they are just skins for Ubuntu and a new comer does not need another later of confusion. I could not get Arch or Manjaro to install and run in either of my test machines. One is a 32 bit laptop, and Arch does not have a 32 bit version. Stick with a distribution that will write to a USB via UnetBootin or RUFUS, a newbie will not run 5 lines of code to build a USB drive.
It is possible. As others said, you will have a somewhat of a tough time getting an interview, but if you get one and nail it, you will get an offer just the same. As to how to get an interview in such situation? - be very proactive and find alternative ways to get your resume in front of the eyes of engineers or engineering managers. If you rely only on submitting through the standard Jobs page, your resume will most likely never make it through the layers of automated software and recruiters filtering. Find a friend that works in one of these companies and ask them to help you out, lurk in the groups where employes frequent and try to make a name for yourself, make sure one of your apps is moderately successful and meets a need for one of these companies.
Note that getting an offer is also contingent on your eligibility to work in US. If you are not a US citizen or a green card holder, the requirements to get an H1 visa are to have the equivalent of four years of education, where each three years of work experience counted as a year of education. (There are other H1 class visas, but they are not as common in the computer industry) But the company has to like you really a lot to go through the trouble in that case...
And since you managed to pique my interest, Id be curious to look at your resume. I'll leave out the part of figuring out how to send it (without it being caught by the junk filters) as an exercise to you. Shouldn't be that hard..
Depends on what you mean by speeds, but there's a huge confluence of reasons that processors are where they are today.
If you mean the clock speed specifically, then it's largely due to the inability to manufacture smaller gate widths in silicon. The Core 2 architecture by Intel, for example, uses a 45 nanometer gate width for transistors in each core. Core 2 was part of the Penryn family. The latest family is Nehalem, and it, too, uses 45 nanometer gate widths. Core i5 and i7 belong to this family, among others.
Since the gate widths didn't shrink from the Penryn family to the Nehalem family, the power consumption of a single state change in a given transistor didn't decrease. Since the heat dissipation (and, therefore, power consumption) is proportional to both the gate width and the clock speed, this new architecture couldn't change the state of the transistors any faster than the previous one. Therefore, core clock speeds remained pretty constant.
Getting to 45 nm was really tough. Going to the next frontier, which will likely be 32 nm, will be even tougher. So tough, in fact, that STMicroelectronics, Freescale Semiconductor, NXP Semiconductor and Texas Instruments have all decided to stop their process research. An article in 2007 claimed that Intel, IBM and Matsushita, AMD and Renesas would be the only organizations still pursuing R&D in this area. That's a vastly reduced set of brains and dollars on the gate width problem.
If your question about "speed" is more general, well, then there's another discussion around multi-core architectures that's also fascinating. The primary technical advances in Nehalem versus predecessor families are its multithreading, caching, bus and memory management schemes. If you keep each core at 3 GHz, how can you efficiently use two 3 GHz cores to get, say, 1.5 times the speed of a single core? How can you efficiently use four 3 GHz cores to get, say, 1.5 times the speed of two cores? in this respect, processor speeds have increased significantly in the last 5 years, and will continue to do so as software is written to take advantage of these new architectures.
But, then again, when was the last time you really found yourself waiting for your processor? It was probably your disk, your network or your brain that was the bottleneck in the first place. :-)
The key to success in any interview, but especially in a programming interview, is practicing as much as possible. It's not enough to start just a few days before the real thing. The best method of preparing is incorporating your interview prep into your everyday coding practice, so that you'll never fall behind, even if you aren't currently searching for a job. But the plan "to practice" is too vague and leaves a lot of programmers unsure of how to get started in the process, which can be overwhelming. If you're frustrated and aren't sure how to get going on your coding interview practice, follow these steps to get started.
1. Review the basics. Even experienced programmers and engineers can get tripped up when questions about algorithms and data structure come up. If you haven't yet mastered the basics, focus on this for a few weeks or months to get yourself ready to tackle the bigger problems. It's crucial, not only for a coding interview, but for the entirety of your professional career, that you understand the basics. They are your foundational skills upon which you will build and master your expertise.
2. Solve coding problems and work on projects. Online coding practice problems are a great place to start. Apply your knowledge and work on projects you enjoy. Write code. Build things. Put your skills to use. This should be the fun part - if you aren't enjoying the journey and the process of building your coding skills, you'll have a difficult career as a programmer. Sure, there will be moments of frustration where you'll want to smash your computer screen and throw your mouse at the wall. But forge on. Keep trying. Find those bugs and destroy them. Build great things, and immerse yourself in online forums and other communities where you can turn to for help when you really get stuck.
3. Use online coding interview platforms for practice. This is a great way to get exposure to how the real coding interview will feel. Smash your nerves and anxiety by conducting a full coding interview with a partner. On platforms like Pramp and Leetcode, you'll get paired with another programmer of a similar skill level, so it will scale to your ability. Together you'll experience the coding interview from both perspectives. Performing the role of the interviewer and the interviewee will teach you a lot. After the mock run, you'll both leave each other feedback, and this is a great thing to have to tailor your practice schedule and for identifying what you need to work on the most.
Life is anything but random. It is nothing but a collection of actions and outcomes, both of which are tightly coupled and definitely connected.
Let's take a simple example: you had an important meeting at 9 am but since you were stuck in traffic, you were late by 10 mins.
The final outcome can be clearly explained by actions that directly or indirectly led to them. May be there was an accident causing the traffic jam. May be you woke up 10 mins late than usual thereby getting caught in rush hour traffic. May be the cab you took to work, arrived late at your destination cause he woke up late.
All of the above are totally controllable actions, albeit not in your direct control. Hence the feeling that life is random. Because none of us have any control over the outcomes of the actions of others, who subtly influence our lives on a daily basis.
Think of it this way: our life is intertwined with the lives of others in one way or the other. From the cab driver who drives us to work to our loved ones who shatter our hearts, their actions influence us, some more than the others, but influence us nonetheless.
It's a complex equation, with a whole lot of variables, most of which are beyond our control and unknown and the solution to this equation is the outcome of an event.
I believe that if one knew the values to all the variables at any given point of time, then one would be able to solve the equation with precision
Being able to have a tight grip on one's budget is important. It helps you secure your future and provide a better tomorrow not just for yourself but your family, as well.
Check out some of these tips on how you can save more and manage your finances:
Create a budget plan according to how much you earn. Your budget and spending should be something that is in-line how much money that comes in regularly. A budget helps you live and experience life to the fullest without overspending. Under-budgeting yourself and your family is also no good since that would mean you are actually lowering your standard of living in some aspects.
Make sure that you are sticking to your budget plan. As I have said earlier, a budget plan helps you live life to the fullest without breaking your bank account, and in order for this to happen, you have to stick with your budget as much as possible. Keep a close track of your spending and list down every spending you make. Keep a tight leash to that madman inside you that screams buy this and that that actually do not have any important use t you.
Make an itinerary of your daily activities the night before. Having a daily to-do list helps curb your spending urges by reminding you that you are in a saving mode. Having a set routine also helps you become more productive because now, you have set tasks to do instead of thinking what other stuff you can buy.
Plan and budget your meal plans. I am one of those people who spends too much money on food. Having a set budget helps you limit your food choices. I live in the Philippines so the currency rate here is like 50 pesos is to one dollar, and that’s how much we spend on every meal excluding rice. It limits our choices to veggies and a few slices of meat most of the time, and it helped me curb my overspending habit when it comes to food. It also helped us save a lot. You do not have to eat extravagant food in order to be healthy.
*Use processes when planning an outing. We all love going out, and that means shelling out some money. Planning your outing and sticking to a budget helps you enjoy the moment and affording yourself a relaxing day without going broke
I think that primarily, as others have said, we need sunlight. However, one can introduce sunlight into an underground structure with various skylights, including those that use mirrors to bring the light just about anywhere underground.
It’s mostly the excavation, drainage, and more robust structural requirements that increase the cost of construction of an underground house to a point where it outweighs the benefits of such a house. One would want to locate any underground structure on a site that is well above the water table, and well above a flood zone - so again, the cost of locating such a plot of land increases the difficulty and expense of building such a home.
However, I think that there are advantages to residences that are - half-buried. In other words, built into a hill on a slope. The advantages to such a house would be significant if it were sited correctly with a well-engineered drainage system. For example, in the Northern hemisphere the energy savings of a house on a slope with a glass curtain wall facing south would significantly reduce heating and cooling requirements regardless of latitude. Temperatures within the structure would be pretty constant year round. In winter, when the sun recedes to the south and stays lower to the horizon, sun would shine in, and warm, the house for a major portion of the day. In the summer as the sun rises more to the East and is higher in the sky, the earth surrounding the house except for its south-facing wall would insulate the house from radiant heat, and the cooler temperature of the earth would also keep the house from warming up much.
Our summer house in New Jersey faces South, and that long side of the house is windows the entire length of the house, and about half of the surface area of that wall. In winter, on a sunny and below freezing day, the temperature inside that long room can get as high as 80 degrees F (27 C). Midday the furnace doesn’t come on at all (unless it’s a very windy day). The basement is at ground level on the south side, completely underground on the north side. The basement maintains a pretty steady temperature year-round. Had this house been built in the past 20 years rather than 60+ year ago it would have had solar panels running fans to use the basement coolness to air condition the house on the (relatively few) hot days in summer, and distribute the excess heat in winter throughout the house. As it is, it’s an extremely energy-efficient structure.
You can find lot of information about different libraries and stuffs , i would focus on slightly underrated area (not just for python but for any other language you need to master this skill to become successful programmer )
One of the most important skills you need to acquire to be a successful programmer is the ability to debug your programs. Debugging might be the most under-appreciated, and under-taught, skill in introductory computer science.As programmers we spend 99% of our time trying to get our program to work. We struggle, we stress, we spend hours deep in frustration trying to get our program to execute correctly. Perhaps the most important lesson in debugging is that it is largely avoidable – if you work carefully.
Start Small , Start with something really small. Maybe just two lines and then make sure that runs ok. Hitting the run button is quick and easy, and gives you immediate feedback about whether what you have just done is ok or not. Another immediate benefit of having something small working is that you have something to turn in. Turning in a small, incomplete program, is almost always better than nothing.
Keep it working Once you have a small part of your program working the next step is to figure out something small to add to it. If you keep adding small pieces of the program one at a time, it is much easier to figure out what went wrong, as it is most likely that the problem is going to be in the new code you have just added. Less new code means its easier to figure out where the problem is.
This notion of Get something working and keep it working is a mantra that you can repeat throughout your career as a programmer. It’s a great way to avoid the frustrations mentioned above.
Debugging a program is a different way of thinking than writing a program. The process of debugging is much more like being a detective. Here are a few rules to get you thinking about debugging.
Everyone is a suspect (Except Python)! It’s common for beginner programmers to blame Python, but that should be your last resort.
Find clues. This is the biggest job of the detective and right now there are two important kinds of clues for you to understand
Error Messages
Print Statements
Make sure you take the time to understand error messages. They can help you a lot.
print statements are your friends. Use them to help you uncover what is really happening in your code.
Work backward from the error. Many times an error message is caused by something that has happened before it in the program. Always remember that python evaluates a program top to bottom.
None of those (e.g. lighting, physics, graphics) are truly difficult today with the advent of modern game tools (e.g Unity). Assuming you know basic vector math and can think in 3 dimensions, most problems related to sound, physics, graphics etc can be solved by some Googling.
The Digital Signature of a message is based on the content of the message and the private key of the signer. Therefore a digital Signature is bound to a particular user and a specific message.
So, If I copy your digital signature and attach with my message, the receiver (relying party) would be able to (instantly) determine (through a PKI enabled Application) that I have not signed the message.
Now, I know everyone is different - but I don't personally think you can keep up with your self-education purely out of a sense of duty. You must love it. So I think the most important thing is to find a way to love it.