"Trivial" is relative. Non-trivial but fun to me is multi-threading, I actually have to try and it typically takes me a few days to create a high performing easy to debug design. The company CIO has thanked me for such an outstanding job of taking on projects that other teams are too afraid to do. BTW, we're partly owned by Google, and Google and Microsoft have both come to us for help and are partners.
I would love to work on bigger projects, but there's a lot of red-tape to break into those.
Actually what you described is the API. An API cannot not(purposeful double negative) have a protocol. It's just the flip-side of the coin. They are one and the same, just a different view. A library can implement a protocol simply by implementing the API. It's up to the caller to follow the protocol.
A protocol is a set of methods, and an API is a set of protocols. A set can be a collection of one or more objects unless you accept an empty set. Therefore, a single method can be copyrighted as an API.
The only thing challenging about technological solutions is the people you have to deal with to get your job done. In 10 years of programming, I have yet to run into a situation where I couldn't immediately see what needed to get done. "Challenging work environment" sounds like working with a lot of idiots. Of course I understand what you meant. aka "Not boring".
You completely took it out of context. Mythical Man Month just says the cost of communication increases exponentially as the size of the time increases. Other studies have shown that value created by working more than 8 hours quickly turns negative. 16 hours of work is not 16 hours of work, it's also not 15 hours of work, it's negative N hours of work. You'd get more done by not doing anything at all.
Correct, good coding is mostly an effort of time, but good programming is mostly an effort of thought. I may not write a single line of code for 1-2 weeks when I start a new project. Crappy code that works, trumps beautiful code that doesn't. The most productive programmers only put in a few hours of coding every day. Most of their day is spent thinking or relaxing. The goal of building something isn't to have built "something", it's to have built a specific thing that works well.
Experience is overrated in programming. Someone may never make the same mistake again, but in programming, you rarely come across the same situation again. Too many people stumble through programming "learning" from their mistakes, but constantly making mistakes for their entire life. If you put some thought into your programming, you'll rarely ever make mistakes.
Technology hasn't changed sine the 70s, only the tools have. Same crap, different pile. If you can't see this, you need to exercise your ability to abstract ideas. Isn't this the whole point of being a programmer? Really. The best programming books were made before I was born. If you want to learn about the flavor of the month language or framework, then I agree, lots of churn.
The biggest issue with the industry is the saturation of the patter-antipattern cargo-cult programmer. They use a lot of big words, they make beautiful code, they can create programs very quickly, have good unit and integration test coverage, and the follow best practice to the letter, but their projects are still crap. They are clueless when it comes to debugging their pile of crap that is full of bugs, design flaws, and slow as molasses.
After 8 hours in a day, most programmers start creating negative value. My max limit is around 4-6 hours, depending on what I'm working on. Even then, I can't sustain those levels for more than a few weeks, and it will then take me a few months to recover.
Breaking perfect 128bit encryption is not feasible limited to our solar system. It would require having a perfectly efficient computer and converting several Earth masses into pure energy to power that computer. 256bit is right out, can't be done in our Universe with current understanding of basic physics. The only way is to find a flaw in the encryption. AES does have some flaws, but they all require having partial control of the entropy source for generating the keys or having access to both unencrypted and encrypted version of the data, and a phenomenally large amount of data. Easily defeated by rotating your keys.
internethealthtest.org doesn't work for me in any of my browsers. It always gives me 70Mb down and 20Mb all the time to all of the servers. At least it's consistent to within 0.5Mb/s on every run. I have 100/100.
From what I've read, gigabit-magnitude speeds. Other than the first few people who were the only ones using it, other are now showing they may get the infamous "up-to" 1Gb, but actually get anywhere from 600Mb/s to 1Gb. And of course they still have issues trying to buffer a 5Mb/s Netflix or Youtube video.
Those speeds are assuming you're using a local speedtest server. Once you're outside of their network, you may be getting closer to 200Mb. Then you see people with Google Fiber testing their connections all around the USA and parts of the world and still getting 900Mb+/s.
Last night around 8pm, I ran the test 30 times back-to-back, and each time I got between 90 and 92, most of the time, 91. Mind you, my 100Mb network is also doing other stuff. But this morning, I ran it and got only 73. Not expected to get a worse value at 7am.
I was running one test after the other and kept my connection 100% saturated got almost 6 minutes. 100Mb, personally shaped to 99Mb/s via PFSense, averaged 98.55Mb/s per minute for 5 minutes and around 70Mb/s for a fractional minute when I stopped re-running the test. Seems stable to me. Every test is +-1 Mb.
speedtest.net can lie. Using PFSense, I've seen my raw WAN incoming traffic peaked at 30Mb/s with 1 sec averages, but was around 25Mb/s for most, and speedtest.net claimed 45Mb. I've tested this many times over the past few years. It really depends on the test server, and mostly affects slow servers with short tests.
My ISP has its own speedtest server and it takes a good 30 seconds to finish the download on my 100Mb connection.
When I watch Netflix at 8-10pm, they cram 1Gb/s down my pipe, but that's the most I can measure with my 1Gb Ethernet port. And no, my ISP does not have Open Connect, all over transit.
That's the issue. You can't randomly pick a song, you need to randomly create a collection. The collection may be random, but the song chosen is not. Nuanced difference.
That's why you whiten the output, that way you can't predict the pattern without knowing all of the entropy. Whitening gets rid of the patterns. Think crypto strong hashes. Difficult to reverse. Very good whiteners in that sense.
Minor context addition to AES down to 126bits of entropy. Ballparking numbers. Practical attacks only remove about 2-4 bits, reducing 256bits to 252bits and 128bits to 126bits. There are some non-practical attacks that require sampling petabytes of encrypted data from the same key where you know what the underlying unencrpyted data is. Then you can theoretically reduce AES256 down to something around 100bits, which is still nearly impossible for our solar system regardless of the hypothetical far future technology we have access to.
Create a new key every few hundred TiB of data, and you're fine.
There is a probability of anything happening, the question is if the probability actually matches what's predicted. For any infinitely large set of random numbers is an infinitely large set of the same number being repeated. sexconker is 100% correct once you understand they used an extremely example to prove a point.
"Trivial" is relative. Non-trivial but fun to me is multi-threading, I actually have to try and it typically takes me a few days to create a high performing easy to debug design. The company CIO has thanked me for such an outstanding job of taking on projects that other teams are too afraid to do. BTW, we're partly owned by Google, and Google and Microsoft have both come to us for help and are partners.
I would love to work on bigger projects, but there's a lot of red-tape to break into those.
Actually what you described is the API. An API cannot not(purposeful double negative) have a protocol. It's just the flip-side of the coin. They are one and the same, just a different view. A library can implement a protocol simply by implementing the API. It's up to the caller to follow the protocol.
A protocol is a set of methods, and an API is a set of protocols. A set can be a collection of one or more objects unless you accept an empty set. Therefore, a single method can be copyrighted as an API.
The only thing challenging about technological solutions is the people you have to deal with to get your job done. In 10 years of programming, I have yet to run into a situation where I couldn't immediately see what needed to get done. "Challenging work environment" sounds like working with a lot of idiots. Of course I understand what you meant. aka "Not boring".
FOOF is even more fun https://en.wikipedia.org/wiki/... http://blogs.sciencemag.org/pi...
You completely took it out of context. Mythical Man Month just says the cost of communication increases exponentially as the size of the time increases. Other studies have shown that value created by working more than 8 hours quickly turns negative. 16 hours of work is not 16 hours of work, it's also not 15 hours of work, it's negative N hours of work. You'd get more done by not doing anything at all.
Correct, good coding is mostly an effort of time, but good programming is mostly an effort of thought. I may not write a single line of code for 1-2 weeks when I start a new project. Crappy code that works, trumps beautiful code that doesn't. The most productive programmers only put in a few hours of coding every day. Most of their day is spent thinking or relaxing. The goal of building something isn't to have built "something", it's to have built a specific thing that works well.
Experience is overrated in programming. Someone may never make the same mistake again, but in programming, you rarely come across the same situation again. Too many people stumble through programming "learning" from their mistakes, but constantly making mistakes for their entire life. If you put some thought into your programming, you'll rarely ever make mistakes.
Technology hasn't changed sine the 70s, only the tools have. Same crap, different pile. If you can't see this, you need to exercise your ability to abstract ideas. Isn't this the whole point of being a programmer? Really. The best programming books were made before I was born. If you want to learn about the flavor of the month language or framework, then I agree, lots of churn.
The biggest issue with the industry is the saturation of the patter-antipattern cargo-cult programmer. They use a lot of big words, they make beautiful code, they can create programs very quickly, have good unit and integration test coverage, and the follow best practice to the letter, but their projects are still crap. They are clueless when it comes to debugging their pile of crap that is full of bugs, design flaws, and slow as molasses.
Coding != Programming
Coding is to Programming as talking is to debating or hammering is to building a house.
After 8 hours in a day, most programmers start creating negative value. My max limit is around 4-6 hours, depending on what I'm working on. Even then, I can't sustain those levels for more than a few weeks, and it will then take me a few months to recover.
Breaking perfect 128bit encryption is not feasible limited to our solar system. It would require having a perfectly efficient computer and converting several Earth masses into pure energy to power that computer. 256bit is right out, can't be done in our Universe with current understanding of basic physics. The only way is to find a flaw in the encryption. AES does have some flaws, but they all require having partial control of the entropy source for generating the keys or having access to both unencrypted and encrypted version of the data, and a phenomenally large amount of data. Easily defeated by rotating your keys.
internethealthtest.org doesn't work for me in any of my browsers. It always gives me 70Mb down and 20Mb all the time to all of the servers. At least it's consistent to within 0.5Mb/s on every run. I have 100/100.
From what I've read, gigabit-magnitude speeds. Other than the first few people who were the only ones using it, other are now showing they may get the infamous "up-to" 1Gb, but actually get anywhere from 600Mb/s to 1Gb. And of course they still have issues trying to buffer a 5Mb/s Netflix or Youtube video.
Those speeds are assuming you're using a local speedtest server. Once you're outside of their network, you may be getting closer to 200Mb. Then you see people with Google Fiber testing their connections all around the USA and parts of the world and still getting 900Mb+/s.
Last night around 8pm, I ran the test 30 times back-to-back, and each time I got between 90 and 92, most of the time, 91. Mind you, my 100Mb network is also doing other stuff. But this morning, I ran it and got only 73. Not expected to get a worse value at 7am.
I was running one test after the other and kept my connection 100% saturated got almost 6 minutes. 100Mb, personally shaped to 99Mb/s via PFSense, averaged 98.55Mb/s per minute for 5 minutes and around 70Mb/s for a fractional minute when I stopped re-running the test. Seems stable to me. Every test is +-1 Mb.
speedtest.net can lie. Using PFSense, I've seen my raw WAN incoming traffic peaked at 30Mb/s with 1 sec averages, but was around 25Mb/s for most, and speedtest.net claimed 45Mb. I've tested this many times over the past few years. It really depends on the test server, and mostly affects slow servers with short tests.
My ISP has its own speedtest server and it takes a good 30 seconds to finish the download on my 100Mb connection.
When I watch Netflix at 8-10pm, they cram 1Gb/s down my pipe, but that's the most I can measure with my 1Gb Ethernet port. And no, my ISP does not have Open Connect, all over transit.
It is a good tool. No one tool is perfect, especially with the Internet where any metric can be gamed in some fashion.
Statistics can give you 99.9999%+ predictability of a group.
My cousin worked in a multi-petabyte datacenter and told me Seagate was crazy and Hitachi was the best.
That's the issue. You can't randomly pick a song, you need to randomly create a collection. The collection may be random, but the song chosen is not. Nuanced difference.
What we need are hardware RNG sources that provably do not have any ability to read state from the system, only input into the system.
That's why you whiten the output, that way you can't predict the pattern without knowing all of the entropy. Whitening gets rid of the patterns. Think crypto strong hashes. Difficult to reverse. Very good whiteners in that sense.
Minor context addition to AES down to 126bits of entropy. Ballparking numbers. Practical attacks only remove about 2-4 bits, reducing 256bits to 252bits and 128bits to 126bits. There are some non-practical attacks that require sampling petabytes of encrypted data from the same key where you know what the underlying unencrpyted data is. Then you can theoretically reduce AES256 down to something around 100bits, which is still nearly impossible for our solar system regardless of the hypothetical far future technology we have access to.
Create a new key every few hundred TiB of data, and you're fine.
There is a probability of anything happening, the question is if the probability actually matches what's predicted. For any infinitely large set of random numbers is an infinitely large set of the same number being repeated. sexconker is 100% correct once you understand they used an extremely example to prove a point.