״מגלה החולשות״ מאת ישי שריד

תקופה קשה עוברת עלינו, המדינה כולה, כבר חודשיים. ביום אחד, בשבת אחת, התהפכו סדר יום, רצונות, תוכניות, התלהבויות – והכל התמקד בחיים לאחר הזוועות, בחשיפה במנות גדולות וקטנות. כבר חודשיים חווים אנשים את המלחמה מצפון לדרום, נאלצים לחיות הרחק מאזורי מגוריהם. כי יש מלחמה. עוד סיפור. עוד חשיפה. עוד ידיעה. עוד נפילה בקרב. עוד שיגור. לפתע מתעוררים גלים של זוועות חדשות אחרי רגיעה, כאילו הכוחות אוזלים ומצטברים שוב כדי לדבר, לחשוף, לעמוד עם הפנים אל המציאות.

מציאות עולה על כל דמיון. קשה למצוא ערך ספרותי בימים האלה מול מה שקורה באמת. ועם זאת חייבים ניתוק קצר וחזרה אל הספר. הז׳אנר – כל אחד מה שטוב לו.

ישי שריד כתב את הרומן ״מגלה החולשות״, הוא יצא לאור אי שם בינואר 2023, השקט יחסית. ואז הרומן זכה בפרס ברנר לספרות.

קריאה קלה, סיפור בגוף ראשון, על בחור צעיר, גאון מחשבים יוצא יחידת מודיעין מובחרת, אשר נשאף אל עולם המודיעין העסקי ולאט-לאט הפך למגלה הסודות ומשפיע על גורלם של אנשים.

לצד הצלחתו, החיים של אנשים רגילים בסביבתו ממשיכים. ההורים. האחות שמסתבכת ושוקעת עד שהכל מתערבב – יכולות המודיעין העסקי מופעלים וגורלם משתנה.

הנושא כמובן לא חדש, אך התיאור של חייו והשפעתו על הסובבים מתואר בסיפור מוחשי ואנושי.

עלייתו ונפילתו של הגיבור והסוף המרמז על מציאות, השאירו אותי תוהה מהו מוסר השכל בסיפור. כלומר, מעבר למורכבות וריבוי דמויות, מה אני לוקח איתי? האם חוסר אופטימיות? או, אולי אמת מרגיזה כי העולם ״מכור״?

אז דווקא בזכות התהיות האלה יצא הרומן מורכב ומוצלח, שמעורר מחשבה.

Continue Reading ״מגלה החולשות״ מאת ישי שריד

Aliases

When working with bash and executing the same commands over and over, using aliases is essential to save time and effort.

Alias allows to create a alternative name for executing command(s) or script.

Here my few experience regarding what is the best way to use it.

  1. To indentify quickly the aliases I’ve created, the alias should start with the same prefix (my name).
  2. When I need to find quickly the requered alias, I put the prefix and press Tab twice to get the list of “my” aliases. Then i continue entering the needed name and press Tab again.
  3. To enable my aliases in the bash start I use ~/.bashrc script file. All my aliases I add there.

Example:

alias john-get-all-logs="cp -r /opt/com/myapp /home/john

Continue Reading Aliases

Checklist for Flutter App Development

  • create wireframes or design mockups
  • decide on design assets: icons set, images.
  • create a new flutter project from the prepared or common template
  • architectural design pattern (MVC, MVVM)
  • State management strategy (Provider, BLoC, Riverpod)
  • Navigation strategy: Navigator, named routes)
  • Select layout from known you ready layouts
  • Data storage strategy (local, cloud, mixed)
  • Data storage library: (sqlite, sharedpreferences, indexed-db)
  • testing (per widget, automation)
  • internaization and localization (languages, units)
  • accessibility
  • If cloud is used
    • Platform(s) to use (Firebase, GPC, AWS, Azure, Heroku, etc.)
    • BaaS/Computing (AWS Lambda, Firebase Cloud Functions)
    • Database/Realtime
    • File Storage
    • Authentication strategy (Firebase Authentication, AWS Cognito)
    • Messaging Queue
    • Logging and monitoring
    • Push notifications (firebase cloud messaging, onesignal)
  • deployment (set up app icons and splash screen), configuration build settings for Android and IOS
  • test the app on real devices
  • App Store and Playe Store Submissions (screenshots, descriptions)
  • Deployement host (for web)
  • Monitoring. App performance, user feedback
  • Issues managing post-launch
  • Upades plan
  • Documentation codebase
  • CI/CD connection
Continue Reading Checklist for Flutter App Development

My Look Book – my first multi-platform application in Flutter

🚀 Introducing My Look Book: Your Personal Visual Organizer on Multiple Platforms!

Welcome to the debut of My Look Book, a new application changing the way you visualize and organize your creative inspirations! This first release may be a sneak peek into what’s to come, but it already promises to be a game-changer for anyone seeking an intuitive solution for managing visual information.

🌟 Key Features of My Look Book v1.0:

  1. Create a Look: My Look Book allows you to craft personalized ‘looks’ by seamlessly compiling and arranging visual snippets. Express your creativity by combining images into a cohesive visual narrative!
  2. Effortless Navigation: Swipe your way through your collection of looks with ease. Navigating between looks is as simple as a right or left swipe, ensuring a smooth and intuitive user experience.
  3. Design Flexibility: Build your look page effortlessly by connecting and ordering images using a convenient drag-and-drop interface. Tailor your visual story to perfection with My Look Book’s user-friendly design tools.
  4. Image Uploads: Easily upload images from your gallery, bringing your inspirations to life within the app. My Look Book empowers you to seamlessly integrate your personal visual content into your curated looks.

🛠️ Technical Details:

While this initial version may have a few rough edges in terms of UX and design, rest assured that a comprehensive roadmap is in place for future updates. My Look Book v1.0 uses local web storage to ensure the privacy and protection of your visual information. Your data stays securely within the application, with no external sharing, providing a safeguarded space for your creative expressions.

🌟 Key Features of My Look Book v1.0:

  1. Create a Look: My Look Book allows you to craft personalized ‘looks’ by seamlessly compiling and arranging visual snippets. Express your creativity by combining images into a cohesive visual narrative!
  2. Effortless Navigation: Swipe your way through your collection of looks with ease. Navigating between looks is as simple as a right or left swipe, ensuring a smooth and intuitive user experience.
  3. Design Flexibility: Build your look page effortlessly by connecting and ordering images using a convenient drag-and-drop interface. Tailor your visual story to perfection with My Look Book’s user-friendly design tools.
  4. Image Uploads: Easily upload images from your gallery, bringing your inspirations to life within the app. My Look Book empowers you to seamlessly integrate your personal visual content into your curated looks.

🔧 Technical Insights

Development Framework: My Look Book has been crafted using Flutter, a versatile and efficient open-source UI software development toolkit. Flutter’s ability to create natively compiled applications for mobile, web, and desktop from a single codebase ensures a seamless and consistent user experience across diverse platforms.

Local Storage for Mobile Devices: In the current version (v1.0), My Look Book leverages local storage solutions for mobile devices. This ensures that your visual inspirations are securely stored on your device, providing quick access and a responsive user experience. Local storage on mobile devices allows for efficient data management and retrieval without compromising on performance.

Cookies Local Storage for Web Applications: In this version of of My Look Book, the local storage mechansim has been implemented, which is Cookies for the Web platform and SQLite for the mobile app. In the Web platform, application stores and retrieve sdata within the user’s web browser, data remains in the user’s device. However, this approach also means that cleaning up Cookies will lead application to data loss. 

Roadmap for the Next Version: Cloud Data Storage: The upcoming versions have a compelling roadmap with plans to transition to cloud data storage. This strategic move will enhance data accessibility, enable seamless synchronization across multiple devices.

As I continue to evolve My Look Book, the commitment to a robust and user-friendly experience remains steadfast. Stay tuned for updates as I embrace the power of the cloud to elevate the way you visualize and organize your inspirations! 

Embrace the future of visual organization with My Look Book, where your ideas come to life on Android, iPhone, and the web. Stay tuned for exciting updates as we refine and enhance your experience in the versions to come! 🚀✨

Continue Reading My Look Book – my first multi-platform application in Flutter

ChatGPT

You'are <SPECIALITY> expert. You know about <AREA OF SPECIALITY>. Your task is to help USER find a <SUBJECT> strategy that gets their needs and goals. You will create a detailed easy to follow <SUBJECT> plan for the USER. Also make a accontability plan. <Be very helpful. Acknowledge this by answering "Yes" and stay idle>.

Continue Reading ChatGPT

Using “record”

Java 14’s introduction of the record type has been a game-changer since it’s reducing boilerplate code to enhancing data immutability, records are a valuable addition to Java’s toolkit.

The example below demonstrates how record might replce the Lombok library.

class JEP_359_Records {
    public static void main(String...args) {
        System.out.println("Hello World");

        var emp1 = new Employee("John", "Washington");
        var emp2 = new Employee("John", "Washington");

        //emp1.firstName = "Alex"; // ERROR: the properties are implicitly final.
        // emp1.firstName("Alex"); // ERROR: the properties are implicitly final.
    
        System.out.println(emp1); // toString(), output: Employee[firstName=John, lastName=Washington]
        System.out.println(emp1.hashCode()); // hashCode()
        System.out.println(emp2.hashCode()); // hashCode()
        System.out.println(emp1.equals(emp2)); // equals(), output: true

        var emp3 = new Employee(null, null);
        System.out.println(emp3); // custom constructor sets Unknown

        // we can create a custom static method building the class
        var emp4 = Employee.unnamed("Washington");
        System.out.println(emp4);
    }

    public record Employee(String firstName, String lastName) {
        // firstName, lastName are final (immutable)
        // Automatically generated constractor replaces @AllArgsConstructor
        
        // It's not possible for some values to be mutable and some not
        
        // Overriden constructors are not allowed
        // Custom constructor is:
        public Employee {
            if (firstName == null) {
                firstName = "Unknown";
            }
            if (lastName == null) {
                lastName = "Unknown";
            }
        }

        // Custom static method
        public static Employee unnamed(String lastName) {
            return new Employee("Unnamed", lastName);
        }
    }
}

Link to Bitbucket

Continue Reading Using “record”

The Power FutureBuilder in Flutter

When it comes to building responsive and dynamic Flutter apps, the FutureBuilder widget is an invaluable tool in a developer’s arsenal. In this blog post, we’ll explore how FutureBuilder simplifies handling asynchronous operations and elevates the user experience of your Flutter applications.

Understanding FutureBuilder

FutureBuilder is a widget in Flutter that lets you efficiently manage and display asynchronous data. It’s especially useful when dealing with operations like fetching data from APIs or performing time-consuming computations. FutureBuilder simplifies the process of showing loading spinners, error messages, and data when it becomes available.

How Does It Work?

FutureBuilder takes a Future and a builder function as parameters. The builder function is executed when the Future is complete, providing you with the data obtained from the async operation. In the meantime, you can show loading indicators or error messages, making your app more user-friendly.

Example Usage

Consider a scenario where you’re fetching data from a web API. You can use FutureBuilder to display a loading spinner while the data is being fetched and an error message if the operation fails. Once the data is available, you can display it beautifully in your app.

FutureBuilder(
  future: fetchDataFromApi(),
  builder: (context, snapshot) {
    if (snapshot.connectionState == ConnectionState.waiting) {
      return CircularProgressIndicator();
    } else if (snapshot.hasError) {
      return Text('Error: ${snapshot.error}');
    } else {
      return Text('Data: ${snapshot.data}');
    }
  },
)

Continue Reading The Power FutureBuilder in Flutter

Books to learn Flutter

How do I learn Flutter? ? Which books are recommended for enhancing my expertise?

Here’s my bibliography for learning the Flutter framework.

Taking Flutter to the Web – This book serves as a definitive resource for those seeking to understand the correct approach to developing Flutter applications for the web platform. It delivers a comprehensive and structured body of knowledge encompassing the Flutter framework’s utilization for web development, covering key aspects such as web widgets, architectural considerations, and the distinctions between native and web application development.

Flutter Projects: A practical, project-based guide to building real-world cross-platform mobile applications and games – Many books cover programming languages, but this one stands out as a fantastic resource that showcases various projects and solutions for a range of tasks and approaches.”

Continue Reading Books to learn Flutter

Java SE 17 OCP Certification Resources

Certification from Oracle – OCP Java SE 17
I recently started preparing for this exam. Thanks to the following resources, I feel progress and gain a lot of knowledge.

Here is my list for the resources for preparation:

Continue Reading Java SE 17 OCP Certification Resources

Kubernetes Dictionary

  • CNI / CSI—The container networking and storage interfaces. Allow for pluggable networking and storage for Pods (containers) that run in Kubernetes.
  • Container—A Docker or OCI image that typically runs an application.
  • Control plane—The brains of a Kubernetes cluster, where scheduling of containers and managing all Kubernetes objects takes place (sometimes referred to as Masters).
  • DaemonSet—Like a deployment, but it runs on every node of a cluster.
  • Deployment—A collection of Pods that is managed by Kubernetes.
  • kubectl—The command-line tool for talking to the Kubernetes control plane.
  • kubelet—The Kubernetes agent that runs on your cluster nodes. It does what the control plane needs it to do.
  • Node—A machine that runs a kubelet process.
  • OCI—The common image format for building executable, self-contained applications. Also referred to as Docker images.
  • Pod—The Kubernetes object that encapsulates a running container.

Resource: Core Kubernetes, by Christopher Love

Continue Reading Kubernetes Dictionary