Previous Next

User Rating: 0 / 5

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive
From google, Database design is the process of producing a detailed data model of database. This data model contains all the needed logical and physical design choices and physical storage parameters needed to generate a design in a data definition language, which can then be used to create a database.
Physical database design translates the logical data model into a set of SQL statements that define the database. For relational database systems, it is relatively easy to translate from a logical data model into a physical database. Rules for translation: Entities become tables in the physical database.

  1. Use well defined and consistent names for tables and columns (e.g. School, StudentCourse, CourseID ...).
  2. Use singular for table names (i.e. use StudentCourse instead of StudentCourses). Table represents a collection of entities, there is no need for plural names.
  3. Don’t use spaces for table names. Otherwise you will have to use ‘{‘, ‘[‘, ‘“’ etc. characters to define tables (i.e. for accesing table Student Course you'll write “Student Course”. StudentCourse is much better).
  4. Don’t use unnecessary prefixes or suffixes for table names (i.e. use School instead of TblSchool, SchoolTable etc.).
  5. Keep passwords as encrypted for security. Decrypt them in application when required.
  6. Use integer id fields for all tables. If id is not required for the time being, it may be required in the future (for association tables, indexing ...).
  7. Choose columns with the integer data type (or its variants) for indexing. varchar column indexing will cause performance problems.
  8. Use bit fields for boolean values. Using integer or varchar is unnecessarily storage consuming. Also start those column names with “Is”.
  9. Provide authentication for database access. Don’t give admin role to each user.
  10. Avoid “select *” queries until it is really needed. Use "select [required_columns_list]" for better performance.
  11. Use an ORM (object relational mapping) framework (i.e. hibernate, iBatis ...) if application code is big enough. Performance issues of ORM frameworks can be handled by detailed configuration parameters.
  12. Partition big and unused/rarely used tables/table parts to different physical storages for better query performance.
  13. For big, sensitive and mission critic database systems, use disaster recovery and security services like failover clustering, auto backups, replication etc.
  14. Use constraints (foreign key, check, not null ...) for data integrity. Don’t give whole control to application code.
  15. Lack of database documentation is evil. Document your database design with ER schemas and instructions. Also write comment lines for your triggers, stored procedures and other scripts.
  16. Use indexes for frequently used queries on big tables. Analyser tools can be used to determine where indexes will be defined. For queries retrieving a range of rows, clustered indexes are usually better. For point queries, non-clustered indexes are usually better.
  17. Database server and the web server must be placed in different machines. This will provide more security (attackers can’t access data directly) and server CPU and memory performance will be better because of reduced request number and process usage.
  18. Image and blob data columns must not be defined in frequently queried tables because of performance issues. These data must be placed in separate tables and their pointer can be used in queried tables.
  19. Normalization must be used as required, to optimize the performance. Under-normalization will cause excessive repetition of data, over-normalization will cause excessive joins across too many tables. Both of them will get worse performance.
  20. Spend time for database modeling and design as much as required. Otherwise saved(!) design time will cause (saved(!) design time) * 10/100/1000 maintenance and re-design time.




Add a comment

User Rating: 0 / 5

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive
  • Hi there. Am not a prodigy in docker or tech, but I do like learning new stuff and exploring heights. I love PHP too. I'm a member in several places where among other stuff[ read languages] being discussed is php.

    This week we met and a good dev called Otieno introduced me to docker, the right way.
    I made some simple notes in note form.  Jibambe.

  • Open platform of software containers
  • Differences:


-   Demerits

  • Containers run as root

  • Services can be resource intensive


-    3 Concepts


- Docker images ( think of them as git repos )

- Docker Registries

- Docker Containers


see the presentation here.


see the gist here.


fork [ I also forked :) ] the repo here, with some examples.


Add a comment

User Rating: 0 / 5

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive

Linux Mint 18 is a long term support release which will be supported until 2021. It comes with updated software and brings refinements and many new features to make your desktop experience more comfortable to use.

Linux Mint 18 "Sarah" Cinnamon Edition

Cinnamon 3.0

Linux Mint 18 features the latest Cinnamon 3.0. Here's a video (see top) showing some of its new features:

Thanks to Linux Scoop for making this video.


A new project called "X-Apps" was started and its goal is to produce generic applications for traditional GTK desktop environments.

The idea behind this project is to replace applications which no longer integrate properly outside of a particular environment (this is the case for a growing number of GNOME applications) and to give our desktop environments the same set of core applications, so that each change, each new feature being developed, each little improvement made in one of them will benefit not just one environment, but all of them.

The core ideas for X-Apps are:

  • To use modern toolkits and technologies (GTK3 for HiDPI support, gsettings etc..)
  • To use traditional user interfaces (titlebars, menubars)
  • To work everywhere (to be generic, desktop-agnostic and distro-agnostic)
  • To provide the functionality users already enjoy (or enjoyed in the past for distributions which already lost some functionality)
  • To be backward-compatible (in order to work on as many distributions as possible)

Within Linux Mint, you won't need to adapt to X-Apps, because in many cases, they're very similar or exactly the same as the applications you were already using. For instance, Totem 3.18 (which is available in the Linux Mint 18 repositories) is radically different than Totem 3.10 which shipped with Linux Mint 17, but Xplayer 1.0 (which is the default media player in Linux Mint 18) is exactly the same. The goal of the X-Apps is not to reinvent the wheel. Quite the opposite in fact, it's to guarantee the maintenance of applications we already enjoyed and to steer their development in a direction that benefits multiple desktop environments.

Xed is based on Pluma and acts as the default text editor.

Starting a new text file in Xed

Xviewer is based on Eye of GNOME and acts as the default image viewer.

Viewing a picture in Xviewer

Xreader is based on Atril and acts as the default document and PDF reader.

Reading a magazine in Xreader

Xplayer is based on Totem and acts as the default media player for music and videos.

Watching a music video in Xplayer

Pix is based on gThumb, which is an application to organize your photos.

Organizing pictures in Pix

Note that the GNOME apps, MATE apps and Xfce apps these X-Apps replace are still available in the repositories. You can install them side-to-side to X-Apps and compare them to decide which ones you like best. X-Apps do integrate better however with your environment, not only in obvious ways (with traditional interface) but also in the way they support desktop environments.

Update Manager

The update manager received many improvements, both visual and under the hood.

The main screen and the preferences screen now use stack widgets and subtle animations, and better support was given for alternative themes (toolbar icons are now compatible with dark themes, application and status icons are now themeable and dimmed text is now rendered with dynamic colors).

Two new settings were added to let you see and select kernel updates. Even though these aren’t really updates, but the availability of packages for newer kernels, the manager is now able to detect them and to present them for installation to you as a traditional update. These are level 5 updates but the new settings let you configure them independently.

Kernel updates can be configured independently and appear as traditional updates

The kernel selection window was completely redesigned and is now preceded with an information screen which explains what kernels are, how to select them at boot time and what happens to DKMS modules when multiple kernels are installed.

Linux Mint no longer ships lists of fixes and lists of regressions specific to particular kernels. With so many kernel revisions, so many fixes and so many regressions happening sometimes on a daily basis, this information was quickly outdated. Instead, it was replaced with links to relevant sources of information. For instance, if you select a particular kernel you can now quickly access its changelog and see all the bug reports marked against it.

Kernel changelogs and bug reports are now quickly accessible

The update manager was already configurable but it wasn’t clear how to configure it, and why. In particular, the concepts of regressions, stability and security weren’t clearly explained. To raise awareness around these concepts and to show more information, a new screen is there to welcome you to the update manager and to ask you to select an update policy.

Choosing an update policy

This screen is complemented with a help section which explains what’s at play and what to consider when choosing a policy.

Although this screen is only showed once and its main purpose is to present information, it can also be used as a quick way to switch between sets of preferences and it can be launched from the Edit->Update Policy menu.


In 2010, Linux Mint 10 introduced a beautiful metallic theme called "Mint-X". 6 years later trends have changed significantly. Many interfaces and websites changed their style to look more modern. 3D elements and gradients were replaced with simpler shapes, cleaner lines and plain colors.

To respond to this new trend, Linux Mint 18 introduces "Mint-Y", a brand new theme based on the very popular Arc theme from horst3180 and Sam Hewitt's beautiful set of Moka icons.

Mint-Y looks modern, clean and professional. It embraces the new trends, but without looking too "flat" or minimalistic.

There are three variations of the theme. One is light:


Another one is dark:


And the third one is a mix of light and dark, using light widgets but with dark titlebars/toolbars/menubars:


Themeing is a very important aspect of the operating system, because for your experience to be comfortable, your computer doesn't just need to work well, it also needs to make you feel at home. With this in mind, Mint-Y will be given time to mature and it won't replace Mint-X, but complement it.

In Linux Mint 18, both Mint-X and Mint-Y are installed, and Mint-X is still the default theme.

Mint-Y is a work in progress and it will continue to change and to improve, with your feedback, after the Linux Mint 18 release.

System improvements

In 2007, Linux Mint 3.1 introduced the "apt" command, a handy shortcut to apt-get, aptitude, apt-cache and other commands related to package management, and since then this command was improved, slightly, release after release. In 2014, Debian came up with the same idea but implemented it differently. Although their "apt" command was missing some of the features we supported, it also introduced a few improvements. The Debian "apt" command made its way into Ubuntu and many tutorials now refer to it. In Linux Mint 18, "apt" continues to support all the features it previously had, but also now supports the syntax of the Debian "apt" and benefits from the improvements it introduced. Here is an overview of some of the changes:

  • "apt install" and "apt remove" now show progress output.
  • New commands were introduced to support Debian's syntax. "apt full-upgrade" does the same as "apt dist-upgrade", "apt edit-sources" the same as "apt sources" and "apt showhold" the same as "apt held".

The add-apt-repository command now supports the "--remove" argument, making it possible to remove PPAs from the command line.

Linux Mint 18 ships with Thermald, a daemon which monitors thermal sensors and prevent CPUs from overheating.

exFAT file systems are now supported out of the box.

Btrfs support is back and installed by default again.

Artwork improvements

The default theme used in the login screen received the following improvements:

  • To prevent passwords from being typed when no users are pre-selected (thus, when the login screen is waiting for a username to be typed or selected), no dialog is shown by default. Instead, the login screen suggests to select a user. Cases where usernames need to be typed (for instance for LDAP users) are still supported, but you need to press F1 before you can type on the keyboard.
  • Slight improvements were made in the way elements of the login screen appear on the screen, giving the theme extra polish and better quality.

Linux Mint 18 features a superb collection of backgrounds from Andy Fitzsimon, Helena Bartosova, David Cantrell, dking, Jeremy Hill, Jan Kaluza , Konstantin Leonov, Rene Reichenbach, and Sezgin Mendil.

An overview of some of the new backgrounds

Other improvements

HiDPI support is largely improved in Linux Mint 18. Firefox, all the XApps (Xed, Xviewer, Xreader, Xplayer, Pix) and most of the Mint apps (mintdesktop, mintsystem, mintwelcome, mintlocale, mintdrivers, mintnanny, mintstick, mint-common, mintupdate, mintbackup and mintupload) migrated to GTK3.

Popular applications such as Steam, Spotify, Dropbox or even Minecraft were added to the Software Manager and are now easier to install.

All editions now support OEM installations.

Gufw, the graphical firewall configuration tool, was added to the default software selection and is now installed by default.

Main components

Linux Mint 18 features Cinnamon 3.0, MDM 2.0, a Linux kernel 4.4 and an Ubuntu 16.04 package base.

LTS strategy

Linux Mint 18 will receive security updates until 2021.

Until 2018, future versions of Linux Mint will use the same package base as Linux Mint 18, making it trivial for people to upgrade.

Until 2018, the development team won't start working on a new base and will be fully focused on this one.



Add a comment
Previous Next

User Rating: 0 / 5

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive

My door is broken. Not exactly mine, the house I stay in. So I asked my manager, in the evening by the way (not cool), to allow me wait for the promised welder to come and fix it. He/she is supposed to be paid by the management. Estate's management. sikai place ivi ivi. hehe..So, I kinda had the day for myself, to work as I waited for the welder and stuff. I did lotsa stuff, not optimal though.

Was lose.

So, 11am hits. I didn't want to lose my cool. I didn't. Wouldn't like to do it two days in a row. Yesterday was fierce. Was geared up for a fight. Not verbal. I don't do verbal. Physical.
[laugh here]
When I mean geared, I mean having shoe laces tight, a high-soled shoe(for height boost), track suit for flexibility and get. I wanted a fight. I wanted a physical fight to settle something. I went to speak with a person who would trigger my cool and I knew it. That's why I visited the "said person", in that gear.

The said is waay taller than I, but that wasn't close to any of the reasons as to why I wouldn't whoop some ass. "said person's ofcourse". I watched the subject lose it, waiting for that bell like, "Start the war". ok, glorified fight.
I had all the reasons to be mad. I just needed to focus and hit all the right places and right. Not to do the right things, but to do things right. Contextualizing, fighting right. I got the damn skills. Aint kidding there. Si chocha usikam vita. :(
Oflate, I feel awesome. Physically mentally and freaking all. Whatever you fear I'm close to that may be. I need to take some measurement and see whether am getting taller or where the hell is all this courage and pysche for fights in the 21st century, especially for a developer, is coming from.
I'll visit some cool nurse I know. Hails from Meru. So, I explain what I feel sometimes in kimeru. Cool right? ndagitari ntina mirire mono,na ndigua ta njoka cii kiu....ok. back, she's cool. The nurse. She just irked me when she told me she missed me. You are not supposed to miss me[ not you, her], from her workplace. Hospital. Miss me away from there please. Trust me, I didn't give it a nod.

I'm upfront 80%

Back to 11am. Was to check  for the welder. A kitu 50's guy shows up, checks the door, recommends to bring down the whole door, so as to weld it better. I swear I din't break it intentionally. I didn't hang by it. I ok everything he says. I just want it fixed dammit!! Some people are to visit me. I don't want them to be hurt by my door and complicate my social circles( which am not good at, but I try).
The man goes to get the machine, and this is where am left in some murk.
No number, no way be in contact with the guy, just the office, which has proved to be slow enough to sort me out.

The clock hits 2pm.

By then, had already called my manager again, prolonged the period again, told him I'd to wait to the guy after he came, late, to check the "damages". (Thank God am not paying for this is expensive | kungoja nayo?!).
My manager is quite cool. Bad a55 server-admin too. He agreed.
I felt bad for me and my employer. There was work to be done. Was not at the office, this welder guy aint showing up..I finally decided to call the property manager, who says.."naona kama amenichezea akili..hachukui simu..nimepiga mara nne ivi.." bla bla bra...Hell!

The guy never shows up.

The property manager knows am not an easy guy. Nkakula blue ticks, nkachorea io stori.

I decide to pay a visit to my tailor after having the longest chat I've ever had with a maasai guy, proved to be funny, I'm funny, he laughed alot. I swear he wasn't laughing at me. We know each other. My tailor reminds me of my employer alot. There's a quote my employer once told us, Imma explain through my tailor.

My tailor understand me well. He never assumes stuff, like am not growing. He takes my measurements everytime I need a cloth. Trashes any other measurements he has on me, takes new one and uses them. Always appreciate growth and development however little. It's growth. Hail boss.

I appreciate that. He gives me "fitting" clothes. Usually I'm the one who comes up with design alterations and I like it. I'm notorious for saying no to clothes I don't like irrespective of how much time was consumed. I'm a hard person, am not good either. If you like cool people, am not that.


My guy here, knows that. We both love good business. I give him money, he gives me product. Today, I sat longer for stories. I love kambas for no reason..!! This guy starts speaking java, c, c++, OOP and stuff...damn! I'm shocked! He tells me he builds software! used to. WTH is a developer doing with sewing machines? I didn't tell him much about how I love development or how I would save my laptop first if that house without a door were to burn or if the person I was to fight were to come and try to break it or fall on it from the weight of my uppercut with springy Js on me and so...I leave him and email to send a cv to our company and all that, I swear I laughed..not at him.

It was engaging.

I used my day to work and socialize. Now I know that my new friend won't be calling me mzito again, simply because he didn't know am patrick and works, or my pool 'friends' who don't mind me having whatever I have in my wallet.

Today wasn't my best. Was yesterday's upgrade though.

Live today. Avoid fights. If you have to fight, WIN...I mean Kick some Ass.

Add a comment

About Me

Oops...Almost forgot to say something about me. But anyway, I'm that guy, yule Msee, who'll sort out your techie issue and hails from the land of milk and honey. Not forgetting the bitter herbs too.

This is what am best at. Feel free to ask something. 

Latest Tweets