2012 m. gruodžio 15 d., šeštadienis

Why Eclipse is not my favorite IDE

What are IDEs supposed to do:
  • save time by automating tasks
  • save time by integrating tools or providing well integrated alternatives to them
  • provide some extra features to improve developers performance
What I want from IDE:
  • to be a good text editor in the first place
  • to be configurable enough so that it never gets in my way
  • let work with external tools
So what's wrong with Eclipse?

Well, it does not meet my very first requirement - I disagree it is a good editor. Yes, it includes nice features like code completion etc., but these are not configurable enough, well, at least not the easy way. When I type code, I know what I'm typing, I type it and expect the result to be what I typed. With Eclipse code completion often kicks while typing, autocompletes the line (not always to the right thing), puts cursor somewhere, then somewhere else, then selects something... When this happens while you're typing at full speed, the result is a crap. Eclipse developers, do you actually write code by hand?

Everyone, who uses various tools knows, that tabs and spaces are evil when in the same code, as are trailing white space. Since spaces are more precise when indenting code, mots programmers prefer them to tabs. Eclipse defaults to tabs. That's fine as longs as you can configure it. In Eclipse you sort of can, except that it does not work properly. It does work fine in most cases, except for autoindent after '{' character, where it insists on using tab. Autoindent also hurt every time you want to leave empty line, as it leaves all that garbage white space it inserted itself. Eclipse does a lot, but not everything and is not best at everything. That's why we use other tools, which we want to either integrate with our IDE or just work nicely alongside. That's not exactly the case with Maven. There are plugins for integrating Maven with Eclipse, but it looks like the best they do is import Maven projects. When I have to go to command line to build project, because Eclipse can't call Maven properly, I wouldn't call that integration.

Another thing that hits me again and again is Eclipses caching everything. When I do something with external tools and get back to Eclipse, I have to select all projects and press refresh, very annoying.

Some good words for the end

Eclipses integration with JUnit is great!
I also like the debuging with Eclipse, it does the job well.

2012 m. lapkričio 8 d., ketvirtadienis

Goals: do it right

TL;DR
  • Before making solution define a goal - what are you solving
  • Make sure it's your true goal, not something that will help to achieve it
  • When you're thinking of solution, regularly stop and remember the goal - are you still focused on the primary problem?
FULL VERSION
More and more I see the application of basics of KAOS methodology in a professional environment.
What are the common issues I encounter:
  • Focus on detail loses touch with the initial problem, a lot of time is spend on side issues.
  • Proposed solutions are implemented without verifying them first, resulting in wasted time and energy with no effective result.
  • Improper problems are being solved. Good ideas, good solution, but have nothing to do with the problem, that was the cause of it all.
How it should be done? Let's apply the basics of KAOS for this:
  • Define the top goal(s) you want to achieve
  • Go down and define sub-goals, that are required in order to achieve the higher goals
  • Review and refine the goal graph
  • Make a solution, that achieves the lowest level goals
OK, lets go deeper into each item and see what it means. Most of what's below is a theoretical stuff, in reality you usually apply a simplified variant of it.
Define the top goal(s) you want to achieve
Although it sound simple and clear, in practice it's often forgotten. Often in meetings people discuss suggestions on how to solve teams/company's problems, but so often these discussions can be brought to a halt with a simple questions like "What we are trying to achieve?" and "Is that really the real problem?". The main point here is to find a clear and simple goal we want to achieve or contribute to. In a later case the bigger issue is to know full background, to see "the big picture". The company's goal usually is profit, a team may want to be valued and recognized. Things like making good product and doing it in time are usually the sub-goals. In case of Free Software project, the goal perhaps is the product. The point is: top goals should be all that matter, anything else should contribute to them.
Go down and define sub-goals, that are required in order to achieve the higher goals
When you know, what your goals are, you can think on how to achieve them. Typically there are few sub-goals that either should all be achieved (and condition) or any of them is sufficient to achieve main goal (or condition). A problem I often observe is that focus on detail loses touch with the initial problem. Most discussions happen in this area and it's very easy to shift centre of attention to a side, when no clear top goal is defined. Any sub-goal must directly of indirectly contribute to the at least one top goal. If not and it's clear the sub-goal is valid - you know your top goals are not defined properly. In general during discussions always question everything "will this help us achieve what we want?". This can help you avoid the other frequent mistake - solving the wrong problem. Sounds silly, but when you lose your main goal on the way, you often waste most of your time on something else later.
Review and refine the goal graph
It's best to graphically draw all the goals, you get what's called a goal graph. Before trying to solve it, review it! Is it correct? As I mentioned, often proposed solutions are implemented without verifying them first. This review is to make sure that you know and understand what you're trying to solve.
Make a solution, that achieves the lowest level goals
When you have a graph, you can make a solution. The graph gives you the requirements - solve the required leaves and you're supposed to solve your initial problems. If you can't - go back to reviewing and refining graph.
Bottom line
This a very brief intro into KAOS, but since it's not requirement engineering, but more a daily life, that should be enough. If taken more seriously, you'll need deeper knowledge and tools. Dia has support for KAOS.

2012 m. rugsėjo 26 d., trečiadienis

Gnote 3.6.0 released

3.6.0 "Good cooking takes time" have been released!

You can download it here

New Features:
  • WebDAV synchronization checks now time-out
  • Port to new documentation infrastructure

Fixes:
  • Fix error in WebDAV manual
  • Fix exit in status icon mode on close window

Translations:
  • Updated translations:
- Assamese (as)
- British English (en_GB)
- Czech (cs)
- Galician (gl)
- German (de)
- Hindi (hi)
- Hungarian (hu)
- Indonesian (id)
- Malayalam (ml)
- Marathi (mr)
- Polish (pl)
- Slovenian (sl)
- Spanish (es)
  • Updated Lithuanian manual (lt)

Thanks:
Oliver Propst

2012 m. rugsėjo 9 d., sekmadienis

Recent activities

Long time no post...
And it's all because of no big news, while small ones are present.

Gnote news

  • Added synchronization support (currently WebDAV and Local Folder)
  • Added Note Directory Watcher
  • Switched to GNOME versioning scheme (so the next version will be 3.6)
  • 0.8.4 is going to be the last release in 0.8 series
GNOME Lithuanian translation
  • Desktop translation hit 100% for the first time

Personal

  • Training martial arts again, this time Muay Thai
  • Visited Paris during holiday, a must-visit city I must say
Challenges
  • Continue on improving soft-skills
  • Continue to improve typing skills
  • Take more seriously on positive thinking
  • Continue work on redesigning Gnote accorting Note concept

2012 m. birželio 26 d., antradienis

News in Gnote

A small update what was going on in Gnote recently.
WebDAV synchronization support
This was the one that took quite a bit of time. Few challenges and successes experienced:
  • Replacement for C# Process class. The tricky part was redirection of programs output, which gave me a good oportunity to learn low level UNIX I/O
  • Integration with gnome-keyring was easy. Instead of porting heaps of C# code I simply used gnome-keyring library and wrapped in Tomboy-compatible classes with only required methods
  • Learned basic usage of wdfs for mounting WebDAV shares
Dropped support for panel applet
With GNOME 3 here, applets are obsolete. Also, Gtkmm finally got Gtk::Application available. This alowed to replace use of GtkApplication by more C++ style code. The later however does not seem to be compatible with panel applet code.
Removed deprecated Gtk::Main
A technical implementation point. It was deprecated in Gtkmm 3.4 with Gtk::Application as an alternative. The you already know.
A look forward
  • Redesigning Gnote as Notes is still a most challenging part.
  • There are couple of add-ins I believe most of us would like to see in Gnote, such as integration with Evolution and note directory watcher.

2012 m. gegužės 20 d., sekmadienis

Notes demo

This weekend I tried to experiment with Gnote to make it more like the Notes.
Reasons:
  • I feel, that Gnote currently is not very comfortable to use in Gnome 3 environment
  • I like the ideas in Notes concept
  • We already have Tomboy and Gnote, do we really want one more note taking application?
Preview
This was a quick attempt to drag Gnote closer to Notes. So I tried to use existing Gnote widgets in different way, to make it look more like Notes is expected to be. This means, that the result still looks much like Gnote, sometimes not as good as it could be, some parts have been disabled for a quicker result.
However, I think this allows to have some sort of proof-of-concept. Here are the results:
The known Search All Notes window (I was to lazy to rename it :)). Notebooks pane have been removed and "View" button added near search.
When "View" button is clicked, you can choose between "All Notes" (current view, shows all notes) and "Notebooks", which will display all notebooks:
Notebooks view replaces Notes view. The "All Notes" special notebook should be removed, but "Unfiled Notes" should probably stay. Double click on notebook displays it's notes:
Again, the "View" button can be used to go back to "All Notes". Double click on note opens it inside the same window:
What used to be in a separate window, now is embedded into the same. Clearly, this should be polished more, but the general idea is to not have two windows (Search and note), when you can just have one.
What else should be done:
  • Fix all that's broken with this quick redesign
  • Allow multiple windows (currently Gnote allows only one search window open, but with this redesign, opening second one becomes essential)
  • Add application menu for main features
  • Remove menu bar
  • Polish the look
With this done Gnote could possibly be called Notes. Will it be?




2012 m. gegužės 12 d., šeštadienis

Samsung Galaxy Y

I had a long thought on what new phone should I buy. My priorities where:
  • phone, not a pocket PC (size being most important here)
  • long battery time, because I really don't want to charge my phone every day
  • smatphone features prefered, but not essential
  • if smartphone, I prefer Linux-based OS
  • price shouldn't be high
When I looked at what's available, the Galaxy Y caught my eye. In fact it made me consider buying a smartphone (I was more on the side of regular mobile phones befere).

So what are the essentials:
  • small size, nicely fits into my quite small hand, as well as the old belt case, originally baught for Siemens A50, where I carried all my mobiles since
  • it does look more like a phone
  • cheap, costs only a little more than the the simple ordinary phones
  • long batterry time, almost a week when not used much
  • and it's a smartphone after all
Is it for you? Well, if you share the similar thoughts as above and have diubts regarding smartphones, I really recomend you to have a thought about this one.
Finally, some disadvantages:
  • screen size and resolution are small, so it's not for you, if you expect to browse a lot
  • qwerty keyboard is on by default in both orientation. It's fine in horizontal one, but when held verticaly, it is to small even for my tiny fongers, I had to switch to traditional phone keyboard here
  • I wanted to try Mozilla Firefox, but aparantly it's not compatable
  • tried few basic barcode scanners (the ones that do not require any crazy permission), but none of them functioned in a way, that could be called "works"
  • no screen protection
BTW, most of this post was written with the phone. Not most comfortable, but possible.

2012 m. balandžio 15 d., sekmadienis

Gnote 0.8.3 "Freedom is nothing else but the chance to do better. --
Camus" have been released!

You can download it here.

Fixes:
* Fix missing header for Glib::signal_idle (#667349)
* Call startup defined in GApplication
* Remove mnemonic references in documentation (#670916)
* Fix slection deletion and remembering it
* Fix quit application for glib >= 2.32 (#670104)
* Remove use of GtkStyle (#667395)
* Fix multiple compiler warnings

Translations:
* Updated translations:
- Czech (cs)
- Danish (da)
- French (fr)
- German (de)
- Hungarian (hu)
- Indonesian (id)
- Japanese (ja)
- Latvian (lv)
- Lithuanian (lt)
- Polish (pl)
- Slovenian (sl)
- Spanish (es)
- Swedish (sv)
* Added Slovenian (sl) manual

Thanks:
Hub Figuiere

2012 m. kovo 9 d., penktadienis

Windows 7 installation fun

Today I had an oportunity to install this so well regarder Window 7. I admit I didn't expect things to go as smothly as with Fedora 16 I recently installed on my new laptop. However, the actual result was below my expectations.
When installing Fedora 16 I had only two issues. First, I had to do it all in English, because Lithuanian is not yet supported by Anaconda installer. This was easily resolved the first time I booted it - I just switched to Lithuanian, logged out and back in. The second issue was wireless, that didn't work. In this case I had to connect the cable and hopefully it began to work after I installed updates (the newer kernel had the required driver). That's it!
With Windows the story is not that short.
The good thing was, that Lithuanian language is supported by the installer. The bad news is the quality of it. No surprise many people (mostly skilled computer users) refuse to use it - it clearly took me time to understand, what do certain terms mean.
The installer presented two installation options: upgrade for previous and advanced one. The description of first one was such, that I had no idea, whether it's suitable for fresh install or not (probably yes, but the description talked ONLY about update). I chose the advanced one. Then, as in good old days, I had to manually create partitions (or I missed the "auto" button in the UI somewhere...). Hopefully installer allocated 100 MB for system needs automatically.
The installation progress was sort of funny: half of time was spend on "extracting files" option at 0%. So much for Windows niceness to show progress on what it's doing :)
Entering the Windows activation code is no fun to me...
I admit the installation was faster than I expected. What I also didn't expect was that screen size won't be detected automatically. It apears, that Microsoft still thinks that 800x600 is a good default.
What surprised me the most was Windows failure to make a use of a network card. Like in bad old days, I had to insert a motherboard disk and install drivers, to make it work.
Now with system up and running, the manual software installations saga begins (oh, glorious "next" button a hundred times and those slow installation dialogs for every little pease of software). And another one afterwards of keeping it up to date (upgrading each of them separately), hopefully this is no longer up to me.

2012 m. sausio 17 d., antradienis

SMART targets

Are you setting targets for yourself for next year (or some other period of time)?
If yes, than it might help to think about them being SMART. What does it mean:
  • Specific - abstract goals should be avoided, it's better to know exactly what you want to achieve
  • Measurable - at least there should be a way to tell, whether you achieved the goal, better is to able to tell the percentage in progress
  • Achievable - really, there's no point to set a goal you can't possibly achieve
  • Realistic - just because you canpossibly achieve your goal, is it likely you will?
  • Timed - it's good to set time frame for goals, it makes it more likely you will achieve them

To make targets even better, you can try CSMART (C for challenging) or SMARTER. Read more here.