/* * Plugin Name: APCu Object Cache * Description: APCu backend for the WP Object Cache. * Based on Plugin named APCu Object Cache Backend * Plugin URI: https://wordpress.org/plugins/apcu/ * Author: Pierre Schmitz * Author URI: https://pierre-schmitz.com/ * Plugin URI: https://wordpress.org/plugins/apcu/ * * * @Authors James Dugger, Jonathan Bardo * @copyright 2017 GoDaddy Inc. 14455 N. Hayden Road Scottsdale, Arizona */ $oc_logged_in = false; foreach ( $_COOKIE as $k => $v ) { if ( preg_match( '/^comment_author|wordpress_logged_in_[a-f0-9]+|woocommerce_items_in_cart|PHPSESSID_|edd_wp_session|edd_items_in_cartcc_cart_key|ccm_token/', $k ) ) { $oc_logged_in = true; break; } } $oc_blocked_page = ( defined( 'WP_ADMIN' ) || defined( 'DOING_AJAX' ) || defined( 'XMLRPC_REQUEST' ) || 'wp-login.php' === basename( $_SERVER['SCRIPT_FILENAME'] ) ); function wpaas_is_using_apcu() { return version_compare( PHP_VERSION, '5.6.0', '>=' ) && function_exists( 'apcu_fetch' ); } if ( 'cli' !== php_sapi_name() && ! $oc_logged_in && ! $oc_blocked_page && wpaas_is_using_apcu() ) : /** * Save the transients to the DB. The explanation is a bit too long * for code. The tl;dr of it is that we don't have a single 'fast cache' * source yet (like memcached) and so some long lived items like transients * are still best cached in the db and then brought back into APC * * @param string $transient * @param mixed $value * @param int $expire * @param boolean $site = false * * @return bool */ function wpaas_save_transient( $transient, $value, $expire, $site = false ) { global $wp_object_cache, $wpdb; // The 'special' transient option names $transient_timeout = ( $site ? '_site' : '' ) . '_transient_timeout_' . $transient; $transient = ( $site ? '_site' : '' ) . '_transient_' . $transient; // Cap expiration at 24 hours to avoid littering the DB if ( $expire == 0 ) { $expire = 24 * 60 * 60; } // Save to object cache $wp_object_cache->set( $transient, $value, 'options', $expire ); $wp_object_cache->set( $transient_timeout, time() + $expire, 'options', $expire ); // Update alloptions $alloptions = $wp_object_cache->get( 'alloptions', 'options' ); $alloptions[ $transient ] = $value; $alloptions[ $transient_timeout ] = time() + $expire; $wp_object_cache->set( 'alloptions', $alloptions, 'options' ); // Use the normal update option logic if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); if ( $site && is_multisite() ) { $wpdb->query( $wpdb->prepare( "INSERT INTO `{$wpdb->sitemeta}` ( `option_name`, `option_value`, `autoload` ) VALUES ( %s, UNIX_TIMESTAMP( NOW() ) + %d, 'yes' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );", $transient_timeout, $expire ) ); $wpdb->query( $wpdb->prepare( "INSERT INTO `{$wpdb->sitemeta}` ( `option_name`, `option_value`, `autoload` ) VALUES ( %s, %s, 'no' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );", $transient, maybe_serialize( $value ) ) ); } else { $wpdb->query( $wpdb->prepare( "INSERT INTO `{$wpdb->options}` (`option_name`, `option_value`, `autoload`) VALUES ( %s, UNIX_TIMESTAMP( NOW() ) + %d, 'yes' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );", $transient_timeout, $expire ) ); $wpdb->query( $wpdb->prepare( "INSERT INTO `{$wpdb->options}` (`option_name`, `option_value`, `autoload`) VALUES ( %s, %s, 'no' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );", $transient, maybe_serialize( $value ) ) ); } $wpdb->suppress_errors( $flag ); } return true; } function wpaas_prune_transients() { global $wpdb; if ( ! empty( $wpdb ) && $wpdb instanceof wpdb && function_exists( 'is_main_site' ) && function_exists( 'is_main_network' ) ) { $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); // Lifted straight from schema.php // Deletes all expired transients. // The multi-table delete syntax is used to delete the transient record from table a, // and the corresponding transient_timeout record from table b. $time = time(); $wpdb->query( "DELETE a, b FROM $wpdb->options a, $wpdb->options b WHERE a.option_name LIKE '\_transient\_%' AND a.option_name NOT LIKE '\_transient\_timeout\_%' AND b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) ) AND b.option_value < $time" ); if ( is_main_site() && is_main_network() ) { $wpdb->query( "DELETE a, b FROM $wpdb->options a, $wpdb->options b WHERE a.option_name LIKE '\_site\_transient\_%' AND a.option_name NOT LIKE '\_site\_transient\_timeout\_%' AND b.option_name = CONCAT( '_site_transient_timeout_', SUBSTRING( a.option_name, 17 ) ) AND b.option_value < $time" ); } $wpdb->suppress_errors( $flag ); } } /** * If another cache was flushed or updated, sync across all servers / processes using * the database as the authority. This uses the database as the authority for timestamps * as well to avoid drift between servers. * @return void */ function wpaas_init_sync_cache() { global $wpdb; if ( empty( $wpdb ) || ! ( $wpdb instanceof wpdb ) ) { return; } $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $result = $wpdb->get_results( "SELECT option_name, option_value FROM `{$wpdb->options}` WHERE option_name = 'gd_system_last_cache_flush' UNION SELECT 'current_time', UNIX_TIMESTAMP( NOW() ) AS option_value;", ARRAY_A ); $wpdb->suppress_errors( $flag ); if ( empty( $result ) ) { return; } $master_flush = false; foreach ( $result as $row ) { switch ( $row['option_name'] ) { case 'current_time' : $current_time = $row['option_value']; break; case 'gd_system_last_cache_flush' : $master_flush = $row['option_value']; break; } } $local_flush = wp_cache_get( 'gd_system_last_cache_flush' ); if ( false === $local_flush || $local_flush < $master_flush ) { wp_cache_flush( true ); wp_cache_set( 'gd_system_last_cache_flush', $current_time ); } } /** * Start default implementation of object cache */ if ( ! defined( 'WP_APC_KEY_SALT' ) ) { define( 'WP_APC_KEY_SALT', '' ); } function wp_cache_add( $key, $data, $group = '', $expire = 0 ) { global $wp_object_cache; if ( 'transient' == $group ) { wpaas_save_transient( $key, $data, $expire ); return $wp_object_cache->add( "_transient_$key", $data, 'options', $expire ); } elseif ( 'site-transient' == $group ) { wpaas_save_transient( $key, $data, $expire, true ); return $wp_object_cache->add( "_site_transient_$key", $data, 'site-options', $expire ); } else { return $wp_object_cache->add( $key, $data, $group, $expire ); } } function wp_cache_incr( $key, $n = 1, $group = '' ) { global $wp_object_cache; return $wp_object_cache->incr2( $key, $n, $group ); } function wp_cache_decr( $key, $n = 1, $group = '' ) { global $wp_object_cache; return $wp_object_cache->decr( $key, $n, $group ); } function wp_cache_close() { return true; } function wp_cache_delete( $key, $group = '' ) { global $wp_object_cache, $wpdb; if ( 'transient' == $group ) { if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $wpdb->query( $wpdb->prepare( "DELETE FROM `{$wpdb->prefix}options` WHERE option_name IN ( %s, %s );", "_transient_{$key}", "_transient_timeout_{$key}" ) ); $wpdb->suppress_errors( $flag ); } $wp_object_cache->delete( "_transient_timeout_$key", 'options' ); // Update alloptions $alloptions = $wp_object_cache->get( 'alloptions', 'options' ); unset( $alloptions["_transient_$key"] ); unset( $alloptions["_transient_timeout_$key"] ); $wp_object_cache->set( 'alloptions', $alloptions, 'options' ); return $wp_object_cache->delete( "_transient_$key", 'options' ); } elseif ( 'site-transient' == $group ) { if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $table = $wpdb->options; if ( is_multisite() ) { $table = $wpdb->sitemeta; } $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $wpdb->query( $wpdb->prepare( "DELETE FROM `{$table}` WHERE option_name IN ( %s, %s );", "_transient_{$key}", "_transient_timeout_{$key}" ) ); $wpdb->suppress_errors( $flag ); } $wp_object_cache->delete( "_transient_timeout_$key", 'site-options' ); // Update alloptions $alloptions = $wp_object_cache->get( 'alloptions', 'options' ); unset( $alloptions["_site_transient_$key"] ); unset( $alloptions["_site_transient_timeout_$key"] ); $wp_object_cache->set( 'alloptions', $alloptions, 'options' ); return $wp_object_cache->delete( "_site_transient_$key", 'site-options' ); } return $wp_object_cache->delete( $key, $group ); } function wp_cache_flush( $local_flush = false ) { global $wp_object_cache, $wpdb; if ( ! $local_flush ) { if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $wpdb->query( "INSERT INTO `{$wpdb->options}` (`option_name`, `option_value`, `autoload`) VALUES ( 'gd_system_last_cache_flush', UNIX_TIMESTAMP( NOW() ), 'no' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );" ); $wpdb->suppress_errors( $flag ); } } return $wp_object_cache->flush(); } function wp_cache_get( $key, $group = '', $force = false ) { global $wp_object_cache, $wpdb; if ( 'transient' == $group ) { $alloptions = $wp_object_cache->get( 'alloptions', 'options' ); if ( isset( $alloptions["_transient_$key"] ) && isset( $alloptions["_transient_timeout_$key"] ) && $alloptions["_transient_timeout_$key"] > time() ) { return maybe_unserialize( $alloptions["_transient_$key"] ); } $transient = $wp_object_cache->get( "_transient_$key", 'options', $force ); $timeout = $wp_object_cache->get( "_transient_timeout_$key", 'options', $force ); if ( false !== $transient && ! empty( $timeout ) && $timeout > time() ) { return maybe_unserialize( $transient ); } if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $result = $wpdb->get_results( $wpdb->prepare( "SELECT option_name, option_value FROM `{$wpdb->options}` WHERE option_name IN ( %s, %s ) UNION SELECT 'current_time', UNIX_TIMESTAMP( NOW() ) AS option_value;", "_transient_{$key}", "_transient_timeout_{$key}" ), ARRAY_A ); $wpdb->suppress_errors( $flag ); if ( ! empty( $result ) ) { $transient = false; $timeout = false; $current_time = time(); foreach ( $result as $row ) { switch ( $row['option_name'] ) { case "_transient_$key" : $transient = $row['option_value']; break; case "_transient_timeout_$key" : $timeout = $row['option_value']; break; case 'current_time' : $current_time = $row['option_value']; break; } } if ( false !== $transient && ! empty( $timeout ) && $timeout > $current_time ) { return maybe_unserialize( $transient ); } } } return false; } elseif ( 'site-transient' == $group ) { $transient = $wp_object_cache->get( "_site_transient_$key", 'options', $force ); $timeout = $wp_object_cache->get( "_site_transient_timeout_$key", 'options', $force ); if ( false !== $transient && ! empty( $timeout ) && $timeout > time() ) { return maybe_unserialize( $transient ); } if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) { $table = $wpdb->options; if ( is_multisite() ) { $table = $wpdb->sitemeta; } $flag = $wpdb->suppress_errors; $wpdb->suppress_errors( true ); $result = $wpdb->get_results( $wpdb->prepare( "SELECT option_name, option_value FROM `{$table}` WHERE option_name IN ( %s, %s ) UNION SELECT 'current_time', UNIX_TIMESTAMP( NOW() ) AS option_value;", "_site_transient_{$key}", "_site_transient_timeout_{$key}" ), ARRAY_A ); $wpdb->suppress_errors( $flag ); if ( ! empty( $result ) ) { $transient = false; $timeout = false; $current_time = time(); foreach ( $result as $row ) { switch ( $row['option_name'] ) { case "_site_transient_$key" : $transient = $row['option_value']; break; case "_site_transient_timeout_$key" : $timeout = $row['option_value']; break; case 'current_time' : $current_time = $row['option_value']; break; } } if ( false !== $transient && ! empty( $timeout ) && $timeout > $current_time ) { return maybe_unserialize( $transient ); } } } return false; } else { return $wp_object_cache->get( $key, $group, $force ); } } function wp_cache_init() { global $wp_object_cache; if ( mt_rand( 1, 100 ) == 42 ) { wpaas_prune_transients(); } add_action( 'muplugins_loaded', 'wpaas_init_sync_cache' ); $wp_object_cache = new APCu_Object_Cache(); } function wp_cache_replace( $key, $data, $group = '', $expire = 0 ) { global $wp_object_cache; return $wp_object_cache->replace( $key, $data, $group, $expire ); } function wp_cache_set( $key, $data, $group = '', $expire = 0 ) { global $wp_object_cache; if ( defined( 'WP_INSTALLING' ) == false ) { if ( 'transient' == $group ) { return wpaas_save_transient( $key, $data, $expire ); } elseif ( 'site-transient' == $group ) { return wpaas_save_transient( $key, $data, $expire, true ); } else { return $wp_object_cache->set( $key, $data, $group, $expire ); } } else { return $wp_object_cache->delete( $key, $group ); } } function wp_cache_switch_to_blog( $blog_id ) { global $wp_object_cache; return $wp_object_cache->switch_to_blog( $blog_id ); } function wp_cache_add_global_groups( $groups ) { global $wp_object_cache; $wp_object_cache->add_global_groups( $groups ); } function wp_cache_add_non_persistent_groups( $groups ) { global $wp_object_cache; $wp_object_cache->add_non_persistent_groups( $groups ); } class GD_APCu_Object_Cache { private $prefix = ''; private $local_cache = array(); private $global_groups = array(); private $non_persistent_groups = array(); private $multisite = false; private $blog_prefix = ''; public function __construct() { global $table_prefix; $this->multisite = is_multisite(); $this->blog_prefix = $this->multisite ? get_current_blog_id() . ':' : ''; $this->prefix = DB_HOST . '.' . DB_NAME . '.' . $table_prefix; } private function get_group( $group ) { return empty( $group ) ? 'default' : $group; } private function get_key( $group, $key ) { if ( $this->multisite && ! isset( $this->global_groups[ $group ] ) ) { return $this->prefix . '.' . $group . '.' . $this->blog_prefix . ':' . $key; } else { return $this->prefix . '.' . $group . '.' . $key; } } public function add( $key, $data, $group = 'default', $expire = 0 ) { $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( function_exists( 'wp_suspend_cache_addition' ) && wp_suspend_cache_addition() ) { return false; } if ( isset( $this->local_cache[ $group ][ $key ] ) ) { return false; } // FIXME: Somehow apcu_add does not return false if key already exists if ( ! isset( $this->non_persistent_groups[ $group ] ) && apcu_exists( $key ) ) { return false; } if ( is_object( $data ) ) { $this->local_cache[ $group ][ $key ] = clone $data; } else { $this->local_cache[ $group ][ $key ] = $data; } if ( ! isset( $this->non_persistent_groups[ $group ] ) ) { return apcu_add( $key, $data, (int) $expire ); } return true; } public function add_global_groups( $groups ) { if ( is_array( $groups ) ) { foreach ( $groups as $group ) { $this->global_groups[ $group ] = true; } } else { $this->global_groups[ $groups ] = true; } } public function add_non_persistent_groups( $groups ) { if ( is_array( $groups ) ) { foreach ( $groups as $group ) { $this->non_persistent_groups[ $group ] = true; } } else { $this->non_persistent_groups[ $groups ] = true; } } public function decr( $key, $offset = 1, $group = 'default' ) { if ( $offset < 0 ) { return $this->incr( $key, abs( $offset ), $group ); } $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( isset( $this->local_cache[ $group ][ $key ] ) && $this->local_cache[ $group ][ $key ] - $offset >= 0 ) { $this->local_cache[ $group ][ $key ] -= $offset; } else { $this->local_cache[ $group ][ $key ] = 0; } if ( isset( $this->non_persistent_groups[ $group ] ) ) { return $this->local_cache[ $group ][ $key ]; } else { $value = apcu_dec( $key, $offset ); if ( $value < 0 ) { apcu_store( $key, 0 ); return 0; } return $value; } } public function delete( $key, $group = 'default', $force = false ) { $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); unset( $this->local_cache[ $group ][ $key ] ); if ( ! isset( $this->non_persistent_groups[ $group ] ) ) { return apcu_delete( $key ); } return true; } public function flush() { $this->local_cache = array(); // TODO: only clear our own entries apcu_clear_cache(); return true; } public function get( $key, $group = 'default', $force = false, &$found = null ) { $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( ! $force && isset( $this->local_cache[ $group ][ $key ] ) ) { $found = true; if ( is_object( $this->local_cache[ $group ][ $key ] ) ) { return clone $this->local_cache[ $group ][ $key ]; } else { return $this->local_cache[ $group ][ $key ]; } } elseif ( isset( $this->non_persistent_groups[ $group ] ) ) { $found = false; return false; } else { $value = @apcu_fetch( $key, $found ); if ( $found ) { if ( $force ) { $this->local_cache[ $group ][ $key ] = $value; } return $value; } else { return false; } } } public function incr2( $key, $offset = 1, $group = 'default' ) { if ( $offset < 0 ) { return $this->decr( $key, abs( $offset ), $group ); } $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( isset( $this->local_cache[ $group ][ $key ] ) && $this->local_cache[ $group ][ $key ] + $offset >= 0 ) { $this->local_cache[ $group ][ $key ] += $offset; } else { $this->local_cache[ $group ][ $key ] = 0; } if ( isset( $this->non_persistent_groups[ $group ] ) ) { return $this->local_cache[ $group ][ $key ]; } else if ( function_exists( 'apcu_inc' ) ) { $value = apcu_inc( $key, $offset ); if ( $value < 0 ) { apcu_store( $key, 0 ); return 0; } return $value; } return false; } public function replace( $key, $data, $group = 'default', $expire = 0 ) { $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( isset( $this->non_persistent_groups[ $group ] ) ) { if ( ! isset( $this->local_cache[ $group ][ $key ] ) ) { return false; } } else { if ( ! isset( $this->local_cache[ $group ][ $key ] ) && ! apcu_exists( $key ) ) { return false; } apcu_store( $key, $data, (int) $expire ); } if ( is_object( $data ) ) { $this->local_cache[ $group ][ $key ] = clone $data; } else { $this->local_cache[ $group ][ $key ] = $data; } return true; } public function reset() { // This function is deprecated as of WordPress 3.5 // Be safe and flush the cache if this function is still used $this->flush(); } public function set( $key, $data, $group = 'default', $expire = 0 ) { $group = $this->get_group( $group ); $key = $this->get_key( $group, $key ); if ( is_object( $data ) ) { $this->local_cache[ $group ][ $key ] = clone $data; } else { $this->local_cache[ $group ][ $key ] = $data; } if ( ! isset( $this->non_persistent_groups[ $group ] ) ) { return apcu_store( $key, $data, (int) $expire ); } return true; } public function stats() { // Only implemented because the default cache class provides this. // This method is never called. echo ''; } public function switch_to_blog( $blog_id ) { $this->blog_prefix = $this->multisite ? $blog_id . ':' : ''; } } if ( function_exists( 'apcu_inc' ) ) { class APCu_Object_Cache extends GD_APCu_Object_Cache { function incr( $key, $offset = 1, $group = 'default' ) { return parent::incr2( $key, $offset, $group ); } } } else { class APCu_Object_Cache extends GD_APCu_Object_Cache { // Blank } } endif; Young Stalin: noteworthy photos and life facts - Old Pictures
Stories

Young Stalin: noteworthy photos and life facts

7 Mins read

Young Stalin in Baku, 1910Joseph Vissarionovich Dzhugashvili changed his name to Stalin at a very young age. Stalin derives from Steel, emphasizing the strength of character. And it seems like a young Georgia-born revolutionary perfectly knew that Stalin would be the best fit for the role that he was going to play in history. Stalin belongs to the same generation of politics as Winston Churchill, Adolf Hitler, and Franklin D. Roosevelt. His role in history is full of contradictions. While leading USSR to the victory in WW2, Stalin ruled as dictator causing repressions and a considerable amount of deaths inside the country.

Joseph Dzhugashvili was born on December 18, 1879, in the city of Gori, Georgia. This territory was a part of the Russian Empire then. Joseph’s parents were shoemaker Vissarion Dzhugashvili, and a laundress Ketevan Geladze.

There’s a theory that links childhood traumas and illness with character development. Young Joseph had plenty of them. At the age of 7, he contracted smallpox, that covered his face with pockmarks. And now an interesting one: Stalin’s face looks smooth on all of these historical pictures. It is a result of the retouching. Stalin cared about his images and ordered to hide the pockmark scars on his face. 

He also had congenital disabilities: fused second and third toes on his left foot. In 1885, Joseph suffered a phaeton accident. He severely injured his arm and leg; he couldn’t fully bend his left arm after that accident, and it seemed shorter than his right one.

Parents of Stalin

Vissarion and Ketevan Djugashvilli

The drunken story of Joseph’s father

Stalin’s father Vissarion (Beso) was a shoemaker of the village of Didi-Lilo, Tiflis (modern Tbilisi) province. He was always drunk and was reported to local police for the brutal assaults of his wife Ketevan and little Coco (a nickname of young Stalin). There is a story that Joseph tried to protect his mother from his drunk father. A kid threw a knife at Vissarion and ran away. According to the memories of the son of a policeman in Gori, on another occasion, Vissarion broke into the house where Ketevan and little Coco were covering. He beat up both of them, damaging the head of his son.

Joseph was the third son of the family. His elder brothers died at a very young age.  The shoemaking business of Stalin’s father didn’t do well. The family frequently relocated, seeking a better job. Ultimately, Vissarion left his wife and tried to take his Joseph with him. Ketevan didn’t let him do so. Joseph was eleven years old when his father “died in a drunken fight.” Someone stabbed him with a knife. No one could keep young kid from spending time in the streets of Gori in a lousy company of local thugs and outlaws.

Stalin at the age of 15

Young Stalin at the age of 15.

Motherlove almost saved Joseph.

Ketevan Georgievna, a mother of Stalin, knew the dark side of his son. She saw how the father’s cruelty corrupted the kid’s character, making his character hideous and evil. Ketevan was a hard-working woman who often punished her only child but loved him at the same time. Stalin’s childhood friend David Machavariani said that “Kato surrounded Joseph with excessive maternal love and, like a mother-wolf, protected him from everyone and everything. She exhausted herself with work to make her darling child happy.” 

Historians claim that Ketevan knew about the evil side of Joseph’s character and tried to compensate it with religious education. She even hoped that her son would become a priest. Ketevan tried to assign Joseph to study at the Gori Orthodox Theological School. However, Stalin didn’t speak Russian at all and failed exams. Priest Christopher Charkviani taught Joseph the Russian language during several next years. Stalin spent one year in the Orthodox school and, by the end of the first year, decided he did not believe in God. 

The information card on “I. V. Stalin”, from the files of the Imperial police in Saint Petersburg, 1911

The mugshot and the police card on “I. V. Stalin.” Archives of the police in Saint Petersburg, 1911

Joseph Stalin at the age of 23

Joseph Stalin at the age of 23

Young Stalin, a gifted student of Marx

Joseph passed the entrance exams and was enrolled in the Orthodox Tiflis Theological Seminary in September 1894. It was a place where Stalin contacted the Marxist Communistic Ideology for the first time. Stalin recalled: “I entered the revolutionary movement at the age of 15 when I got in touch with the underground groups of Russian Marxists who were then living in Transcaucasia. These groups had a great influence on me and instilled in me a taste for underground Marxist literature.”

According to the English historian Simon Sebag-Montefiore, Joseph was an extremely gifted student. Stalin received excellent grades in all subjects: mathematics, theology, Greek, and Russian. Stalin liked poetry and even wrote a few poems in Georgian.

Another Mugshot of Stalin , 1908

The first mugshot from the police archive, 1908

Stalin had gained the experience of a propagandist in 1898, during a meeting with workers at the apartment of the revolutionary Vano Sturua. He organized an association of the young railroad workers and began to teach them Marxist ideas. In August, Joseph joined the Georgian Social-Democratic organization “Mesame-dasi”. Young Stalin formed the core of the revolutionary minority of this organization, the majority of which supported the positions of “legal Marxism” and inclined towards nationalism.

On May 29, 1899, in his fifth year of study, Stalin was expelled from the seminary “for not showing up for exams for an unknown reason”.

After leaving the seminary, Stalin worked in a weather office until, in 1901, when he devoted himself to boot-strapping underground revolutionary.

From the police archives, 1911

The secret police of the Russian Empire caught Joseph Stalin three times upon his tries to escape the exile.

Police archive photos of Stalin

From the police archives, 1909

From the police archives, 1909

From the police archives, 1910

A bright revolutionary start

The name of Stalin became widespread in September 1901, when a young illegal newspaper, “Brdzola” (“Struggle”) published his article on the front page. Later the authority of the Russian Social-Democratic party involved 22-years old revolutionary into the organization of their new Batumi branch.

This party split in 1903 into more and less radical branches. Young Stalin joined the more radical group of Bolsheviks. Overal he triggered more aggressive revolutionary activities within the Bolsheviks wing of the party. He contributed to the party fundraising actively. Stalin organized several robberies and blackmailed — even kidnapping.

Stalin with Communist party members

Stalin (standing, third from left) with a group of Bolshevik revolutionaries in Turukhansk, Russian Empire. 1915.

In 1904, Joseph organized a grand strike of workers in the oil fields in Baku. This protest ended up with the agreement between the strikers and owners. It was a massive success for a young revolutionary. Communists’ party career of young Stalin skyrocketed. Joseph attended the 1st conference of the Bolshevik’s party in Tammerfors (Finland), where he first personally met Lenin. Stalin traveled to Stockholm next year while attending the Communist’s event. It was his first trip abroad.

Young Stalin didn’t forget about his personal life while building a communist career. On the night of July 16, 1906, Joseph Dzhugashvili got married to Ekaterina Svanidze. Stalin’s first son, Yakov, was born in 1907. Stalin’s wife died of typhus at the end of the same year.

Meanwhile, Stalin continued to prove his reputation as a productive communist party member. He visited several Bolshevik’s events, including one in London. He appeared on the radars of the Russian police as a result. Stalin was twice in exile in the town of Solvychegodsk, Vologda province – from February 27 to June 24, 1909, and from October 29, 1910, to July 6, 1911. Joseph escaped the exile twice, but police officers arrested him again all the time.

Signature of Joseph Stalin

Signature of Joseph Stalin from his forged passport. This fake document allowed Joseph to escape from his 3rd exile in Syberia.

The Syberia home of the name Stalin

Joseph used both Stalin and Djugashvili names until 1912. He renamed himself ultimately during the exile in Siberia. This time, the place of exile was the city of Narym, Tomsk province. It was a harsh and cold place in the heart of Syberia. Stalin spent 41 days in Narym – from July 22 to September 1, 1912. He managed to bribe the secret police and escape the exile. Joseph used a forged passport with a Stalin name to board a train and directed to the European part of Russia. He became a founding member of the Pravda newspaper during this period.

Police arrested Stalin the fourth time in March 1913. The secret police were very cautious this time and managed to keep him in exile until 1916.

Joseph Stalin and Suren Spandarjan, 1915

Joseph Stalin and Suren Spandarjan, 1915

A criminal file on Stalin following his arrest in Baku, Azerbaijan. 1910.

A criminal file on Stalin following his arrest in Baku, Azerbaijan. 1910.

A fresh start

February Revolution set Stalin free. He hurried back to St. Petersburg to meet Lenin again from Switzerland. Meanwhile, Joseph became a member of the editorial board of the newspaper Pravda.

Stalin supported Lenin’s concept of transforming the “bourgeois-democratic” February revolution into a proletarian socialist revolution. Stalin joined the Central Committee of the Bolshevik’s party in April. He participated in the First All-Russian Congress of Soviet Workers and Soldiers; was elected a member of the All-Russian Central Executive Committee and a member of the Bureau of the All-Russian Central Executive Committee from the Bolshevik faction.

Stalin during the October Revolution in Russia, 1917

Stalin during the October Revolution in Russia, 1917

Young Stalin in 1918

Stalin, in 1918, still looks pretty fresh.

At this time, Stalin and Trotsky held a conference of the Bolsheviks – delegates to the 2nd All-Russian Congress of Soviets of the RSD. Stalin delivered a report on ongoing political events. He participated in a meeting of the Central Committee of the Communistic party that formed the structure and name of the new Soviet government.

After the victory of the October Revolution, Stalin entered the Council of People’s Commissars (SNK) as People’s Commissar for Nationalities (Stalin wrote the article “Marxism and the National Policies” at the end of 1912-1913,  and from that time he gained the reputation of national problems expert).

Joseph Stalin and Vladimir Lenin during the VIII Congress of the Party, 1919

Joseph Stalin and Vladimir Lenin during the VIII Congress of the Party, 1919

Joseph Stalin in 1920

Joseph Stalin in 1920

Stalin and Kalinin, 1919

Stalin and Kalinin, 1919

young staling during the Russian Revolution, 1918

During the Russian Revolution, 1918

Stalin’s way to power

Joesph Stalin entered the Bureau of the Central Committee of the Communist Party, together with Lenin, Trotsky, and Sverdlov. This body had “the right to decide all urgent matters, but with the obligatory involvement of all members of the Central Committee who were at that moment in the central party office.”

Stalin married again in 1918, and his son Vasily was born on March 24, 1921, in Moscow. In 1922 Stalin was elected as a general secretary of the Communist Party. Initially, this position meant only the leadership of the party structure. Lenin was the Chairman of the Council of People’s Commissars and led the government. But in fact, the position of the general secretary had a crucial role in the developing structure of the Communist party. Stalin solely appointed numerous mid-level bureaucrats, which in their turn elected the government. Here’s how Stalin accumulated the real power in post-revolution Russia.

Related posts
Photo of a day

The Reindeer operation: a story behind WW2 photo, 1941

1 Mins read
The name of this photo is Reindeer, called after the German operation during the WW2. This offensive aimed to capture Petsamo (an…
Stories

Outstanding WW2 pictures (Part3: Emmanuil Evzerikhin)

2 Mins read
Oldpics continues to publish the most amazing WW2 pictures made by the Soviet photographers. It’s the third volume of this series.  Here…
CitiesStories

American settlers’ lifestyle through the lens of Solomon Butcher

4 Mins read
Solomon Butcher photography is an important visual source for understanding the routine of the American settlers’ lives. Solomon Butcher preserved her history…
Subscribe
Notify of
guest
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback
3 years ago

[…] from the early years of young Mao Zedong lived to our days. But Oldpics has already published old photographs of Joseph Stalin, Winston Churchill, and even some pictures of Adolf Hitler. So we had to find at least some images […]

trackback
3 years ago

[…] early photographs of the great politicians of the 20th century. You can check noteworthy photos of young Joseph Stalin, rare images of Mao Zedong, and even pictures of Adolf Hitler during his WWI […]

×
Stories

WW2 Pacific battles in pictures by W Eugene Smith

2
0
Would love your thoughts, please comment.x
()
x