در مورد کتاب Soft Skills

چند روز پیش کتاب Soft Skills تموم شد و تقریبن از همون اوایلش دوست داشتم در موردش بنویسم. خیلی وقت پیش توی وبلاگ پرهام دوستدار، در موردش خوندم و همون موقع تصمیم گرفتم بخونمش. ولی همیشه با کتاب خوندن توی کامپیوتر مشکل داشتم و برای همین وقتی کیندلم رو گرفتم، این کتاب جزو اولین کتاب‌هایی بود که خوندمش.

شاید بشه گفت کار زشتی کردم که کتاب رو نخریدم، شایدم کار زشتی نکرده باشم، ولی به هر حال، از کتاب خیلی لذت بردم. وقتی از خوندن یه رمان سر کلاس خسته شده بودم، شروعش کردم و کمی بعد رهاش کردم و دوباره بعدترش شروعش کردم و تا آخرش رفتم.

این کتاب برای برنامه‌نویس‌ها نوشته شده، رهنمودی که حاصل تجربه‌ی نویسنده‌شه و از بخش‌های مختلفی تشکیل شده که در مورد کار، بهره‌وری، مدیریت مالی، ورزش، تغذیه و روح توش حرف می‌زنه و حرف‌های خوبی برای من داشت. من فصل‌هایی ازش رو بوکمارک کردم که حتمن حتمن سر بزنم بهشون و احتمالن قراره برداشتم از هر یک یا چند فصلش تبدیل به یه نوشته‌ی وبلاگ بشه.

تا اون موقع می‌تونید نوشته‌ی پرهام رو بخونید و به بخش آخر پادکست جادی گوش بدید 😀

درباره من – بخش اول

می‌خواستم صفحه‌ی درباره‌م رو بسازم و چیزهایی که این پایین می‌خونید به نظرم مناسب‌ترین چیزها اومدن برای این وبلاگ. به شکل‌های دیگه‌ای هم می‌شه من رو شناخت که جاهای دیگه‌ای (مثل لینکداین و …) خودم رو معرفی کردم.


من احمدعلیم. قرار بود اسمم امیرمحمد باشه ولی توی دقیقه‌ی ۹۰ تصمیم گرفتن اسمم رو بذارن احمدعلی و این‌جوری بود که «علی»ِ آخر اسمم شد اولین چیز مشترکی که با پسرخاله و پسردایی بزرگ‌تر از خودم دارم. آخرای روز ۱۵ آذر سال ۷۴ تو اصفهان به دنیا اومدم و تا چهار سالگی اصفهان بودم و بعدش اومدیم تهران. فکر کنم شیش ماه بعدش بود که شیما به دنیا اومد. دوست داشتم اسمش «خورشید» می‌بود چون دوست داشتم بدونم چی می‌شه اگه اسم یه آدم خورشید باشه.

یادمه شب قبل از اولین روزی که می‌خواستم برم مهدکودک مریض بودم و خوابای جورواجور می‌دیدم. بعضی‌هاشون هم شبیه کابوس بود. باحالی اون شب این بود که از زیر پتو میومدم بیرون و بیدار بودم و وقتی دوباره چهار دست و پا بر می‌گشتم زیر پتو، انگار دوباره بر می‌گشتم به دنیای توی خواب‌هام. یادمه اون شب بابام برای این‌که بهم ثابت کنه من توی خونه‌ی خاله‌مم (اون شب خونه‌ی خاله‌م خوابیده بودیم) و نه توی مهدکودک منو برد دور خونه چرخوند و توی پذیرایی خوابم برد و دوباره دنیام شد همون پذیرایی که کلی بچه توش داشتن شادی می‌کردن.

خاطره‌ی دیگه‌ای که از مهد کودکم یادمه، قیچی‌هایی بود که بابام برام خریده بود و به‌جای این‌که کاغذ رو صاف ببرن، با طرح زیگ‌زاگ می‌بریدن و همین‌طور تنها کلاس مشترک با جنس مخالف تا حدود چهارده سال بعدش توی دانشگاه و کادوی تولدم که یه ماشین‌کنترلی بود و تا مدت‌ها فکر می‌کردم مهد کودک بهم کادو داده ولی از طرف مادربزرگم بود.

چیزهای نامشخص دیگه‌ای هم هستن. آدم‌آهنی‌ای که از مکه برام آورده بودن، اسباب‌بازی‌های دیگه، خاطره‌م از زمانی که لامپ اتاقم رو محض تنوع (و احتمالن کسب تجربه‌ی مامان و بابا) با یه لامپ رنگی سبزرنگ عوض کرده بودن، خاطره‌های گنگی از وقتی که خاله‌ها و داییم‌اینا با هم اومده بودن اصفهان و شبش داشتیم یه رخت‌خواب سراسری توی پذیرایی می‌نداختیم که همه توش بخوابیم.

یا وقتی که مادربزرگ و عمه‌هام برام یه دستگاه میکرو خریده بودن و توی یه جای پاسیومانند که کنار حال و پذیرایی بود کنار تلویزیون گذاشته بودیمش و باهاش بازی می‌کردم، اتاق خواب مامان و بابا توی خونه‌ی اصفهان که چندتا پله به سمت بالا می‌خورد، یا مثلن روزی که مامانم بهم قول داده بود ببرتم ددر و بعد نتونسته بود و من که روی تخت مامان اینا داشتم گریه می‌کردم.

درِ ویدئو کلوپی که توی اصفهان ازش ویدئو کرایه می‌کردیم و من تا مدت‌ها به‌جای کرایه می‌گفتم اجاره و یا یه مغازه‌ی دیگه که مطمئن نیستم چی می‌فروخت دقیقن ولی ما ازش قوری‌های اسباب‌بازی خریدیم و برام جالب بود که قوری کوچولو هم وجود داره توی دنیا و تولد پسر همسایه‌ی پایینی‌مون و کامیون کوچیکی که براش به عنوان کادوی تولد بردم.

نگاهم به گذر زندگی به این شکل که «صبح بیدار شیم صبحانه بخوریم ناهار بخوریم بعد بخوابیم بعد بابا میاد شام بخوریم بعدش بخوابیم بخوابیم بخوابیم بخوابیم بخوابیم تا صبح بیدار شیم…» و یا دور خودم چرخیدن و «هان هان زندگی» گفتن که یادم نمیاد چه مفهومی برام داشت.

میکرو بازی کردن با پسر همسایه مادربزرگم اوایل که تهران اومده بودیم و خونه پیدا نکرده بودیم و وقتی که حمام رفته بود و آب توی گوشاش رفته بود و با تکون دادن سرش داشت تلاش می‌کرد گوشاش رو خشک کنه که سرما نخوره، تخته سیاهی که توی زیرزمین خونه‌ی مادربزرگم پیداش کردم و برای رعایت نظافت شستمش و بعدن بابام گفت که اگه تخته سیاه رو زیاد شست خراب می‌شه.

خونه‌ی جدید و همسایه‌ها و دوستای جدید، فوتبال بازی کردن با پسرخاله‌م توی حیاط، یه شب جمع شدن با بچه‌های دیگه و روشن کردن چندتا شمع و یکی از پسرا که دستش رو روی شعله‌ی شمع می‌برد و فکر می‌کردم خیلی کار خفنی می‌کنه تا این‌که بهم یاد داد که اگه دستم رو سریع از روی شعله رد کنم نمی‌سوزم، بلند صدا کردن پسر همسایه‌مون که فکر کنم اسمش علی بود از توی پنجره و فکر کنم جواب دادن خواهرش که خونه نیست و رفته مدرسه، خونه‌ی یکی از دوستام که طبقه‌ی اول بود.

منبع آبی که می‌خواستن بیارنش توی خونه و با گذاشتن میله زیرش و حرکت دادن منبع روی میله‌ها داشتن به زیرزمین منتقلش می‌کردن، شکستن سرم وقتی داشتم برای شیما کوچولو شکلک در میاوردم و روی نرده‌های حیاط نشسته بودم که تعادلم رو از دست دادم و از پشت افتادم، خون‌ریزی سرم توی دستشویی خونه و رفتن به درمانگاه و بخیه‌زدن‌ سرم و روزهای بعدش و باز کردن بخیه و گلی که روی زمین پرت شد و همین‌طور، هدیه‌های خداحافظی بچه‌های همسایه (دوستام) که فکر کنم یکی‌شون هنوز موجوده: یه جا مدادی رو میزی که خیلی بعدها دادمش به بابام چون بیشتر به کارش میومد…


با خاطرات مهدکودک شروع کردم چون شبیه نقطه‌های نقشه‌ن که با کمکشون می‌شه فهمید کجای راهیم. چیزهایی که اون وسط جا مونده بود رو دوباره نوشتم و باز به صورت خودکار، خونه‌هایی که توش بودیم شد نقطه‌های راهم. دوست دارم بخش‌های بعدی این نوشته رو بنویسم ولی نمی‌دونم کی فرصت و حوصله‌ش پیش میاد. در هر صورت تا زمانی که اینا کامل نشه تسکی با عنوان «blog-about» توی تسک‌لیست من می‌مونه..

من چجوری وردپرس‌های سرورمون رو آپدیت نگه می‌دارم

ما همیشه برای آپدیت وردپرس توی سرورمون مشکل داشتیم. وردپرس به فولدر خودش دسترسی نداره بنابراین نمی‌تونه خودش خودش رو آپدیت کنه و با FTP سرورمون هم درست ارتباط برقرار نمی‌کرد و نمی‌تونست از طریق FTP هم خودش رو آپدیت کنه. چون مطمئن نبودم که از نظر امنیتی اوکیه که دسترسی IUSR و IIS_IUSRS به کل پوشه‌ها رو کامل کنم، با پاورشل اسکریپتی نوشتم برای دانلود و آن‌زیپ‌کردن آخرین نسخه‌ی وردپرس فارسی از سایت وردپرس (دومین اسکریپت پایین)

این اسکریپت رو خیلی وقت پیش نوشته بودم و جاهای مختلفی هم ازش استفاده می‌کردم. مشکلی که داشتم این بود که وقتی آپدیت جدید برای وردپرس میومد، باید توی همه‌ی جاهایی که وردپرس رو نصب داشتم اون رو اجرا می‌کردم. برای این‌که دوباره‌کاری نکنم، دیشب یه اسکریپت دیگه نوشتم که اولش آرایه‌ای از آدرس پوشه‌ی وردپرس تعریف می‌کنم و فرآیند به‌روزرسانی رو توی همه‌ی اعضای اون آرایه انجام می‌دم (اولین اسکریپت پایین)

و اگه بخوام یکم جلوتر برم، می‌تونم توی Task Scheduler بگم که مثلن هفته‌ای یک بار این اسکریپت اجرا بشه و این‌جوری مطمئنم که وردپرسم با حداکثر یک هفته تاخیر همیشه آپدیت می‌مونه 🙂

بارگزاری خودکار تنظیمات موجودیت‌ها توی EF Code First

هنوز مطمئن نیستم که آیا می‌خوام این‌جا فنی هم بنویسم یا نه. دوست دارم این‌جا بازتابی از خودم باشه و نه وبلاگی که مورد موضوعی خاص و خب بعد فنی من هم بخشی از منه و منطقیه که بازتابش رو این‌جا داشته باشه. به هر حال چون وبلاگم از نظر فراموش‌ناپذیری یکی از مطمئن‌ترین جاهاییه که می‌شناسم و بارها شده به بعضی از نوشته‌های دو برنامه‌نویس که به هدف به‌خاطرسپاری شخصی نوشته شده بودن سر بزنم، این رو هم این‌جا می‌نویسم.

برای بارگزاری خودکار EntityTypeConfigurationها، از این کد می‌شه توی DbContext استفاده کرد (حواستون باشه به جای Context توی خط اول، اسم یکی از کلاس‌های اسمبلی‌ای رو بذارید که EntityTypeConfigurationها توشه):

منبعش هم + (با عرض پوزش لینک گم شده 🙁 )

پی‌نوشت: در مورد این‌که چه چیزهایی دوست دارم این‌جا باشه شاید بعدن بیشتر بنویسم.

لطفن چیزی رو توی خودتون نگه ندارید

نگه‌داشتن دردها و چیزهایی که آزارتون می‌ده توی خودتون از بدترین کاراییه که می‌تونید با خودتون و اطرافیان‌تون بکنید. راهی پیدا کنید که اون رو با اطرافیان‌تون در میون بذارید یا اگر نمی‌تونید ازشون جدا بشید. اگه هم توی خودتون نگه‌شون دارید و هم با اون آدم‌ها بمونید، روزی می‌رسه که منفجر می‌شید و اتفاق خوبی نمیوفته.

پی‌نوشت: توی Soft Skills به نقل از How to Win Friends and Influence People خوندم که بهترین چیز در مورد اختلافات اینه که هیچ‌وقت واردشون نشید و اگه شدید هم در اولین فرصت ازش خارج بشید. حتی اگه لازمه اعتراف کنید که طرف مقابل‌تون درست می‌گه و از حرفش طرفداری کنید.

پی‌نوشت ۲: شروع کردم به گوش دادن به پادکست‌های جادی در حین رانندگی. و ترافیک و رانندگی خیلی برام لذت‌بخش‌تر شد.

رانندگی توی تهران

یکی از دیالوگ‌های معروف فیلم شوالیه‌ی تاریکی، دیالوگ هاروی دِنت بود با این مضمون که «یا به عنوان قهرمان می‌میری، یا اون‌قدر زندگی می‌کنی که می‌بینی توی منجلاب تبهکاری غرق شدی» و احساس من نسبت به رانندگی توی تهران احساس مشابهیه.

رانندگی توی تهران اعصاب‌خوردکن‌ترین کاریه که توی عمرم انجام دادم. می‌گم تهران چون توی بقیه‌ی شهرها هنوز رانندگی نکردم. وقتی ترافیک نیست وضعیت نسبتن خوبه. اکثر آدم‌ها بین خطوط می‌رونن و موتوری‌ها هم تلاش نمی‌کنن بهتون اثبات کنن توانایی مسیریابی حتی اگه شده از زیر ماشین رو دارن. البته حتی توی این شرایط هم پیاده‌ها از شر موتوری‌هایی که توی پیاده‌رو ویراژ می‌دن در امان نیستن. (جوکر درونم وقتایی که می‌بینم موتوری‌ای داره از توی پیاده‌رو حرکت می‌کنه پررنگ‌ترین حضور رو داره و دوست دارم بدترین بلاها رو سر اون آدم بیارم)

اما توی حالت ترافیک همه چیز خیلی خیلی بدتر می‌شه. خیلی‌ها تبدیل می‌شن به آدم‌هایی که احساس زرنگ بودن می‌کنن اگه از فاصله‌ی خالی بین ماشین شما و کناری‌تون استفاده کنن و یه لاین دیگه به لاین‌های ترافیک اضافه کنن. چیزی که مشاهده کردم اینه که توی جایی مثلن ترافیک همت، لاین‌ها از بین نمی‌رن بلکه همیشه لاینی در سمت راست شما در حال شکل‌گیریه که شما رو به سمت چپ هل می‌ده و همین جابجا شدن عامل مضاعفی می‌شه برای ترافیک بیشتر.

و برای من نکته‌ی دردناک ماجرا اینه که مقاومت در برابر این حجم از بی‌شعوری کار خیلی سختیه. یاد این عکس میوفتم با این متن که «شیر هم که باشی جلوی جماعت گاو کم میاوری»
و به نظرم در این مورد واقعن با حجم زیادی بی‌شعور روبرو هستیم. آدم‌هایی که فکر می‌کنن اگه از ماشین شما جلو بزنن زودتر به مقصدشون می‌رسن، در صورتی که دو، سه، چهار و چهل تا ماشین جلویی هم با همین تفکر از ماشین‌های جلویی‌شون جلو می‌زنن و باعث می‌شن صف خیلی طولانی‌تری از ترافیک تشکیل بشه. برای همینه که من تلاش می‌کنم بین خطوط رانندگی کنم ولی مردم عزیز ما همیشه اجازه‌ی این کار رو بهم نمی‌دن.

ما نمی‌تونیم برای همیشه در برابر این بیشعوری مقاومت کنیم. یا از رانندگی توی چنین فضایی دست بر می‌داریم یا روزی فرا می‌رسه که می‌بینیم خودمون هم شبیه راننده‌های اطرافمون رفتار می‌کنیم. حداقل برای خودم این اتفاق چندباری افتاده که متوجه شدم دارم کارهایی رو می‌کنم که دوست ندارم بکنم (و حواسم رو بیشتر جمع کردم که مراقب خودم باشم)


یادمه فیلم Ratatouille رو که می‌دیدم، یکی از نکات جالبش برام این بود که اون خانومه سوار موتورش که پشت چراغ قرمز وایساده بود فاصله‌ی زیادی با ماشین کناریش داشت. در واقع انگار با موتور هم مثل یجور ماشین رفتار می‌شد توی اون سیستم ترافیکی. نه به چشم وسیله‌ای که توی هر سوراخی جا می‌شه (هم خود راننده‌ی موتور و هم راننده‌های دیگه این رفتار رو داشتن) و به نظرم این حالت خیلی ایده‌آلیه که توی کشور ما اصلن اجرا نمی‌شه.


مساله‌ی دیگه‌ای که می‌خواستم راجع بهش حرف بزنم نگاه آدم‌ها به رانندگی خانم‌هاست. ما نگاه متفاوتی به خانم‌های راننده داریم و مجبورم بپذیرم که بر خلاف چیزی که دوست دارم، این نگاه و پارامترهای دیگه دست به دست هم داده که رانندگی خانم‌ها قابل مقایسه با آقایون نباشه. منظورم از غیرقابل‌مقایسه بودن این نیست که رانندگی آقایون بهتره. منظورم واقعن معنی خود «غیر-قابل‌مقایسه»ست. و برای حرفم چندتا دلیل دارم:

  • وقتی جامعه نگاه متفاوتی به خانم‌ها و رانندگی‌شون داره، همین نگاه تبدیل به عامل تاثیرگذاری می‌شه توی رانندگی‌شون و مقصر این نگاه ماییم.
  • خیلی وقت پیش توی توییتر هشتگ #WhenIWas ترند شد که خانم‌ها و آقایون، راجع به تجریباتی که بهشون تعرض شده بود می‌نوشتن و از اون‌ها می‌شد عمق فاجعه رو درک کرد. این مساله برای خانم‌ها توی رانندگی هم پیش میاد. (پیشنهاد می‌کنم #WhenIWas رو توی توییتر ببینید)
  • هنجارهای متفاوتی برای خانم‌ها و آقایون وجود داره. موردی که الان توی ذهن منه پوششه و فشار دولت اون‌قدر زیاده روی این مساله که بخشی تشکیل می‌شه برای نظارت و جریمه کردن خانم‌هایی که این هنجارها رو رعایت نمی‌کنن.

دلایل دیگه‌ای هم ممکنه باشن که به ذهن من نرسیدن. مساله اینه که همه‌ی این‌ها یجور فشاره که به خانم‌ها وارد می‌شه و به نظرم چون این فشار روی آقایون وارد نمی‌شه، کار خیلی مسخره‌ایه که بگیم خانم‌ها رانندگی‌شون بده یا فلان و این کار به نظرم غلطه چون داریم همه‌ی پارامترها و فشارهایی که بر آقایون وارد نمی‌شه رو ایگنور می‌کنیم و این باعث می‌شه مقایسه‌مون منطقی نباشه.


این‌ها نکاتیه که تا الان به ذهنم رسیده و دوست داشتم جایی در موردشون بنویسم. دوست داشتم نوشته پیوسته‌تر می‌بود ولی می‌دونم بیشتر از این حوصله نمی‌کنم و برای همین همین‌جوری که هست، منتشرش می‌کنم.

به نظرم راه‌حل همه‌ی این مسائل برای نسلی که توان یادگیری کم‌تری در خودشون می‌بینن جریمه‌ست. حتی جریمه برای بین خطوط رانندگی نکردن و حتی جریمه کردن پیاده‌هایی که هر جایی که دوست دارن از خیابون رد می‌شن. و برای نسلی که هنوز شخصیت‌شون شکل نگرفته، آموزش درسته. چیزی که به نظر می‌رسه خیلی طول می‌کشه تا ما بهش برسیم. بیشترین امیدم به آدم‌هاییه که از کمپین‌هایی مثل کمپین بین خطوط حمایت کردن و انتقال شعورشون به نسل بعدی و گروه‌هایی که اولویت بالا بردن شعور اجتماعی براشون از اولویت‌های سیاسی و مذهبی بیشتر باشه.

بالاخره ahmadalli.net اومد بالا

دو سال پیش توی درس کارگاه کامپیوتر بعد از یادگیری html و اینا، تمرینی داشتیم که باید توش صفحه‌ی شخصی خودمون توی سایت دانشکده رو طراحی می‌کردیم. من هم که مدت‌ها این قضیه برام چالش بود، تصمیم گرفتم ایده‌ای برای این مساله بزنم. چون تجربه‌ی خوبی در طراحی ندارم (و چیزهایی که طراحی کرده بودم رو خودم هم دوست نداشتم) و می‌دونستم که نمی‌تونم طراحی خوبی توی سایتم به اجرا بذارم.

در نهایت ایده‌ای که به ذهنم رسید، محیطی شبیه ترمینال بود: جایی که با کامندها کار می‌کنه. اون موقع پیاده‌سازیش کردم و توی حالت بتا موند و دیگه حوصله نکردم که درستش کنم. چند ماه پیش تبدیلش کردم به تایپ‌اسکریپت که بهم این اجازه رو می‌داد که کنترل بیشتری روی اجرای دستورات داشته باشم و بتونم دستوراتی داشته باشم که بتونن از کاربر ورودی بگیرن و اون رو پردازش کنن.

و امشب هم حوصله کردم چند ساعتی با TypeScript ور رفتم تا بتونم توی چندتا فایل مجزا داشته باشم کدم رو ولی شکست خوردم (چون خیلی وقته از دنیای جاوااسکریپت فاصله گرفتم و خیلی چیزا اومده تو این دنیا) و در نهایت دستور MD5 و clear رو به سیستم اضافه کردم و گذاشتمش روی ahmadalli.net

اگه باز هم حوصله کنم یا تحریک بشم، در آینده تغییرات دیگه‌ای هم توی سیستم می‌دم. مثلن الان history نداریم و امکان خیلی به‌دردبخوریه.

برای ننوشتن این چند روزم، هر چیزی بگم یجور توجیه حساب می‌شه و به این بر می‌گرده که گاهی (که درصد قابل توجهی از زندگی من رو شامل می‌شه) بی‌حوصلگی من باعث می‌شه قرارهایی که با خودم می‌ذارم یا تصمیم‌هایی که می‌گیرم رو عملی نکنم.