The document discusses implementing a Maybe functor in JavaScript to handle null values safely. A Maybe is a functor that wraps a value and supports map operations. If the wrapped value is null, map returns another Maybe with null instead of propagating the null value. This allows chaining operations while avoiding null checks. The document provides an implementation of a Maybe class with a map method that returns a new Maybe. Examples show how Maybe can be used to safely access nested object properties and avoid null errors.
C++ is a middle-level programming language developed by Bjarne Stroustrup starting in 1979 at Bell Labs. C++ runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX.
This reference will take you through simple and practical approach while learning C++ Programming language.
Speaker: Cong Pham - Product Designer @ Anduin Transactions
Bio: Product designer at Anduin Transactions. Previously Misfit Wearables. Pushing pixels, crafting interfaces and brewing coffee daily.
Description: The story of how we f**ked bad CSS up pretty hard. The story of courage on how we destroyed old conventions to create something new, useful and functional that unified interfaces across teams and products. How you should do the same thing for your team. And what are we expecting to come in the future.
Grokking TechTalk #16: React stack at loziGrokking VN
Speaker: Thinh Nguyen - Web Developer @ Lozi.vn
Bio: I don't know what I've done, but people keep blaming me when they can't access the website ¯\_(ツ)_/¯
Description: How we build Lozi website with React and a team of 2
Grokking TechTalk #16: Html js and three way bindingGrokking VN
Speaker: Nhan Nguyen - Software Architect @ FPT IS
Bio: Author of HtmlJs Be fluent in C# and JavaScript. Software architect at FPT IS
Description:
Kiến trúc của HtmlJs
Cách thiết kế web app với HtmlJs
Demo (code 1 số app đơn giản + performance demo)
Mô hình lập trình three-way binding (điểm mới so với buổi trước)
Expressing your UI in JSON – plain, data binding, advanced data bindingStarcounter
Did you know that UI of a web app can be expressed using a simple, schemaless JSON? Since it supports only a few primitive data types, it is a great format for the boundary between the application logic and the view.
TechTalk #15 Grokking: The data processing journey at AhaMoveGrokking VN
Thuc Nguyen - Lead Operation Engineer, AhaMove
Thuc Nguyen is working at AhaMove - an 1.5 year old instant delivery startup - as Lead Operation Engineer.
The topic is to share data problems which AhaMove had to deal with on early days, and how our engineering culture and philosophy affected our decisions and actions on handling these issues with detailed showcases on geospatial analytics and data pipeline.
Fashion blog development & blogger web designer company offers developers with unique website designs and templates on wordpress with eCommerce in India and UK.
https://www.yarddiant.com/fashion-blogger-development-web-designer/
C++ is a middle-level programming language developed by Bjarne Stroustrup starting in 1979 at Bell Labs. C++ runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX.
This reference will take you through simple and practical approach while learning C++ Programming language.
Speaker: Cong Pham - Product Designer @ Anduin Transactions
Bio: Product designer at Anduin Transactions. Previously Misfit Wearables. Pushing pixels, crafting interfaces and brewing coffee daily.
Description: The story of how we f**ked bad CSS up pretty hard. The story of courage on how we destroyed old conventions to create something new, useful and functional that unified interfaces across teams and products. How you should do the same thing for your team. And what are we expecting to come in the future.
Grokking TechTalk #16: React stack at loziGrokking VN
Speaker: Thinh Nguyen - Web Developer @ Lozi.vn
Bio: I don't know what I've done, but people keep blaming me when they can't access the website ¯\_(ツ)_/¯
Description: How we build Lozi website with React and a team of 2
Grokking TechTalk #16: Html js and three way bindingGrokking VN
Speaker: Nhan Nguyen - Software Architect @ FPT IS
Bio: Author of HtmlJs Be fluent in C# and JavaScript. Software architect at FPT IS
Description:
Kiến trúc của HtmlJs
Cách thiết kế web app với HtmlJs
Demo (code 1 số app đơn giản + performance demo)
Mô hình lập trình three-way binding (điểm mới so với buổi trước)
Expressing your UI in JSON – plain, data binding, advanced data bindingStarcounter
Did you know that UI of a web app can be expressed using a simple, schemaless JSON? Since it supports only a few primitive data types, it is a great format for the boundary between the application logic and the view.
TechTalk #15 Grokking: The data processing journey at AhaMoveGrokking VN
Thuc Nguyen - Lead Operation Engineer, AhaMove
Thuc Nguyen is working at AhaMove - an 1.5 year old instant delivery startup - as Lead Operation Engineer.
The topic is to share data problems which AhaMove had to deal with on early days, and how our engineering culture and philosophy affected our decisions and actions on handling these issues with detailed showcases on geospatial analytics and data pipeline.
Fashion blog development & blogger web designer company offers developers with unique website designs and templates on wordpress with eCommerce in India and UK.
https://www.yarddiant.com/fashion-blogger-development-web-designer/
Askourt - using the power of social networks to increase sales in eCommerce s...Tomer Limoey
Askourt generates new technology that enables customers to consult and recommend products to their friends through instant messaging platforms while e-shopping, without leaving the store’s website.
Breaking the Server-Client Divide with Node.js and ReactDejan Glozic
Rendering Web applications server or client side has been a war for years, with server side proponents citing 'speed to glass' and SEO, and client side boasting speed of transitions after the upfront cost, and desktop-like application feel. For a while it was necessary to pick sides, that is until React. In this talk, I will show a stack we are using in IBM Cloud Data Services that uses Node.js and React to bring the best of both worlds in isomorphic apps. Server or client? Yes!
Creating Omnichannel Experiences with Loblaw Digital - eCommerce Toronto MeetupDemac Media
For May's eCommerce Toronto Meetup we were joined by the team at Loblaw Digital to explore how they create omnichannel experiences through their eCommerce properties.
This meetup will bring us back to basics with a bootstrapping session on building an all Javascript web application on a MEAN Stack:
• MongoDB - NoSQL DB
• ExpressJS - Server Application Framework
• AngularJS - Client Application Framework
• NodeJS - Application Platform
I'll cover the basics of getting bootstrapped with Node.js and building out a fully featured web application from backend-to-frontend. I'll highlight some of the advantages of an all javascript web application as well as show some development tips leveraging gruntJS based on Nate's presentation last meetup.
The client is an online store that sells Modest Islamic clothes. They are one of the leading providers of Islamic clothing for men, women and kids worldwide.
How to increase engagement in fashion eCommerce storesTomer Limoey
Check out our latest case study about user engagement in fashion eCommerce store with major fashion retailer operating in Europe. Learn how to gain new traffic, longer sessions and high conversion.
Backbone.js with React Views - Server Rendering, Virtual DOM, and More!Ryan Roemer
11/18/2014 Seattle ReactJS meetup presentation -- http://www.meetup.com/seattle-react-js/events/216736502/
Abstract:
Ryan Roemer will discuss moving the view components of a conventional Backbone.js app to React and dive into many of the new and exciting facets of a reactive, virtual DOM-based view layer.
He will review the path leading up to https://github.com/FormidableLabs/notes-react-exoskeleton -- a lean, modern MVC app with nifty features like server-side rendering and transparent server/client-side routing.
Over the last few years, Airbnb’s frontend architecture has evolved to keep pace with the rapid advancement happening the JavaScript world. Starting as a humble Rails 2 + Prototype.js app in 2008, the frontend stack powering airbnb.com has gone through a few revisions, including a push towards single-page app architecture with Backbone.js and Handlebars.js, an adventure into isomorphic JavaScript with Rendr (our library for using Node.js to server-render Backbone SPAs), and most recently, a move toward React.js and a re-envisioning of our build pipeline to take advantage of CommonJS, ES6, and a Node.js-based transform system. Spike Brehm, software engineer on the @AirbnbNerds team, will walk through how we approached and executed on these changes. Plus, get excited to see a preview of our new approach to isomorphic JavaScript, allowing us to server-render React components from our Rails app.
Spike Brehm is a software engineer at Airbnb who specializes in building rich web experiences. As a JavaScript nerd, he has spent the last few years shipping web apps and prototyping Airbnb’s front-end stack, experimenting with “isomorphic JavaScript” — apps that have the flexibility to run on both the client and sever using the same codebase.
This contains all the slides used in Silicon Valley Code Camp presentation on Sunday Oct 4, 10:45 session on "Amazing new features in JavaScript". At the end ut also includes the last year presentation covering ES 5
Are you Java Developer? Are you currently in a project where Javascript language is used? Do you feel that something is wrong with this language, as it looks a bit like a Java, but acts completely differently (as almost as it was designed to be confusing and completely not deterministic)? Do you test or even TDD your Java code, but write your Javascript code as its 1996 all over again? Do feel that basically you are doing something wrong there, reinventing the wheel? Well, fear no more, since this lecture is here to help. We will start introducing key concepts of the language, showing that Javascript is to Java, as a ham is to hamburger. We will move later on to test driven development, showing how easy it is to test Javascript code with all the goodies we know from Java world. At the end we will finish introducing DI concepts in Javascript, so that you will never write code in the global namespace ever again. So the true question remains: are you ready to call yourself Javascript developer?
Bio: Software engineer, programmer, developer. Experienced with Java ecosystem. Currently having tons of fun at work with Scala, Akka, Apache Spark and distributed cloud computing.
An introduction into Googles programming language Go, which had its first release in March 2012. The talk has been held at the regulars' table of the GTUG Bremen.
Not so long ago Microsoft announced a new language trageting on front-end developers. Everybody's reaction was like: Why?!! Is it just Microsoft darting back to Google?!
So, why a new language? JavaScript has its bad parts. Mostly you can avoid them or workaraund. You can emulate class-based OOP style, modules, scoping and even run-time typing. But that is doomed to be clumsy. That's not in the language design. Google has pointed out these flaws, provided a new language and failed. Will the story of TypeScript be any different?
Functional Programming for OO Programmers (part 2)Calvin Cheng
Code examples demonstrating Functional Programming concepts, with JavaScript and Haskell.
Part 1 can be found here - http://www.slideshare.net/calvinchengx/functional-programming-part01
Source code can be found here - http://github.com/calvinchengx/learnhaskell
Let me know if you spot any errors! Thank you! :-)
Are you stuck in the Java world? I’ll share my story about convincing my team and the client of the benefits of Kotlin. Furthermore I’ll delve into how we migrated an existing Java Android app, with 300k active users, to Kotlin. Even if you have never seen Kotlin before, come and see how you will create better apps with this modern and elegant language. At the end of this talk you’ll be able to convince your team / client why it’s a great to use Kotlin. The power of Kotlin can be leveraged everywhere you use Java, since it compiles to JVM bytecode. So even if you’re not an Android developer, check out this session to get acquainted with Kotlin! No excuses: switch to Kotlin :)
Java Question help needed In the program Fill the Add statements.pdfkamdinrossihoungma74
Item 8 Singly ionized (one electron removed) atoms are accelerated and then passed through a
velocity selector consisting of perpendicular electric and magnetic fields. The electric field is 158
V/m and the magnetic field is 3.13 Times 10^2 T. The ions next enter a uniform magnetic field
of magnitude 1.73 Times 10^-2 T that is oriented perpendicular to their velocity. How fast are
the ions moving when they emerge from the velocity selector? If the radius of the path of the
ions in the second magnetic field is 17.4 cm, what is their mass?
Solution
A)
In Velocity selector Electric field & Magnetic field forces on ions are equal & opposite ,this is
because it allows ions with a particular velocity only passes undeflected.
so we can say,
Bqv = Eq
B:magnetic field density
E:Electric field
v:velocity at which the ions remains undeflected.
v=E/B
v = 158V/m / 3.13*10-2 T
=> v = 4.78*103 m/s
B)
as it enteres next in uniform magnetic field of value B=1.73*10-2 T
Work done in uniform magnetic field is zero.It only changes the direction.So B provides
centripetal force for the ions while changing direction in circular path of radius r=17.4cm.
Bqv = mv²/r
m = Bqr / v = (1.73*10-2T)(1.6*10-19C)(0.174m) / (4.78*103m/s)
=>m = 1*10-25 kg.
Kotlin For Android - Functions (part 3 of 7)Gesh Markov
This presentation is part of a workshop series.
In this section you will learn about operators, inlining, a little bit about generics, named parameters, lambdas and closures, obtaining references to functions and passing them to other functions, and higher-order functions.
License:
This presentation is licensed under the Creative Commons, No Derivatives, Version 3.0 US: https://creativecommons.org/licenses/by-nd/3.0/us/legalcode
Funtional Programming is a software developing method that uses pure functions. This method of developing software follows a declarative approach that relies on expressions and declarations rather than statements.
Functional code is usually more predictable, concise and easier to test than object oriented code and takes advatage of data structures that prevent propererties from being changed at any level in the object hierarchy.
Flip through the presentation below to view a few examples we've put together of how functional programming works as opposed to non-functional programming
Grokking Techtalk #46: Lessons from years hacking and defending Vietnamese banksGrokking VN
Trong những năm gần đây, Việt Nam luôn là một trong những quốc gia có tỉ lệ nhiễm mã độc và hứng chịu các cuộc tấn công mạng thuộc nhóm cao trên thế giới. Bên cạnh đó, mức độ sử dụng máy tính và các thiết bị thông minh tại Việt Nam tăng đột biến do ảnh hưởng của COVID-19, và đây cũng chính là môi trường lý tưởng để virus bùng phát, lây lan mạnh. Điều nay làm dấy lên mối lo ngại về an ninh trên không gian mạng, một vấn đề mà ít người Việt quan tâm đến nhưng lại có tầm quan trọng cao và sức ảnh hưởng lớn.
Chính vì lí do đó, ở số Techtalk #46 này, Grokking Việt Nam xin giới thiệu với các bạn chủ đề “Những bài học về xâm nhập và bảo vệ hệ thống mạng Việt Nam” do anh Dương Ngọc Thái trình bày. Anh Thái hiện đang làm việc tại Google, anh thường được biết đến thông qua blog cá nhân vnhacker@blogspot.
"Từ năm 2016, cùng với vài người bạn, tôi đã xâm nhập vào hệ thống mạng máy tính của nhiều ngân hàng, bệnh viện, startup ở Việt Nam (với sự đồng ý của họ). Đối với các ngân hàng, chúng tôi đã có thể đánh cắp được lượng tiền lớn và nhiều dữ liệu nhạy cảm. Đối với các bệnh viện, chúng tôi đã có thể đánh cắp toàn bộ dữ liệu khách hàng và thậm chí có thể thay đổi hồ sơ bệnh án.
Trong bài nói chuyện này, tôi chia sẻ những gì chúng tôi đã học được, cung cấp thông tin về hiện trạng an ninh mạng ở Việt Nam. Tôi cũng đưa ra một cẩm nang giúp các doanh nghiệp và tổ chức bảo vệ tài sản và dữ liệu, tạo ra những sản phẩm được khách hàng tin tưởng." - Anh Thái chia sẻ về mục đích của bài talk.
Grokking Techtalk #45: First Principles ThinkingGrokking VN
Bạn có từng nghe ai đó nói về First Principles Thinking? Nó là gì và engineers chúng ta có thể sử dụng như thế nào cho công việc của mình?
---
First Principles Thinking là một trong những phương pháp mà chúng ta có thể vận dụng để phân chia những vấn đề phức tạp thành những vấn đề nhỏ và cơ bản hơn có thể giải quyết được, cuối cùng tổng hợp lại thành một giải pháp có thể giải quyết được vấn đề phức tạp ban đầu.
Nối tiếp về chủ đề Problem Solving, trong Techtalk lần này, Grokking Vietnam cùng Gambaru sẽ mang đến cho các bạn thêm một góc nhìn về tư duy giải quyết vấn đề. Chúng ta sẽ cùng gặp gỡ anh Hùng Đoàn - exFacebook và hiện đang là Software Engineer tại Coda và cùng nhau thảo luận sâu hơn về chủ đề First Principles Thinking này nhé.
Nội dung bài talk:
* Analogy thinking
* Breaking a problem space down to its building blocks
* Techniques to arrive at first principles thinking
* Application in Programming
---
Ngôn ngữ: Tiếng Việt
---
Speaker:
- Hùng Đoàn - Software Engineer @ Coda.io, Ex-Facebook SWE
Anh Hùng có nhiều năm kinh nghiệm trong các lĩnh vực thuộc software engineering. Anh từng thi quốc gia tin học quốc tế và đoạt huy chương vào 2007
Grokking Techtalk #42: Engineering challenges on building data platform for M...Grokking VN
Đến với Techtalk #42, các bạn sẽ được chia sẻ về cách thiết kế và hiện thực một platform phục vụ các bài toán về machine learning thông qua một case study về việc phân tích các bình luận của người dùng.
Nội dung chủ đề lần này sẽ xoay quanh một số thách thức trong quá trình xây dựng bao gồm các khó khăn về mặt kỹ thuật và phân tích khi:
+ Cần phải thu thập lượng lớn bình luận của người dùng
+ Tổ chức lưu trữ và xử lý dữ liệu để dễ dàng mở rộng, thuận tiện cho việc giám sát, vận hành
+ Thiết kế các thành phần trong hệ thống đảm báo tính tái sử dụng cao, tránh lãng phí tài nguyên
Ngôn ngữ: Tiếng Việt
---
Speakers:
- Anh Hiền Hoàng - Principal Big Data Engineer & TPP
- Anh Hiếu Hoàng - Data Scientist & TPP
Đối với các hệ thống thương mại điện tử, việc tích hợp với một cổng thanh toán trực tuyến (payment gateway) sẽ là yêu cầu cơ bản nhất, dịch vụ thanh toán này ngoài việc cần phải chính xác, chúng còn phải mang lại trải nghiệm tốt cho người sử dụng, xử lý được những sự cố có thể xảy ra trong quá trình thực hiện và đặc biệt là phải bảo mật. Đây là một bài toán khó về mặt kỹ thuật để có thể thiết kế và xây dựng một cách hiệu quả!
Trong Techtalk #43 này, các bạn tham gia sẽ được chia sẻ về những thành phần của một payment gateway, quá trình xử lý một transaction, cách thức lưu trữ thông tin thanh toán, xử lý hoàn tiền,.. và những vấn đề gặp phải khác khi xây dựng một cổng thanh toán trực tuyến. Chủ đề sẽ đi qua các nội dung sau:
- Payment Domain Knowledge
- Payment Gateway Integration
+ Create Order
+ Check Order Amount (Optional)
+ Browser Redirect
+ Instant Payment Notification (IPN)
+ Payment Query (QueryDR)
- Advance Concept
+ Tokenization
+ Credit Card Authorization/Reversal/Settle
---
Ngôn ngữ: Tiếng Việt
---
Speakers:
- Nguyễn Văn Lợi - Technical Architect @ Vexere
Anh Nguyễn Văn Lợi là một kỹ sư phần mềm với hơn 10 năm kinh nghiệm thực tế từ các công ty có hệ thống lớn trong các mảng VoIP, Ecommerce, Big Data, Logistics. Tại Vexere, anh luôn đề cao tinh thần tự học hỏi, phát triển và chia sẻ để team member liên tục tích lũy kiến thức, kỹ năng, nhằm tăng hiệu quả công việc và mang lại sản phẩm có trải nghiệm tốt nhất cho người dùng
Grokking Techtalk #40: Consistency and Availability tradeoff in database clusterGrokking VN
Những năm gần đây, cùng với sự bùng nổ của các startup cùng các loại công nghệ như máy học, lượng dữ liệu phát sinh cần thu thập và xử lý trong các hệ thống ngày càng tăng cao.
Chính vì vậy, đối với các hệ thống lớn thì việc lưu trữ và xử lý dữ liệu trên một node database đã không đáp ứng được nữa, đòi hỏi phải sử dụng nhiều node kết nối với nhau để hình thành database cluster.
Đối với các database cluster nói riêng và hệ thống Distributed System nói chung, có khá nhiều chủ đề thú vị để đào sâu. Trong buổi thảo luận này, chúng ta sẽ giới hạn trong việc khảo sát về cách ba hệ thống Redis, Elastic Search và Cassandra tổ chức cluster cũng như sự trade-off giữa tính nhất quán (consistency) và khả năng đáp ứng (availability) của ba hệ thống này.
- Speaker: Lộc Võ - Lead Software Engineer @ Grab
Grokking Techtalk #40: AWS’s philosophy on designing MLOps platformGrokking VN
Máy học (Machine learning) đang trở thành một trong những xu hướng lớn nhất trong phát triển hệ thống hiện đại, với khả năng đem đến những hiểu biết chiến lược, các dự đoán & cái nhìn chuyên sâu cho doanh nghiệp. Tuy nhiên, xây dựng & tích hợp 1 hệ thống máy học không phải lúc nào cũng dễ dàng, đặc biệt với những hệ thống lớn & hệ thống phân tán - khi mà các khuôn phép về phát triển máy học còn chưa đạt đến độ phát triển bằng hệ thống phần mềm.
Trong buổi thảo luận này, chúng ta sẽ cùng tìm hiểu cách Amazon Web Services (AWS) đã thiết kế & xây dựng 1 trong những nền tảng MLOps được ứng dụng rộng rãi nhất trên thế giới - Amazon SageMaker.
- Về diễn giả: My Nguyễn hiện là Kiến trúc sư giải pháp tại AWS Việt Nam, chuyên sâu vào hỗ trợ các giải pháp xây dựng hệ thống Máy học.
Grokking Techtalk #39: Gossip protocol and applicationsGrokking VN
Gossip là một giao thức trao đổi thông tin phổ biến trong các hệ thống phân tán giúp cho các máy chủ duy trì trạng thái đồng nhất với nhau cũng như thực hiện các nhiệm vụ có chủ đích. Điểm mạnh của nó là khả năng phát tán thông tin ở tốc độ cao cũng như không hề có single point of failure. Trong bài talk này, Anh Nguyễn Anh Tú, thành viên của Grokking sẽ chia sẻ một số thông tin về giao thức Gossip cũng như điểm qua một vài ứng dụng thực tiễn của nó.
- Về diễn giả: Anh Nguyễn Anh Tú hiện đang là Staff Software Engineer tại Axon Vietnam, đồng thời là thành viên của Grokking Vietnam.
Grokking Techtalk #39: How to build an event driven architecture with Kafka ...Grokking VN
Bài talk chia sẻ về quá trình 2 năm ứng dụng Kafka và Kafka Connect để chuyển đổi mô hình hệ thống của Vexere từ Monolithic thành Microservice, Event Driven:
+ Event driven architecture là gì?
+ Làm thế nào để xây dựng 1 hệ thống event driven architecture một cách hiệu qủa bằng Kafka và Kafka Connect
+ Các use case hữu ích với Kafka & Kafka Connect
+ Kinh nghiệm thực tế và các bài học rút ra
- Về diễn giả: Anh Nguyễn Văn Lợi là một kỹ sư phần mềm với hơn 9 năm kinh nghiệm thực tế từ các công ty có hệ thống lớn trong các mảng VoIP, Ecommerce, Big Data, Logistics. Tại Vexere, anh luôn đề cao tinh thần tự học hỏi, phát triển và chia sẻ để team member liên tục tích lũy kiến thức, kỹ năng, nhằm tăng hiệu quả công việc và mang lại sản phẩm có trải nghiệm tốt nhất cho người dùng.
Grokking Techtalk #38: Escape Analysis in Go compilerGrokking VN
Trong quá trình phân tích hiệu năng, hiểu và nắm vững ngôn ngữ lập trình cũng như cách thiết kế của nó là rất hữu ích. Go là một trong những ngôn ngữ được sử dụng phổ biến trong các hệ thống phân tán có hiệu năng cao. Để hiểu rõ hơn cách mà Go compiler phân tích cách cấp phát bộ nhớ khi biên dịch chương trình, hãy nghe những chia sẻ của anh Cường về Escape Analysis trong Go compiler.
Về diễn giả:
Anh Lê Mạnh Cường là một kĩ sư phần mềm có 8 năm kinh nghiệm chuyên sâu trong backend và Quản trị hệ thống Linux. Là một OSS contributor tích cực, anh Cường đã có nhiều cống hiến vào cộng đồng mã nguồn mở, đặc biệt là Go và ecosystem của Go.
Grokking Techtalk #37: Data intensive problemGrokking VN
At some point in your software engineer career, you will have to deal with data and your success depends on how big the data that your software can deal with. From a simple problem that requires processing a large amount of data, this talk will present to you how to approach this kind of issue and how to design and choose an efficient solution.
About speaker:
Hồ is Senior Software Engineer at AXON where he helps design and develops complex distributed systems, including image and video encoding, distributed file conversion system. Besides coding, Ho likes to read manga and meet friends in his free time.
Grokking Techtalk #37: Software design and refactoringGrokking VN
Even though software engineering has been around for decades, there is still no clear ways to assess the strengths and weaknesses of software design.
This talk introduces a framework to assess the strength of any specific software design and steps to refactor and improve it. Both object-oriented and functional programming will be discussed as ways to improve the design.
In the talk, the speaker also proposes a software architecture that incorporates all the ideas presented as the conclusion.
About speaker:
Thành currently works at Holistics Software as Co-founder and Chief Engineer architecting the next generation DataOps driven BI platform.
Before joining Holistics as co-founder, Thanh had 8 years of experience as a software engineer and big-data consultant from multiple companies, notably Revolution Analytics which was acquired by Microsoft in 2015.
Thanh graduated from National University of Singapore in 2009 majoring in Computer Engineering with a minor in Technopreneurship.
- Speaker: Servey Bochenkov - Head of Search @ TIKI
Search là một trong những feature quan trọng nhất đối với các website thương mại điện tử giúp khách hàng có thể dễ dàng tìm kiếm được sản phẩm mà mình mong muốn. Nhưng việc xây dựng một hệ thống search chất lượng nhưng vẫn đảm bảo tối ưu performance, resource sử dụng như RAM, CPU là một thách thức không hề nhỏ.
Đến với TechTalk #35 lần này, anh Sergey Bochenkov - với hơn 7 năm làm việc tại Cốc Cốc, hiện đang là Head of Search @ Tiki - sẽ chia sẻ cho chúng ta những ý tưởng cũng như khó khăn khi xây dựng language model dựa trên dữ liệu sản phẩm và search queries của Tiki cùng những dữ liệu khác được crawl từ các website để xây dựng Tiki spellchecker và autocorrection với một số nội dung nổi bật như:
- Quality optimizations idea
- Performance optimizations problems
- Giúp tăng 3-9% lượng mua hàng.
Speaker: Châu Nguyễn Nhật Thanh - Head of MEP @ ZaloPay
Khi phát triển hệ thống dựa trên kiến trúc monolithic, chúng ta thường gặp phải những khó khăn ảnh hưởng đến tốc độ delivery features, scaling những resources như databases,.. và những rủi ro khi thay đổi, nâng cấp sản phẩm.
Microservice là một trong những lựa chọn phổ biến hiện nay để giải quyết những khó khăn trên kiến trúc monolithic khi hệ thống scale phức tạp hơn, cần tốc độ delivery nhanh hơn, dễ dàng lựa chọn, triển khai nhiều technologies khác nhau cùng lúc,...
Nhưng có phải khi triển khai Microservice là chúng ta có thể tránh được những vấn đề trên?
- Chúng ta thường nghe nói đến việc scale API (compute) bằng cách sử dụng microservice dùng docker on k8s, nhưng làm thế nào để scale databases (storage) tránh SPOF?
- Làm thế nào để triển khai microservice trên hệ thống máy vật lý (on-premise) trên hạ tầng sẵn có?
- Làm thế nào để triển khai CI/CD cho hệ thống một cách hiệu quả?
- Làm sao để tracing/debug khi gặp sự cố?
- Và làm thế nào để monitor hệ thống đã triển khai?
Đến với Grokking TechTalk #34, các bạn sẽ được anh Châu Nguyễn Nhật Thanh - Head of MEP @ ZaloPay - chia sẻ về những kinh nghiệm và những vấn đề cũng như đau thương khi sử dụng microservices cho hệ thống ZaloPay Merchant Platform sử dụng Kubernetes on-premise.
Grokking TechTalk #33: High Concurrency Architecture at TIKIGrokking VN
- Speaker: Nguyễn Hoàng Bách - Senior Principal Engineer @ TIKI
Trải qua 9 năm xây dựng và phát triển hệ thống, đội ngũ engineer TIKI lần lượt phải giải quyết từng bài toán kỹ thuật khó khăn để hệ thống phát triển theo kịp tốc độ tăng trưởng của business. Đặc thù của hệ thống Ecommerce có một thách thức lớn là phải đảm bảo tính chính xác của dữ liệu nhưng đồng thời vẫn phải đáp ứng lượng truy cập lớn. Do đó High Concurrency Architecture có vai trò quan trọng trong kiến trúc tổng thể của TIKI. Nó cũng là bước tiến lớn của các kỹ sư TIKI trong 6 tháng qua.
Grokking TechTalk #33: Architecture of AI-First Systems - Engineering for Big...Grokking VN
- Speaker: Hervé Vũ Roussel - CEO & Co-founder @ QuodAI
- Vài nét về speaker: Hervé Vũ Roussel trước đây đã từng là CTO của một công ty phần mềm ở Silicon Valley Mỹ. Anh đã và đang là advisor và mentor cho nhiều tổ chức như IBM AI XPRIZE, PlatoHQ (YC'16), RMIT, AngelHack, ... Anh cũng là một trong các diễn giả thường xuyên cho chủ đề AI và Software engineer cũng như đã tư vấn cho nhiều trường đại học, công ty về các chương trình đào tạo khoa học máy tính và kỹ sư phần mềm. Hiện tại, Hervé đang là CEO của Quod AI, một nền tảng giúp giải thích source code bằng ngôn ngữ tự nhiên.
Đến với talk lần này anh sẽ chia sẻ kinh nghiệm của mình trong việc thiết kế một kiến trúc chịu tải cao và dễ mở rộng (highly scalable architecture) cho các nền tảng AI bao gồm:
- Những nguyên tắc nền tảng trong xây dựng kiến trúc phần mềm
- Cách lựa chọn công nghệ lưu trữ dữ liệu
- Xây dựng data pipelines bất đồng bộ
Design patterns là một đề tài "khó nuốt" với đa số lập trình viên ở buổi đầu tìm hiểu. Lý do là vì design patterns được xây dựng trên những khái niệm trừu tượng cũng như phải tuân thủ các nguyên tắc lập trình hướng đối tượng.
Đến với TechTalk #32: SOLID & Design Patterns, các bạn sẽ được giới thiệu những nguyên tắc cần phải tuân thủ này và cách thức áp dụng những design patterns quen thuộc vào giải quyết các bài toán một các ngắn gọn, xúc tích và hiệu quả thông qua các ví dụ thực tế.
Speaker: Khôi Nguyễn - Senior Software Engineer @ KMS Technology
Trong talk lần này của Grokking, anh Huy sẽ chia sẻ về điểm hay và tác hại của văn hoá chat ở công sở, và đưa ra thêm những lựa chọn khác phù hợp hơn cho từng trường hợp cụ thể. Đối tượng là dành cho các team khi gặp các vấn đề sau:
1. Bạn cảm thấy bỏ rất nhiều thời gian, nhưng lại không làm được gì nhiều vì luôn bị đồng nghiệp nhờ/hỏi khi có công việc gấp
2. Cuối ngày nhìn lại bạn chả nhớ mình làm được gì quan trọng
3. Bạn dành thời gian trao đổi với team rất hăng hái để đưa ra quyết định, nhưng 3 tháng sau lại quên mất tại sao hồi đó quyết định như vậy..
Bài talk sẽ nói về thói quen giao tiếp bất đồng bộ, thói quen ghi lại những gì mình cần nói & cách xây dựng wiki cho team của mình nhằm mục tiêu hạn chế những ảnh hưởng không tốt của việc sử dụng chat.
Speaker: Huy Nguyen - CTO @ Holistics
Grokking TechTalk #30: From App to Ecosystem: Lessons Learned at ScaleGrokking VN
When we were faced with the challenge of going from one to multiple apps, we had to make significant changes to the way we did frontend development. Learn about the tooling and architecture we use to manage a suite of apps, and how you can apply the same principles to your own frontend.
Speaker: Kristian Randall - Frontend Engineering Manager @ Axon
Grokking TechTalk #29: Building Realtime Metrics Platform at LinkedInGrokking VN
Bài techtalk của anh Khải Trần nói về hệ thống data pipeline của LinkedIn được dùng để thu thập hàng chục tỷ messages mỗi ngày, và cách họ chạy hệ thống real-time processing để thống kê lượng dữ liệu này cho mục đính metrics monitoring.
1 số điểm bài talk sẽ chia sẻ:
- Giới thiệu về hệ thống unified metrics platform của LinkedIn
- Cách LinkedIn setup hệ thống BigData pipeline dùng Kafka, HDFS, Apache Calcite và Apache Samza.
- Khái niệm nearline storage, và cách LinkedIn chuyển từ offline architecture sang nearline architecture.
Speaker: Khai Tran, Staff Software Engineer - LinkedIn.
- Hiện đang là staff software engineer ở LinkedIn, phụ trách hệ thống metrics monitoring system. Trước đây từng làm ở Amazon AWS và Oracle.
- PhD, University of Wisconsin-Madison, nghiên cứu về Database Systems.
Cây nhị phân tìm kiếm là 1 cấu trúc dữ liệu quen thuộc với chúng ta. Có rất nhiều nghiên cứu và các thuật toán xoay quanh cấu trúc dữ liệu này. Trong talk này, xin giới thiệu một kỹ thuật giúp tối ưu cây nhị phân tìm kiếm dựa trên tần suất tìm kiếm, qua đó giúp giảm chi phí tìm kiếm xuống mức thấp nhất.
- Speaker: Phong Vu - Software Engineer
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
3. Origin of Null Pointer Exception
● Sir Tony Hoare was designing type systems for the
language ALGOL W and he put “Null Pointer Exception” as
part of the language, because “because it was so easy to
implement”
● In 2009, he called it “The Billion Dollar Mistake”
3
4. What we want:
getCountry('vn').getCity('HCMC').population;
What we have to do
var country = getCountry('vn');
if (country !== null) {
var city = country.getCity('HCMC');
if (city !== null) {
var population = city.population;
}
}
How do we fight NULL?
4
Drawbacks:
● Looks complicated
● Error-prone, especially
when there are many
nesting ifs
● Tedious to write
● Declares a lot of useless
variables
5. ● A Functor is a container of a value
Introduction to Functor
5
A value A container of value
● A simple Functor can be implemented through an ES6 class
class Functor {
constructor(value) {
this.value = value;
}
}
6. One important thing about Functor
6
By definition, a functor needs to implement a
map function
7. Remember Array Map?
7
Let’s look at Array’s map function.
var addOne = (x) => x + 1;
var square = (x) => x * x;
var result = [1, 2, 3]
.map(addOne) // [2, 3, 4]
.map(square); // [4, 9, 16]
8. Implement map for Functor
8
class Functor {
constructor(value) {
this.value = value;
}
map(fn) {
var newValue = fn(this.value);
return new Functor(newValue);
}
}
9. Let’s see it in action (1)
9
var addOne = (x) => x + 1;
var functorOf6 = new Functor(5).map(addOne); // Functor(6)
10. It can also work with any value, for example, an object:
var toUpperCase = (str) => str.toUpperCase();
var exciting = (someName) => someName + ’!!!!!!!’;
var value = { name: 'grokking' };
var containerOfValue = new Functor(value)
.map(thing => thing.name) // Functor(‘grokking’)
.map(toUpperCase) // Functor(‘GROKKING’)
.map(exciting); // Functor(‘GROKKING!!!!!!!’)
Let’s see it in action (2)
10
11. Notice that our actual value is still inside the Functor.
var functorOf36 = new Functor(5)
.map(addOne) // Functor(6)
.map(square); // Functor(36)
var result = functorOf36 + 100; // Functor(36) + 100 ???????
How to get the value inside Functor
11
Let’s add another method to Functor to extract the value.
class Functor {
get() { return this.value; }
}
12. var valueInside = new Functor(5)
.map(addOne) // Functor(6)
.map(square); // Functor(36)
.get(); // 36
var toUpperCase = (str) => str.toUpperCase();
var exciting = (someName) => someName + '!!!!!!';
var valueInside = new Functor({ name: 'grokking' })
.map(people => people.name) // Functor(‘grokking’)
.map(toUpperCase) // Functor(‘GROKKING’)
.map(exciting); // Functor(‘GROKKING!!!!!!!’)
.get(); // 'GROKKING!!!!!!!'
Now we can get the value inside Functor
12
13. class Functor {
constructor(value) {
this.value = value;
}
map(fn) {
var newValue = fn(this.value);
return new Maybe(newValue);
}
get() {
return this.value;
}
}
Full implementation of Functor
13
14. var addOne = (x) => null; // we return Null
var square = (x) => x * x;
var valueInside = new Functor(1)
.map(addOne) // Functor(null)
.map(square); // Functor(null * null) ????
.get(); // ????
But we are still affected by NULL
14
The solution is to turn our functor into a Maybe
15. ● Maybe is a kind of Functor that is Null-
friendly. Real magic happens in the map
function
● Maybe that contains a real value (not null)
is usually called a Just / Some
● Maybe that contains null value is usually
called a Nothing / None
Introduction to Maybe
15
Maybe(value) = Just(value)
Maybe(null) = Nothing
16. class Maybe {
constructor(value) { this.value = value; }
map(fn) {
if (this.value !== null) { // Magic happens here
var newValue = fn(this.value);
return new Maybe(newValue);
}
return new Maybe(null);
}
getOrElse(fallBackValue) {
return (this.value === null) ? this.value : fallBackValue;
}
}
Let’s implement Maybe
16
17. It’s pretty much the same as Functor’s example. The only difference is that we use
getOrElse instead of get
var addOne = (x) => x + 1;
var square = (x) => x * x;
var result = new Maybe(3)
.map(addOne) // Maybe(4)
.map(square) // Maybe(16)
.getOrElse(0); // 16
Maybe in action
17
18. When Maybe contains NULL, it will not map anymore
var result = new Maybe(3)
.map(x => null) // Maybe(null)
.map(x => x * x) // Maybe(null)
.getOrElse(0); // 0
var result = new Maybe(3)
.map(x => x + 1) // Maybe(4)
.map(x => null) // Maybe(null)
.getOrElse(0); // 0
When Null happens
18
19. Some real world examples
var family = {
grandma: {
mother: {
you: 'YOUR NAME HERE'
}
}
};
var you = new Maybe(family.grandma)
.map(grandma => grandma.mother)
.map(mother => mother.you)
.getOrElse('DEFAULT NAME');
// returns “YOUR NAME HERE”
var family = {
grandma: null
};
var you = new Maybe(family.grandma)
.map(grandma => grandma.mother)
.map(mother => mother.you)
.getOrElse('DEFAULT NAME');
// returns “DEFAULT NAME”
19
We can use it to safely access nested objects
20. Compare with what we used to do
20
var you = family.grandma.mother.you || 'DEFAULT NAME';
var you = 'DEFAULT NAME';
if (family.grandma &&
family.grandma.mother &&
family.grandma.mother.you)
{
you = family.grandma.mother.you;
}
var you = new Maybe(family.grandma)
.map(grandma => grandma.mother)
.map(mother => mother.you)
.getOrElse('DEFAULT NAME');
Short, but unsafe
Safe, but long and
nested
Safe and flattened
21. var population = new Maybe(getCountry('vn'))
.map(country => country.getCity('HCMC'))
.map(city => city.population)
.getOrElse(0);
Some real world examples
var country = getCountry('vn');
if (country !== null) {
var city = country.getCity('HCMC');
if (city !== null) {
var population = city.population;
}
}
21
We can rewrite our example earlier
Into shorter and flattened code
22. ● Is just a container of value
● Is a fundamental concept in
Functional Programming. From
there you can explore Applicative
and Monad
● Is a kind of functor that checks null on each map
● Helps flatten your code
● Is used widely in many other languages:
- Haskell, Elm: Maybe
Recap
22
Maybe
Functor
23. References
● https://github.com/fantasyland/fantasy-land Fantasy Land Specification
● https://cwmyers.github.io/monet.js/ Powerful abstractions for Javascript
● http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
Functor, Applicatives, Monads in pictures
● https://en.wikipedia.org/wiki/Functor (looks scary with all the math)
● http://www.mokacoding.com/blog/functor-applicative-monads-in-pictures/ (Maybe in
Swift)
● http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html Java 8
Optional
23