چه ابزاری بهتره؟

امروز بعد از ساعت کاری با بچه‌های شرکت راستین تو شبکه داخلی Counter Strike بازی کردیم. خیلی حال داد ولی من یه ایده جالب از این بازی گرفتم.

به نظرم توی این بازی میشه با دوتا استراتژی جلو رفت:

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

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

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

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

نکته: Simple != Easy ؛ ممکنه چیزهایی که ما امروز پیچیده میدونیمشون، بعدها ازشون به عنوان یه چیز ساده (نه الزاما آسون) یاد بشه.

۷م تیر ۱۳۹۴ بازدید: 89 دسته بندی: فناوری , مدیریت دیدگاه‌ها: ۵

حال و احوال و تغییرات

تغییرات

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

اتفاقات این دو سه ماه

متاسفانه از فرودین هیچ پستی نذاشتم. بدجوری سرم شلوغ بود. خیلی خبرا بود.

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

بعد از ۲۸ سال برگزاری نمایشگاه کتاب تهران، برای اولین بار سیستم ثبت نام ناشران این نمایشگاه به شکل الکترونیکی انجام شد. این یک پروژه یک نفره بود که خوشبختانه انجام شد ولی متاسفانه خانه کتاب و خیلی‌های دیگه همکاری نکردن و کار اونطوری که دوست داشتم نشد. مهمتر از همه ما کار رو کوچکتر از چیزی که بود در نظر گرفته بودیم و بعضی از ناشرا اذیت شدن. از همه مهمتر واقعا از سواد کم کامپیوتری ناشرای محترم کشورمون شدیدا در تعجب هستم!

از طرف دیگه همزمان با راه اندازی سیستم  ثبت نام نمایشگاه کتاب، سیستم بن کتاب رو هم دوباره به شکل یک نفره پیاده سازی و اجرا و راه اندازی کردم. بیشتر از ۲۰۰ هزار نفر از طریق این سیستم ثبت نام کردند (که میشه بیشتر از ۸ میلیارد تومن).

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

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

یه خبر مهم دیگه اینکه قراره برای ۱۰ سالگی تهلاگ (Tehlug) (اگر نشه شاید یکی از جلسات معمولی لاگ) یه ارائه کامل داشته باشم از تجربیاتی که برای این دوتا پروژه داشتم. احتمالا طیف مطالبش گسترده باشه. از برنامه‌نویسی و بانک اطلاعات و … تا نگهداری سرور و پاسخگویی به ۵۰۰ درخواست در ثانیه و خوابیدن سرور و … ولی هرچی هست اسکالا نقش پررنگی داره.

چند وقت پیش هم یه لاینس IntelliJ IDEA خریدم. به مناسبت ۲۰مین سالگرد تولد زبان جاوا یه تخفیف خوب داده بودن. با Payment24 پرداخت کردم. در کل شد حدود ۵۰۰ هزار تومن. اولش خیلی خوشحال بودم. بعد که باهاش کار کردم دیدم ساپورتش از Play Framework یه مقداری ضعیفه. از قضا چند روز قبل از اینکه IDEA رو بخرم Scala IDE یه نسخه جدید داده بود که نسبت به نسخه قبلی خیلی بهتر شده بود، پشتیبانیش از Play هم از IDEA کنونی بهتره، هرچند IDEA هر زبان و پلتفرمی که فکرش رو بکنید پشتیبانی میکنه. به هر حال هر کدوم از این ابزارها یه حسن‌هایی دارن و به مرور زمان بهتر هم میشن. واقعا نمیدونم چرا اول نسخه Trialش رو نصب نکردم بعد بخرمش!

فرصت که پیدا میکنم سریال Silicon Valley رو هم دارم میبینم که بسیار بسیار به مذاق ماها خوش میاد :)

۴م تیر ۱۳۹۴ بازدید: 67 دسته بندی: فناوری , متفرقه , مدیریت , کسب و کار دیدگاه‌ها: ۲

Push the Limits

پل گراهام (Paul Graham) سازنده سیستم فروشگاهی است که بعدا توسط یاهو خریداری شد و Yahoo Store نام گرفت. این سیستم فروشگاهی با زبان Lisp نوشته شده است. خود پل گراهام میگوید که Lisp یک زبان عجیب و غریب است ولی برای کاری که میخواستند انجام بدهند مناسب بود و توانستند با استفاده از تکنولوژی که بقیه کمتر از آن استفاده میکردند مزیت رقابتی داشته باشند و در نهایت موفق شوند.

دیوید هاینمیر هانسن زمانی که بر روی نرم‌افزار بیس کمپ کار میکرد شروع به تولید یک چارچوب تحت وب نمود. او از زبانی استفاده کرد که در آن زمان کمتر کسی حتی اسمش را شنیده بود. آن زبان روبی بود و آن چارچوب روبی آن ریلز نام گرفت!

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

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

هزینه این کار می‌تواند زیاد باشد ولی نتیجه آن بسیار با ارزشتر خواهد بود.

بلوغ اکوسیستم اسکالا یا هر تکنولوژی کمتر شناخته شده دیگر بستگی به خود ما دارد و نیازی نیست منتظر افراد دیگر باشیم تا مسیر را به ما نشان بدهند. تمام افراد شناخته شده و موفق، خودشان مسیرشان را ساختند و منتظر ساخته شدن مسیر نبودند.

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

۱۴م فروردین ۱۳۹۴ بازدید: 337 دسته بندی: فناوری , متفرقه , مدیریت , کسب و کار دیدگاه‌ها: ۷

کوتاه ترین برنامه TODO لیست MVC و بقیه ماجرا

از زمانی که Scala.js از حالت آزمایشی خارج شد، ظاهرا تکاپو برای ایجاد چارچوب‌هایی که بتوان فقط با زبان اسکالا، هم برای سمت سرور و هم برای سمت کلاینت کد زد افزایش پیدا کرده. یکی از زیباترین این تلاش‌ها که قطعا در آینده این روند تاثیر گذار است چارچوب Widok‌ است. از دیگر نمونه‌های بسیار بسیار جالب Monifu است که هم بروی JVM و هم بر روی Scala.js (یعنی در مرورگر) اجرا می‌شود. قطعا در چند سال آینده شاهد این روند خواهیم بود که سیستم‌های بزرگی بر روی زبان‌های مدرن مثل Scala و Rust وجود خواهند داشت که به طور کامل توسط این زبان‌ها پیاده شده‌اند (مثلا سمت کلاینت با JavaScript کار نشده است).

همه چارچوب‌ها به عنوان نمونه یک لیست TODO ساده را پیاده‌سازی میکنند. نمونه پیاده‌سازی شده با Widok کمترین تعداد خط کد در بین این نمونه‌ها را دارد (۸۹ خط)!

پیشنهاد میکنم همین الان SBT یا Activator را نصب کنید و با اجرای سه دستور زیر و سپس باز کردن فایل application.html خروجی این برنامه را ببینید. واقعا امیدوار کننده‌ست.

$ git clone git@github.com:widok/todomvc.git
$ cd todomvc
$ sbt fastOptJS

پ.ن. لطفا برای یادگیری اسکالا از چنین مثال‌هایی شروع نکنید

۲۷م اسفند ۱۳۹۳ بازدید: 298 دسته بندی: فناوری دیدگاه‌ها: ۲

بررسی پتانسیل برگزاری دوره آموزشی اسکالا

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

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

آدرس فرم نظر سنجی: http://goo.gl/forms/tKiVsNCPFv

۶م اسفند ۱۳۹۳ بازدید: 600 دسته بندی: فناوری , متفرقه , مدیریت , کسب و کار دیدگاه‌ها: ۴

تایپ ۱۰ انگشتی

keybaord_k120چند وقتی هست که یک کیبورد Logitech K120 گرفته‌ام. تایپ با این کیبورد ساده و خوب، خیلی راحت و سریع بود تا اینکه متوجه شدم من فقط از سه انگست هر دستم برای تایپ استفاده میکنم (مثل لاک پشت‌های نینجا)!!! تایپ کردن را خودم یاد گرفتم و جای تعجب است که بعد از این همه سال هیچوقت تایپ صحیح ۱۰ انگشتی را جدی نگرفته بودم.

سرعت تایپم با همین روش ۶ انگشتی در حدود ۶۰ لغت در دقیقه است که برای برنامه نویسی کفایت میکند، ولی حالا که متوجه شدم از ۴۰ درصد انگشتانم استفاده نمیکنم، مثل یک خوره هر روز مشغول تمرین تایپ ۱۰ انگشتی هستم. با این فکر که «اگر بتوانم سرعت تایپم را به ۸۰ لغت در دقیقه برسانم یعنی ۳۳ درصد سرعت بیشتر در تایپ که قطعا در افزایش سرعت کارها تاثیر گذار است» خودم را گول میزنم و به جای کار بر روی پروژه‌ای که زمان تحویلش نزدیک است، تمرین تایپ میکنم.

یاد گرفتن تایپ ۱۰ انگشتی مشکل نیست بلکه فراموش کردن تایپ ۶ انگشتی مشکل است. بنابر این باید با دقت، روی اینکه با چه انگشتی کدام کلید را میزنم تمرکز کنم تا عادت قبلی از بین برود. به همین دلیل فعلا نمی‌توانم از پروژه به عنوان تمرین تایپ استفاده کنم (اول مغزم باید عادت قبلی را ترک کند).

این پست جف آتوود هم خواندنی ست.

۱م بهمن ۱۳۹۳ بازدید: 1,491 دسته بندی: فناوری , متفرقه دیدگاه‌ها: ۱۱

مسابقه برنامه‌نویسی شبیه ساز هرمی جادی

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

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

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

۲۱م دی ۱۳۹۳ بازدید: 571 دسته بندی: فناوری , متفرقه دیدگاه‌ها: ۲

یک سال پس از مهاجرت به لینوکس

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

از سال ۱۳۸۲ به طور حرفه‌ای (برای پول درآوردن) برنامه‌نویسی می‌کنم و بیشتر آن روی تکنولوژی‌های مایکروسافت بوده. اگر نگویم تمام ابزارها، بیشتر ابزارهایی که در این چند سال استفاده کردم محصول مایکروسافت بود؛

  • ویندوز به عنوان سیستم عامل
  • آفیس برای کارهای اداری
  • Outlook برای ایمیل و تقویم و …
  • Internet Explorer به عنوان مرورگر!
  • استفاده بیشتر از Bing نسبت به Google برای جستجو!
  • گوشی هوشمند با سیستم عامل ویندوز فون ۷ (Mozart 7)
  • صفحه کلید (ارگونومیک) و ماوس مایکروسافت!!!
  • استفاده از نرم‌افزارهای متن باز دات نتی (حتی برای وبلاگ به جای ورد پرس)
  • Visual Studio برای تولید نرم‌افزار (از طراحی تا پیاده‌سازی)
  • SQL Server برای بانک اطلاعاتی
  • زبان سی شارپ و سکوی دات نت
  • و …

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

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

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

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

خوشبختانه با اسکالا آشنا شدم. تنها زبان برنامه‌نویسی بود که تمام ویژگی‌های سی شارپ را داشت ولی متن باز بود و روی همه پلتفرم‌ها اجرا می‌شد و با انواع بانک‌های اطلاعاتی و کتابخانه‌ها سازگار بود. اسکالا راه ورود من به دنیای متن باز و لینوکس شد!

dawn-700x300

ولی افتاد مشکل‌ها! حالا باید از صفر تا صد همه کارها را در دنیایی متفاوت انجام می‌دادم. من هم ابزارهای زیر را برای کارهایم انتخاب کردم:

  • اوبونتو به عنوان سیستم عامل
  • لیبره آفیس به جای آفیس مایکروسافت
  • Thunderbird (و پلاگین‌هایش) به جای Outlook
  • ابتدا Chromium و بعدها (به خاطر مشکلی امنیتی) Firefox به جای IE
  • استفاده بیشتر از محصولات گوگل
  • گوشی ویندوز فون ۷ را هنوز داشتم (و دارم ولی دلم یک گوشی اندرویدی می‌خواهد که بتوانم رویش Firefox OS یا Ubuntu Touch نصب کنم) ولی یک تبلت اندرویدی گرفتم و تازه دنیای اپ‌ها به رویم باز شد
  • صفحه کلید فراسو و ماوس A4tech!!!
  • استفاده از ورد پرس و پرستا شاپ و نرم‌افزارهای غیر دات نتی (که تعدادشان خیلی بیشتر از دات نتی‌ها بود)
  • Scala IDE (همان Eclipse) و IntelliJ IDEA و بقیه برای توسعه نرم‌افزار
  • MongoDB، Postgres و MySQL برای بانک اطلاعاتی
  • زبان اسکالا و بعدا روبی و پایتون (در کنار اسکالا) برای برنامه‌نویسی (هنوز اسکالا را به شدت نسبت به بقیه ترجیح می‌دهم)
  • و …

و مشکلاتی که داشتم؛

  • هنوز یک پروژه بر روی دات نت داشتم و با استفاده از Virtual Box یک نسخه ویندوز ۷ با VS روی آن بالا می‌آوردم و با بدبختی روی آن کار میکردم؛ بسیار کند بود و وقتی دکمه Alt را می‌گرفتم منوی Unity باز می‌شد و وسط نوشتن یک کد حساس یک حال اساسی به اعصابم می‌داد.
  • دلم می‌خواست روی پروژه‌ای با زبان اسکالا کار کنم ولی کسی حتی اسمش را هم نشنیده بود!
  • من عادت کرده بودم زبان صحفه کلید را با دست راست و با Alt+Shift سمت راست تغییر دهم ولی به دلیل وجود باگی در Ubuntu آن زمان فقط امکان استفاده از Alt+Shift سمت چپ وجود داشت و من هم هنوز بلد نبودم سیستم را هک کنم (منظور فقط کمی ور رفتن با سیستم است) و هر کلیدی که دوست دارم انتخاب کنم و تصورش را هم نمی‌کردم این باگ به سرعت رفع شود برای همین به ترکیب سمت چپ عادت کردم و هنوز هم از کلیدهای سمت چپ استفاده می‌کنم!
  •  کارت گرافیکم به سختی نصب می‌شد و فن لپ تاپ همیشه روشن بود، نصفی از مشکل بخاطر درایور کارت گرافیک بود و نصف برای تنظیمات و درایور مخصوص DELL
  • از نظر مالی شدیدا به مشکل خورده بودم، پول لازم بودم و پروژه‌ای هم در کار نبود و شرایط به شدت برایم سخت شده بود در حالی که با مشکلات بالا هم سر و کله می‌زدم و همزمان اسکالا هم یاد می‌گرفتم

البته توانستم کم کم مشکلات را حل کنم:

  • سعی کردم واقع بین باشم و وقت بیشتری بر روی پروژه دات نتی صرف کنم (اما نه انقدر واقع بین که لینوکس را پاک کنم و برگردم روی ویندوز مثل آدم کار کنم) پروژه به جای خوبی رسید و تقریبا تحویل شد. هر چند چون پروژه دولتی بود و افراد سازمان عوض شدند پروژه اجرایی نشد.
  • با ور رفتن و مطالعه، هر کاری که می‌خواستم را در Ubuntu انجام میدادم، کارت گرافیک و بقیه مسائل حل شد. برای اکثر کارهای تکراری هم یک Bash Script تهیه میکردم. به این ترتیب سرعت کارهایم بیشتر از زمان ویندوز شده بود و روز به روز احساس راحتی بیشتری می‌کردم.
  • من در دوره‌های شناخت توانایی‌های امیر مهرانی شرکت کرده بودم و یکی از چیزهایی که یاد گرفته بودم این بود که باید روی نقاط قوتم تمرکز کنم تا سریعتر به نتیجه برسم. یکی از راه‌های فهمیدن نقاط قوت نگاه به گذشته و بررسی موقعیت‌هایی است که در آن موفق بودیم. من هم همین کار را کردم و به چند سال قبل دقت کردم و همان کارها را تکرار کردم. رزومه‌ام را تکمیل و با ظاهری جدید بازسازی کردم و شروع به معرفی خودم به اشخاص و شرکت‌های مختلف کردم. بعد از ارسال تقریبا ۲۰ ایمیل، چند موقعیت خیلی خوب پیش آمد. با آدم‌های بسیار حرفه‌ای و جالبی آشنا شدم. کیفیت کارها و سطح آدم‌ها بسیار بالاتر از زمانی بود که روی پلتفرم مایکروسافت کار می‌کردم.

در این یک سال به جز استفاده از ویندوز در یک زمان محدود آن هم در Virtual Box با سرعت بسیار پایین، از هیچ نرم‌افزار غیر قانونی استفاده نکردم؛ چه برای توسعه و چه برای نصب و راه اندازی. و از این بابت به شدت خوشحال هستم.

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

ubuntu-boot-small

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

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

۲۹م آذر ۱۳۹۳ بازدید: 3,517 دسته بندی: فناوری , متفرقه , مدیریت , کسب و کار دیدگاه‌ها: ۲۲

لینوکس برنده شد!

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

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

اینکه سکو‌های مایکروسافت در آینده چقدر راه خود را در لینوکس باز می‌کنند هنوز قابل پیشبینی نیست و شاید به این زودی‌ها هم قابل پیشبینی نباشد. تجربه به من نشان داد که متن باز کردن به تنهایی نمی‌تواند باعث مقبولیت یک تکنولوژی شود. برای مثال تا وقتی Entity Framework پشتیبانی کاملی از بانک‌های اطلاعاتی غیر MS SQL نداشته باشد متن باز بودن آن بی معنی است. و از همه اینها مهمتر تا وقتی یک اجتماع از برنامه‌نویسان حرفه‌ای مستقل برای این سکو‌های متن باز شده شکل نگیرد، هیچ حرکت جدیدی صورت نخواهد گرفت.

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

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

۲۳م آبان ۱۳۹۳ بازدید: 1,852 دسته بندی: فناوری , مدیریت دیدگاه‌ها: ۹

ماهنامه شماره ۲ سلام دنیا و اسکالا

شماره ۲ سلام دنیااگر به قسمت بالا و سمت راست جلد شماره دوم از مجله سلام دنیا نگاه کنید قطعه کدی به زبان اسکالا مشاهده می‌کنید :)

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

و یک مورد دیگر اینکه متاسفانه نسخه نهایی مقاله که در مجله منتشر شده مشکلاتی دارد:

  • برای نمایش قطعه کدها از فونت مناسبی استفاده نشده
  • در حالی که زبان برنامه‌نویسی هر قطعه کد در نسخه ارسالی مشخص شده بود (Java / C# / Scala) این اطلاعات از نسخه نهایی حذف شده که احتمالا خواننده را گمراه می کند
  • فضای افقی بسیار کمی برای مقاله در نظر گرفته شده (۳ ستون) که باعث شده کوچکترین قطعه کدها نیز شکسته شود
  • برخی از فاصله‌ها که به خوانایی کد کمک می‌کرد به شکل نا بجایی حذف شده

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

۱۶م آبان ۱۳۹۳ بازدید: 803 دسته بندی: فناوری , مدیریت , کسب و کار دیدگاه‌ها: ۳