Notwithstanding that some tasks are inherently complicated and there's just no simple way to express it I would posit that the problem with unnecessary complexity is that it hides bugs.
Bugs hide in the edges. They swarm in corners. They positively thrive in interfaces.
Simple (i.e. clean) code helps make the bugs stick out.
There is some business case or need behind each programming effort. That case/need has an underlying language, a grammar, that embodies what needs to be done and when and how. The challenge in software development is to find programming constructs which, inasmuch as is possible, clearly expresses the problem's solution.
Through hard-won experience we've discovered things that suggest where bugs like to hide; what are sometimes called "Code Smells." Massive, nested IF statements. GOTO statements. Global variables. Side effects.
But, these are only symptomatic. There are times when some of these ARE necessary to achieve maximum performance. In other words, not all cases are bad, but they suggest a long, hard look to ensure they are necessary.
Consider programming languages. We started with machine code. Then we wrote assemblers to make it easier to express what we wanted to do. Then came macros and functions. Still later we developed higher level languages. All of these steps allowed us to more easily express what we were trying to do.
Consider this continuum. Case 1: A single program with thousands of lines of code and no functions or subroutines. Case 2: The same application implemented with thousands of functions, each of which contain at most 5 lines of code.
There's probably a sweet spot in between those extremes. A point where the abstractions of what needs to be done closely mimics the problem domain. Where the inputs and outputs are clearly delineated and checked. Where each function is the "right size". As the lowest level functions are implemented and tested, they provide a framework, a language in which one can more easily express what is being done. It is clear what is attempted and how. And it is clear when things are amiss. It makes the bugs "stick out."
When we fail to do this, when we unnecessarily complicate the code, then problems arise. We struggle to grok the code. In this struggle, overwhelmed in trying to follow the "good" paths, we fail to see all its shortcomings. We provide hiding places for bugs. They blend in. They avoid observation. Or, when detected, resist eradication. For some samples, take a look here.
tl;dr. Given: Some problems are just plain complicated and defy any further simplification. Fine. Other problems are amenable to consistent abstractions. When we fail to do that, we introduce unnecessary complexity. We breed bugs.
Started in 1972 with 110 (?) baud dialup on an ASR-33 teletype from Junior High to the High School's DEC PDP-8 mini running TSS88. IIRC it had 8K 12-bit words of memory. Had to dial (yes, rotary dial) the phone number and put the handset into the Acoustical Coupler. Off line storage was to paper tape. Started with BASIC, then moved on to assembler and FOCAL. Then in High School they upgraded to a PDP-11 running RSTS/E. Wow -- was that thing FAST! <grin>
Typed in many, many basic programs from DECUS, and whatever other sources we could find. There were about 4-5 of us who would hang around the "computer room" and grab whatever unused half-hour time slots we could.
First computer I bought was an Ohio ScientificChallenger 4P. Later purchases included: Atari 800, Commodore 64, IBM Clone 286@10MHz.
Besides "Compute "magazine, I also subscribed to "Run", "Byte", and later "PC Magazine". Typing and debugging and trying new things. That was key. An insatiable curiosity as to how things worked and how could I make it do what I wanted it to do.
What would be REALLY interesting is if they will also pay employees based on their weight?
I imagine some kind of bonus/surcharge on top of their standard pay rate might be able to work, without it devolving into an unhealthy situation (e.g. bulimia).
FWIW, as requested: 120 digits (was 200 at one time, in competition with a dormmate in college. Hi Rob!)
That experience lead me to question how many digits are useful? Of course, that depends on how you define useful. Computer burn-in testing, theory of algorithms and optimizations thereof notwithstanding, I was thinking more along the lines of physical applications.
Question:What is the largest circular body that I could conceivable try to calculate the circumference of, and what is the finest measurable precision with which I could imagine measuring that with?
Conclusion: *IF* we could measure the diameter of the universe to within +/- one Planck length, then, within significant digits of accuracy, we would need no more than 61 digits of Pi to compute its circumference.
If you've followed this far, I now have a question for you: what is the largest actual number of digits of i you have actually seen needed and in what context?
The real question is...would it correctly translate to and from "All your base are belong to us"?
What is "correctly" in this case?
All your secret are belong to us?
DISCLAIMER: I have NOT read any of the EULA for their service, and this may be covered therein.
<hat style="tinfoil"> An exaggeration, I know. Still, the cynic in me can't help but imagine that someone else has come up with the idea of using, say, a keyword list and filtering certain "interesting" communications aside for further scrutiny.
They have the source and destination telephone numbers, too. Since they ARE a phone company, it would be easy enough to pre-populate a filter with phone numbers. Of course, they'd need to be circumspect about it, because if word got out, it might dry up business. Sure, there's also Google's translate service as well as Apple's Siri, and a host of others (email, voice mail, etc.)</hat>
IOW, Is it a wiretap when both parties voluntarily go through your service?
Hey now. I once wrote a 1200 line c program just to display "hello, worlf!
"yes, "worlf".
LOL! (Wipes coffee from screen)
Nice try at Klingon, but I think you misspelled the commander's name?!
If someone could look at that code and figure out what it does in 5 minutes, I would consider them a guru.
Sounds like fun! Can you provide a link so we can see? I'm struggling to imagine how in the world it could take 1200 lines! Long ago, I stumbled upon a huge hello world program that used "standard" code for arg parsing internationalization, localization, etc. but I don't recall it being anywhere near THAT large!
I would go with good ol` fashion "bunch o` lines" bar codes. Easy to make yourself, should be easy to attach to a book (or not, maybe just have it loose between the cover and first page), lots of cheap readers and most just emulate a keyboard so easy to interface with.
From there I'd probably throw together a little home brew. What you are asking for does not really sound complicated, the software side sounds like a weekend project for just the basic requirements. Even if you just do it as a basic web app. Be sure to add a title based search for if the barcode gets lost, so the bar code just becomes a convenience and not a requirement to use,
Good suggestions!
For those books which lack a bar code on the jacket, make a book cover and apply the bar code to THAT. (Was a rite of passage every school year as a child that we'd make book covers for all our books. By ten-years-old, I was doing all my books unassisted. We just used paper grocery bags, but you could certainly use some kind of low-acid paper if you'd prefer.)
As for constructing a bar code, there's free bar-code software out there (I've used pbmupc). The basic format is a 1-digit type, a 5-digit manufacturer code, a 5-digit product code, and a check digit. Create a manufacturer code that's reserved for your non-UPC'd books (31337 would be cool, but I think it might already be taken), and then just use a sequence number to identify the individual books.
Lastly, have fun! It's certainly a more interesting project than writing a "hello world" program!
The article suggests that ad hoc collaboration was important for their success.
Not especially noted, though, and far more important in my mind, is that workers had their own "huts" where they could customize their work space to their liking and which provided isolation from distractions. This, to my mind, facilitates concentration.
There are times when I want to bounce a problem off someone and get a fresh perspective. More frequently, though, I just want a few hours without interruption or distraction. A 2-minute question from a coworker can require me to take 20-30 minutes to get back into the zone and get my mind back around all the details that I am trying to sort out.
Providing separate spaces for concentration and for collaboration is the key.
so the 100,000 tons, times 2000 pounds per ton, divided by 13 (as per article only half the yield of dry corns 26 lbs. per gallon ethanol), gives 15 million gallons of ethanol. the USA uses 380 million gallons of gasoline per day.
If the yield is half that of corn, and you need 26 lbs. of corn for one gallon of ethanol, then you'd need 52 lbs. of this waste for one gallon of ethanol. So, divide by 52 instead of 13. This would reduce the yield you calculated by 4.
This could still (pun intended) be used by the vintner to potentially reduce their operating costs, and maybe produce a surplus. Depends on cost of the equipment, efficiency, etc.
Credit agencies: So, this is a tech site, but before getting down-and-dirty with trying to fix his computer I would strongly suggest contacting the credit bureaus and put a hold on things. This will protect him from someone trying to open a new credit account in his name.
Credit cards and Banks: Depending on your level of paranoia, have him contact his credit card companies and banks and ask them to issue new cards. Of course, that may in turn require updating any pre-authorized billing he may have set up.
Authorities: Consider contacting the police and/or your Attorney General. They may be interested to hear a report of this.
Technical:
Forensics. If there's any question about needing to retain documentation about this, consider pulling the compromised drive and storing it. If access to existing data is necessary, put in an external enclosure, mount it read-only under Linux, and copy data from it.
Passwords: change passwords on all on-line accounts from a non-compromised system.
History: Look in whatever history information you can get. Take a look at his browser history, firewall log, command line history, registry, etc. This may help you to assess what level of damage you're dealing with.
Clean or Fresh? One can probably get away with formatting the drive and reinstall. But, in full paranoia mode, have him buy a new PC (cost of this provides reinforcement of prior warnings that were ignored.) Restore data from malware-scanned backups or from read-only access from pulled drive.
I've read reports about malware hiding in USB keyboards and printers, so a reformat and restore onto the original machine may not be sufficient.
Family:
Possibly the hardest part of this is the fact that you're dealing with a parent. They were (hopefully) patient when you were learning all about the world as a child. It's helpful to try and bring an attitude of patience and tolerance to this situation. Let him face the consequences of his actions by having him make the phone calls to banks, credit agencies, etc. Let him pay for the cost of a new drive or PC. (Negative reinforcement) But also thank him for being honest with you about what he had done. Better this than to find out later he'd been scammed out of thousands of dollars because he was afraid to tell you what he had done. (Positive reinforcement.)
Clock mesh technology produces a much lower clock skew compared to a conventional clock tree and, more importantly, is inherently OCV tolerant. On-chip variations (OCV) derated clock mesh designs generally have both lower skew and higher performance than clock tree designs.
source: http://www.design-reuse.com/articles/21019/clock-mesh-benefits-analysis.html
Many thanks! Great article! Looks like getting the clock signal across the chip is an understood problem.
Which leads me to a question I'm not sure how to phrase, so please bear with me. At a high level, there's "data" and there's "processing". It seems to me that as we crank up the clock rate, latencies in accessing the data can be problematic unless the data is "nearby" I recall that Intel was working on Knight's (bridge? landing? something-or-other) which had lots of smaller cores on one die. IOW, it gets the processing and the data closer together. Is that the shape of things to come? What other technologies, if any, are available to keep the flow of processing at its peak?
To avoid clock skew, you regenerate the clock. You can use a phase locked loop to sync to another clock, and generate a new clock signal synced with this clock but with an adjustment to the phase.
That makes sense! Thanks for the reply!
P.S. Editors - Please, more articles like this one! I *really* appreciate having a chance to ask questions, and learn from, experts in the field instead of relying upon dumbed-down, PR fluff pieces.
Any increase in performance without reducing size is a step forwards.If speed increases, for example, we'd go from 4GHz to 120GHz, which is at the low end of the scale mentioned in the summary (ie, it goes up to a few Terahertz in theory)So we'd be at the start of a whole new clock speed race.
That sounds great, but at those speeds the distance traveled per tick gets *much* smaller. I see a challenge in trying to propogate(sp?) a clock signal across the chip to have things work in concert with each other. I'm more a software guy than HW so I may be missing something obvious? ISTR an article here about a year or two ago about clockless logic. Would we need something like that in order to make a modern CPU out of this tech?
tl;dr How do you keep the clock from getting skewed up?
Have you considered astronomy or sub-atomic physics?
For example, Kepler, which examines a vast amount of data trying to find slight dips in stars' brightness to detect exoplanets. Contact the folks at planethunters.org for info and ideas.
Most any large-scale telescope's operation entails finding needles of information in haystack of data. VLT, SKA, etc.
Also take a look at particle physics ala CERN and the search for the Higg's particle. Again, analysis of vast amounts of data that I'd think CUDA skills would be of great help.
For starters, I'd search Wikipedia for telescopes and spider out from there on all the different kinds, and the projects they are used on. Ditto for sub-atomic particles.
Example: I took a look at the Privacy Policy for/. which is located at:
Geeknet Privacy Policy. "(Last Updated February 29, 2012)
(Effective Date May 24, 2008)"
EULAyzer summarized as:
"Details: The license agreement above has a high calculated Interest ID. It's rather long, and there were a high number of detected 'interesting' words and phrases."
The "Flagged Text" Called out the following, each of which can be expanded:
Advertising
Privacy: ID Number
Privacy: Web Bugs
Promotional Messages
Third Party
Web Site Address
Without Notice
Each of these are expandable. Each expanded item provides an "Interest Level" graph and a link to its place in the License Agreement Text.
PS: I've lurked on/. since before there even were UID numbers, but privacy concerns delayed my signing up. I'm quite frankly surprised at how extensive the policy is and that just shows me how much has changed since the olden days. I should probably check other on-line site's policies to see what's new there, too.
Yes, I can see the learning curve is steep, I must be missing something, though, because lowercase letters (26), uppercase letters (26), digits (10), punctuation (26), and "meta" keys like Escape, Tab, Backspace, Delete, and enter (to name a few) exceeds the 32 chorded characters mentioned in TFA.
I've often wondered if Morse Code could be a viable option for data entry on a small screen. Admittedly, there are some punctuation and capitalization issues with this, as well. Yet, it WOULD permit one to text while not requiring one to keep their gaze on the screen.
I suppose one could split the screen in half (e.g. left/right) to distinguish lowercase from uppercase and to
allow additional symbols to be defined. I doubt I'm the first to think of this, but I've not seen anything like this being available, I thought I'd toss it out for consideration and discussion.
Thanks so much for the timely (9AM, on a Sunday? WOW!) reply!
Glad to hear the GPL should be fine, and I see you've given thoughts as to how to coordinate code/data contributions. As much as I'd like to see us able to contribute to the effort, I can well understand why a read-only repository may be necessary. People could still e-mail diffs, if they so desired, without opening the possibility of someone checking in a malicious update.
"NH mandates paper ballots"... thanks for the info. I've wondered about the feasibility of a two-step approach. Voter fills out an electronic ballot (which checks for things like over-voting, etc.) and then outputs a printed ballot which the voter then verifies and submits THAT as their ballot. The printed ballot is scanned, read, and retained. This permits manual AND automatic [re]counting. Though it might border on Rube Goldberg, I see some promise in the idea and offer it for your consideration, should the opportunity avail itself.
Again, many thanks for your efforts and may you have continued success!
I read the bill (gasp!) and saw procedural mechanisms to encourage the adoption of open data and software... not just a "thou shalt", but rather feedback steps to hold people accountable for the decisions they make. Kudos!
I also noticed in one of your replies in this thread that you are a geek and contributed to the kernel. So, I would appreciate your thoughts on what kind of open source licenses would be acceptable under this legislation. BSD? GPLv2? GPLv3? MIT? Apache? Obviously, you needed a *specific* definition of "open source software" to work from. Here is the bill's definition of "Open source software":
21-R:10 Definitions. In this subdivision: I. "Open source software" means software that guarantees the user: (a) Unrestricted use of the software for any purpose; (b) Unrestricted access to the respective source code; (c) Exhaustive inspection of the working mechanisms of the software; (d) Use of the internal mechanisms and arbitrary portions of the software, to adapt them to the needs of the user; (e) Freedom to make and distribute copies of the software; and (f) Modification of the software and freedom to distribute modifications of the new resulting software, under the same license as the original software.
It seems to me that there would be no problem using BSD-licensed software. The wording is quite nuanced, though, and a careful reading suggests it was intended to also allow GPL software.
At some point, someone will propose using a GPL v2 application . Will that be permitted?
At some point, someone will propose using a GPL v3 application . Will that be permitted?
Can the state make changes available between departments without being obliged to make the software available to the public?
If the state uses GPL code to enhance in-house code, and distributes it to one or more users and/or departments, must it make it publicly available, too?
If so, where and how it such access expected to be made available? (e.g. public GIT repository?)
Okay, one more question: Electronic Voting Machines -- What impact do you see this law having on their design and selection?
Thank-you for your efforts to get this law passed; I look forward to your responses!
Sorry that I don't know the author, but I've found much wisdom in those few words. Perhaps it explains why puns and double entendre(sp?) are so popular?
The first top 500 list was published in June 1993.
The fastest computer on that list was a CM-5/1024
made by Thinking Machines Corporation. It was rated at: 59.70 Rmax(GFs) and 131.00 Rpeak(GFs).
Last place on that first top 500 list (scroll down)
was held by a VP-200 made by Fujitsu/SNI which had 1 core and was rated at 0.422 Rmax(GFs) and 0.533 Rpeak(GFs).
I've heard the expression about carrying a supercomputer in your pocket - how close are we?
I'd expect most of the latest Android/iPhone/smartphones can beat that last-place finisher from 1993.
I'm doubtful that any of these devices could beat that first place finisher, but I suspect desktops (especially with GPUs) should be there by now. If you're are interested, you can get the software from here.
The metrology of time is not holding still. In the April-June issue of Reviews of Modern Physics, experimental physicist Hidetoshi Katori of the University of Tokyo and theorist Andrei Derevianko of the University of Nevada, Reno declared dramatic ambitions for a record-breaking atomic clock based on emissions from mercury atoms.
âoeIf someone built such a clock at the Big Bang and if such a timepiece survived the 14 billion years, then the clock would be off by no more than a mere second,â they note in the paper. That is actually conservative. The goal formally is to lose or gain no more than one out of every billion billion seconds. That is one second in about 32 billion years, and is 10 to 100 times better than any existing clocks.
Algorithms + Data Structures = Programs by Niklaus Wirth
I read this book back in the late 1970's. (I was still in High School where we had time-shared access to a PDP/11-70 running RSTS/E. Programming was in Basic-Plus. To put this in perspective, this was the same time frame as the TRS-80, TI 99/4A, and Commodore PET!) Our SysOp at SPHS saw my voracious appetite for all things computing and STRONGLY encouraged me to get and read this book. (Thanks Mike!) But enough with the background!
This book made an indelible impression on me. It introduced different approaches to tackle problems (algorithms) and different ways of organizing the information I had available (data structures). But, most importantly, it encouraged me to iterate between the Data and the Code to find a reasonably optimal synthesis of the two.
Prior to this, my experience with data structures had been limited to "scalars" (integers, floating point, and some character strings) and multi-dimensional arrays. It was a real eye-opener to be exposed to structured records as well as linked lists and trees!
Similarly, my coding experience was limited to combinations of the usual control structures of sequences, conditional statements, looping, and subroutines/functions. Did I ever struggle trying to understand recursion!
Then, toss in a generous helping of structured programming and step-wise refinement. This single work completely transformed my perspective on programming, its challenges, and its promises... I was hooked for good!
Amazon Link. Prentice-Hall 1975; ISBN 0-13-022418-9; 366 pages, 102 figures.
I later had the good fortune to read a number of the other books recommended here, K&R, TAOCP, Mythical Man Month, and I'd highly recommend those, as well. Nevertheless, I read Wirth's A+DS=P first, and it's made a world of difference in my life.
What is needed just as much as a spell checker is a grammar checker.
Yes! I occasionally need to proofread OCR'd text that has been generated into an HTML file. I've written some code that extracts the text and flags misspellings. That catches a lot of things for me. But, it still misses many errors that a grammar checker *would* find.
Back in the late 80's or early 90's, I purchased an add-on for Microsoft Word 5.0 called something like Grammatik IV.
It did a wonderful job of finding and flagging possible errors for review. Now this is back in the days of DOS! Basic operation was to load a file into Word, activate the grammar checker, and it would step you through each possible error, giving you an opportunity to accept the recommended change, ignore the error, or let you make an ad hoc correction. Then it would step on to the next error.
my google-fu must be slipping as I've been unable to find anything comparable. I thought LibreOffice might help, as it has a grammar checker, but it only seems to be available whe entering new text. Can't seem to find a way to tell it to just start checking from the current point, and proceed onward.
What grammar checking tools have you found useful? (Currently using an old Win/XP SP3 system.)
P.S. Typed on my mobile phone, so I apologize in advance for any typos.
People also have a fondness of diagonals and spirals, although this is noticeable when there are 16 or more buttons. That being said, I'm surprised that 5683 is so common.
(emphasis added)
"5683" are the numbers on a phone keypad which correspond to the letters for "LOVE". FWIW, 5683 also spells: jove, lote, and loud..
Q: What's wrong with complexity?
A: It hides bugs!!
Notwithstanding that some tasks are inherently complicated and there's just no simple way to express it I would posit that the problem with unnecessary complexity is that it hides bugs.
Bugs hide in the edges. They swarm in corners. They positively thrive in interfaces.
Simple (i.e. clean) code helps make the bugs stick out.
There is some business case or need behind each programming effort. That case/need has an underlying language, a grammar, that embodies what needs to be done and when and how. The challenge in software development is to find programming constructs which, inasmuch as is possible, clearly expresses the problem's solution.
Through hard-won experience we've discovered things that suggest where bugs like to hide; what are sometimes called "Code Smells." Massive, nested IF statements. GOTO statements. Global variables. Side effects.
But, these are only symptomatic. There are times when some of these ARE necessary to achieve maximum performance. In other words, not all cases are bad, but they suggest a long, hard look to ensure they are necessary.
Consider programming languages. We started with machine code. Then we wrote assemblers to make it easier to express what we wanted to do. Then came macros and functions. Still later we developed higher level languages. All of these steps allowed us to more easily express what we were trying to do.
Consider this continuum. Case 1: A single program with thousands of lines of code and no functions or subroutines. Case 2: The same application implemented with thousands of functions, each of which contain at most 5 lines of code.
There's probably a sweet spot in between those extremes. A point where the abstractions of what needs to be done closely mimics the problem domain. Where the inputs and outputs are clearly delineated and checked. Where each function is the "right size". As the lowest level functions are implemented and tested, they provide a framework, a language in which one can more easily express what is being done. It is clear what is attempted and how. And it is clear when things are amiss. It makes the bugs "stick out."
When we fail to do this, when we unnecessarily complicate the code, then problems arise. We struggle to grok the code. In this struggle, overwhelmed in trying to follow the "good" paths, we fail to see all its shortcomings. We provide hiding places for bugs. They blend in. They avoid observation. Or, when detected, resist eradication. For some samples, take a look here.
tl;dr. Given: Some problems are just plain complicated and defy any further simplification. Fine. Other problems are amenable to consistent abstractions. When we fail to do that, we introduce unnecessary complexity. We breed bugs.
Started in 1972 with 110 (?) baud dialup on an ASR-33 teletype from Junior High to the High School's DEC PDP-8 mini running TSS88. IIRC it had 8K 12-bit words of memory. Had to dial (yes, rotary dial) the phone number and put the handset into the Acoustical Coupler. Off line storage was to paper tape. Started with BASIC, then moved on to assembler and FOCAL. Then in High School they upgraded to a PDP-11 running RSTS/E. Wow -- was that thing FAST! <grin>
Typed in many, many basic programs from DECUS, and whatever other sources we could find. There were about 4-5 of us who would hang around the "computer room" and grab whatever unused half-hour time slots we could.
First computer I bought was an Ohio Scientific Challenger 4P. Later purchases included: Atari 800, Commodore 64, IBM Clone 286@10MHz.
Besides "Compute "magazine, I also subscribed to "Run", "Byte", and later "PC Magazine". Typing and debugging and trying new things. That was key. An insatiable curiosity as to how things worked and how could I make it do what I wanted it to do.
Ah, good times.
What would be REALLY interesting is if they will also pay employees based on their weight?
I imagine some kind of bonus/surcharge on top of their standard pay rate might be able to work, without it devolving into an unhealthy situation (e.g. bulimia).
FWIW, as requested: 120 digits (was 200 at one time, in competition with a dormmate in college. Hi Rob!)
That experience lead me to question how many digits are useful? Of course, that depends on how you define useful. Computer burn-in testing, theory of algorithms and optimizations thereof notwithstanding, I was thinking more along the lines of physical applications.
Question:What is the largest circular body that I could conceivable try to calculate the circumference of, and what is the finest measurable precision with which I could imagine measuring that with?
Circular body: observable universe : approximately 8.8x10^26m in diameter.
Minimal length: Planck Length : approximately 1.616x10^-35m.
Answer: Let's ask Wolfram Alpha to compute and confirm that for us using: http://www.wolframalpha.com/input/?i=convert+diameter+of+the+observable+universe+to+planck+lengths which produces a result of: 5.4x10^61.
Conclusion: *IF* we could measure the diameter of the universe to within +/- one Planck length, then, within significant digits of accuracy, we would need no more than 61 digits of Pi to compute its circumference.
If you've followed this far, I now have a question for you: what is the largest actual number of digits of i you have actually seen needed and in what context?
All I can say is... Cool!!
<grin>
All your secret are belong to us?
DISCLAIMER: I have NOT read any of the EULA for their service, and this may be covered therein.
<hat style="tinfoil"> An exaggeration, I know. Still, the cynic in me can't help but imagine that someone else has come up with the idea of using, say, a keyword list and filtering certain "interesting" communications aside for further scrutiny. They have the source and destination telephone numbers, too. Since they ARE a phone company, it would be easy enough to pre-populate a filter with phone numbers. Of course, they'd need to be circumspect about it, because if word got out, it might dry up business. Sure, there's also Google's translate service as well as Apple's Siri, and a host of others (email, voice mail, etc.)</hat>
IOW, Is it a wiretap when both parties voluntarily go through your service?
LOL! (Wipes coffee from screen)
Nice try at Klingon, but I think you misspelled the commander's name?!
Sounds like fun! Can you provide a link so we can see? I'm struggling to imagine how in the world it could take 1200 lines! Long ago, I stumbled upon a huge hello world program that used "standard" code for arg parsing internationalization, localization, etc. but I don't recall it being anywhere near THAT large!
Thanks again for the laugh!
Good suggestions!
For those books which lack a bar code on the jacket, make a book cover and apply the bar code to THAT. (Was a rite of passage every school year as a child that we'd make book covers for all our books. By ten-years-old, I was doing all my books unassisted. We just used paper grocery bags, but you could certainly use some kind of low-acid paper if you'd prefer.)
As for constructing a bar code, there's free bar-code software out there (I've used pbmupc). The basic format is a 1-digit type, a 5-digit manufacturer code, a 5-digit product code, and a check digit. Create a manufacturer code that's reserved for your non-UPC'd books (31337 would be cool, but I think it might already be taken), and then just use a sequence number to identify the individual books.
Lastly, have fun! It's certainly a more interesting project than writing a "hello world" program!
The article suggests that ad hoc collaboration was important for their success.
Not especially noted, though, and far more important in my mind, is that workers had their own "huts" where they could customize their work space to their liking and which provided isolation from distractions. This, to my mind, facilitates concentration.
There are times when I want to bounce a problem off someone and get a fresh perspective. More frequently, though, I just want a few hours without interruption or distraction. A 2-minute question from a coworker can require me to take 20-30 minutes to get back into the zone and get my mind back around all the details that I am trying to sort out.
Providing separate spaces for concentration and for collaboration is the key.
If the yield is half that of corn, and you need 26 lbs. of corn for one gallon of ethanol, then you'd need 52 lbs. of this waste for one gallon of ethanol. So, divide by 52 instead of 13. This would reduce the yield you calculated by 4.
This could still (pun intended) be used by the vintner to potentially reduce their operating costs, and maybe produce a surplus. Depends on cost of the equipment, efficiency, etc.
There's (at least) two sides to this:
Personal:
Credit agencies: So, this is a tech site, but before getting down-and-dirty with trying to fix his computer I would strongly suggest contacting the credit bureaus and put a hold on things. This will protect him from someone trying to open a new credit account in his name.
Credit cards and Banks: Depending on your level of paranoia, have him contact his credit card companies and banks and ask them to issue new cards. Of course, that may in turn require updating any pre-authorized billing he may have set up.
Authorities: Consider contacting the police and/or your Attorney General. They may be interested to hear a report of this.
Technical:
Forensics. If there's any question about needing to retain documentation about this, consider pulling the compromised drive and storing it. If access to existing data is necessary, put in an external enclosure, mount it read-only under Linux, and copy data from it.
Passwords: change passwords on all on-line accounts from a non-compromised system.
History: Look in whatever history information you can get. Take a look at his browser history, firewall log, command line history, registry, etc. This may help you to assess what level of damage you're dealing with.
Clean or Fresh? One can probably get away with formatting the drive and reinstall. But, in full paranoia mode, have him buy a new PC (cost of this provides reinforcement of prior warnings that were ignored.) Restore data from malware-scanned backups or from read-only access from pulled drive. I've read reports about malware hiding in USB keyboards and printers, so a reformat and restore onto the original machine may not be sufficient.
Family:
Possibly the hardest part of this is the fact that you're dealing with a parent. They were (hopefully) patient when you were learning all about the world as a child. It's helpful to try and bring an attitude of patience and tolerance to this situation. Let him face the consequences of his actions by having him make the phone calls to banks, credit agencies, etc. Let him pay for the cost of a new drive or PC. (Negative reinforcement) But also thank him for being honest with you about what he had done. Better this than to find out later he'd been scammed out of thousands of dollars because he was afraid to tell you what he had done. (Positive reinforcement.)
Finally: good luck!
Many thanks! Great article! Looks like getting the clock signal across the chip is an understood problem.
Which leads me to a question I'm not sure how to phrase, so please bear with me. At a high level, there's "data" and there's "processing". It seems to me that as we crank up the clock rate, latencies in accessing the data can be problematic unless the data is "nearby" I recall that Intel was working on Knight's (bridge? landing? something-or-other) which had lots of smaller cores on one die. IOW, it gets the processing and the data closer together. Is that the shape of things to come? What other technologies, if any, are available to keep the flow of processing at its peak?
Thanks again for the clock mesh info!
That makes sense! Thanks for the reply!
P.S. Editors - Please, more articles like this one! I *really* appreciate having a chance to ask questions, and learn from, experts in the field instead of relying upon dumbed-down, PR fluff pieces.
That sounds great, but at those speeds the distance traveled per tick gets *much* smaller. I see a challenge in trying to propogate(sp?) a clock signal across the chip to have things work in concert with each other. I'm more a software guy than HW so I may be missing something obvious? ISTR an article here about a year or two ago about clockless logic. Would we need something like that in order to make a modern CPU out of this tech?
tl;dr How do you keep the clock from getting skewed up?
Have you considered astronomy or sub-atomic physics?
For example, Kepler, which examines a vast amount of data trying to find slight dips in stars' brightness to detect exoplanets. Contact the folks at planethunters.org for info and ideas.
Most any large-scale telescope's operation entails finding needles of information in haystack of data. VLT, SKA, etc.
Also take a look at particle physics ala CERN and the search for the Higg's particle. Again, analysis of vast amounts of data that I'd think CUDA skills would be of great help.
For starters, I'd search Wikipedia for telescopes and spider out from there on all the different kinds, and the projects they are used on. Ditto for sub-atomic particles.
Best wishes on your pursuits!
Disclaimer: I am not affiliated with this source in any way; just a very satisfied user.
Check out the free EULAlyzer which can be downloaded from: EULA Research Center. EULAlyzer works on Windows 2000, XP, 2003, Vista, and 7.
Example: I took a look at the Privacy Policy for /. which is located at:
Geeknet Privacy Policy . "(Last Updated February 29, 2012)
(Effective Date May 24, 2008)"
EULAyzer summarized as:
The "Flagged Text" Called out the following, each of which can be expanded:
Each of these are expandable. Each expanded item provides an "Interest Level" graph and a link to its place in the License Agreement Text.
PS: I've lurked on /. since before there even were UID numbers, but privacy concerns delayed my signing up. I'm quite frankly surprised at how extensive the policy is and that just shows me how much has changed since the olden days. I should probably check other on-line site's policies to see what's new there, too.
Yes, I can see the learning curve is steep, I must be missing something, though, because lowercase letters (26), uppercase letters (26), digits (10), punctuation (26), and "meta" keys like Escape, Tab, Backspace, Delete, and enter (to name a few) exceeds the 32 chorded characters mentioned in TFA.
I've often wondered if Morse Code could be a viable option for data entry on a small screen. Admittedly, there are some punctuation and capitalization issues with this, as well. Yet, it WOULD permit one to text while not requiring one to keep their gaze on the screen.
I suppose one could split the screen in half (e.g. left/right) to distinguish lowercase from uppercase and to allow additional symbols to be defined. I doubt I'm the first to think of this, but I've not seen anything like this being available, I thought I'd toss it out for consideration and discussion.
Thanks so much for the timely (9AM, on a Sunday? WOW!) reply!
Glad to hear the GPL should be fine, and I see you've given thoughts as to how to coordinate code/data contributions. As much as I'd like to see us able to contribute to the effort, I can well understand why a read-only repository may be necessary. People could still e-mail diffs, if they so desired, without opening the possibility of someone checking in a malicious update.
"NH mandates paper ballots"... thanks for the info. I've wondered about the feasibility of a two-step approach. Voter fills out an electronic ballot (which checks for things like over-voting, etc.) and then outputs a printed ballot which the voter then verifies and submits THAT as their ballot. The printed ballot is scanned, read, and retained. This permits manual AND automatic [re]counting. Though it might border on Rube Goldberg, I see some promise in the idea and offer it for your consideration, should the opportunity avail itself.
Again, many thanks for your efforts and may you have continued success!
I am impressed; well done!
I read the bill (gasp!) and saw procedural mechanisms to encourage the adoption of open data and software... not just a "thou shalt", but rather feedback steps to hold people accountable for the decisions they make. Kudos!
I also noticed in one of your replies in this thread that you are a geek and contributed to the kernel. So, I would appreciate your thoughts on what kind of open source licenses would be acceptable under this legislation. BSD? GPLv2? GPLv3? MIT? Apache? Obviously, you needed a *specific* definition of "open source software" to work from. Here is the bill's definition of "Open source software":
It seems to me that there would be no problem using BSD-licensed software. The wording is quite nuanced, though, and a careful reading suggests it was intended to also allow GPL software.
Okay, one more question: Electronic Voting Machines -- What impact do you see this law having on their design and selection?
Thank-you for your efforts to get this law passed; I look forward to your responses!
Sorry that I don't know the author, but I've found much wisdom in those few words. Perhaps it explains why puns and double entendre(sp?) are so popular?
The first top 500 list was published in June 1993. The fastest computer on that list was a CM-5/1024 made by Thinking Machines Corporation. It was rated at: 59.70 Rmax(GFs) and 131.00 Rpeak(GFs).
Last place on that first top 500 list (scroll down) was held by a VP-200 made by Fujitsu/SNI which had 1 core and was rated at 0.422 Rmax(GFs) and 0.533 Rpeak(GFs).
I've heard the expression about carrying a supercomputer in your pocket - how close are we? I'd expect most of the latest Android/iPhone/smartphones can beat that last-place finisher from 1993. I'm doubtful that any of these devices could beat that first place finisher, but I suspect desktops (especially with GPUs) should be there by now. If you're are interested, you can get the software from here.
Any takers? How does YOUR system compare?
Time keeping is getting better and better. I just happened upon this article recently which gives some history on timekeeping and what some of the latest efforts are working on: http://www.sciencenews.org/view/feature/id/334983/title/The_Ultimate_Clock.
Here's an excerpt (emphasis added):
Algorithms + Data Structures = Programs by Niklaus Wirth
I read this book back in the late 1970's. (I was still in High School where we had time-shared access to a PDP/11-70 running RSTS/E. Programming was in Basic-Plus. To put this in perspective, this was the same time frame as the TRS-80, TI 99/4A, and Commodore PET!) Our SysOp at SPHS saw my voracious appetite for all things computing and STRONGLY encouraged me to get and read this book. (Thanks Mike!) But enough with the background!
This book made an indelible impression on me. It introduced different approaches to tackle problems (algorithms) and different ways of organizing the information I had available (data structures). But, most importantly, it encouraged me to iterate between the Data and the Code to find a reasonably optimal synthesis of the two.
Prior to this, my experience with data structures had been limited to "scalars" (integers, floating point, and some character strings) and multi-dimensional arrays. It was a real eye-opener to be exposed to structured records as well as linked lists and trees!
Similarly, my coding experience was limited to combinations of the usual control structures of sequences, conditional statements, looping, and subroutines/functions. Did I ever struggle trying to understand recursion!
Then, toss in a generous helping of structured programming and step-wise refinement. This single work completely transformed my perspective on programming, its challenges, and its promises... I was hooked for good!
Amazon Link. Prentice-Hall 1975; ISBN 0-13-022418-9; 366 pages, 102 figures.
I later had the good fortune to read a number of the other books recommended here, K&R, TAOCP, Mythical Man Month, and I'd highly recommend those, as well. Nevertheless, I read Wirth's A+DS=P first, and it's made a world of difference in my life.
What is needed just as much as a spell checker is a grammar checker.
Yes! I occasionally need to proofread OCR'd text that has been generated into an HTML file. I've written some code that extracts the text and flags misspellings. That catches a lot of things for me. But, it still misses many errors that a grammar checker *would* find.
Back in the late 80's or early 90's, I purchased an add-on for Microsoft Word 5.0 called something like Grammatik IV. It did a wonderful job of finding and flagging possible errors for review. Now this is back in the days of DOS! Basic operation was to load a file into Word, activate the grammar checker, and it would step you through each possible error, giving you an opportunity to accept the recommended change, ignore the error, or let you make an ad hoc correction. Then it would step on to the next error.
my google-fu must be slipping as I've been unable to find anything comparable. I thought LibreOffice might help, as it has a grammar checker, but it only seems to be available whe entering new text. Can't seem to find a way to tell it to just start checking from the current point, and proceed onward.
What grammar checking tools have you found useful? (Currently using an old Win/XP SP3 system.)
P.S. Typed on my mobile phone, so I apologize in advance for any typos.
(emphasis added)
"5683" are the numbers on a phone keypad which correspond to the letters for "LOVE". FWIW, 5683 also spells: jove, lote, and loud..