Quick noise removal with Audacity

During JCrete conference, every session was recorded onto a small audio recorder that was standing in the middle of the room. Obviously, you can’t expect good sound quality when people are making all kinds of noises. Such recorders require a decent amount of post processing, which takes time, which no one has. Below are some simple steps describing how to lower the noise and amplify the audio level with a free program Audacity.

1. Download and install Audacity and LAME MP3 encoder.
2. Start Audacity and import your audio file using the menu File | Import.
3. You’ll see the graphics of the audio tracks.
4. Now you need to identify the noise to be filtered out from the audio. Several times hit the button on the toolbar that looks like the looking glass with the plus sign to zoom in.
5. Highlight a 2-3 seconds fragment with the noise only.
6. Select the menu Effects | Noise Removal and press the button “Get Noise Profile” so Audacity knows what to remove from the recording.
7. Click anywhere on the track to unhighlight the sound fragment.
8. Select the menu Effects | Noise Removal again, but this time just press the button OK. Audacity will start processing your audio removing the audio sample that matches your selection from step 6.
9. If there is still some noise GO TO step 5. If you don’t like the results of the second noise removal, select the menu Edit | Undo Noise Removal.
10. Amplify the sound level by selecting the menu Effects | Amplify. Enter a number (e.g. 5) and check off the box Allow Clipping.
11. If you want to remove unwanted noisy fragments, just highlight it and hit the button Delete on the keyboard.
12. Save the new version of MP3 by selecting the menu File | Export. Pick the mp3 format. Save it as a Joint Stereo and select the rate 32kbps, which is sufficient for the speach recording in a non-audio-friendly studio, and the file size won’t be too big.

Java unconference in Crete. Day 4.

The fourth day started with the session “Scaling up teams. Motivating people to learn new languages”. It was a discussion about why not too many developers are willing to learn new programming languages. We were talking about two real-world situations:
1. The team lead gives developers 30 min a day to learn whatever software they want, but they use this time for coffee.
2. The team lead makes arrangements with the management to take 5 people to a hackaton instead of going to work at the firm’s expense – only three out of 60 people signed up for it.

IT managers often face the choice: either hire professional contractors experienced in specific language/framework/tool or train their own employees. IMO, lack of motivation is damaging to any IT shop, and people who are unwilling to keep their skills up to date should be let go. The sooner the better.

The next session was “Embedded Java”, which presented another proof that the unconference format works really well. Four people gathered in the room and everyone said that he was interested in this subject and hoped that someone else had a real-world experience working with embedded Java. No one knew much about it, and the session lasted for 10 minutes. Mattias Karlsson had this little chip with Java SE embedded. One of the use is to hang it on the trees in the forest. If the chip’s moving it’s a signal that some intruders are illegally cutting these trees. Programming for embedded devices is an interesting trade that requires software developers to write efficient code that can run in the devices with limited memory and slower CPUs.

Then I’ve joined the session titled “Devops Tooling”. Devops are species that beside writing code are curious about how it’ll run in production. Typically devops are breeded in startups. Do you care if your programs log messages that can be useful for people from operations and customer support? If yes, you have a chance to join devops population. If you went as far as setting up monitoring tools so people from operation could be aware of the status of your app without the need to bother your highnessy – you have arrived to your destination. On the photo you see three Carl Quinn, Mattias Karlsson, and Kirk Peperdine participating in the devops discussion.

SONY DSC

For me the technical part of the conference finished in the room labeled “Functional programming in the post JDK 8 world” convened by Andres Almiray.
Andres stated that if you like it or not – you’ll be doing functional programming.
Juergen Strobel noted that in Java you should think first of a proper immutable structure, and then use functions. Java 8 has lang constructs and API to allow functional programming.
IMHO, for functional programming should be done in a self-contained modules using other JVM languages like Scala. Sven Reimers noted that the level of interoperability between Java and Scala running in the same VM is immature yet.

Then we spoke about Java 8 lambdas. Initially Java was a created as a blue collar language and now blue collars evolve. But I’m wondering how to teach the new Java 8 features to newcomers? I usually start with explaining object-oriented programming from Lesson 1 of my trainings. Mixing OOP and functional style of programming in the intro courses doesn’t seem right. It would be like teaching a two year old to drink beer – at this age kids have an impression the milk is the right beverage.

To my taste, Java remains the best language to teach the “Intro to Programming” course. People in the room suggested that Python or Scala could be used as the first one. Sure, the newbie’s mind is not cluttered with the Java way of doing things so the concepts of functional programming will be easier to digest.

In the evening the entire conference has gathered in the Heinz’s house. A Greek folk band was playing, some people were dancing while the others were eating, drinking and chatting Java.

SONY DSC

Carl Quinn from Java Posse showed photos of the 3D printer he was building at home. I’ve asked Carl about Bruce Eckel’s Java unconference. He said it’s a similar event, but people are not allowed to bring laptops to the sessions and there are no formal presentations – it’s just a mike in the middle of the room – people discuss stuff.

For most of us this unconference is over, but some people are staying one more day for a hackaton were they’ll be explore Java 8 lambdas hands on.

JCrete is a well done and interesting event, and such format is more appealing to me than a formal conference setup. Between you and me, I liked it more than JavaOne. It’s a lot more interactive, and you meet and talk to many well known and respected people willing to share their experience. For me it was a new conference format, and I’ve enjoined every bit of it. The informal discussion format of the Java Specialists Symposium works perfectly for me. While traditional Java conferences can be useful too, the JCrete unconference gives me the biggest bang for the buck let alone those beautiful beaches and Greek hospitality. The future JCrete unconference may have different disorganizers, but meanwhile, my hat off to Heinz Kabutz for disorganizing this wonderful event three years in a row.

I’ll be back!

Java Unconference in Crete. Day 3.

In the morning of the third day I was running a session about developing HTML5 applications. The main discussion was on pros and cons of developing HTML5 vs native applications for the mobile devices. IMO, going native is right if you can afford it. This recommendation is as good as saying that driving Mercedes S-class is better than driving a Fiat, which I mistakenly rented. But hey, not only this small car was taking me over over the Cretan hills, but I was giving rides to other Java developers too. If you’re interested in HTML5 development, I can offer you to read unedited drafts of our upcoming O’Reilly book.

Then I joined a session on Java frameworks. I believe that frameworks should be used if they allow developers to write less code and are not intrusive. The audience has divided into two camps – those who don’t like Hibernate and the camp that I belong to. I won’t repeat my reasoning here, but will rather give you a couple of links to my older blogs on the subject. Here’s the first one, and here’s one more.

I’ve completed the technical part of the day attending the session by Morris Naftalin titled “Navigating Streaming API”. This is a new Java 8 feature, which looks interesting as long as you can find a use case for it. This was the only session where I didn’t have anything to say. Yet. Actually, silent attendees are in minority at this unconference. I believe only one out of four of the participants didn’t say a word at the technical sessions. For these people the JCrete unconference was even more interesting and useful – they were in the learning mode.

Here’s one more thing that turns this conference into unconference. This morning JCrete organizers were wearing t-shirts of Jfokus – another Java conference.

SONY DSC

At JCrete the afternoons are for tanning and swimming, and we went to the local beach. The
water was warm and clean. For under two euros you can get a nice cup of Greek coffee, which is a treat.

In the evening I took my wife out – we’ve visited a lively city of Chania. What do you eat in the restaurant located in the sea port? You got it – the fish. The owner of the restaurant opened the fridge and showed us the fresh catch they got an hour ago. We picked a red snapper and a similar fish, which starts with a B. In addition to the grilled fish we had Greek salad, an octopus, fried cheese and a bottle of local wine. When I asked for the bill, they brought a watermelon, grapes and a small bottle of raki, which is a better version of grappa. It was on the house. Nice!

SONY DSC

The evening finished as usual by the pool. This time Kirk treated us with an expensive Tokaj wine, which he brought from Hungary. If you can’t afford drinking expensive wines, enroll into one of the Kirk’s training classes on Java performance optimization. It seems that the demand for such skills is pretty high.

One more day, and the conference is over.

Java Unconference in Crete. Day 2.

The second day of the JCrete unconference started as usual – after the breakfast we’ve entered the main room, where Heinz and Dmitry made announcements about four tracks of having the afternoon fun. I picked visiting of a “secret beach”. Then people expressed their interest in attending one of the four technical sessions. This is when the final rooms assignment was made. The session conveners are where standing in the corners of the room, the topics were announced topic and people where gathering in the corner of their choice.
Interestingly enough the main room has the same number of the corners as the number of tracks. The final actual room/session assignment was done when people are gathered at a particular corner. “It seems that we have the largest crowd in this corner – they’ll get the main room.” Is this simple or what? The KISS principle in action!

The first session was about making software simpler. The consensus was that in Java installing the required for the project is more complicated than it should be. The npm installer was used as an example of the proper way to do it.

I was running a session “Living and running in a virtual startup”. I’ve shared my own experience, and then we’ve discussed the issues that every startup is facing: where to get the money, where to find the right people, why people even create startups, and if the country laws are favorable for the entrepreneurship. It seems that Greece is the most tough place for startups from the laws perspective.

One person expressed a typical concern: “I have a nice job, but want to create startup. Should I just quit and take a risk?” One capitalist from South Africa answered that this is exactly what he did.

Never use your house as a loan collateral to fund your next great idea.
Try to sell the idea of you startup to your wife before quitting a well paid day job.

Then I said that we work with contractors from Eastern Europe – this is where we can find good developers willing to work at lower rates. One socialist from South Africa said, “Arn’t you exploiting these people using the fact that the salaries in their countries are low?” This reminds me of a great Indian tale about seven blinds and the elephant. I looked at it differently – we help these great developers and their families substantially improve their lifestyles without the need to leave their countries.

BTW, there are three people from Italy in the conference none of which lives in Italy – the IT market is weak there. Belgium is the money cow now!

Here is another comment from the same session, “I’m and idealist and like startups where people would work without pay just because they are passionate about the software and the idea.” IMO, there should be at least one pragmatic person in the startup otherwise either the time will be lost on developing of an unneeded product or capitalist sharks will eat these idealists for breakfast.

Then I’ve attended participated in a session about lying profilers. It was good to have a reassurance that even though the tools helps, the humans is still da man in the software optimization field.

In the afternoon my wife and I has joined the group of people who went to a secret beach. Another winding road and a pretty steep descent (ok, ok, Heinz’s mom did it last year) lead us to a beautiful blue lagoon. To see the picture of this place, click on the third letter “e” the first mentioning of the word “beach” in this blog.

Another group went to the Pirate Bay, which increased the budget of one of the local hospital by 560 euros. Manik is back in business in no time. Special credits to Kirk for knowing what to do in extreme situations!

In the evening, most of the conference had a dinner in a beach taverna. After 10PM a large crows has gathered by the pool. We had some beer and wine talking about women software. In particular, I had a chat with a geek who makes a living by improving performance of the software systems. When I asked about some numbers he said “It’ll be at least 10 times more responsive”. I trust this guy.

Java Unconference in Crete. Day One.

The conference takes place in the resort hotel. Even though there are only 60 of us, this unconference can have up to four tracks. This is how the main auditorium looked at 8:45AM.

SONY DSC

We sat down, the conference organizers explained the rules and gave each of us markers and a pack of yellow stickers to write down the suggested topics. You don’t have to be the subject matter expert in these topics – you may just want to learn more about them from others. This is what I wrote:

SONY DSC

The mike went around the room, and those who wrote something on the stickers had a chance to explain what their proposed topic was about. Some people simply presented their topics as simple as this: “I know nothing about XYZ, and am looking for your help in understanding it.”
Then the stickers were given to the organizers, and I’ve learned something new right away. Mattias Karlsson noticed that most of us don’t know how to peel the stickers off. He was kind enough to share this useful technique:

Peel off the sticker with a left-to-right movement. If you do it as most people do – bottom-up – the sticker will curl-up, and it will be hard to read its message when the sticker is placed on the board.

Thank you, Mattias! WHile people were introducing the possible topics, the organizers were placing them on the left board to group the similar topics together. At 10AM the initial version of the schedule (on the right) was ready:

SONY DSC
I participated in two sessions: “Working remotely” and “Application Design wars”. Again, not attended, but participated. Each of them had a dozen participants, and everyone has something to say on the subject. I really enjoyed every moment of these discussions. It’s hard to explain it in the blog – you have to be in the room filled with professionals to appreciate the fact that people know what they are talking about, respect other’s opinions and get everyone a chance to speak up. And let me assure you:

Geeks can speak. Geeks can listen.

Since each session was audio-recorded I can guess that at some point they’ll be published on the Internet. I’d love to hear the conversation that took place in each end every room. At 12:30PM the technical part was over and some people signed up for going to remote beaches while other went to see an archeological cite (we’re in Greece, remember?).

I was one of the drivers of three cars that took a dozen of people to a remote and beautiful beach in the Sooth-West of Crete. There were two couples in our car – my wife and I and Andres Almiray with his wife, who being a resident of the Swizerland did a great job explaining us why Mexico is a great country. On the side note, there is probably a dozen Java Champions here at JCrete, right Heinz? As you can see, the beach was full of nice looking Java developers:

SONY DSC

This was a rather long drive mainly in the winding roads in the mountains. Actually there was a part of a highway driving where I learned a new for me style of driving, which I called “Speeding on the shoulder”. The highway had one (or rather one-is) lane in each direction. But slower moving vehicles (Why have I rented that small and weak Fiat?) are supposed to move to the right to let the real drivers drive fast. So for the most part of the highway leg I’ve been driving at the speed from 60 to 90 km per hour on the shoulder. In the USA I’d get a substantial fine and four points on my driver’s license for this. Oh those Greeks!

FInally, I want to give credit to a nice iOS application called CityMaps2Go recommended me by one of the readers of my blog (thank you, Alex!). It’s an offline map app. I’ve downloaded the map of Crete in advance, and while I was driving my wife was watching how a little blue marker was moving on the map. You may ask, how is it possible if this was an offline map and I was not connected to the Internet? Smartphone have GPS. Becides, my iPhone had a phone connection, and most likely the position of the device was quickly calculated based on the distance to the closest cell towers (A-GPS).

Till tomorrow!

Java Unconference in Crete. Day Zero.

The flight from Athens to Chania took less than an hour. Renting the car was quick too. The Hertz guy delivered the car and left it with the A/C on.  BTW, I usually drive cars  with stick shift when in Europe.  Then I took the driver’s seat, put the car in the first gear doing this spiel with the clutch and gas pedals – the car didn’t move. Then I pressed the gas pedal all the way to the floor. Nothing – the pedal was offline. I called the Herz guy saying that the pedal won’t work.  He gave me a strange look and quietly said, “Sir, it’s the engine. First you start the engine and then you drive.” I started laughing. At home I’m driving cars with quiet engines, and decided that the Hertz guy left the car running mistakenly taking the A/C noise for the engine’s. 

OK, the next goal was to find a small village were the conference hotel was located. To make the story short, I can give you an advise – if you’re planning to drive in Crete, say 20km have enough gas for driving 40km. You’ll get lost a couple of times, that’s for sure. Crete’s government is saving money on road signs. This may explain why Google included the following fragment in the local driving directions: 

Image

Here’s my today’s  conversation with the hotel’s clerk.
– How do I get to the beach?
– I can give you the map, but there are no local roads there.
– Can you please just tell me how to dive there?
– Sure, it’s very easy. Drive a couple kilometers on this road, then you’ll see a base (???) and turn to the left to the Stavros Beach.
-Is there a sign for Stavros Beach there?
– No, just turn there to the left.

I found the beach after a couple of wrong turns – the beach and the water were really nice.

In the evening  all unattendees of the JCrete unconference went to the local restaurant. The food was good and the conversations were interesting. Between the second and third glass of strong Cretan wine,  one of the possible topics for tomorrows discussion became more and more vivid: The Startups.  I have something to say on the subject too. We’ll see what happens tomorrow.

  After writing a couple of hundreds words in this blog I realized that it misses some technical Java related content. OK, here you go: 

System.out.println(“Hello Crete!”);

Don’t be surprised if in my tomorrow’s blog I’ll re-write this code snippet in Scala.

 

 

 

 

 

 

 

 

Java Unconference in Crete. Day -1.

Tomorrow I’ll be joining about 60 other Java folks and 20 members of their families in Crete – the largest island in Greece. This is the third annual Java unconference that takes place here.

If someone is not sure why savvy Java developers STILL go to conferences I’ll tell you – to attend parties. Of course, attending technical sessions is also useful, but this alone doesn’t justify spending several thousand dollars on technical sessions alone. JavaOne organizers are very good at offering free video recording of all presentations almost immediately after the conference’s over. So if you’re attending conferences just for the technical sessions you’re either wasting your time or are a speaker.

You have to meet people at the conference. Don’t want to? Stay home and watch recordings on Youtube.

Three months ago I went to Kiev, Ukraine to attend the Java conference called JEEConf. Why? First, Kiev was my home town many years ago. Second, I made two presentations there. Third, after one of my presentations I spent an hour talking to Ukrainian Java developers in the corridors besides attending a couple of parties. I love talking to people who share my interests – Java in this case.

Why I’m in Greece now? Last year at JavaOne I’ve attended (you got it!) a party where I met Heinz Kabutz. If you’re a Java developer you must have heard about his Java Specialists newsletter. In my opinion, this newsletter is the most advanced periodical about Java.

Heinz told me about his unconference and invited me. I gladly accepted. The word unconference means that the agenda is open. As of today, no one of these 60 people knows who will present and what will be the agenda. As far as I can guess, on Monday morning attendees will express their interests and vote for topics to discuss. I would assume that there will be some stickers on the wall where people will write their subjects of interest (I’ll let you know how this actually have happened after the fact). During the flight over Atlantic Ocean I’ve decided what to put on my sticker. Will people want to discuss these topics? Will they want me to present on any of these topics? I know as much as you are. I can share with you one fact though. Yesterday, I was dining in Athens in this restaurant with a great view of Acropolis.

SONY DSC

This should be a really nice vacation. I’m here with my wife, the technical sessions will last till noon, and after that people and their loved ones can enjoy the sea, the beaches, and the Greek hospitality.

Stay tuned!