Random things #9

Written on 22 March 2015, 10:48am

Tagged with: , , , , , ,

1. Aspect oriented programming (AOP)

In the wikipedia example about AOP, transactions, security and logging represent cross-cutting concerns. If we need to change one of these (ex. security) – then it will be a major effort, since the concerns are tangled and the related methods appear scattered around all the code.

AOP attempts to solve this problem by allowing to express cross-cutting concerns in stand-alone modules called aspects. Aspects can contain
advice – code joined to specified points in the program and
inter-type declarations – structural members added to other classes.

Drawbacks: If a programmer makes a logical mistake in expressing crosscutting, it can lead to widespread program failure.
Conversely, another programmer may change the join points in a program in ways that the aspect writer did not anticipate, with unforeseen consequences.

2. HTTPS and MTU Path discovery

I recently encountered this interesting problem with HTTPS and MTU. It is explained entirely by Mark Maunder – ‘Routers treat HTTPS and HTTP traffic differently‘. I will just summarize it:
– HTTPS servers set the ‘Do not fragment’ IP flag
– if a server sends a big HTTPS packet and a router does not allow that packet size, then the router will not break that packet (see previous point).
– so the router will simply drop the packet and send back an ICMP (Internet Control Message Protocol) message telling the host to reduce the MTU size and resend the packet
– but if the network administrator decided to block all the ICMP traffic, then the host will never see the problem
– the solution in my case was to decrease the MTU size (1400)

The same issue described also here.

3. Information security standards

(more…)

Looking for a job? Read this first

Written on 12 December 2012, 01:01am

Tagged with: , , ,

John Sonmez: The 4 Most Important Skills for a Software Developer
TL;DR:
You must be good in:

  1. Solving Problems
  2. Teaching Yourself
  3. Naming
  4. Dealing with People

Daniel Blumenthal: Why won’t anyone talk to me? What recruiters look for in a resume
TL;DR:

  1. School matters (if it’s good)
  2. Prior jobs matter (if they are at Google or Facebook)
  3. Domain Knowledge and Cultural Fit are important
  4. Start-up Experience – starting a company is hard
  5. Side Projects show if you’re really passionate about what you’re doing
  6. Don’t switch jobs frequently, don’t send 10-page resumes

During my first half of the summer holidays, I took the opportunity to browse a few books in addition to reading my reader (which I am doing more or less daily). Doing this, I found a few things that influenced me and that I want to share.

1. Better than yesterday

The secret is to focus on making whatever it is you’re trying to improve
better today than it was yesterday. That’s it. It’s easy. And it’s possible
to be enthusiastic about taking real, tangible steps toward a distant goal.
book excerpt, PDF, 153KB

Where: The Passionate Programmer (2nd edition): Creating a Remarkable Career in Software Development by Chad Fowler.
Why: Because even if I have this principle embedded in my mind (see the first post of this blog: moving on to better things) and even if I used it successfully on multiple occasions – it’s always a good idea to highlight it.

2. Side projects

First, we love to complain about the type of work we get.
Whether assigned to us by a boss or work that we do for clients, we never
get to work on the cool stuff, the stuff that would inspire or excite us.
Second, we are full of bright ideas for the sites we work
on but are so often blocked by others on the project. We moan that they
don’t get it, that they don’t understand just how cool our ideas are.
I believe that side projects we do in our personal time
can be the answer to both of these issues.

Where: Side projects can cure our woes by Paul Boag.
Why: Because I agree with the importance of the side projects. In my free time, I am always working on at least one side project. Last example: the Ikea store locator

3. A long string of happy customers

The best thing for your career is a long string of happy customers
eager to recommend you because you did the right thing
by them and for the project. This goodwill will serve you orders
of magnitude better than the latest shiny object in the latest shiny
language or the latest shiny paradigm. While it is important, even
critical, to stay abreast of the latest trends and technologies this
should never happen at the cost of the customer.
-Chapter 1: Don’t Put Your Resume Ahead of the Requirements

Where: O’Reily’s 97 Things Every Software Architect Should Know – Collective Wisdom from the Experts by Richard Monson-Haefel
Why: Because I also see the importance of the happy customers.

4. Programmers have a lot on their minds

Programming languages, programming techniques, development
environments, coding style, tools, development process, deadlines,
meetings, software architecture, design patterns, team dynamics,
code, requirements, bugs, code quality. And more. A lot.

There is an art, craft, and science to programming that extends far
beyond the program. The act of programming marries the discrete world
of computers with the fluid world of human affairs. Programmers mediate
between the negotiated and uncertain truths of business and the crisp,
uncompromising domain of bits and bytes and higher constructed types.

Where: O’Reily’s 97 Things Every Programmer Should Know – Collective Wisdom from the Experts by Kevlin Henney (public wiki)
Why: Because the man is right 🙂 The programmers have indeed a lot on their minds…