RSS
 

Archive for the ‘Books and Videos’ Category

Mastering Advanced Git by Matthew McCullough and Tim Berglund

12 Feb

It was almost a year ago when I had a pleasure to review Mastering Git by Matthew McCullough and Tim Berglund. Today, thanks to O’Reilly, I can take a look at its successor – Mastering Advanced Git.

Just as a reminder: I really liked the first part. But I simply loved the new one! It covers Git details in very thorough way. And, what is perhaps even more important, it leads you through them in extremely straightforward manner.

In all advanced topic discussions, there is always one important issue to solve. Considering a large number of possible topics, which should we choose? Matthew and Tim decided to talk about pull and push options, rerere, methods of moving a code outside the repo, orphan branches and refspecs. Some of them are just switches to configure and (almost) forget. Although, I personally found patches, bundles and refspecs the most valuable, because these have a lot of possible use cases during the whole development and code management cycle. Nevertheless, all of the topics are well prepared. It obvious that both teachers are professionals in Git.

In terms of technical quality, I haven’t found any differences. Both video and sound are still very high quality.

Listening to Matthew and Tim is simply a pleasure. I strongly recommend it for everyone who wants to polish his or her Git skills.

Just a short disclaimer at the end: Although I referenced to Mastering Git a few times, I need to mention that Mastering Advanced Git is a separate product. You do not need to watch the first part to benefit from the Mastering Advanced Git. If you feel comfortable with Git on intermediate level, do not hesitate and go straight to the most advanced one.

O’Reilly Product Page: McCullough and Berglund on Mastering Advanced Git

 

Mastering Git by Matthew McCullough and Tim Berglund

05 Mar

Mastering Git by Matthew McCullough and Tim Berglund Video cover

On the beginning, I just want to say one thing – McCullough and Berglund on Mastering Git is a perfect way to learn Git! The only requirement is an ability to learn in a classroom-type environment. An impression of class or conference is maximized by the fact that “students” are asking questions. If you’re able to learn from a lecture, keep reading!

This video provide you with step-by-step instructions on how to efficiently use Git in a production environment. You’ll begin from the very beginning: installing and configuring Git on different platforms.

Then you’ll go to basics like managing repositories, three-stage approach, committing, creating local branches and tracking the remote ones and so on.

What I especially like about this training is the fact that it also covers more sophisticated topics. You’ll learn what DAG is and how this structure influences a whole Git. You’ll become a best friend of tags (both light- and heavyweight) and know how to use rebasing, amend, stashing and others. I’ve to mention that it’s quite easy to get lost during these topics discussion, but you can always rewind the video and repeat a complex part.

A few words about technical details. The whole training is recorded in high-resolution, so it was a pleasure to watch it. The sound was also very high-quality. The only things missing are subtitles. It’d be a great help for foreigners and the disabled.

The verdict is simple. I would recommend this video to a friend.

O’Reilly Product Page: Mastering Git by Matthew McCullough and Tim Berglund

 

Productivity tips for programmers

05 Sep

I’ve recently started reading The Productive Programmer book. In a few first chapters, I’ve found some interesting tips for programmers. Some of them can be useful for non-programmers too.

Prefer typing than using mouse

It is quite obvious that moving hands from keyboard to mouse consumes a lot of time. How to minimize this effort?

  • Use launchers. That applications can be started by a simple keystroke. They display an input where you can enter a name of a program or document. I use Gnome-Do on my Ubuntu and it behaves extremely well. On a Windows platform you can use Launchy or Enso as well.
  • A lot of typing can be time-consuming too. Why not to simplify the process with some automation tool? For example: to start my development server in Django application, I’ve to change my directory (cd ~/django/project/webapp) and than activate the virtual environment with necessary requirements (source ~/virtual_envs/project/bin/activate). With automation tool like Autokey (Linux) or AutoHotkey (Windows) I was able to create an abbreviation like aproject to get the same result.

Clean up your desktop

How much time do you spend in your everyday work to switch through all the windows on your desktop? Have you ever look for an appropriate terminal window because you had so much of them? I had so I really appreciate the following tips.

  • Use virtual desktops. Currently, I use three of them: Main for my IDE, Manage for database and development server terminals and Docs for all documents like APIs or framework documentation. No more switching between windows, you’ve got all of them together.
  • It is important not to spend a time on searching a relevant windows. It’s especially hard to manage terminal windows because they are very similar and you’ve to read their content sequentially before you get the correct one. One way to beat that problem is to use different sets of colors for every terminal window. For example, I use green font and black background in a terminal with my development server and light yellow background in a terminal with my database client. Moreover, I try to put that windows in the same position every time I use them. Using this tips together makes finding the correct window a lot easier.

I’m curious about your programmers productivity tips. Please, share them in comments.

 

Python 3. Kompletne wprowadzenie do programowania – opinia

01 Sep

Pozycja Python 3. Kompletne wprowadzenie do programowania (oryg. Programming in Python 3: A Complete Introduction to the Python Language) ukazała się w Polsce nakładem wydawnictwa Helion. Niniejszy tekst stanowi próbę oceny tej książki.

“Python 3. Kompletne wprowadzenie do programowania” można podzielić na dwie główne części. Pierwsza stanowi wprowadzenie do podstawowych elementów języka, bez znajomości których ciężko byłoby stworzyć sensowny program w Pythonie. Druga natomiast to omówienie bardziej zaawansowanych technik wykorzystania biblioteki standardowej w sytuacjach uznanych przez autora za istotne.

Już we wstępie Mark Summerfield zaznacza, że książka stanowi cenne źródło wiedzy zarówno dla nowicjuszy, jak i specjalistów, w tym naukowców, związanych z programowaniem. Jak przekłada się wybór tak szerokiego spektrum odbiorców na ostateczny kształt tej pozycji? Cóż, moim zdaniem, nie do końca korzystnie. Z jednej strony autor stosuje skróty myślowe i zakłada pewną świadomość czytelnika, z drugiej z kolei opisuje przykłady w sposób dość rozwlekły. To niestety nie wpływa korzystnie na poziom pierwszej części. Zdarzało się wielokrotnie, że tekst tylko zaciemniał znaczenie omawianego kodu. Być może jest to jednak kwestia tłumaczenia, które to zasłużyło na własny akapit. Osobiście nie polecałbym również tej książki do nauki programowania jako takiego, w oderwaniu od konkretnej technologii czy języka. W pamięci utkwił mi zwłaszcza fragment rozdziału dotyczącego programowania zorientowanego obiektowo, w którym autor tworzy klasę Punkt, po czym jako jej podklasę wskazuje klasę Okrąg. Toż to jawne naruszenie koncepcji specjalizacji!

Na szczęście dalej jest już tylko lepiej. W części drugiej opisy faktycznie pomagają przyswoić materiał, a odwoływanie się do wiedzy czytelnika jest bardziej na miejscu. Na szczególną uwagę zasługuje w moim odczuciu rozdział dotyczący zaawansowanych możliwości Pythona. Naprawdę da się tu poczuć naturę tego języka. Pozytywnie odebrałem również część, w której opisano metody utrwalania danych. Odrębną kwestię stanowią ćwiczenia dołączone na końcu każdego rozdziału. Osoba chcąca poznać język w praktyce, a pozbawiona możliwości codziennej z nim pracy, może śmiało skorzystać ze wspomnianych zadań.

Niestety średnią ocenę całości zaniża tłumaczenie i korekta książki. Sporo w niej literówek i dziwnych, czasem wręcz wprowadzających w błąd sformułowań. Niepotrzebne tłumaczenia tekstów typowo technicznych, czy nawet kodu źródłowego to standard. Niech za przykład posłuży rozdział dotyczący programowania GUI. W kodzie programu definiowane są skróty klawiaturowe w postaci zwyczajowego Alt+wybrana litera opisu akcji powoduje jej uruchomienie. Nie byłoby w tym niczego złego, gdyby nie fakt, że tłumaczenia wspomnianego opisu burzy relację, czego tłumacz nie uwzględnia. Mam po prostu wrażenie, że osoba ta nie miała wiele wspólnego z procesem programowania.

Dla kogo jest zatem ta książka? Moim zdaniem dla przynajmniej średnio doświadczonego programisty, który chce poznać kolejną technologię, a któremu nie straszne jest przedzieranie się przez miejscami zawiły tok rozumowania autora. Jeśli spełniasz te warunki, na pewno wyniesiesz wiele dobrego z lektury tej pozycji.