Imagine a programming language that was designed using a largely visual interface. You would literally paint your code with your fingers. Want a loop? Make a circle with your fingers on the screen. Want an if-then control statement? Start with your fingers together and split them apart on the screen. Want an if-then-else statement? You'll need to use three fingers for that. Want a comparison? Drag the objects and their properties into the control statement and rotate them to find the properties to compare (and use your fingers to decide what comparison operator to use). Want a sub-routine or new object? Start painting it on a different page (or section of the screen, which could optionally allow for variable scoping), and then link it as necessary in your program.
Perhaps the IDE would look a little bit like a cross between a block language and a mind-mapping tool? If you needed more fine-grain control over individual structures, you could switch to a text interface, but I wonder how much of your core code you could do with a purely visual interface?
(Image credit: JISC Digital Media)
I watched someone take a photo of a slide during a presentation today, and I wondered if there was a more efficient way to share the slides. If you actually want the information on the slide, I can imagine that a possibly blurry photo of the slide from a distance is less than ideal. I can think of a couple of ways (as a presenter) of making the process of your audience accessing your photo/slide easier.
Any other ideas?
(Image credit: Dino ahmad ali)
I have no idea if this is even possible, but I remember wondering where all the solar panels would go if we were to convert our cities into running as much as possible on solar power. I realized that most cities are covered with many square kilometres worth of roads, and then I thought, wouldn't it be nice if these roads could do double duty?
The idea is basically to figure out a way to convert existing road space into solar generators (while still allowing cars to drive on it). The material used would have to be affordable, but it wouldn't need to be ultra-efficient (large amount of area, but low amount of efficiency would still lead to a lot of energy captured). Alternatively, the system could be based on capturing heat from the road (much of which would come from the son, but some would come from the cars on the road itself).
One advantage of using roads is that they are regularly upgraded and maintained, so you could eventually convert all of the roads over time through this maintenance, as opposed to having to install solar panels in new locations.
Two obvious questions: How much of the energy generated would dissipate before it could be used? How durable would this theoretical material have to be?
I often find myself reading articles online, which almost always have quotes embedded within the article. I then copy the person's name, and search for them on Twitter and other social media, to get a sense of who they are.
I would love to have a browser extension (perhaps hooking into the context menu) which would do this for me. It should be easy to use: highlight the person's name, and then right-click and choose the "who is this?" option from the menu. An overlay would appear which would let you choose between the different possible people (which is often easy, depending on the context of the article) represented by their selected social media profiles (as configured in the settings of the extension).
Can someone build this for me?
The biggest problems I see with all of the popular social media products are
I'd like to see a decentralized and open-source product introduced to change this.
Update: This exists, see Diaspora.
One way to describe the effect of gravity on other masses is as a distortion in space time. Is it appropriate to use this analogy for understanding the geometry (from a magnetic particle's perspective) in a magnetic field?
Is it possible that some black holes could have a electromagnetic field so strong that no particle with charge could ever escape? Would the magnetic-event horizon for such an object extend beyond the gravity-event horizon?
(Image credit: pshab)
Our society already funds roads, schools, libraries, community centres and other things which serve the public good. Why not fund a public space online, free from advertising and complicated terms of service?
The cost of such a service would be minimal compared to the overall cost of the infrastructure we currently support. It could be moderated by promoting people who have established themselves as leaders of their community.
We desparately need somewhere online where we can discuss ideas openly without being the product, without being advertised to non-stop. If this Internet thing is to be something with which we promote and discuss democracy, then we need some democratic space set up within it.
Twitter, Facebook, Google are useful services, but their corporate model ensures that they view you as a product and that isn't healthy for democracy.
Would it be messy? You bet, but then so is democracy.
Imagine a day in the future when you sit down at your terminal (or perhaps while taking a walk in the park?) and you can design your own software through a verbal user interface. Here's a story to try and explain what I mean.
While walking in the park...
You: "Computer, I would like to create a program today."
Computer: "What do you want your program to do?"
You: "I need it to process this data I'm collecting for my company and present it so that my employees will understand it."
Computer: "Do you mean the data set you collected yesterday at 2:35pm?"
Computer: "Do you want me to access the public code repository? There are some libraries there that will help."
You: "Yes, please."
Computer: "Processing, processing, processing. Done. Do you want to view your program?"
You: "Can you send it to my office so I can view it there?"
Computer: "Yes. Done."
Back at the office...
You: "Computer, bring up the program I started in the park."
Computer: "Now displaying."
You: "Okay, can you change the theme? I'd like it to be a bit more metallic. Use the Zen design principles please."
Computer: "Processing, processing, processing. Done."
You: "Hrmm. This isn't working quite as I'd like. Do you have a subroutine to allow them to edit the data at this point (points to screen) and add an overlay of the data in a visual timeline?"
Computer: "Checking public repository.... I have found a similar algorithm but it will probably need some minor changes. Would you like to use it and modify it yourself? The license allows you to use it for commercial purposes."
You: "Okay. I have a couple of hours here, I'll work on fixing that part of the code."
Computer: "Would you like to automatically share your code to the public repository?"
You: "Yes. Thank you, use the CC-BY-NC license."
I expect some day that most software will be mostly designed visually rather than written in text. Software libraries will exist in public repositories, and computers will assemble the code for us, rather than us assembling the code on a computer. Programmers will be more like artists, finding ways to combine algorithms and subroutines much like a painter assembling paint onto a canvas.
I was speaking with a visitor today about how I think kids learn, and the topic of programming came up. He suggested that one reason people find programming so hard to learn is that the syntax had to be exactly perfect in order to get anything to work. He said imagine if you couldn't communicate anything in a language until you had perfect syntax; you'd never learn the language!
So my response was, maybe we need to fix the compiler? What if the compiler understood poor syntax and was able to correct it to better syntax for a user (or at least offer some possible suggestions for improved syntax, with examples of the output of each version of the syntax)? Instead of a dumb compiler that needs exactly the right information entered into it, you'd have an intelligent compiler that would be able to interpret poorly written code, and still produce some sort of useful result.
This problem is often addressed by creating incredibly simple syntaxes (for example: block languages, like what exists in Scratch) but as I've noticed, students sometimes struggle to convert the block languages into text code blocks. Instead of simplifying the language, let's widen the range of acceptable syntax, while at the same time still giving some feedback to the learner.
An aside: what if we could do this in math as well?
What if every digital object (photo, learning resource, website) had an attribution metatag?
In a similar way that encryption keys are handed out by a small number of parties, digital resources could be tagged with encrypted information which can be easily matched against a database to find out who created the object, but which would be difficult (impossible?) to fake.
The objective of these attribution meta tags would not be to make content rights easier to manage (although this would be a consequence), but to act to improve the reliability of online data and resources. It would also allow for searching for resources created by individuals.
Obviously such a system would be an opt-in system.
We all know the end of oil is coming, and with it, the end of cheap energy. Biofuels, alternative energies, all of these are only going to get us so far. One of the major consumers of energy on this planet is the shipping of goods across the globe. We ship supplies to one part of the globe, and then ship manufactured products back again.
Imagine if instead of having to ship goods, we could ship 3d digital models over the Internet instead, and then print these on demand. At first, products could be printed in local manufacturing plants (perhaps even on the same grounds where customers would go to pick up their orders, which would also significantly reduce warehousing needs) and supplied to local consumers, and eventually, consumers could print their own models directly, perhaps paying for licenses to create these products, or for the equipment necessary to do the production themselves (and have some licensing costs built into the cost of the equipment). Imagine an ecosystem where the consumer is the designer and manufacturer of their own products and that those products weren't limited to what capability the consumer has with typical DIY tools.
As production rose, so would production quality, and ever more intricate devices could be constructed with these machines. With the inclusion of the open source model, much of what we pay for today could be nearly free as we would just have to pay for the machines (and the energy to run them) and the supplies necessary to construct the models.
Imagine you put your food into a re-usable container, but before putting it into your refrigerator, you scan it first, and when prompted, tell your refrigerator what it is (either verbally, or using text). Your refrigerator (or a small computer attached to the outside of it for "analog" refrigerators) records what you've entered into it, and the date and time you entered it. Every time you remove something from your refrigerator, you scan it on the way out, so that the refrigerator always has a record of what is inside it, and when it was placed inside it.
You could then ask your refrigerator (using voice-recognition software) what would be good to eat, and your refrigerator could also remind you that your food needs to be eaten soon. Further, if you also scanned in raw ingredients (and maybe did the same for dry goods stored in your cupboards/pantry), your refrigerator could recommend recipes. Your smartphone could have an app which was aware of the data from your refrigerator, and could act as a shopping list. Or, instead of an additional device on the refridgerator, each person who used the fridge could have the app on their phone.
I wonder how long it would take such a system to save you enough money from not wasting food so that it would be affordable?
What if parking meters were smart enough to indicate when the attached parking spot was in use, and when it was no longer in use? What if this information was available on the web (or through an app) so that anyone who was looking around for parking could pull off the road for a moment and look up some of the easiest places in the city to park?
What if this information was used to inform city planning? What if the prices of parking were dependent on how busy the surrounding area was, so that commuters were encouraged by lower prices to park in less densely packed areas of town? What if similar parking density meters were installed everywhere there was parking, even if that parking was free?
I'm tired of PowerPoint, and I find Prezi's spinning and zooming hard to follow. I'm tired of having to use third parties tools to embed websites with limited functionality so that I can embed my gizmos in my presentation. The web has been around for more than 30 years; why does today's presentation software consider it an after-thought? Why is it so difficult to use hyperlinks to link within a presentation itself?
I want presentation software that will:
I'm sure I'll come up with some more features, but this is good enough for now.
I was wondering in the shower today if when a star collapses into a black hole, if individual particles are "crushed" under the pressure from gravity and collapse into a singularity, and if many different particles will experience this simultaneously, would this process result in multiple singularities inside the event horizon of the black hole? Also, if an individual particle started falling toward a singularity, it would presumably cross the threshold for pressure (after which point it would itself collapse into a singularity) before it contacted the singularity.
It occurred to me that two (or more) orbiting singularities would never meet (this assumes that space-time is continuous), and so if the process of creating a black hole ended up resulting in multiple singularities inside the event horizon, these singularities would never merge. Presumably they would eventually end up in very tight orbits inside the event horizon, but even in this case, it would presumably mean that the event horizon itself wouldn't be completely spherical, (or elliptical), and that you may be able to measure this difference.
The first incompleteness theorem states that no consistent system of axioms whose theorems can be listed by an "effective procedure" (e.g., a computer program, but it could be any sort of algorithm) is capable of proving all truths about the relations of the natural numbers (arithmetic). For any such system, there will always be statements about the natural numbers that are true, but that are unprovable within the system. The second incompleteness theorem, a corollary of the first, shows that such a system cannot demonstrate its own consistency.
Is there a relationship between Gödel's first incompleteness theorem and the ability of humans to hold seemingly self-contradictory thoughts?
In other words, has our brain been designed in such a way as to allow us to prove as much as possible about the universe, and consequently we must hold some thoughts in a contradictory fashion; we hold an inconsistent set of axioms about the world, and so we can potentially prove anything about the world (although many proofs would be invalid, but to an inconsistent system, perhaps an invalid truth is acceptable?).
People go up escalators, people go down escalators.
What if the energy potential of the people going down an escalator was used to power an escalator going up? You'd still have to add energy to the system, but there should be some way to save at least some of the energy used when the escalator carries many thousands of kilograms of people down, to help power the escalator on the up side.
Clearly this type of system would work best when the relative rates of people going up and down on the escalators are approximately equal. In many rush hour situations, this simply isn't true. However, even a modest savings of energy for a system which runs 24/7 every day of the year would be worth exploring.
Update: It seems to me that this idea is not likely to be original, and that someone has probably implemented it. Let me know if this is the case, and I'll update this post.
Imagine you get in your car, and drive it to the highway, where you pause for a moment to physically join with 5 or 6 other cars. Now you join the highway, which automatically moves your mini-train of cars at the fastest "safe" speed possible, before moving you off of the highway so that you can decouple from the other cars in your unit, and continue on your way to work.
There would be a few advantages of this system
Public policy based entirely on ideology is flawed. Our objective is often to ensure that our citizens have their needs met, but when we change our course dramatic and capriciously (as often happens after an election), we often fail our citizenry. Through the open government movement, and the open data movement, we have an opportunity to change some of this.
What if we decided on public policy based on what works, rather than our feelings about it? We could take 10 randomly selected public policies, all intended to address the same issue. Apply them as public policy to 10 randomly chosen similar jurisdictions (cities would probably have to collaborate to do this) and use the data collected from those jurisdictions to find out how effective the policies are. We would then discard all but the 3 best performing public policies, and randomly select 7 new policies to replace the ones lost, and rerun the experiment. We could tweak the three policies we've chosen (using some random variation on the various aspects of the policies).
Alternatively, once we have enough data collected from enough jurisdictions via the open data and open government movements, we could enter in all of this data into a computer, and run the policy algorithms on a simulation, rather than in the real world. At the very least, this computational approach could narrow down the field to policies which seem effective.
At the very least, the open data movement should allow us to do more effective research on public policy, but it would be interesting to see if any municipalities or governments would be open to an experiment of this kind.
What would a university look like where every course was open and accessible to any interested student?
The whole reason we'd use a brick and mortar institution is to attempt to preserve as much of the structures of universities which are vital, in my opinion, to their position in our democracies. For example, I see universities as places where people with very different ideologies meet (and often conflict) and in online institutions, I think differing world views are quite often siloed from each other.
Imagine a place where students could drop in and attend lectures, learn how to use lab equipment, and access learning materials on demand, rather than on the administrative schedule of the university. Students would pay a flat fee to attend the university, rather than paying per course. The onus would be on the student to attend classes, and as many of them as they like, and as often as they like.
Students could meet with faculty advisors who could help them chart a course through the university. They could submit assignments to an assessment centre (digitally) which could give them feedback on their thinking. Students could use the information given to them by the assessment centres to guide their learning. As the students submit assignments and demonstrate mastery of concepts or skills, they could receive digital badges indicating mastery in a certain area. Collect enough badges, and you get certification. Collect more, and you get the equivalent of a degree. If a student failed to complete a degree, they could likely still demonstrate mastery of a subset of concepts.
The pace through the university could be self-directed by the student. Instead of focusing on the "four year degree," students could focus on mastery learning, and emerge from the university based on how much they've accomplished, rather than how long they've attended.
Students could move from a course which is too difficult for them to one that is more appropriate to their background without the expensive surcharges many universities use to discourage this practice. Courses could be structured to open on continuously enrollment, and given a large enough campus, Calculus 100 could start fresh every week. If a student attempts week 1 of Calculus 100 and doesn't get it, they could try it again, perhaps with a different instructor, or with more support, instead of having to wait until the end of the semester to restart the course.
Students could transfer between similar university systems using their badges as evidence of learning, rather than transcripts. Essentially, their assessments of their learning would be their transcripts rather than uncertain standards between different instructors.
While there are obviously some issues with this idea (I can think of a half-dozen objections to it off the top of my head), I'd be interested to hear how we could extend it.