<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>Posts tagged with “Opinion” on Mark van Lent’s weblog</title>
  <updated>2026-04-13T00:00:00+00:00</updated>
  <link rel="self" type="application/atom+xml" href="https://markvanlent.dev/tags/opinion/index.xml" hreflang="en"/>
  <id>tag:markvanlent.dev,2010-04-02:/tags/opinion/index.xml</id>
  <link rel="alternate" type="text/html" href="https://markvanlent.dev/tags/opinion/" hreflang="en"/>
  <author>
      <name>Mark van Lent</name>
      <uri>https://markvanlent.dev/about/</uri>
    </author>
  <rights>Copyright (c) Mark van Lent, Creative Commons Attribution 4.0 International License.</rights>
  <icon>https://markvanlent.dev/favicon.ico</icon>
  <entry>
    <title type="html"><![CDATA[AI Engineer Europe 2026: reflection]]></title>
    <link rel="alternate" href="https://markvanlent.dev/2026/04/13/ai-engineer-europe-2026-reflection/" type="text/html" />
    <id>https://markvanlent.dev/2026/04/13/ai-engineer-europe-2026-reflection/</id>
    <author>
      <name>map[name:Mark van Lent uri:https://markvanlent.dev/about/]</name>
    </author>
    <category term="ai" />
    <category term="conference" />
    <category term="opinion" />
    
    <updated>2026-04-13T07:55:45Z</updated>
    <published>2026-04-13T00:00:00Z</published>
    <content type="html"><![CDATA[<p>Now that the dust is settling, it&rsquo;s time to reflect a bit on what I&rsquo;ve heard at
the conference.</p>
<h2 id="my-takeaways">My takeaways</h2>
<p>This was my first AI Engineer conference and also the first AI conference I
attended. It was a nice way to gauge where both I and we as a company stand.
This is especially true when I realise that mostly (only?) companies at the
forefront of these developments were there. AI is hot, but as we
<a href="/2026/04/10/ai-engineer-europe-2026-keynote/session-day-2/#most-enterprise-agentic-projects-are-doomed--heres-why--jess-grogan-avignon-and-jack-wang">have heard</a>,
only 12% of the (big) companies are &ldquo;AI achievers&rdquo;.</p>
<p>What I think the speakers agreed on:</p>
<ul>
<li>The role of the engineer is shifting. Less coding, more writing
specifications, planning and reviewing</li>
<li>Codebases must be designed for humans <strong>and</strong> agents to read and understand</li>
<li>Guardrails are essential. If we want to give agents more freedom to solve
problems, we need to give them a certain amount of freedom, but we need
guardrails first</li>
<li>We need to have feedback loops. The quality of the feedback loop determines
the quality of the output</li>
<li>The human stays in the loop (at least for now)</li>
<li>Introducing AI is a process. Start with non-critical, well-scoped tasks and
let the system &ldquo;prove&rdquo; itself and earn trust.</li>
</ul>
<p>There are also things the speakers do not agree on:</p>
<ul>
<li><a href="/2026/04/09/ai-engineer-europe-2026-keynote/session-day-1/#harness-engineering-how-to-build-software-when-humans-steer-and-agents-execute--ryan-lopopolo">Code is free</a> vs <a href="/2026/04/09/ai-engineer-europe-2026-keynote/session-day-1/#it-aint-broke-why-software-fundamentals-matter-more-than-ever--matt-pocock">Code is not cheap</a></li>
<li>Move fast, <a href="/2026/04/09/ai-engineer-europe-2026-keynote/session-day-1/#harness-engineering-how-to-build-software-when-humans-steer-and-agents-execute--ryan-lopopolo">have the agents do the full job</a> and <a href="/2026/04/10/ai-engineer-europe-2026-keynote/session-day-2/#cicd-is-dead-agents-need-continuous-compute-and-computers--hugo-santos-and-madison-faulkner">remove humans from the loop to speed up</a> vs <a href="/2026/04/10/ai-engineer-europe-2026-keynote/session-day-2/#building-pi-in-a-world-of-slop--mario-zechner">slow down</a> and <a href="/2026/04/10/ai-engineer-europe-2026-keynote/session-day-2/#the-friction-is-your-judgment--armin-ronacher-and-cristina-poncela-cubeiro">think</a></li>
</ul>
<p>Other takeaways (that were not explicitly mentioned by multiple speakers):</p>
<ul>
<li>Agents are bad at self-evaluation</li>
<li>Only the first ~100K tokens of context are useful. More context will only make
the agent dumber</li>
<li>Agents are consuming APIs, documentation and websites and might even already
make up a large portion of their users</li>
<li>I should probably use more skills</li>
</ul>
<p>In general, I think we, as an industry, are still figuring out how to work with
AI. This is also directly related to the rapid pace at which things are
changing. Something may work today, but may be obsolete next month.</p>
<h2 id="the-conference">The conference</h2>
<p>Overall, I liked the atmosphere and energy. The organizers managed to get a great
bunch of speakers on stage who delivered insightful content.</p>
<p>I&rsquo;m a bit on the fence about the workshop day. I really liked that the speakers
had more time to go in depth (which is hard in the 20-minute timeslot of the
breakout sessions). On the other hand, I was expecting to do more &ldquo;work&rdquo; in a
workshop. However, most talks I attended were just that: longer talks. And if it
were not for taking notes, I would not have needed to bring my laptop.</p>
<p>Having said that, I had fun, learned a lot and would love to go again next year.</p>
<h2 id="the-trip">The trip</h2>
<p>This wasn&rsquo;t my first trip to London, but it was my first conference there. The
conference was held in the
<a href="https://en.wikipedia.org/wiki/Queen_Elizabeth_II_Centre">Queen Elizabeth II Centre</a>,
which is in the center of the city. And especially since we stayed in a hotel
close to the venue and could walk over there each day, I was very aware of where
we were, which was great. (I like London, can you tell?)</p>
<p>This was also my first time going to a conference with such a big group.
Sixteen people from Schuberg Philis were there! This also meant that for most
(perhaps even all?) of the sessions I joined, I was not the only one from our
company in the room, which means I could discuss what we&rsquo;ve heard and how it
applies to our company and customers. This added a lot of value for me.</p>
<p>And it&rsquo;s also nice to get to know my colleagues a bit better, especially the
people I don&rsquo;t work with on a day-to-day basis. And while we talked a lot of
shop there, there was also time and space to bond on a more personal level.</p>
<h2 id="conclusion">Conclusion</h2>
<p>I think I can say that we, as a company, are in a good place with how we are
adopting AI and helping our customers. Having said that: AI engineering is a
field that is still very much developing. So we&rsquo;ll continue to learn and adapt.</p>
<p>As for myself: I&rsquo;ll work, together with my colleagues, on integrating the
takeaways into my everyday work.</p>]]></content>
  </entry>
  <entry>
    <title type="html"><![CDATA[Devopsdays Ghent 2019: random notes]]></title>
    <link rel="alternate" href="https://markvanlent.dev/2019/11/02/devopsdays-ghent-2019-random-notes/" type="text/html" />
    <id>https://markvanlent.dev/2019/11/02/devopsdays-ghent-2019-random-notes/</id>
    <author>
      <name>map[name:Mark van Lent uri:https://markvanlent.dev/about/]</name>
    </author>
    <category term="conference" />
    <category term="devops" />
    <category term="opinion" />
    <category term="tools" />
    
    <updated>2021-11-09T20:09:33Z</updated>
    <published>2019-11-02T00:00:00Z</published>
    <content type="html"><![CDATA[<p>Where my <a href="/2019/10/29/devopsdays-ghent-2019-day-one/">previous</a>
<a href="/2019/10/30/devopsdays-ghent-2019-day-two/">articles</a> were focussed on
the notes I took of the talks, this article is a mix of random notes and
observations I made throughout the conference.</p>
<p><img src="/images/devopsdaysghent2019_random_notes.jpg" alt="Belgian chocolates: &ldquo;dev&rdquo;, &ldquo;heart&rdquo;, &ldquo;ops&rdquo;, &ldquo;days&rdquo;"></p>
<h2 id="the-conference">The conference</h2>
<p>First of all: this devopsdays conference&mdash;once again&mdash;inspired me. It
refreshed my desire to make the world (or at least a part of it) a better place.</p>
<p>A big change in the format was that each speaker only had a 15 minute time slot.
This was done to allow more people to speak. While the organization certainly
succeeded in that regard, I felt that most talks were too short, that is: I
would have loved them to last longer.</p>
<p>It felt like the conference was less technical. Perhaps this was because of the
length of the talks, which meant the speakers could not go as deep into a
subject as with a 30-minute talk? Perhaps it was because there were no workshops
where I usually get (more than) my dose of technical deep dives? Perhaps it was
just me?</p>
<p>Note that this is <strong>not</strong> a complaint about the speakers. Each and every one of
them did a great job and had an inspiring talk. I really appreciate them taking
the stage and sharing their knowledge, experience and opinions with us. Thank
you all!</p>
<h2 id="sponsors">Sponsors</h2>
<p>I talked to a number of sponsors and would like to do more research on certain
products. Examples:</p>
<ul>
<li><a href="https://cloud.google.com">Google Cloud</a>: so far my focus has been on AWS and
Azure, but Google&rsquo;s cloud offering might also be interesting.</li>
<li><a href="https://logz.io/">Logz.io</a>: instead of managing our own Elastic stack and
metrics collection + visualization, we might be able to use logz.io for things
we want to run in the cloud. Apparently you can also specify that you want
your data to stay within the EU, which is a plus.</li>
<li><a href="https://www.pulumi.com/">Pulumi</a>: So far I have used Ansible, Terraform and
CloudFormation for my infrastructure-as-code needs. Pulumi allows you to code
in e.g. Python instead of YAML or a domain specific language.</li>
<li><a href="https://rancher.com/">Rancher</a>: although the projects I&rsquo;m involved in do not
use Kubernetes at the moment, they might in the future. And then it might be
useful to see what Rancher can do for us.</li>
<li><a href="https://www.sonatype.com/">Sonaytpe</a>: detect components with a known
vulnerability in your stack.</li>
</ul>
<h2 id="other-conferences">Other conferences</h2>
<p>During the ignites on the second day, a few other conferences were
mentioned:</p>
<ul>
<li><a href="https://www.deliveryconf.com/">Delivery Conf</a>: 21 &amp; 22 January 2020, Seattle, WA, USA</li>
<li><a href="https://archive.fosdem.org/2020/">FOSDEM</a>: 1 &amp; 2 February 2020, Bruxelles, Belgium</li>
<li><a href="https://cfgmgmtcamp.eu/ghent2020/">Configuration Management Camp</a>: 3&ndash;5 February 2020, Ghent, Belgium</li>
</ul>
<h2 id="home-lab">Home lab</h2>
<p>One of the open spaces I joined was about home labs. I only have a small setup
at home, but I did get a few ideas out of this session that may be worth
checking out.</p>
<ul>
<li><a href="https://nextcloud.com/">Nextcloud</a></li>
<li>Have my Synology NAS backup stuff to AWS Glacier</li>
<li><a href="https://www.plex.tv/">Plex</a>; perhaps I can use this to make my DVD collection
(which is now gathering dust) accessible again?</li>
</ul>
<p>But the most important question, in my opinion, that was asked during this
session: <q>do you have a disaster recovery plan for your home lab?</q></p>
<p>What if I&rsquo;m not around and something breaks down, like the WiFi, how does my
family get things up and running again? Spoiler: they probably won&rsquo;t. And this
is not their fault. I made things more complex than needed (from their
perspective that is) and failed to provide instructions on how to solve issues.</p>
<h2 id="miscellaneous">Miscellaneous</h2>
<p>On meetings:</p>
<ul>
<li><a href="https://agilecoffee.com/leancoffee/">Lean Coffee</a>: an interesting, lightweight meeting format</li>
<li><a href="https://medium.com/@agileGeorge/power-start-your-meetings-fcdeab634bf3">POWER start</a>:
a meeting facilitation technique to increase the effectiveness of meetings</li>
</ul>
<p>On toil:</p>
<ul>
<li>Read up on the subject of toil: Google&rsquo;s SRE book, chapter 5:
<a href="https://sre.google/sre-book/eliminating-toil/">Eliminating toil</a></li>
<li>Learn to better recognize toil and record it (what is it, what does it cost
in time, energy, etc and what is the frequency)</li>
<li>Make time to eliminate toil</li>
<li>Read up on, and think about, <a href="https://www.hashicorp.com/resources/what-is-mutable-vs-immutable-infrastructure">immutable infrastructure</a>
and see if we can use it to remove toil</li>
</ul>
<p>Random, unrelated stuff:</p>
<ul>
<li>Look at <a href="https://pypi.org/project/cfn-lint/">CloudFormation Lint</a></li>
<li>Read the <a href="https://www.weave.works/technologies/gitops/">GitOps</a> article by Weaveworks</li>
</ul>
<p>Something that was said during an open space about testing infrastructure-as-code:</p>
<blockquote>
<p>You deploy infrastructure not to have that infrastructure, but to run an application on top of.</p></blockquote>
<p>I don&rsquo;t recall who mentioned it, when and what the context was, but
<a href="https://www.reddit.com/r/devops">r/devops</a> might be fun to read.</p>]]></content>
  </entry>
  <entry>
    <title type="html"><![CDATA[Devopsdays Amsterdam 2018: reflection]]></title>
    <link rel="alternate" href="https://markvanlent.dev/2018/07/04/devopsdays-amsterdam-2018-reflection/" type="text/html" />
    <id>https://markvanlent.dev/2018/07/04/devopsdays-amsterdam-2018-reflection/</id>
    <author>
      <name>map[name:Mark van Lent uri:https://markvanlent.dev/about/]</name>
    </author>
    <category term="conference" />
    <category term="devops" />
    <category term="docker" />
    <category term="elastic" />
    <category term="go" />
    <category term="kubernetes" />
    <category term="opinion" />
    
    <updated>2021-10-26T18:57:58Z</updated>
    <published>2018-07-04T00:00:00Z</published>
    <content type="html"><![CDATA[<p>About a week has past since devopsdays Amsterdam. Time to write down
some of my thoughts.</p>
<h2 id="the-conference">The conference</h2>
<p>This has been the third time I went to devopsdays Amsterdam. And I
love this conference!</p>
<p>Some of the reasons:</p>
<ul>
<li>The organizers manage to get great speakers with interesting talks
on stage each year.</li>
<li><a href="https://dezwijger.nl/">Pakhuis de Zwijger</a> is a great location.</li>
<li>Excellent Wi-Fi.</li>
<li>Great atmosphere.</li>
<li>Good food.</li>
</ul>
<h2 id="the-workshops">The workshops</h2>
<h3 id="go">Go</h3>
<p>I had heard about <a href="https://golang.org/">Go</a>, some of my co-workers
have some experience with it, but I never wrote anything in the
language. I was curious about it though.</p>
<p>The <a href="/2018/06/27/devopsdays-amsterdam-2018-workshops/#go-for-ops-----michael-hausenblas-red-hat">workshop from Michael
Hausenblas</a>
was a nice intro. Based on what he told and showed us I cannot say
that I expect that Go will replace Bash and Python for me. However, I
will make some time to actually write some code myself to get a better
feel for it.</p>
<h3 id="monitoring-with-elastic">Monitoring with Elastic</h3>
<p>We are already using the <a href="https://www.elastic.co/products/">Elastic Stack</a> in
some places at work, but I have not used it for monitoring purposes. (I
gravitate towards <a href="https://prometheus.io/">Prometheus</a> combined with
<a href="https://github.com/prometheus/alertmanager">Alertmanager</a> for alerting and
<a href="https://grafana.com/">Grafana</a> for dashboards with graphs.) However, <a href="/2018/06/27/devopsdays-amsterdam-2018-workshops/#monitor-your-microservices-----logs-metrics-pings-and-traces-----philipp-krenn-elastic">Philipp
Krenn showed
us</a>
that you can also do very interesting things with
<a href="https://www.elastic.co/kibana/">Kibana</a> in the monitoring and debugging realm.
Especially since you can correlate metrics with logs in the same tool.</p>
<h3 id="kubernetes">Kubernetes</h3>
<p>I could say that <a href="/2018/06/27/devopsdays-amsterdam-2018-workshops/#kubernetes-101-----bridget-kromhout-microsoft">Bridget Kromhout&rsquo;s Kubernetes
workshop</a>
was a nice refresher of what I had learned in the <a href="/2017/06/28/devopsdays-amsterdam-2017-day-zero-workshops/#introduction-to-kubernetes-----andy-repton-schuberg-philis">Kubernetes workshop
last
year</a>
but, to be honest, that would be a lie. I am glad I took this
workshop.</p>
<p>It was a good workshop with lots of hands-on tasks. But it went a bit
too fast to make it stick. I would have to spend more time on a
Kubernetes cluster to really understand everything and get fluent with
it. Luckily there is lots of information on
<a href="https://container.training/">container.training</a> (including the
sheets of this workshop) and there are plenty of cloud providers where
you can get a Kubernetes cluster without having to create or maintain
it yourself.</p>
<h2 id="the-talks">The talks</h2>
<p>The talk that resonated most with me this year was the one from <a href="/2018/06/29/devopsdays-amsterdam-2018-day-two/#that-product-team-really-brought-that-room-together-----harold-waldo-grunenwald-datadog">Waldo
Grunenwald about product
teams</a>.
Perhaps because (in my opinion) this is something that could be better
in my job. Product management, development and operations are three
different teams with different managers. Then again, I currently try
to be the &ldquo;ops guy&rdquo; in our development team so that&rsquo;s also DevOps, right? :)</p>
<p>The other most memorable talks for me were:</p>
<ul>
<li><a href="/2018/06/28/devopsdays-amsterdam-2018-day-one/#cloud-containers-kubernetes-----bridget-kromhout-microsoft">Bridget Kromhout&rsquo;s keynote: Cloud, containers, k8s </a></li>
<li><a href="/2018/06/28/devopsdays-amsterdam-2018-day-one/#service-mesh-for-microservices-----armon-dadgar-hashicorp">Armon Dadgar on service meshes</a></li>
<li><a href="/2018/06/28/devopsdays-amsterdam-2018-day-one/#going-dutch-observaties-over-nederlandse-cultuur--devops-----jason-yee-datadog">Jason Yee relating Dutch peculiarities to DevOps</a></li>
<li><a href="/2018/06/29/devopsdays-amsterdam-2018-day-two/#monitoring-the-dynamic-nature-of-cloud-computing-----lee-atchison-new-relic">Lee Atchison about monitoring in a dynamic (cloud) environment</a></li>
</ul>
<h2 id="miscellaneous">Miscellaneous</h2>
<p>I have been using <a href="https://www.gnu.org/software/emacs/">Emacs</a> for
quite a while. I was a <a href="https://www.vim.org/">Vim</a> user in the past,
but switched somewhere between 2007 and 2009. (The first time I wrote
about Emacs here was in
<a href="/2009/05/03/using-git-when-developing-plone-applications/">2009</a>.)</p>
<p>I have tried <a href="https://www.jetbrains.com/pycharm/">PyCharm</a> a couple of
times and it is a really nice editor with very useful features. It
just never stuck with me and I always went back to Emacs after a
while.</p>
<p>During the conference I used <a href="https://code.visualstudio.com/">Visual Studio Code</a>
to write my notes. And I have to say I quite liked it. I intend to also give it
a go at work. Who knows, I might even switch&hellip;</p>]]></content>
  </entry>
  <entry>
    <title type="html"><![CDATA[Thoughts on mobile development]]></title>
    <link rel="alternate" href="https://markvanlent.dev/2012/01/11/thoughts-mobile-development/" type="text/html" />
    <id>https://markvanlent.dev/2012/01/11/thoughts-mobile-development/</id>
    <author>
      <name>map[name:Mark van Lent uri:https://markvanlent.dev/about/]</name>
    </author>
    <category term="css" />
    <category term="design" />
    <category term="development" />
    <category term="html" />
    <category term="opinion" />
    <category term="plone" />
    
    <updated>2021-08-19T13:13:50Z</updated>
    <published>2012-01-11T08:54:00Z</published>
    <content type="html"><![CDATA[<p>For years web development was quite predictable. The resolution of the
average screen slowly but steadily increased, bandwidth became less of
an issue and everything was good. Then smartphones became
mainstream. Suddenly we have to make sure our websites are also
accessible on small screens. And bandwidth may also be limited to a
few kilobytes per second. In other words: new challenges. But how are
we responding to them?</p>
<p>An approach that is quite popular these days is to create a separate
mobile site. In most cases visitors of the &lsquo;desktop&rsquo; site of
<code>example.com</code> are redirected to the mobile version on <code>m.example.com</code>
as soon as the site detects (or thinks) that the client is a mobile
device.</p>
<h2 id="what-is-a-mobile-device">What is a mobile device?</h2>
<p>And there we already see the first problem with this approach. What
exactly <em>is</em> a &ldquo;mobile device&rdquo;? We can probably agree on a
smartphone. But what about tablets? An iPad, for example, has a
resolution of 1024 x 768 pixels. Isn&rsquo;t that the same resolution a lot of
designs are made for?</p>
<p>So is an iPad a mobile device? If your answer is no, what about an
iPhone 4? With a resolution of 960 x 640 it gets awfully close. So is
every smartphone a mobile device? Perhaps we should focus on the size
of the screen. But where to draw the line? 10 inch, 7, smaller?</p>
<p>Perhaps the term &ldquo;mobile&rdquo; should not be defined just by the
specifications of the device, but by how the device is used. For
instance, you would probably use your smartphone while waiting in a
queue, but not your laptop. However, using that definition will open
another can of worms.</p>
<h2 id="bandwidth">Bandwidth</h2>
<p>The life of a modern web developer is even more complex. We may want
to optimize the content of the mobile site or application for low
bandwidth conditions of 3G or EDGE networks. But user agent sniffing
doesn&rsquo;t help here. Smartphones can also be on Wi-Fi. And the other way
around, laptops can be tethered and thus have to suck your heavy
desktop version through a straw.</p>
<p>In other words, the user agent or even the type of device your are
working on, has nothing to do with how much bits per second can be
consumed. As a result you should probably try to keep the size of your
site to a minimum either way.</p>
<h2 id="other-issues">Other issues</h2>
<p>There are bad implementations of mobile websites out there. A simple
example: you see a link to an interesting article on Twitter. You
click on the link and you are directed to the <em>homepage</em> of the mobile
site. Good luck finding that interesting article on the mobile
version&hellip;</p>
<p>Or the other way around: you are reading a nice article on your phone
and want to send the link to a friend. Now he&rsquo;s stuck with the mobile
version of the article on his 22 inch monitor.</p>
<p>Another complaint I have is that the mobile sites are often dumbed
down. For example a restaurant that only shows the menu and contact
information on the mobile site. Perhaps I want to get a feel for the
place and like to view the photo gallery. But now I have to switch to
the full version. If that option is even available!</p>
<h2 id="alternative">Alternative</h2>
<p>Instead of having a separate mobile site, you can use
<a href="https://alistapart.com/article/responsive-web-design/">responsive web design</a>. With
this approach you use
<a href="https://css-tricks.com/css-media-queries/">css media queries</a> to
change the layout of the page, while serving the same HTML and the
same content. In other words: you don&rsquo;t necessarily care about the
type of device your visitor is using, you set the rules on how things
should be displayed on certain widths and let the browser handle the
rest.</p>
<p>With this approach you do not design separate sites for distinct
devices, instead you design for a range of resolutions. So if next
month a new device comes on the market, your site will probably be
ready for it. (The obvious exception is when the new device does not
fall in the ranges you had anticipated, e.g. a television with a
really high resolution.)</p>
<p>Other people, like Ethan Marcotte in his
<a href="https://alistapart.com/article/responsive-web-design/">responsive web design article</a>,
describe the concept a lot better. Mikko Ohtamaa also just started
<a href="https://opensourcehacker.com/2012/01/09/mobilizing-websites-with-responsive-design-and-html5-tutorial/">a series of blog posts</a>
that promises to be very interesting.</p>
<h2 id="so-is-a-mobile-site-always-a-bad-thing">So is a mobile site always a bad thing?</h2>
<p>Don&rsquo;t get me wrong, having a (separate) site specifically for mobile
devices certainly does have its benefits and can be a good
solution. But in my opinion it should not be the first option when
building a website or web application that should be &ldquo;mobile aware&rdquo;.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Actually, I do not have a conclusion&hellip; Although I think responsive web
design provides a good solution, it is not the holy grail. As I said
at the start of this article, we live in exciting times. There is a
lot we still have to discover!</p>]]></content>
  </entry>
  <entry>
    <title type="html"><![CDATA[Web designer&#39;s skills]]></title>
    <link rel="alternate" href="https://markvanlent.dev/2010/01/02/web-designers-skills/" type="text/html" />
    <id>https://markvanlent.dev/2010/01/02/web-designers-skills/</id>
    <author>
      <name>map[name:Mark van Lent uri:https://markvanlent.dev/about/]</name>
    </author>
    <category term="design" />
    <category term="development" />
    <category term="opinion" />
    
    <updated>2021-07-18T14:38:11Z</updated>
    <published>2010-01-02T19:47:00Z</published>
    <content type="html"><![CDATA[<p>Recently I read some articles about web designers. This got me
thinking about the qualities I think you need to be a good designer
and about the different ways a design can be made.</p>
<h2 id="skills">Skills</h2>
<p>First of all a designer needs to be <strong>creative</strong>. After all, they are the
person that needs to capture the ideas of the client and visualize
them. However, it is also very important for the designer to
<strong>understand the web</strong>. Something that works in print, may completely
fail in a browser. One of the reasons is that print media is meant to
be seen/read, while websites need to be interacted with. Closely
related is <strong>anticipating user generated content</strong>. This means that a
design should also look great with less (or more) text than the
<a href="https://en.wikipedia.org/wiki/Lorem_ipsum">lorem ipsum</a> in the design.</p>
<p>I think these skills are not disputed. But what about the <strong>ability to
code?</strong> I agree with Lukas Mathis that there are risks when designers
are also involved in implementation. In his essay
<a href="http://ignorethecode.net/blog/2009/03/10/designers-are-not-programmers/">Designers are not Programmers</a>
he more or less says that designing and coding are two separate
worlds. To be able to be good at designing, you&rsquo;ll have to ignore
everything you know about coding. Otherwise the design is restricted
by technical limitations: you know what you can implement and you&rsquo;ll
design within those boundaries. Even worse: by already thinking ahead
about the way it&rsquo;s going to be coded, the focus will be on the code
instead of the user experience.</p>
<h2 id="photoshop-or-html">Photoshop or HTML?</h2>
<p>A related discussion is what the deliverable of a design should be. In
most of the projects I&rsquo;m involved in, the design results in a
Photoshop file. This file is then cut to extract the needed graphics
and the HTML/CSS is coded. I guess you know the drill.</p>
<p>However, quite often the role of designer is combined with the role of
front-end developer, especially in smaller shops. In these cases it
can be easier to do the design in HTML directly, as described by
Meagan Fisher in
<a href="https://24ways.org/2009/make-your-mockup-in-markup">Make Your Mockup in Markup</a>. (The
Django package
<a href="https://web.archive.org/web/20091220052721/http://docs.djangoproject.com/en/dev/ref/contrib/webdesign/">django.contrib.webdesign</a>
even helps by generating sample text.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>) One advantage is that
<strong>some design changes are easier to make in CSS</strong> than in
Photoshop. Depending on your skills, the whole design process may even
be faster. Meagan also demonstrates that CSS3 gives you the ability to
create a lot of effects without having to resort to images, which
means you&rsquo;ll have to spend even less time in the graphics editor.</p>
<p>Another advantage of designing in HTML is that the client can <strong>see
how the design works</strong> in the browser. You have to be careful though:
since it&rsquo;s only a design, it&rsquo;s very likely that the code is not cross
browser compatible yet. If the client uses a wrong browser, the design
may not come across as intended. (<del>To prevent this, you could export
the page as an image e.g. by using the Firefox add-on
Screengrab.</del> <em>no longer available</em>)</p>
<p>You&rsquo;ll also carefully have to manage client expectations. If the
design is done in HTML, the client may <strong>incorrectly assume the
front-end work is done</strong>. They may not appreciate the time that is still
required to make the site look good in all targeted browsers. Or the
time needed to make the static HTML more dynamic by integrating the
application or adding <a href="https://en.wikipedia.org/wiki/Ajax_%28programming%29">AJAX</a>
effects.</p>
<h2 id="however">However&hellip;</h2>
<p>Perhaps the most important skill of a good designer is being able to
<strong>communicate</strong>. Not just because the design should communicate the
right things, but also because communication with the client and
development team is, in my opinion, the key to success.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Update (2021-07-16): As of Django 1.8 this functionality is provided via
the <a href="https://docs.djangoproject.com/en/3.2/ref/templates/builtins/#std:templatetag-lorem">lorem template tag</a>.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>]]></content>
  </entry>
  <entry>
    <title type="html"><![CDATA[Unit testing: useful?]]></title>
    <link rel="alternate" href="https://markvanlent.dev/2009/11/05/unit-testing-useful/" type="text/html" />
    <id>https://markvanlent.dev/2009/11/05/unit-testing-useful/</id>
    <author>
      <name>map[name:Mark van Lent uri:https://markvanlent.dev/about/]</name>
    </author>
    <category term="development" />
    <category term="opinion" />
    <category term="testing" />
    
    <updated>2021-07-16T07:25:56Z</updated>
    <published>2009-11-05T11:31:00Z</published>
    <content type="html"><![CDATA[<p>Today I read two articles about the usefulness of unit testing. Here
are my thoughts.</p>
<p>The first article I read is called <a href="https://web.archive.org/web/20091108121255/http://blogs.msdn.com/cashto/archive/2009/03/31/it-s-ok-not-to-write-unit-tests.aspx">It&rsquo;s OK Not to Write Unit Tests</a>
and is written by Chris &ldquo;cashto&rdquo; Ashton). Although Chris isn&rsquo;t saying that all
unit tests are worthless, he attributes less value to them than they deserve, at
least in my opinion. For the projects I&rsquo;ve been working on, unit tests can
actually be very useful.</p>
<p>For example, I&rsquo;ve frequently caught bugs after refactoring because a
unit test failed. Does this make me a bad programmer? Unit tests can
also be used to define the API of a certain piece of code. By writing
unit tests in the form of
<a href="https://en.wikipedia.org/wiki/Doctest">doctests</a> you are forced to
think about the way something should work and at the same time
document it.</p>
<p>The other article I&rsquo;ve read is <a href="https://web.archive.org/web/20091108145607/http://andreyf.tumblr.com:80/post/224053080/the-problem-with-unit-testing">The Problem with Unit Testing</a>.
Although I like <a href="https://en.wikipedia.org/wiki/Test-driven_development">test driven development</a>,
I wholeheartedly agree to the view that 100% unit test coverage is
probably overkill in a project. You&rsquo;ll constantly have to evaluate
whether writing a unit test for a piece of code is worth it. For code
that is more or less isolated (only used in a tiny part of the
project), very straight forward and easy to debug (worst case
scenario), I&rsquo;m likely to skip writing tests for instance.</p>
<p>Note that I&rsquo;m only talking about unit tests here. There are many more
ways to make sure the quality of your code is what it should be.</p>]]></content>
  </entry>
  <entry>
    <title type="html"><![CDATA[Zest Software and The Joel Test]]></title>
    <link rel="alternate" href="https://markvanlent.dev/2009/07/10/zest-software-and-the-joel-test/" type="text/html" />
    <id>https://markvanlent.dev/2009/07/10/zest-software-and-the-joel-test/</id>
    <author>
      <name>map[name:Mark van Lent uri:https://markvanlent.dev/about/]</name>
    </author>
    <category term="development" />
    <category term="opinion" />
    <category term="zest software" />
    
    <updated>2021-07-16T07:25:56Z</updated>
    <published>2009-07-10T10:00:00Z</published>
    <content type="html"><![CDATA[<p>A couple of years ago, Joel Spolsky wrote &ldquo;The Joel Test&rdquo;. Let&rsquo;s see
how Zest Software scores&hellip;</p>
<p><a href="https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/">The Joel Test</a>
was devised to rate the quality of a software team. In contrast to
other methods, it is designed to quickly provide some basic insight in
how a team is doing. And although Joel used the words &ldquo;highly
irresponsible&rdquo; and &ldquo;sloppy&rdquo; I though it was fun to see how we at
<a href="https://zestsoftware.nl/">Zest</a> rate.</p>
<p>We mainly use agile development to create
<a href="https://pypi.org/project/zc.buildout/">buildout</a> based
<a href="https://plone.org/">Plone</a> applications. In answering the questions,
I&rsquo;ll focus on those type of projects.</p>
<p>(Disclaimer: obviously this represents my own view on the matter and
is not necessarily the opinion of Zest or any of my co-workers.)</p>
<h2 id="1-do-you-use-source-control">1. Do you use source control?</h2>
<p>Yes! I cannot even imagine working without it. We mainly use
<a href="https://en.wikipedia.org/wiki/Apache_Subversion">Subversion</a> but some of us are (or
have been) experimenting with other source control software, like
<a href="https://bazaar.canonical.com/en/">Bazaar</a> , <a href="https://git-scm.com/">Git</a> and
<a href="https://www.mercurial-scm.org/">Mercurial</a>.</p>
<h2 id="2-can-you-make-a-build-in-one-step">2. Can you make a build in one step?</h2>
<p>Hmmm&hellip; tough one. We don&rsquo;t really &ldquo;build&rdquo; in the traditional
way. Since <a href="https://www.python.org/">Python</a> is an interpreted language,
we don&rsquo;t need to explicitly compile. For instance: restarting
<a href="https://www.zope.org/">Zope</a> is enough to use the latest code (and
with <a href="https://pypi.org/project/plone.reload/">plone.reload</a>
restarting isn&rsquo;t even necessary in many cases).</p>
<p>But okay sometimes you&rsquo;ll have to rerun the buildout to get/update all
the dependencies. Rerunning buildout is a single step so I&rsquo;ll count
this as a yes.</p>
<h2 id="3-do-you-make-daily-builds">3. Do you make daily builds?</h2>
<p>In the way Joel describes this, it basically translates for us to
doing a clean checkout, running the buildout and then running the
tests. (Assuming the tests include integration tests which need the
whole Plone/Zope stack.)</p>
<p>But no, we don&rsquo;t do this. We did have
<a href="https://buildbot.net/">buildbot</a> running for a couple of projects
to run the tests after every commit, but I have to admit we are not
doing this often enough.</p>
<h2 id="4-do-you-have-a-bug-database">4. Do you have a bug database?</h2>
<p>Yes we do. If we encounter a bug, we store it either in a
<a href="http://www.extremeprogramming.org/rules/userstories.html">(user) story</a>
or we put it in the issue tracker associated with the project.</p>
<h2 id="5-do-you-fix-bugs-before-writing-new-code">5. Do you fix bugs before writing new code?</h2>
<p>This depends on the project. Most of the time we try to estimate the
time needed to solve the problem and report back to the customer if we
expect that the fix will take a significant amount of time. Since in
Agile development the customers set the priorities, they can decide that
the bug is less important than getting a new feature in the next
release.</p>
<p>For our own projects or community projects we do want to make sure we
ship code as bug free as possible and in general we give bugs a high
priority.</p>
<h2 id="6-do-you-have-an-up-to-date-schedule">6. Do you have an up-to-date schedule?</h2>
<p>For each project we maintain a list of features in our
<a href="https://web.archive.org/web/20100619215621/http://plone.org/products/extreme-management-tool">project management tool</a>. Each
feature (or story in XP terminology) has an estimate of how much time
it will take to implement. So we can determine when the project will
be done.</p>
<p>However, at each
<a href="http://www.extremeprogramming.org/rules/iterationplanning.html">iteration meeting</a>
the customer could decide to add new feature, change the priorities,
etcetera. So the schedule is in no way set in stone.</p>
<h2 id="7-do-you-have-a-spec">7. Do you have a spec?</h2>
<p>Each story in the project represents a single feature. Since the set
of features for a project isn&rsquo;t static (new ones can be added, others
can be dropped), we don&rsquo;t write a lengthy document specifying every
detail of a project. We tend to describe the feature in a couple of
sentences in the story. By splitting it up in tasks when we start
working on it, more details are added.</p>
<p>(By the way, not writing specifications and justifying that by
saying &ldquo;XP doesn&rsquo;t need specs&rdquo; is wrong in my opinion. You do need to
have other practices in place to compensate the lack of written
specs.)</p>
<p>Another characteristic of agile development: we only build what is
requested. That is: we don&rsquo;t try to accommodate for every possible
future use case of a feature. We try to find a balance between
iterative design and thinking things though enough to limit the
refactoring needed when more use cases have to be implemented.</p>
<p>And since we have iteration meetings every (other) week where we demo
and discuss the work done in the previous iteration, the customer has
the opportunity to refine their ideas.</p>
<h2 id="8-do-programmers-have-quiet-working-conditions">8. Do programmers have quiet working conditions?</h2>
<p>No we don&rsquo;t. Which is a good thing when sprinting on a project: by
having all developers in the same room it is incredibly easy to
exchange knowledge. Pair programming also helps here. In my experience
if one of the partners gets distracted by the discussion (e.g. to
answer a question) the other half of the pair can quickly get him
focussed again.</p>
<p>When we are not sprinting though, it can be a bit hard to focus on
your task. Especially if co-workers are discussing a project on which
you aren&rsquo;t working right now, but you are familiar with. (Perhaps I&rsquo;m
overly curious and therefore more easily distracted&hellip;) However, at
the office we do have a place where you are isolated from the other
developers and it is also possible to work from home.</p>
<h2 id="9-do-you-use-the-best-tools-money-can-buy">9. Do you use the best tools money can buy?</h2>
<p>If we need tools and our demands are reasonable, sure. It just happens
that many of the tools we think are the best, are open source
tools. (Although it also depends on the platform that is being
used. I&rsquo;ve got the feeling that the Mac users at Zest use more
proprietary software than the Linux users.)</p>
<h2 id="10-do-you-have-testers">10. Do you have testers?</h2>
<p>No we don&rsquo;t. This doesn&rsquo;t mean our software is deployed at random
though. First of all we try to write automated tests (unit, functional
and integration tests), although I do have to admit that this heavily
depends on the quality level the customer asks for. But this is a
different discussion.</p>
<p>Furthermore: usually the project manager tests the application to see
whether it meets the requirements. Then we demo it to the
customer. And finally: most of the times we first deploy the code to a
preview server where the customer can play around to test it.</p>
<h2 id="11-do-new-candidates-write-code-during-their-interview">11. Do new candidates write code during their interview?</h2>
<p>No, as far as I know we don&rsquo;t require candidates to write code. (I
certainly didn&rsquo;t have to do it. :) ) But at the same time we also
haven&rsquo;t yet hired developers that didn&rsquo;t meet up to our
expectations. Perhaps we don&rsquo;t have as high standards as e.g. Joel
does, perhaps it has to do with the fact that we are a small
company. I don&rsquo;t know.</p>
<h2 id="12-do-you-do-hallway-usability-testing">12. Do you do hallway usability testing?</h2>
<p>It&rsquo;s no excuse, but this is hard to do this if you&rsquo;re in a small
company. I think most co-workers are too &ldquo;technology infected&rdquo; by now
to give a completely objective opinion. If you&rsquo;ve been working with a
system long enough (e.g. Plone) you get used to it&rsquo;s quirks.</p>
<p>However, we do frequently request co-workers to give a second opinion
about the (user) interface. And since we work in short iterations, the
end-user also gets to work with the software shortly after writing
it. So any strange behaviour should be detected quickly.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Perhaps I&rsquo;m not being objective, but I think that some of the
questions from the Joel Test don&rsquo;t fit in our development process. I
therefore don&rsquo;t want to calculate a score but let you draw your own
conclusions. I certainly found a couple of areas where we can
improve&hellip;</p>]]></content>
  </entry>
  <entry>
    <title type="html"><![CDATA[Airport and airline conspiracy]]></title>
    <link rel="alternate" href="https://markvanlent.dev/2009/06/30/airport-and-airline-conspiracy/" type="text/html" />
    <id>https://markvanlent.dev/2009/06/30/airport-and-airline-conspiracy/</id>
    <author>
      <name>map[name:Mark van Lent uri:https://markvanlent.dev/about/]</name>
    </author>
    <category term="opinion" />
    
    <updated>2021-07-16T07:25:56Z</updated>
    <published>2009-06-30T12:46:00Z</published>
    <content type="html"><![CDATA[<p>After spending most of the afternoon on an airport it finally hit me:
there&rsquo;s more than meets the eye to the whole process of boarding a
plane.</p>
<p>Yesterday in the early afternoon the travel agency picked us up at our
hotel and brought us to
<a href="https://en.wikipedia.org/wiki/Corfu_International_Airport">Corfu International Airport</a>. And
there it all began:</p>
<ul>
<li>Standing in line to check-in.</li>
<li>Waiting.</li>
<li>Standing in line for the security check.</li>
<li>Waiting at the gate.</li>
<li>Standing in line to board the plane.</li>
</ul>
<p>Somewhere in the couple of hours we were at the airport it occurred to
me that there may be more reasons for this process than just
logistics. By having people stand in lines and waiting for some time,
they will become somewhat numb. Which is a good thing if you want to
cram as many people as possible in a limited space for a couple of
hours&hellip;</p>
<p>Perhaps the above is quite obvious for frequent flyers, it was a small
revelation to me. Oh well, I&rsquo;m glad to be home again. :)</p>
<p><em>PS Our holiday was great actually. That&rsquo;s not the reason I&rsquo;m happy to
be home.</em></p>]]></content>
  </entry>
</feed>
