Nov 23 2009

How to become a google wave power user

With Google wave being released recently to a larger and larger user base, it’s becoming a better real time collaboration tool daily. With a larger user base, also comes more and more plugins, bots, and shortcuts to save you time. I’ll go over a few aspects of Google wave that will help decrease the time you spend and increase your results.

First Off, Google wave is a team collaboration tool. By itself, to be honest, Google wave is really kinda useless. However wen used in a team environment it can be an incredibly useful tool to increase productivity and communication. The first tip I’ll give comes with a warning, because it’s not an officially supported browser this method does crash quite a bit more often than say in safari or firefox. Using an application developed by Mozilla called Prism you can actually make Google wave a desktop application to use directly from your desktop. Although you still need a solid internet connection, it can facilitate having to open a browser any time you want to wave. If you’re running Windows, you can even get prism’s Google wave icon to update how many waves have new content on them.

Widgets/Bot’s

Google Syntax highlighter – If you’re a developer this is a must. Syntax highlighting can be one in a couple ways, but as of now I’ve found that the Google Syntax highlighter to be the most stable. It supports a variety of languages and seems to embed well in most waves. The only disadvantage I’ve seen so far is if you have a ton of code to embed, the wave will significantly slow down when editing.

Multi Lingual Bot –  This bot is pretty neat,  especially if you’re dealing with a team that speaks a variety of languages. Basically, all you have to do is add the multi lingual bot to any wave. Once you have the bot added to your wave, just specify the language of your liking using the bot commands, and then voila, watch the wave being translated to the language you chose earlier.

For more information on using widgets and bots, look here.

Organizing your waves

Searches – Google wave offers the ability to perform searches, and also to save the searches. Let’s say you’re working on a project and have a bunch of waves that you want to keep organized. Whenever you create a wave for your project,  just add the name of your project as a tag for that wave. Next perform, and save a search for that tag name and then all your wave’s with that tag will then show up under the search.

Folders – Folders are locations that you can add wave’s to to keep them organized. The only downside to folders is that you cannot dynamically add items to them like you can with searches. To add a wave to a folder,  first create the wave, open the wave and then click on the “…” icon at the top right. You should see a drop down list with “Move to” option. Once you select the “Move to” option, you should see a list of folders you created there.

Keyboard Shortcuts

Spacebar – If a wave that you’re apart of is extremely long an many different people are editing it in different locations then it is extremely difficult to track what changes are happening where. The spacebar helps with that. If you’re not currently editing a wave then you can press the spacebar to scroll through the changes/replies that were made to the wave.

Control – The control key is an extremely useful key in Google wave. By pressing the control key and clicking on a wave, you can open multiple waves at exactly the same time. You can do this as many times as you want, the waves will just keep tiling in the window. Control also has some specific keyboard shortcuts that do specific features when editing a wave.

The keyboard shortcuts help list can be found here.

Summary

Google wave is an extremely useful tool when it comes to real-time team collaboration. Using it more efficiently can not only help you, but also your team.  For more information on Google wave check out Google wave help.


Nov 9 2009

Google Wave: First Impressions

I recently received an invite to Google wave, so as any other anxious developer, I tried it out right away. Overall it’s great! The real-time collaboration is definitely a step forward, especially for project teams. There are also, however, a few things that I really hope Google implements soon or before the full release. I’ll go over the pros and cons from my point of view.

For those who don’t know, Google wave is a real-time collaboration tool. Unlike other real-time tools such as Etherpad, Google Wave has the ability to embed widgets into “waves”. You can use already made widgets such as syntax highlighting for code, or since wave is open source you can create your own widget. This opens Google wave to endless possibility as far a functionality goes.

Pros:

  • Real Time collaboration – The ability to edit the same document in real time with team members in a project is a huge plus. And when I say real-time i mean character by character changes. For a project team of developers it’s especially useful for helping peers out with code help, or reviewing code that was written before implementation.
  • Ability to embed custom widgets – Since Google Wave’s release, the amount of widgets has gone up substantially. Although there are still quite a few widgets that could be created, it’s a great start for such a new application.
  • Problems – If at any point in time while “waving”, if a problem arises and Google wave is forced to close, I still have yet to lose more data than my last character typed. Good work on this one Google!
  • Mute Feature – If you have a busy wave with say 75 participants, your inbox can get extremely busy very quickly with updates. A simple mute of the wave will stop those updates and keep your inbox clear.

Cons

  • Settings – Google has decided that absolutely everything is done using waves. This means that changing your profile settings are also done in waves. I have to say,  I would really appreciate a section dedicated to changing your settings.
  • Folder System – So far, I have found the folder system a little bit harder to use than anticipated. Sorting Wave’s become a task of adding tags to wave’s and then searching for a certain tag. I would like to see the ability to drag and drop wave’s into folders implemented in the near future.
  • Group Waves – I would like to see the ability to automatically create a wave with a group of members already invited by default. This would be especially helpful with large project teams that are using wave as their main collaboration tool.

Overall I’m very impressed with Google wave and I’m excited to see the changes that will be implemented in the future. There are some things that I hope Google changes some things before launch but I’m sure they will take the feedback given and implement as many features as they can.

Cheers


Jul 3 2009

13 must have apps for Mac OS X developers

1. Apple Developer Tools – These are just a no-brainer here. There is a huge arsenal of apps that come standard with every mac that absolutely EVERY developer that is developing for mac os x needs. Xcode, Dashcode, Instruments, Interface Builder, etc. There are a ton more to check out if you haven’t already, and all of them will considerably ease your development experience on OS X.

2. Eclipse- Eclipse is the ideal application for java development on Mac OS X. With the amount of features that eclipse offers, it’s almost impossible to skip this application if you do any level of java development. The “intellisense” that eclipse includes while you’re coding is unprecedented.

3. Photoshop/ Gimp – This is a must have for any type of website development/interface development. Whether it’s doing website mockups or drawing new buttons for your application, this is a must have.

4. Coda – I can’t speak enough good things about coda. This application has exceeded my expectations in every way possible. Whether it’s through the handy “sites” feature, or connecting to a server using the built in console, this is by far the best web development app for Mac OS X. Well worth the 100 bucks!

5.uTorrent – A very simple torrent application. Extremely easy to use and very efficient. Having the ability to select which files you want to download and which you don’t is a huge bonus.

6. Adium – A very powerful messenger application for Mac OS X. From IRC plugins, to customizing the look and feel, Adium can pretty much do it all.

7. Jing – This screen capture application hides almost out of sight in your menu bar but packs some powerful features. Jing has the ability to capture screen casts of your applications in action as well as screen shots. Great App!

8. QT Creator – From the designer’s of the famous UI toolkit QT comes their first IDE. QT Creator is a fantastic IDE for developing QT Apps. From the WYSIWYG editor to the syntax editor, great app all around.

9. Prism – Pretty cool new(ish) app from Mozilla. This application allows you to capture sites like gmail and make them into a desktop application so you don’t have to open a browser every time you want to say check your email.

10. iStat Menu’s – This light-weight app will allow you to truly track your applications performance and see if you potentially have a memory leak in your app. Has a separate monitor for each CPU to allow the user to see what’s going on in each CPU at any given time. A must have even for non-developers.

11. XMind – This extremely powerful mind-mapping tool is great for those pre-alpha stages of development. Getting as many ideas down as quick as possible is extremely easy for this application to handle. The application is based on the eclipse platform and is very solid.

12. Virtual Box – This open source application is great for testing applications in numerous environments. Test run your apps on Linux, Windows, BSD and more.

13. VmWare Fusion – This is a must have for all developers but especially for those doing web development with coda. Allows you to run windows applications natively on Mac OS X. Another great app for testing in multiple environments as well.

Cheers


Mar 16 2009

Creating an Application Specific Console in QT Jambi

I am currently working on a project that required a console with a very specific purpose. It needed to communicate with a custom back-end protocol for use in a client/server environment. This sort of specific tutorial is not surprisingly unavailable online. The first step when setting up an application specific console is actually setting up the back-end. This is something that will be potentially done as a future tutorial. Anyways back to building the console window. The components included in the console window will be one QTextEdit, and one QLineEdit. This can be constructed in any way you like. The QTextEdit can be on the bottom and the QLineEdit on top or the other way around, that’s up to you.

Next, we will need to be adding a custom action listener to the QLineEdit so that when the enter key is pressed inside the QLineEdit the command will be sent to the server and then displayed in the QTextEdit window. As a future feature implementation, syntax highlighting could be implemented for an easier display inside the QTextEdit window. The custom action listener to add to the QLineEdit bar looks like this…

1
QLineEdit.returnPressed.connect(this, "NameOfActionListenerMethod()");

This will ensure that everytime the enter button is pressed, the string that the user entered will be able to be transfered to the server, or wherever else in the program you would like it to go. Now for the action listener method. The method should be declared as public with a return type of void.

1
2
3
4
5
public void terminalWindowEnterPressed()
    {
        terminalWindow.append(enterArea.text());
        enterArea.setText("Protocol Name > ");
    }

Then once you have the action listener built to just send the data to the window, you can do the same with sending it across a network.

All Together the code looks like this. All you have to do is copy/paste the code into your program and use it at will.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
     *
     */
    public void buildTerminal()
    {
        terminalFrame = new QFrame();
        terminalFrame.setWindowTitle("Window Title");
 
        terminalWindow = new QTextEdit();
        terminalWindow.setReadOnly(true);
 
        enterArea = new QLineEdit();
        enterArea.setText("Protocol Name > ");
        enterLabel = new QLabel("Enter Command");
 
        terminalFrame.setMinimumSize(600, 400);
 
        enterArea.returnPressed.connect(this, "terminalWindowEnterPressed()");
 
        QGridLayout layout = new QGridLayout();
        layout.addWidget(terminalWindow,0,0,10,10);
        layout.addWidget(enterArea,11,1,1,9);
        layout.addWidget(enterLabel, 11,0,1,1);
 
        terminalFrame.setLayout(layout);
        terminalFrame.show();
    }
 
    /**
     *
     */
    public void terminalWindowEnterPressed()
    {
        terminalWindow.append(enterArea.text());
        enterArea.setText("Protocol Name > ");
    }

Cheers