Voice Cancelling Headphones

Finally we’re ready to announce our new invention, our voice cancelling headphones!

Cancel voice? Do you guys mean noise cancelling? No, this is such a new concept we fear that it will be misunderstood, which is proven by research[1]. It really is voice cancelling we mean.

Ever been in a meeting and felt the need to wished you mute the voice?

After years of research, using a digital innovative algorithmic and heuristic approach to our alcoholistic[2] and interdisciplinary agile strategy, we have come up with a concept so delicate we will literary blow your mind – or perhaps preventing your mind to be blown by the bombardment of voices. By using our innovative headphones we give you a chance to endure lectures[0], meetings, seminars, conferences and so on. We offer our headphones in different price levels.

Basic voice cancelling headphones

Using our basic voice cancelling concept we offer you a chance to finally go into meeting and feel completely safe. These headphones cancel all voices.

Of course you can listen to music using our headphones.

Price: €970

Filtered voice cancelling headphones

Want to to go meeting and chose whoever you want to listen to? Then this headphone is something for you. By default this headphone cancels all voices but you can, by using our sophisticated yet simple holistic recording device, allow some voices to be heard.  You can even prepare for a meeting by letting the headphones listen to your phone calls and with our dedicated app you can use these voices as a filter. Why not use Vimeo or Youtube to prepare filters for you.

With these headphones, we know you will have a nice and fruitful experience when attending meetings.

Price: €1270

Big data AI filtered voice cancelling headphones

Using Big Data, AI and our sophisticated algorithms we offer you a chance to scan the warning text[3] or books[4]. Yes, these headphones come with a built in scanner. And of course these headphones come with all the features in the cheaper models.

By letting our headphones scan just two sentences of Jacques Derrida[5] we succeeded in cancelling the voices in videos from all post modernists. Yes, this is a dream come true.

Price: €1570

[0] https://vimeo.com/user52531669

[1] https://en.wikipedia.org/wiki/Don%27t_Let_Me_Be_Misunderstood

[2] https://en.wikipedia.org/wiki/Holism

[3] https://en.wikipedia.org/wiki/Abstract_(summary)

[4] e g http://wiki.juneday.se/

[5] https://en.wikipedia.org/wiki/Jacques_Derrida

How many ‘i’ are there in “Liverpool”

One of our favorite annoyances in programming education is the useless or even stupid exercises we hand out to our students. This is especially annoying given that we, the teachers or educators or whatever we want to be called, claim that the students are lazy when we’re the really lazy ones not bothering to write proper exercises.

So, enough is enough.  We must stop writing all these stupid (beyond belief) exercises.

An example of stupid exercise

Take a look at the exercise below. It is a version of typical exercises for students learning how to program in C, but it applies to Java and other languages as well.

Ok, to the exercise:

Write a program that counts the number of ‘i’ in “Liverpool”

Why isn’t that a good exercise? Let’s discuss this shortly:

  1. Why write a program for this when everyone already knows the answer? Can you honestly say that there exists a student that can’t answer this wothout writing a program?  .….the exercise is boring and useless.
  2. You’re solving a very specific problem with an equally specific program. …the exercise is not general.

In defense

We (this blog’s authors) have learnt from experience that there seems to exist a, sort of, catch-all explanation to the existance of exercises (and all other things in programming education) like these. The phrase goess:

It’s a classic!

OME (Oh my Emacs)! How could this possibly be a motivation behind anything? It used to be a classic that the world was flat. Is it still a good explanation? We will tag all our posts dealing with this stupid and ignorant explanation with the tag “classic“. If you ever motivate anything with “it’s a classic” chances are you should remove it.

Towards a better exercise

Ok, if the two of us are so damn good (actually we’re not claiming we’re good but we are claiming that we’re trying) what is our take on this?

We’re not saying that the exercise above is 100% useless. Ok, as it is written above it is probably 99% useless and stinks. But fact is, we believe it serves as a nice starting point for a larger exercise with a progression. Here are some suggestions on what can be done to make the exercise more useful. Let’s turn the exercise into several exercises (in progression):

  1. Write a program (with a main function) that counts the number of ‘i’ in “Liverpool”
  2. Put the code doing the count in a separate function. 
  3. Make the function general – any letter in “Liverpool”
  4. Make the function more general – any letter in any text
  5. Make the function even more general – any (sub)string in any string
  6. Make use of existing API functions
  7. Make the function robust
  8. Put the function in one file and the main function in another
  9. Write tests
  10. Write a function printing out the lines containing the string “liverpool”. This is not general – but a useful start. 
  11. Write a function printing out the lines, in a file, containing any string., using the function above. This is not general enough – still rather useful. 
  12. Write a function printing out the lines, as read from stdin (a stream) or a file, containing any string

Compare the program with the grep command. The student now has her/his own version of the program grep. 

Note: in some languages the word function above should be replaced by method. 

Why is this so much better?

Simply because:

  • the resulting code is more general (and quite useful)
  • the code can be reused (since put in a function)
  • the code is tested
  • the student has implicitly been taught and practiced HOW TO go from a specific problem to a general solution

Extending the exercise even more

We could add even more tasks for the students

  1. Use a versioning control system (e g git)
  2. Add automatic build software (e g make, ant, gradle) to control the building/compilation
  3. Add © notice
  4. Add license
  5. Comment the code
  6. Write API manual (javadoc, doxygen…)
  7. Check code coverage on our tests
  8. …..

We try hard to avoid exercises like the above in the books we (the authors behind this blog) are writing:

The books come together with videos:

The books and videos are public and licensed under a free license so feel free to use.