Sunday, April 30, 2017
Saturday, April 29, 2017
RealWorld TodoMVC - Medium clone using different frontends and backends
https://github.com/gothinkster/realworld/blob/master/README.md
Also have to checkout - http://todobackend.com/
Spoilers: they have you make a blog.A blog. One of the most simple inventions that never would have existed without the web itself. And it takes full advantage of the web too: querying & persisting data to a database, an authentication system, session management, full CRUD for resources—and now these days social blogging platforms (like the site you’re reading this on) have also perfected relational features like following, liking, and commenting. A blogging site is the perfect example of a simple yet robust web application.
Labels:
javascript,
tools,
web applications
'General' Rules/Advice/Reminders to developers like myself
1) Assumptions
Make no assumptions.
Try to confirm in any way possible - e.g read documentation, ask someone, look more closely at the codebase, google, etc. etc.
2) Abstractions
Learn to view any system as consisting of layers of Abstractions.
Thumb-rule: To fix an issue - Work at the highest level of Abstraction as possible.
Knowledge about all levels of Abstraction is desired, but, among all the levels of Abstraction where solutions are possible, fixing a bug should be done at the outermost level of Abstraction.
E.g. Bootstrap widgets use jquery internally. Use the functions that Boostrap provides when working with Bootstrap widgets. When everything that Bootstrap provides proves to be insufficient, then use jquery.
3) Developer Testing
Test end-to-end, the feature that you are touching.
And that is the bare minimum.
In addition to the above, we have to think about all the other areas that could get affected by our changes.
E.g. If you are touching Step 2 in a feature that has 5 steps, we have to test all the 5 steps, and not just Step 2.
4) A good developer is a Power User.
We have to know about the things we are developing for.
We have to constantly be using what the users are using or will be using.
E.g. Unless you are a frequent user of Social Networking sites, you cannot be a good developer if you want to do some development related to Social Networking
5) 3 things to keep learning - programming languages/frameworks, company specific framework, Domain
Knowledge of the various programming tools (e.g. Ruby/Rails) we will be using daily is the bare minimum.
Apart from the above, usually every company has some specific frameworks that they have built for themselves. We have to learn that too.
Once we have enough technology knowledge, we can start to contribute towards solving Business Problems (of all sizes). Solving Business Problems however needs Domain Knowledge too. So we have to try to learn that as well.
6) Courage to learn at your own pace
It is sometimes very disheartening when we struggle to learn something new.
During those times, it takes a great deal of courage to still continue, and not give up.
We have to remember that learning slowly is infinitely better than completely giving up.
Giving up temporarily is ok - recharge and try again.
This is very important because, as developers, we have to learn continuously.
7) Screw Office Politics & Discussions to improve Process
This final point is an opinion and not a general rule like the above 1-6 rules.
Process, People-Management are important to any company and some people do have to worry about such headaches.
If that is not your cup of tea, always be on your guard to not get into those things, because such things are a daily reality for any company.
Seemingly-Harmless-Gossip is prevalent in every company and can have serious effects on people's careers if indulged in too much.
Office Gossip - Not OK; Other Gossip - OK
Process Discussions - Not OK; Technology Discussions - OK
Make no assumptions.
Try to confirm in any way possible - e.g read documentation, ask someone, look more closely at the codebase, google, etc. etc.
2) Abstractions
Learn to view any system as consisting of layers of Abstractions.
Thumb-rule: To fix an issue - Work at the highest level of Abstraction as possible.
Knowledge about all levels of Abstraction is desired, but, among all the levels of Abstraction where solutions are possible, fixing a bug should be done at the outermost level of Abstraction.
E.g. Bootstrap widgets use jquery internally. Use the functions that Boostrap provides when working with Bootstrap widgets. When everything that Bootstrap provides proves to be insufficient, then use jquery.
3) Developer Testing
Test end-to-end, the feature that you are touching.
And that is the bare minimum.
In addition to the above, we have to think about all the other areas that could get affected by our changes.
E.g. If you are touching Step 2 in a feature that has 5 steps, we have to test all the 5 steps, and not just Step 2.
4) A good developer is a Power User.
We have to know about the things we are developing for.
We have to constantly be using what the users are using or will be using.
E.g. Unless you are a frequent user of Social Networking sites, you cannot be a good developer if you want to do some development related to Social Networking
5) 3 things to keep learning - programming languages/frameworks, company specific framework, Domain
Knowledge of the various programming tools (e.g. Ruby/Rails) we will be using daily is the bare minimum.
Apart from the above, usually every company has some specific frameworks that they have built for themselves. We have to learn that too.
Once we have enough technology knowledge, we can start to contribute towards solving Business Problems (of all sizes). Solving Business Problems however needs Domain Knowledge too. So we have to try to learn that as well.
6) Courage to learn at your own pace
It is sometimes very disheartening when we struggle to learn something new.
During those times, it takes a great deal of courage to still continue, and not give up.
We have to remember that learning slowly is infinitely better than completely giving up.
Giving up temporarily is ok - recharge and try again.
This is very important because, as developers, we have to learn continuously.
7) Screw Office Politics & Discussions to improve Process
This final point is an opinion and not a general rule like the above 1-6 rules.
Process, People-Management are important to any company and some people do have to worry about such headaches.
If that is not your cup of tea, always be on your guard to not get into those things, because such things are a daily reality for any company.
Seemingly-Harmless-Gossip is prevalent in every company and can have serious effects on people's careers if indulged in too much.
Office Gossip - Not OK; Other Gossip - OK
Process Discussions - Not OK; Technology Discussions - OK
Motivation vs Discipline
"Screw motivation, what you need is discipline."Part 2 - Practical Discipline - http://www.wisdomination.com/practical-discipline/
Thursday, April 27, 2017
Saturday, April 22, 2017
Monday, April 17, 2017
Subtime Text related: Useful plugins
The following have been invaluable plugins to me:
Git Gutter
MoveTab
Git Gutter
MoveTab
Sunday, April 16, 2017
Monday, April 10, 2017
jquery: dropdown
http://stackoverflow.com/questions/2780566/get-selected-value-of-a-dropdowns-item-using-jquery
For single select dom elements, to get the currently selected value:
For single select dom elements, to get the currently selected value:
$('#dropDownId').val();To get the currently selected text:
$('#dropDownId :selected').text();
Sunday, April 9, 2017
UXDD - UX Driven Design
https://msdn.microsoft.com/en-us/magazine/mt619988.aspx
https://app.pluralsight.com/library/courses/ux-driven-software-design/table-of-contents
Excerpts:
It is being used by designers in our company and it seems to be pretty good.
https://app.pluralsight.com/library/courses/ux-driven-software-design/table-of-contents
Excerpts:
"puts UX at the foundation of the entire design process."
"From a functional perspective, you can successfully build a working system regardless of whether you start the design effort from the bottom (say, from the persistence model) or the top (say, from presentation layer and view model). From a UX perspective, you can only be successful if you start designing from presentation and view models and build everything else, including the back-end stack, from there."
"I learned from UX experts that requirements are better actively generated through evidence-based discussion than passively inferred via interviews"
"Very few tasks are entirely accomplished through a single screen that you can summarize effectively to a wireframe. Just looking into the wireframe of a screen may not be enough to spot possible bottlenecks of the process implementation. Concatenating screens in a storyboard is a much better idea. In this regard, the biggest challenge I see is finding the tools to build storyboards."
"... simply outsourcing the presentation layer to a team of UX experts isn’t enough. The presentation layer today is the most important part of a system and must result from the combined effort of solution architects, UX architects and customers. This must be the first step and ideally you move on only when the customer signs off on the presentation."
Figure 2 Tools for Quick and Effective UI PrototypingNot sure why https://www.invisionapp.com/ was not mentioned in his article above.
Tool URL Axure axure.com Balsamiq balsamiq.com Indigo Studio infragistics.com/products/indigo-studio JustInMind justinmind.com UXPin uxpin.com
It is being used by designers in our company and it seems to be pretty good.
Saturday, April 8, 2017
The Churn - No point discussing/fighting it
From what I have seen, companies just seem to want/require/need Change from time to time.
They end up restructuring their team(s). 'Reorg' is an often heard term.
Or they want their technology stack to change.
Or they want to bring in new Processes.
Or they bring in new people, fire some old ones, etc. etc. etc.
Depending on luck, individuals like me can get caught up in the politics of it or not.
Questions like "Are these changes required? Are they fair/correct?" come to mind and discussions inevitably take place between colleagues and we all feel miserable for a long period of time.
I have not been able to describe this phenomenon previously, but after hearing about 'The Churn' in an episode in The Expanse, I finally got convinced that this is it.
Excerpt from blog https://medium.com/anomalous-engineering/welcome-to-the-churn-5c201b3e9759 explaining what 'The Churn' is:
"When the jungle tears itself down and builds itself into something new."
...
"Some things are so fundamental that you can only survive them, or not"
...
"Until the Churn settles into whatever the fuck the New Normal becomes, we could be the looters, or the volunteers stopping them, or victims, or just bystanders"
And to maximize our chances of survival, the below blog suggests we should make ourselves 'deserving' of survival.
The Churn is inevitable, so there is no point in wasting time & energy in discussing it. It's better to use that time & energy to become more 'deserving' of survival.
As programmers, team-members, how can we become more 'deserving' of survival?
2 things come to mind:
1) by continuously putting in effort to improve our skills
2) by continuously putting in effort to be nice/fair to our colleagues
Next time, I am tempted to discuss 'stuff' about The Churn, I will try to remind myself - "It's The Churn man... There is no point in discussing/fighting it"
(The Churn - https://medium.com/anomalous-engineering/welcome-to-the-churn-5c201b3e9759)
They end up restructuring their team(s). 'Reorg' is an often heard term.
Or they want their technology stack to change.
Or they want to bring in new Processes.
Or they bring in new people, fire some old ones, etc. etc. etc.
Depending on luck, individuals like me can get caught up in the politics of it or not.
Questions like "Are these changes required? Are they fair/correct?" come to mind and discussions inevitably take place between colleagues and we all feel miserable for a long period of time.
I have not been able to describe this phenomenon previously, but after hearing about 'The Churn' in an episode in The Expanse, I finally got convinced that this is it.
Excerpt from blog https://medium.com/anomalous-engineering/welcome-to-the-churn-5c201b3e9759 explaining what 'The Churn' is:
"When the jungle tears itself down and builds itself into something new."
...
"Some things are so fundamental that you can only survive them, or not"
...
"Until the Churn settles into whatever the fuck the New Normal becomes, we could be the looters, or the volunteers stopping them, or victims, or just bystanders"
And to maximize our chances of survival, the below blog suggests we should make ourselves 'deserving' of survival.
The Churn is inevitable, so there is no point in wasting time & energy in discussing it. It's better to use that time & energy to become more 'deserving' of survival.
As programmers, team-members, how can we become more 'deserving' of survival?
2 things come to mind:
1) by continuously putting in effort to improve our skills
2) by continuously putting in effort to be nice/fair to our colleagues
Next time, I am tempted to discuss 'stuff' about The Churn, I will try to remind myself - "It's The Churn man... There is no point in discussing/fighting it"
(The Churn - https://medium.com/anomalous-engineering/welcome-to-the-churn-5c201b3e9759)
Wednesday, April 5, 2017
H-1B: Memo clarifying USCIS practice says employers must show the job is a specialty occupation
H-1B Visas for Computer Programmers May Be Harder to Come By
https://www.shrm.org/resourcesandtools/hr-topics/talent-acquisition/pages/computer-programmers-may-need-to-fight-to-get-h-1b-visas-as-usual.aspx
Memo clarifying USCIS practice says employers must show the job is a specialty occupation
https://www.shrm.org/resourcesandtools/hr-topics/talent-acquisition/pages/computer-programmers-may-need-to-fight-to-get-h-1b-visas-as-usual.aspx
Tuesday, April 4, 2017
Wednesday, March 29, 2017
Ruby related: Inspecting methods, Getting Source Location
http://stackoverflow.com/questions/4664578/how-do-i-inspect-the-methods-of-a-ruby-object
http://stackoverflow.com/questions/3393096/how-can-i-get-source-code-of-a-method-dynamically-and-also-which-file-is-this-me
obj.class.instance_methods(false)
http://stackoverflow.com/questions/3393096/how-can-i-get-source-code-of-a-method-dynamically-and-also-which-file-is-this-me
Use source_location:
class A
def foo
end
endfile, line = A.instance_method(:foo).source_location
# or
file, line = A.new.method(:foo).source_location
puts "Method foo is defined in #{file}, line #{line}"
# => "Method foo is defined in temp.rb, line 2"
Tuesday, March 28, 2017
Saturday, March 25, 2017
Modules vs Microservices
https://www.oreilly.com/ideas/modules-vs-microservices
https://www.reddit.com/r/programming/comments/61f13z/modules_vs_microservices/
Excerpt:
https://www.reddit.com/r/programming/comments/61f13z/modules_vs_microservices/
Excerpt:
Much has been said about moving from monoliths to microservices. Besides rolling off the tongue nicely, it also seems like a no-brainer to chop up a monolith into microservices. But is this approach really the best choice for your organization? It’s true that there are many drawbacks to maintaining a messy monolithic application. But there is a compelling alternative which is often overlooked: modular application development. In this article, we'll explore what this alternative entails and show how it relates to building microservices.
Labels:
design,
software engineering,
web applications
Monday, March 20, 2017
Rails - logger enhancements
https://github.com/jrochkind/formatted_rails_logger
FormattedRailsLoggerMonkey-patches Rails BufferedLogger (the standard Rails logger) to accept a formatter just like ruby Logger does. Provides a formatter that includes timestamp and severity in logs, while taking account of Rails habit of making space in the logfile by adding newlines to the beginning of log message.
What is hard to do using React.js compared to jQuery?
https://www.quora.com/What-is-hard-to-do-using-React-js-compared-to-jQuery
Just name a few that React is not good at
1. Async loading. Async loading is a must-have for Single Page App but React doesn't have a native support for Async loading.
2. Animation. You have to fall back to other library for animation.
3. Integration with other library. You don't want to rewrite all available cool library in React, do you?
When working with async loading, animation and integration with other jQuery library, you end up have too many work-around in your code and you can hardly call your framework React.
1. Async loading. Async loading is a must-have for Single Page App but React doesn't have a native support for Async loading.
2. Animation. You have to fall back to other library for animation.
3. Integration with other library. You don't want to rewrite all available cool library in React, do you?
When working with async loading, animation and integration with other jQuery library, you end up have too many work-around in your code and you can hardly call your framework React.
Labels:
javascript,
jquery,
react,
web applications
Sunday, March 19, 2017
Turbolinks, jquery-pjax - Alternatives to client-side SPA frameworks
https://github.com/turbolinks/turbolinks
https://github.com/defunkt/jquery-pjax
These are alternatives to using client-side JS frameworks for building SPAs.
https://github.com/defunkt/jquery-pjax
These are alternatives to using client-side JS frameworks for building SPAs.
Saturday, March 18, 2017
RxJS, Most.js, xstream
Libraries like xstream, RxJS or Most.js, greatly simplify code related to events, asynchrony, and errors.
http://reactivex.io/rxjs/manual/tutorial.html
https://github.com/cujojs/most/
https://github.com/staltz/xstream
Comparing RxJS and xstream: from https://medium.com/@AlbertKlusky/rxjs-be-careful-with-that-axe-eugene-a1763d115e30#.fmw8sa3au
http://reactivex.io/rxjs/manual/tutorial.html
https://github.com/cujojs/most/
https://github.com/staltz/xstream
Comparing RxJS and xstream: from https://medium.com/@AlbertKlusky/rxjs-be-careful-with-that-axe-eugene-a1763d115e30#.fmw8sa3au
I relay like rxjs. It’s very powerful tools, but at the same time it’s super dangerous. I know that creator of framework Cycle.js — André Staltz — resigned from using Rxjs and switched to xstreams. Main problem which forced him to switch to xstream was confusion around hot and cold observables. I think the same. Rxjs would be much easier without cold observable, if everything would be hot like with xstreams. Cold streams are handy but are super dangerous. Similar like with two way data binding. It’s cool feature, but super dangerous.
quokkajs - The Live Scratchpad for JavaScript
The Live Scratchpad for JavaScript
https://quokkajs.com/
(To be used with VS Code)
Getting Started: https://quokkajs.com/docs/index.html#getting-started
https://quokkajs.com/
(To be used with VS Code)
Getting Started: https://quokkajs.com/docs/index.html#getting-started
ViaJS - A JavaScript library that allows you to load HTML content dynamically
ViaJS - A JavaScript library that allows you to load HTML content dynamically
https://github.com/abdi0987/ViaJS
This seems like a simple library to learn and use. (Have to try it out)
https://github.com/abdi0987/ViaJS
This seems like a simple library to learn and use. (Have to try it out)
Friday, March 17, 2017
ES6 - const (for objects and arrays)
Excerpt from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const
// const also works on objects
const MY_OBJECT = {'key': 'value'};
// Attempting to overwrite the object throws an error
MY_OBJECT = {'OTHER_KEY': 'value'};
// However, object keys are not protected,
// so the following statement is executed without problem
MY_OBJECT.key = 'otherValue'; // Use Object.freeze() to make object immutable
// The same applies to arrays
const MY_ARRAY = [];
// It's possible to push items into the array
MY_ARRAY.push('A'); // ["A"]
// However, assigning a new array to the variable throws an error
MY_ARRAY = ['B']
Thursday, March 16, 2017
React related - Redux vs Mobx
https://www.reddit.com/r/reactjs/comments/4npzq5/confused_redux_or_mobx/
Has comments, from authors of Redux and Mobx, that serve as concise intros to each of them.
Has comments, from authors of Redux and Mobx, that serve as concise intros to each of them.
Monday, March 13, 2017
ES6 - What do function parameter lists inside of curly braces do in es6?
const func = ({ param1, param2 }) => {
//do stuff
}
It is destructuring, but contained within the parameters. The equivalent without the destructuring would be:
const func = o => {
var param1 = o.param1;
var param2 = o.param2;
//do stuff
}
It is basically shorthand for
{param1: param1, param2: param2}Wednesday, March 8, 2017
Tuesday, March 7, 2017
Saturday, March 4, 2017
Code Reviews
http://monotonically-unstable.github.io/programming/2017/03/03/methodical_code_reviews/
Excerpt:
Excerpt:
Whenever I trained a new team member on how to do code reviews, I instructed two major rules. In short, they went along these lines:
- Never make the other person feel bad about his/her work.
- Never give a review note that is based on a gut feeling.
Friday, March 3, 2017
Saturday, February 25, 2017
Tuesday, February 21, 2017
Monday, February 20, 2017
Mithril
A simple application where we can list users from a server and edit them individually
http://mithril.js.org/simple-application.html
http://mithril.js.org/simple-application.html
REM: REST API for Prototyping from Heroku
http://rem-rest-api.herokuapp.com/
REM is a REST API for prototyping. It accepts JSON requests, returns JSON responses and persists data between requests like a real API. But your test data is only visible to you. It's CORS enabled and no API key is required.
var xhr = new XMLHttpRequest() xhr.open("GET", "http://rem-rest-api.herokuapp.com/api/users", true) xhr.withCredentials = true xhr.send() xhr.onload = function() { var data = JSON.parse(xhr.responseText) }
Friday, February 17, 2017
ES6 - Arrow Functions
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions
https://hacks.mozilla.org/2015/06/es6-in-depth-arrow-functions/
Syntax
Basic Syntax
(param1, param2, …, paramN) => { statements } (param1, param2, …, paramN) => expression // equivalent to: (param1, param2, …, paramN) => { return expression; } // Parentheses are optional when there's only one parameter: (singleParam) => { statements } singleParam => { statements } // A function with no parameters requires parentheses: () => { statements } () => expression // equivalent to: () => { return expression; }Advanced Syntax
// Parenthesize the body to return an object literal expression: params => ({foo: bar}) // Rest parameters and default parameters are supported (param1, param2, ...rest) => { statements } (param1 = defaultValue1, param2, …, paramN = defaultValueN) => { statements } // Destructuring within the parameter list is also supported var f = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c; f(); // 6Detailed syntax examples can be seen here.
Saturday, February 11, 2017
Friday, February 10, 2017
CORS - Cross Origin Resource Sharing
https://www.html5rocks.com/en/tutorials/cors/
http://caniuse.com/#search=CORS
- supported by most browsers at this time
http://stackoverflow.com/questions/15477527/cross-domain-ajax-request
http://caniuse.com/#search=CORS
- supported by most browsers at this time
http://stackoverflow.com/questions/15477527/cross-domain-ajax-request
Labels:
html,
javascript,
web applications
Ajax and React
http://andrewhfarmer.com/react-ajax-best-practices/
https://daveceddia.com/ajax-requests-in-react/
Excerpt:
One of the first questions new React developers have is, “How do I do AJAX requests in React?”Here’s an answer to that question.
First: React itself doesn’t have any allegiance to any particular way of fetching data. In fact, as far as React is concerned, it doesn’t even know there’s a “server” in the picture at all.React simply renders components, using data from only two places: props and state.
So therefore, to use some data from the server, you need to get that data into your components’ props or state.
You can complicate this process with services and data models (er, “build abstractions”) as much as you desire, but ultimately it’s just components rendering props and state.
Labels:
javascript,
react,
web applications
Sunday, February 5, 2017
Kweb
KWeb is a library for building rich interactive web applications in pure Kotlin that makes the distinction between web browser and server largely invisible to the programmer.Kweb the new coroutines mechanism in upcoming Kotlin 1.1 to elegantly avoid callback hell.Kweb also incorporates a simple DSL for manipulating the browser’s DOM, and plugins to allow you to use popular JavaScript frameworks like JQuery and Material Design Light. It’s also surprisingly easy to add your own plugin for your favorite library or tool.
Importance of hard work
http://www.usatoday.com/story/sports/nfl/patriots/2017/02/04/new-england-dynasty-super-bowl-xxxvi-rams-bill-belichick-tom-brady/97488880/
“Our standard is high. We always talk that whatever we achieve is going to be earned on the practice field and earned in a lot of different times throughout the course of the season when we may not have a crowd of people watching us.
"We try to pay for it in advance. Over the years, that hasn’t changed.”
Thursday, February 2, 2017
Monday, January 30, 2017
git-recall
https://github.com/Fakerr/git-recall/
Purpose
git-recallis a simple tool that allows you to easily go through your commits and check what you or other contributors in your team did. It doesn't aim to be a replacement for thegit logcommand, but just to be a handy way to recall what you've done from your terminal.
Introduce process only as a last resort
https://medium.com/@yanismydj/introduce-process-only-as-a-last-resort-21bd25e53eb#.csf89ikjm
Excerpt:
Excerpt:
Introduce process only as a last resort
Lately, I’ve been thinking a lot about how organizations love process. Having systems and process can be very important. Without them, lines can be blurred, slopes become slippery, and maintaining consistency becomes very difficult. That being said, process is also toxic and dangerous to startups, especially at the early stages. When rules & process are introduced, you limit people’s autonomy, and chip away at the critical thinking and common sense that is required of them everyday.
Saturday, January 28, 2017
Comparing Elixir and Go
https://blog.codeship.com/comparing-elixir-go/
Excerpt:
Excerpt:
For very focused code, portable system level tools, performance intensive tasks, and APIs, Go is very hard to beat. For full-stack web applications, distributed systems, real-time systems, or embedded applications, I’d reach for Elixir.
Sunday, January 22, 2017
Wednesday, January 18, 2017
Thursday, December 22, 2016
Saturday, December 17, 2016
Friday, December 9, 2016
Thursday, December 8, 2016
Monday, December 5, 2016
Vue.js in GitLab
- This is a good talk to watch for info regarding Why Gitlab chose Vue, How they are using Vue etc.
- Gitlab is using Rails, so it should have important/useful lessons for Vibe
- Gitlab is using Rails, so it should have important/useful lessons for Vibe
Labels:
javascript,
vue.js,
web applications
Wednesday, November 30, 2016
Sunday, November 27, 2016
Turbolinks related
https://changelog.com/posts/why-we-chose-turbolinks
This is the 2nd blog-post i noticed that mentions using Turbolinks with Phoenix. And they also chose Turbolinks over current JS frameworks like React, Angular.
The previous one - http://psjp-learn.blogspot.in/2016/07/phoenix-turbolinks-as-replacement-for.html
This is the 2nd blog-post i noticed that mentions using Turbolinks with Phoenix. And they also chose Turbolinks over current JS frameworks like React, Angular.
The previous one - http://psjp-learn.blogspot.in/2016/07/phoenix-turbolinks-as-replacement-for.html
Labels:
design,
elixir,
javascript,
phoenix,
web applications
Microservices Migration: Lessons Learned
https://medium.com/technology-learning/microservices-migration-lessons-learned-f84166ec7eb0#.spcg7hoj8
Apart from the content of the blogpost, it has useful links to other articles.
Apart from the content of the blogpost, it has useful links to other articles.
Saturday, November 26, 2016
Monday, November 14, 2016
Wednesday, November 9, 2016
Monday, November 7, 2016
.Net related - Jason Robert - Microsoft MVP and Author's Blog
http://dontcodetired.com/blog
- this seems to be a blog to follow
- this seems to be a blog to follow
Sunday, November 6, 2016
The Difference Between Throttling and Debouncing
https://css-tricks.com/the-difference-between-throttling-and-debouncing/
Above link shows a nice demo of how many Scroll Events are generated when using Nothing vs Throttling vs Debouncing
Above link shows a nice demo of how many Scroll Events are generated when using Nothing vs Throttling vs Debouncing
Labels:
design,
javascript,
web applications
Friday, November 4, 2016
Thursday, November 3, 2016
Monday, October 31, 2016
Sunday, October 23, 2016
Multi-Processing, Multi-Threading, Synchronization
Multi-Processing, Multi-Threading, Synchronization
https://techtake.info/2016/10/13/symmetric-multi-processing-multi-threading-and-synchronisation-explained/
https://techtake.info/2016/10/13/symmetric-multi-processing-multi-threading-and-synchronisation-explained/
Saturday, October 22, 2016
Revealing Module Pattern in JS
Revealing Module Pattern in JS
https://toddmotto.com/mastering-the-module-pattern/#revealing-module-pattern
https://toddmotto.com/mastering-the-module-pattern/#revealing-module-pattern
Unidirectional UI Architectures
Overview of the past, present and future of UI flow and structure
http://staltz.com/unidirectional-user-interface-architectures.html
http://staltz.com/unidirectional-user-interface-architectures.html
Labels:
design,
frontend,
javascript,
UI
Wednesday, October 12, 2016
Sunday, October 9, 2016
Elm + Crystal example - Building a realtime Chat application with Crystal and Kemal
Building a realtime Chat application with Crystal and Kemal
https://medium.com/@zenitram.oiram/a-beginners-guide-to-websockets-in-elm-and-crystal-8f510c28eb61#.qmk4d29gkWednesday, October 5, 2016
Tuesday, September 27, 2016
.Net Standard Library
From https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/
Right now:
With .Net Standard Library:
Right now:
With .Net Standard Library:
Monday, September 19, 2016
Sunday, September 18, 2016
Filtering while viewing log files
cat logfile.txt | grep -v "IgnoreThis\|IgnoreThat" | less
http://stackoverflow.com/questions/2338812/how-can-i-view-log-files-in-linux-and-apply-custom-filters-while-viewing
Saturday, September 17, 2016
Process & People, Minimum & Maximum
Below is a thought about Process vs People.
A company has People and Processes.
A Process can only ensure a Minimum.
However, reaching the Maximum, probably depends on how talented the People are, and other such X factors.
So, i think that it is very important to remember that efforts spent in improving our Processes will only move our Minimum higher. Not that that is bad, but it might not be enough.
If our goal is to achieve a great quality product, we have to invest in great People, and acknowledge that it is X factors that ultimately make the difference between achieving a Minimum and a Maximum.
A company has People and Processes.
A Process can only ensure a Minimum.
However, reaching the Maximum, probably depends on how talented the People are, and other such X factors.
So, i think that it is very important to remember that efforts spent in improving our Processes will only move our Minimum higher. Not that that is bad, but it might not be enough.
If our goal is to achieve a great quality product, we have to invest in great People, and acknowledge that it is X factors that ultimately make the difference between achieving a Minimum and a Maximum.
Labels:
project management,
rants,
software engineering
Thursday, September 15, 2016
Distributed Caching with Apache Ignite
Article talks in simple terms about how we can improve Output Caching in the scenrario where we have a Web Farm (i.e. multiple web servers)
https://ptupitsyn.github.io/Asp-Net-Distributed-Output-Cache/)
https://ptupitsyn.github.io/Asp-Net-Distributed-Output-Cache/)
Monday, September 12, 2016
Friday, September 9, 2016
Thursday, September 8, 2016
Wednesday, September 7, 2016
Tuesday, September 6, 2016
Monday, September 5, 2016
CQRS & ES (e.g. Redux)
CQRS and Event Sourcing (ES) explained in a simple way:
https://schneide.files.wordpress.com/2016/09/cqrs_zine.pdf
https://schneide.files.wordpress.com/2016/09/cqrs_zine.pdf
Labels:
computer science,
database,
design,
web applications
Saturday, September 3, 2016
Thursday, September 1, 2016
The way to get more information is to iterate
From http://blog.launchdarkly.com/secrets-of-netflixs-engineering-culture/
If you’re constantly testing ideas, even without having enough data, you’re quicker to get into the right path.
As Kris Gale, co-founder and CTO of Yammer said, “You will always make better decisions with more information, and you will always have more information in the future.” But the way to get more information is to iterate.
Tuesday, August 30, 2016
Monday, August 29, 2016
Friday, August 12, 2016
React related - websites to learn more
This should be a good practice project to do with React:
https://www.fullstackreact.com/articles/react-tutorial-cloning-yelp/
Have to checkout this site also:
http://buildwithreact.com/
React + Asp.net MVC:
http://reactjs.net/getting-started/tutorial.html
https://www.fullstackreact.com/articles/react-tutorial-cloning-yelp/
Have to checkout this site also:
http://buildwithreact.com/
React + Asp.net MVC:
http://reactjs.net/getting-started/tutorial.html
Tuesday, August 9, 2016
React Native related
A Android social app built with React Native (on Ubuntu)
Built With
- React Native
- Redux
- Redux Storage (with async-storage engine for react native for application persistence)
- Firebase
Building fast.com
Have to read this later
http://techblog.netflix.com/2016/08/building-fastcom.html
http://techblog.netflix.com/2016/08/building-fastcom.html
Labels:
computer science,
software engineering,
tools
Monday, August 8, 2016
Rails + React - project on github
Rails + React + Redux + Material-UI + CSS
https://github.com/tsurupin/portfolio
https://github.com/tsurupin/portfolio
Friday, August 5, 2016
Wednesday, August 3, 2016
React Native related
PhoneGap vs React Native: http://stackoverflow.com/questions/33286451/phone-gap-vs-react-native
Advantages of using React Native: https://www.smashingmagazine.com/2016/04/consider-react-native-mobile-app/
React Native on Ubuntu: https://github.com/CanonicalLtd/react-native/blob/ubuntu/README.ubuntu
Tuesday, August 2, 2016
Monday, August 1, 2016
Sebastian Markbage: Minimal API Surface Area | JSConf EU 2014
This is a talk that goes slightly against general 'standard' practices...
It's very important to keep coming back to this talk from time to time..
It's very important to keep coming back to this talk from time to time..
Labels:
computer science,
design,
software engineering
Saturday, July 30, 2016
Friday, July 29, 2016
MySQL - instr
http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_instr
instr - if substring is present, it returns a +ve number, else it returns a 0
Note: if not present, it returns a 0 and not a negative number (like -1)
instr - if substring is present, it returns a +ve number, else it returns a 0
Note: if not present, it returns a 0 and not a negative number (like -1)
Wednesday, July 27, 2016
Monday, July 25, 2016
Vue.js, Kuzzle.io
Building a Slack clone could be a good project to learn JS frameworks:
https://medium.com/building-a-slack-clone-with-vue-js-and-kuzzle-io
https://medium.com/building-a-slack-clone-with-vue-js-and-kuzzle-io
Saturday, July 23, 2016
Building Real-Time App with React/Redux/Rails/RethinkDB - RedDotRubyConf 2016
- Short & Sweet talk
- for Real-time apps
- tools selected allow Declarative Programming
Labels:
design,
javascript,
rails,
react,
software engineering
Thursday, July 21, 2016
Book - High Performance Browser Networking
https://hpbn.co/
Excerpt:
Excerpt:
"Performance is a feature. This book provides a hands-on overview of what every web developer needs to know about the various types of networks (WiFi, 3G/4G), transport protocols (UDP, TCP, and TLS), application protocols (HTTP/1.1, HTTP/2), and APIs available in the browser (XHR, WebSocket, WebRTC, and more) to deliver the best—fast, reliable, and resilient—user experience."
Labels:
computer science,
design,
performance,
web applications
Tuesday, July 12, 2016
Phoenix + Turbolinks as a replacement for a JS front-end framework like React
Phoenix + Turbolinks with server-side-rendering as a replacement for a JS front-end framework like React
https://robots.thoughtbot.com/how-we-replaced-react-with-phoenix
https://github.com/turbolinks/turbolinks
https://robots.thoughtbot.com/how-we-replaced-react-with-phoenix
https://github.com/turbolinks/turbolinks
Labels:
design,
elixir,
javascript,
phoenix,
web applications
Monday, July 11, 2016
Saturday, July 9, 2016
Quora homework incident
https://www.quora.com/Homework-Question-How-do-I-write-a-program-that-produces-the-following-output-1
Responses include programs written in 40+ languages.. :)
I posted an answer in Javascript just to be part of it.
JS Bin on jsbin.com
Responses include programs written in 40+ languages.. :)
I posted an answer in Javascript just to be part of it.
Thursday, July 7, 2016
Monday, July 4, 2016
Mongodb - getting started
1) mongo
- to launch mongo shell
2) db.adminCommand( { listDatabases: 1 } )
- to list the databases
3) use abc
- assuming 'abc' is one of the databases listed by command 2
4) db.getCollectionNames()
- to list all the collections
- i think we have to run our queries on Collections just like we would run queries on Tables in a Sql database
5) db.users.findOne()
- assuming 'users' is a collection
- to launch mongo shell
2) db.adminCommand( { listDatabases: 1 } )
- to list the databases
3) use abc
- assuming 'abc' is one of the databases listed by command 2
4) db.getCollectionNames()
- to list all the collections
- i think we have to run our queries on Collections just like we would run queries on Tables in a Sql database
5) db.users.findOne()
- assuming 'users' is a collection
Saturday, July 2, 2016
React related
Why you might not need MVC with React.js
http://www.code-experience.com/why-you-might-not-need-mvc-with-reactjs
Thinking in React
https://facebook.github.io/react/docs/thinking-in-react.html
http://www.code-experience.com/why-you-might-not-need-mvc-with-reactjs
Thinking in React
https://facebook.github.io/react/docs/thinking-in-react.html
Monday, June 27, 2016
Friday, June 24, 2016
Discussions
Reminder to myself since i am guilty as hell of the below sin - As a developer, discussions should be about how to do things, rather than about how to improve Process, self-improvement etc.
Do - what is the best language/framework to implement ABC application ?
Don't - how can we find time to learn that language/framework
Do - what is the best language/framework to implement ABC application ?
Don't - how can we find time to learn that language/framework
Monday, June 20, 2016
Friday, June 17, 2016
Understanding of underlying software systems
This seems to be an awesome blog for learning the basics of how systems work: https://ruslanspivak.com/
Hi! I’m Ruslan Spivak, a 36 year old Software Team Lead from Canada, and if you’ve ever asked yourself:
- “How do I create my own programming language?”
- “How does an interpreter, compiler, or VM work and how do I create one?”
- “How do I implement my own database and a small operating system?”
- “How do I code my own web server?”
- “How do I write my own web framework?”
Or if you’ve just wanted to know more about software development in general and how to become a better developer - then you are in the right place!Here’s the deal:I believe to become a better developer you MUST get a better understanding of the underlying software systems you use on a daily basis and that includes programming languages, compilers and interpreters, databases and operating systems, web servers and web frameworks. And to get a better and deeper understanding of those systems you MUST re-build them from scratch.
Serverless
http://martinfowler.com/articles/serverless.html
https://github.com/serverless/serverless
https://github.com/serverless/serverless
What is Serverless?
Like many trends in software there’s no one clear view of what ‘Serverless’ is, and that isn't helped by it really coming to mean two different but overlapping areas:
- Serverless was first used to describe applications that significantly or fully depend on 3rd party applications / services (‘in the cloud’) to manage server-side logic and state. These are typically ‘rich client’ applications (think single page web apps, or mobile apps) that use the vast ecosystem of cloud accessible databases (like Parse, Firebase), authentication services (Auth0, AWS Cognito), etc. These types of services have been previously described as ‘(Mobile) Backend as a Service’, and I’ll be using‘BaaS’ as a shorthand in the rest of this article.
- Serverless can also mean applications where some amount of server-side logic is still written by the application developer but unlike traditional architectures is run in stateless compute containers that are event-triggered, ephemeral (may only last for one invocation), and fully managed by a 3rd party. (Thanks to ThoughtWorks for their definition in their most recent Tech Radar.) One way to think of this is ‘Functions as a service / FaaS’ . AWS Lambda is one of the most popular implementations of FaaS at present, but there are others. I’ll be using ‘FaaS’ as a shorthand for this meaning of Serverless throughout the rest of this article.
Labels:
computer science,
design,
software engineering
App Servers benchmarked for: Ruby, Node, Elixir, GO, Java, Crystal
https://github.com/costajob/app-servers
Excerpt:
Results
Excerpt:
Results
Here are the benchmarks results ordered by increasing throughput.
| App Server | Throughput (req/s) | Latency in ms (avg/stdev/max) |
|---|---|---|
| Rack | 29208.81 | 3.13/0.348/13.28 |
| JRuby-Rack | 32331.47 | 0.99/0.598/44.34 |
| Plug | 33583.07 | 3.35/7.62/145.87 |
| Node Cluster | 47576.68 | 2.51/3.40/120.02 |
| Jetty | 52398.88 | 1.90/0.432/22.45 |
| ServeMux | 58359.97 | 1.70/0.315/18.63 |
| Crystal HTTP | 75159.45 | 1.33/0.270/6.02 |
Subscribe to:
Posts (Atom)

