PCMCIA and your custom RedHat 9 kernel

I recently wanted to compile a custom kernel for my RedHat 9 laptop. (For some reason, RedHat decided to omit NTFS support from their stock kernel, even though it includes just about every other module under the sun.) Much to my consternation, on reboot my PCMCIA cards no longer worked. :( The only change I made to the default kernel config was to add NTFS support, so I was rather perplexed.

Booting back to the stock kernel (ya gotta love grub!) revived my PCMCIA CardBus, but left me NTFS-less. (Please keep the “that’s a feature, not a bug” comments to yourself…) The release of a security patch for the 2.4.20 kernel just increased my desire to get a custom kernel going.

Further investigation determined that the problem was a missing socket driver (yenta_socket) module. When the ds module tried to load, it failed because it couldn’t find the socket driver. Manually loading yenta_socket then ds got everything working properly. But it didn’t work at boot time, only if I manually loaded the yenta module.

I still can’t figure out why this is the case, since my modules.conf and /etc/sysconfig/pcmcia files are the same with either kernel. But for what it’s worth, adding this line:

    pre-install ds modprobe yenta_socket

to modules.conf solved the problem.

If anyone can shed any light on this, I’d be glad to hear it.

Linux on a Compaq EVO N600c

There are several good resources for getting Linux running on a Compaq EVO laptop. A tip I haven’t found elsewhere: unless you disable glx (in /etc/X11/XF86Config), putting the machine in standby (with X running) will cause the screen to make very weird patterns.

An unsolved problem: standby mode still consumes significant battery power. Enough, in fact, to totally flatten the batteries after about 15 hours from a full charge. If anybody has seen this, and found a solution, I’d love to know.

My home network

At home, my main workstation is a 400Mhz AMD K6 running Debian (currently woody, but I can also boot into sid if I’m feeling daring). It also has FreeBSD, OpenBSD and an old unloved version of Debian GNU/Hurd installed.

We’ve also got a server running Debian (woody/stable), an Gateway Pentium Pro 200 MHz, which handles our email, databases and web developement, and other useful services like DNS and DHCP.

There’s also a couple of laptops (untethered courtesy of NetGear 802.11b cordless ethernet cards).

Connecting it all the outside world is a cable modem and a dedictated firewall/NAT gateway (OpenBSD on a Compaq Pentium 100 MHz). My heartless wife will not let me get more computers. :(

Printing from windows with samba and cups

The default debian (woody) config of cups didn’t quite allow this to work… make the following changes (to enable raw printing via the windows driver):

Uncomment line 83 in /etc/cups/mime.convs:

#application/octet-stream        application/vnd.cups-raw        0       -

and also uncomment line 152 in /etc/cups/mime.types:

#application/octet-stream

Also, we need to add the following (rarely mentioned) line to smb.conf (in the [Printers] section):

use client driver = yes

This will cause windows to successfully get the printers’ status.

How not to comment your code

Below is a piece of code I came across recently while reviewing somebody else’s work. It is a terrific example of how not to write comments.

//Create a vector
Vector seq = new Vector();

//Count the number of items in the sequence
int count = ms.itemCount();

//Loop through the sequence getting all the values
for( int i = 0; i < count; i++ ) {
    //Convert the item to an Instance
    MInstance mi = (MInstance)ms.getAt( i );

    //Convert the instance to a HashMap
    Map data = mInstanceToMap( mi );

    //Add this to the Vector
    seq.addElement( data );
}
//Return the vector
return seq;

Ignoring for the minute the infuriating habit of putting spaces around parameters (doesn’t anybody read the Java style guide any more?), these comments are completely useless.

There are plenty of places to learn how to write comments. A couple of references come to mind: Steve McConnell’s “Code Complete”, “The Pragmatic Programmer”, “Programming Pearls”.

In a nutshell… don’t write comments that say what the code is doing (you can safely assume that anyone likely to need to read your comments is at least borderline literate in the progamming language in question). Maybe explain why your code is doing it, and defintely document any assumptions. Please don’t tell me new Vector() creates a new Vector…

About

Hi! My name is Michael Rowe and this is my web site.

Here I write about what ever is on my mind, which tends to be related to running and programming computers, since that’s what I do.

You can contact me by email, or follow me at @mrowe@aus.social if you’re so inclined.

Old posts are archived here.

Made with Hugo using a lightly modified version of the Tale theme.

Michael Rowe's Résumé

Phone: +61 (0) 412 477 661

Email: mrowe@mojain.com
Blog: mikerowecode.com
LinkedIn: linkedin.com/in/michaelrowe/
GitHub: https://github.com/mrowe

Overview

I am an experienced professional software developer, architect and manager familiar with working in fast-paced agile environments. I have a strong focus on people–coaching, mentoring, and creating the conditions that allow them to be their most effective.

Employment History

Programme Architect, Resilience

SEEK (Melbourne, VIC, Australia)
Dec 2023 -

Provided technical and architectural guidance to the Technical Resilience programme, allowing SEEK to better understand and improve its risk position. Worked with engineering teams to protect critical systems and data assets, and configured AWS Resilience Hub to provide daily assessments of SEEK’s platform resilience.

Group Director, Engineering

Art Processors (Melbourne, VIC, Australia)
Mar 2021 - Sept 2023

As Group Director, Engineering I support a team of software engineers and managers who are delivering Art Processors’ core experience management platform product. In collaboration with the Chief Technology Officer and other engineering Group Directors, I lead the development and implementation of strategy for the entire engineering team, anticipating complex issues, challenges and opportunities, and ensuring integration with the wider organisational strategy.

Key achievements:

  • Grew the engineering team from 12 to over 30 engineers, including planning for needs, identifying skill gaps, and driving front line recruiting
  • Coached and developed several senior engineers into people lead roles
  • Delivered major client projects on time and on budget
  • Successfully launched the first version of our re-imagined core product
  • Established strategies and ways of working to support the organisation’s three-fold growth over the last two years
  • Participated in the Senior Leadership Team to manage the day to day operation of the business

Technical Team Lead

Art Processors (Melbourne, VIC, Australia)
Jan 2020 - Mar 2021

Principal Software Engineer - Reliability Engineering

Suncorp Group (Melbourne, VIC, Australia)
Feb 2019 - Jan 2020

The purpose of this role is to design, implement and manage a Reliability Engineering function for Suncorp’s Digital Technology business unit. I work with delivery teams across Suncorp’s banking and insurance brands to foster and promote an “SRE mindset” towards operating reliable customer facing applications.

The role also involves hands on development and implementation of systems and dashboards to measure and present key aspects of application performance and reliability to teams and business stakeholders.

Responsibilities:

  • Review, identify and create proposals for technology improvements that enhance system reliability, resilience or measurement.
  • Define, collect and measure system performance metrics that objectively define system reliability.
  • Work closely with delivery teams to deliver enhancements that help scale systems and improve reliability to meet agreed reliability targets.
  • Work closely with delivery teams to transition towards low or no touch change management practices in order to increase velocity.
  • Consult with teams on reliability and resilience issues.
  • Proactively provide technical leadership in Software Engineering, DevOps and Architecture issues.
  • Attract, coach, and manage a distributed team.

Technologies:

  • Java, Spring Boot, Python
  • Splunk, ELK (Elasticsearch, Logstash, Kibana), Grafana, Prometheus
  • AWS, Kubernetes, OpenShift

Delivery Manager

REA Group (Melbourne, VIC, Australia)
Jan 2018 - Oct 2018

In this role I had delivery and technical accountability for the technology teams in the Leads & Branding tribe. The team is building the next generation of digital marketing and advertising tools for REA’s customers. To aid with the pace and focus of this new set of products, the team is set up as a “startup”–expected to deploy often and learn quickly–but with the support and backing of an ASX100 enterprise.

I was responsible for building a productive and effective engineering team to support the product and business goals of the Tribe. Each squad is comprised of an Engineering Lead and 5-6 developers, plus a product manager and UX designer.

Responsibilities:

  • Leadership of a team of ~20 technologists to motivate, develop careers, inspire best work, and support the day-to-day success of this team.
  • Drive the productive and successful delivery of software products, ensuring the engineering team are aligned to organisational and business unit goals in delivering high-quality and cost-effective solutions.
  • Provide clear technical strategy and make key architectural decisions to ensure successful design and implementation of software and infrastructure that align with business unit and REA Group goals.
  • Manage the operational budget, optimising and evolving spend to maximise return on investment.
  • Foster an environment of learning, openness and honesty.

Key achievements:

  • Grew the team from 12 to 20 software developers over six months while managing the staggered roll-off of external contractors to minimise disruption to the teams.
  • Coached and developed three senior engineers into new team lead roles.
  • Set up structures and processes to support the new managers, including setting KPIs and development plans for all team members.
  • Worked with senior stakeholders to establish a culture of collaboration between engineering, product, and design teams.

Architecture Manager

REA Group (Melbourne, VIC, Australia)
Feb 2017 - Dec 2017

In this role I led a team of developers, tech leads and architects who are responsible for providing architectural leadership, consulting and support to product delivery teams in REA Group globally.

Responsibilities:

  • Leading the overall technical architecture strategy for REA Group in collaboration with other senior technical leaders.
  • Using team resources, expertise and current industry insights to shape the vision, goals, and measures of success for the Architecture function within REA Group.
  • Acting as an evangelist for the role of Architecture within REA Group, building support for the function and its team members among internal Lines of Business.
  • Working with other functional leaders to understand current issues and strategic opportunities as well as managing their expectations.
  • Working with the relevant architecture and tech lead forums to ensure consistent and strategic architectural models are in place.
  • Building the architectural capability of delivery teams across REA Group by identifying, developing, and mentoring architectural talent in all teams globally.
  • Coaching, mentoring and supervising the Global Architecture team to ensure they have the skills, knowledge and support to perform in their role whilst recognising their potential.

Key achievements:

  • Redefined the engagement model for the Group Architecture team, in consultation with stakeholders across the business including Tech Leads, Engineering Managers, Product Managers and the Chief Engineer.
  • Implemented planning and governance processes to improve the effectiveness of the team’s engagements with line of business teams.
  • Drove the establishment of a “global architecture forum” comprised of technical leaders from across REA’s global businesses.
  • Led the Tech Lead Guild, the internal “community of practice” and focus of profressional development for REA’s technical leadership.

Throughout my time at REA I have also initiated, driven and been responsible for a number of additional responsibilities not specific to my role including:

  • Editing and curating the public REA engineering blog (http://rea.tech/).
  • Coordinating and curating REA’s public contributions to open source tools and libraries (http://realestate-com-au.github.io).
  • Mentoring and coaching grads and junior developers.
  • Facilitating a cross-disciplinary group focussed on REA’s tech community outreach programmes.
  • Promoting and supporting the community of internal “guilds” of practice.
  • Contributing to the IT Grad Programme steering committee.

Senior Tech Lead

REA Group (Melbourne, VIC, Australia)
Jan 2016 - Jan 2017

Responsibilities:

  • Leading the overall technical direction for REA in collaboration with other senior technical leaders.
  • Providing technical direction to my team.
  • Working with stakeholders to design high quality solutions that meet the needs of our users.
  • Leading the implementation of architecturally complex projects of global significance.
  • Maintaining existing products, including bug fixes and “Business As Usual” feature enhancements.
  • Contributing to the REA knowledge base through blog posts, brown-bags sessions and coaching less experienced members of the team.

Tech Lead

REA Group (Melbourne, VIC, Australia)
Dec 2012 - Dec 2015

The consumer-facing web application that powers realestate.com.au is backed by provisioning, messaging and search systems that have evolved over several years. I lead a small team of engineers with responsibility for the long-term architectural direction of these systems, and for undertaking project work in cooperation with line-of-business teams to implement technical improvements.

In addition to product delivery projects, I managed and maintained some key internal infrastructure products including Atlassian Bamboo and GitHub Enterprise, including vendor relationships and contract negotiation.

Responsibilities:

  • Contributing to the overall technical direction for REA in collaboration with other senior technical leaders.
  • Providing technical direction to my teams.
  • Working with stakeholders to design high quality solutions that meet the needs of our users.
  • Leading engineering teams in the implementation of major products.
  • Maintaining existing products, including bug fixes and “Business As Usual” feature enhancements.
  • Supporting production systems.

Senior Developer

REA Group (Melbourne, VIC, Australia)
Jan 2011 - Dec 2011

I was employed as a senior developer on REA’s mobile team, responsible for development and maintenance of REA’s iPhone and iPad applications.

Consultant

Cogent Consulting (Melbourne, VIC, Australia)
April 2009 - Jan 2011

I am an experienced consultant, developer and team leader with expertise in many development environments and platforms. As well as cutting code, I am skilled at configuring the systems and tools that support the development process.

I’ve worked on numerous projects for Cogent’s customers, including significant public Ruby on Rails and Java-based applications.

Projects:

  • REA Group - I helped REA Group implement continuous delivery to streamline their software development and release processes. Starting from a chaotic and largely manual release process, I was part of a small team developed tools and recipes to use Chef to deploy REA’s applications to a “virtual private cloud” in Amazon’s EC2, enabling development teams to more effective deploy and test core applications.
  • Lonely Planet - Over a period of 18 months I helped Lonely Planet deliver a number of key improvements to their web site, including “Contact Us”, private messaging and their re-launched online shop. Significant technical components of this work included:

    • Integration with Facebook
    • Integration with Zendesk
    • Migration of legacy customer support data
    • Delivery of a digital fulfillment service
  • Majitek - I spent six months in 2009 working with Majitek on their connected real estate management product. I contributed to feature development in many parts of the Spring and Hibernate-based system, and also undertook a major effort to “skin” the UI of the application to allow Majitek to customise its look and feel for their customers.

In between customer engagements, I also spent some time working on Cogent’s Getting Things Done® product, Runway.

Senior Developer

Lonely Planet Publications (Footscray, VIC, Australia)
May 2008 - March 2009

I was engaged with Lonely Planet to join the major redevelopment of their public web site. In the course of the contract I worked on many components of the site, including the Drupal-based content management system and Java web applications.

I also acted as a technical team leader for much of the contract, being responsible for the day to day management and technical output of five developers.

Senior Developer

Fast Search & Transfer (Melbourne, VIC, Australia)
November 2007 - January 2008

I was employed by FAST on a short-term contract to help with a major release of their AdMomentum product.

Tasks included fixing bugs and adding features in both the struts-based web front end and the stand-alone Java back end.

Senior Developer

National Australia Bank (Melbourne, VIC, Australia)
January 2007 - November 2007

I was contracted to NAB as a senior developer in a large project team developing customer-facing J2EE systems.

Senior Developer

CGU Insurance (Melbourne, VIC, Australia)
September 2006 - January 2007

I was contracted to CGU Insurance (part of IAG) to work on a new programme of work to develop a framework and end user applications that provide a modern user interface to legacy policy management systems.

The initial project used J2EE application servers and a 3270 screen scraping tool to deliver a browser-based end user application based on data managed by a legacy mainframe system.

Projects:

  • Design and development of a J2EE application that provides a browser-based front end to a legacy 3270 insurance policy management system.

  • Development and configuration of an integrated continuous build environment based on Ant and Pulse that allowed new developers on the project to quickly become productive, including comprehensive unit testing, coverage reports and static analysis.

Technical Analyst

Australia Post (Melbourne, VIC, Australia)
November 2005 - August 2006

My role in the Solution Architecture group at Australia Post involved performing technical quality assurance for projects developed by Post’s external service providers. This included document, design and code reviews, as well as general support and coordination of development, test and production environments.

I engaged with external lead designers and developers and internal technical teams to provide specialist guidance, ensuring applications are designed, developed, tested, and deployed properly and in accordance with enterprise standards.

Projects:

  • Compile a design and coding standards document for use by all Java and J2EE development teams working on Post projects.

  • Development of a WebLogic authentication module for OpenLDAP. This module extended the BEA-provided OpenLDAP authenticator to allow editing of user and group properties.

Senior Developer

Sensis Pty Ltd (Melbourne, VIC, Australia)
February 2004 - October 2005

I was contracted to Sensis Pty Ltd to work on an enterprise-wide integrated content management system. The work involved custom J2EE application development and integration using Tibco and Sun components.

Key challenges in this project included development of components for high performance XML data manipulation, and concurrent scheduling of inter-dependent work units.

I was engaged on various components of the system over the life of the project, including:

Projects:

  • New design and development of a subsystem to convert legacy data in real time. This component handles thousands of JMS messages an hour and performs updates to the central content server, maintaining order and transactional consistency.

  • Development of additional functionality for the core server component including a subsystem to publish content to downstream legacy applications.

  • Troubleshooting and resolving bugs in the end-user GUI application.

Senior Consultant

BearingPoint, Inc. (formerly KPMG Consulting) (Melbourne, VIC, Australia)
January 2002 - January 2004

I held the position of senior consultant in the Technology Integration Services practice of BearingPoint, Inc. I was responsible for and involved in a wide range of consulting assignments covering design and implementation of complex information technology systems.

Projects:

  • Establish an EAI infrastructure and initial integration processes for a state government department using Tibco BusinessWorks 5.0 and Tibco Enterprise for JMS.

  • Design and develop enhancements to an EAI adapter between a Tibco Integration Manager application and a legacy provisioning system.

  • Trouble-shoot and develop enhancements to a proprietary server process that extends Tibco InConcert.

  • Maintain and trouble-shoot the data architecture for a large enterprise middleware application, including updates to the physical data model.

  • Design and develop a Java testing framework for enterprise middleware applications, including IBM MQ Series and Tibco Rendezvous, MessageBroker and Integration Manager components.

  • Design and develop a test log analysis toolkit in Perl to measure and report on the results of middleware interface testing.

Senior IT Specialist (Solution Architect)

IBM Global Services (Atlanta, GA, USA)
November 1999 - December 2001

I was employed as a Solution Architect within IBM’s Center for E-Business Innovation, primarily as part of the content management/e-publishing team.

My duties at IBM included: designing and developing web-based (Internet and intranet) publishing, content management and portal solutions for IBM’s customers; managing small to medium development projects; providing leadership and mentoring to other members of the development team; and architecting solutions with Domino/Lotus Notes, IBM WebSphere, IBM DB2, IBM WebSphere CommerceSuite, Oracle, Open Market, Vignette and Interwoven.

Projects:

  • In 2001, I planned, designed and implemented a content management system based on Interwoven TeamSite, and integrated with WebSphere CommerceSuite, for a major manufacturer of medical imaging equipment. This on-going project involved requirements analysis and macro design, micro design, implementation and deployment. My role included pre-sales, technical design and lead development duties.

  • In 2000, I worked with the world’s premier financial market to define requirements and project scope for web user registration and personalisation system. For the same customer, I contributed to the development of a prototype Java application for institutional investors to track trading events and information.

  • Implementation of a Domino-based content management system for a major Spanish-language television network. This included development of complex Notes forms and views, Java agents, JavaScript libraries and HTML. In 2000 IBM filed a patent application for my design of a system to allow end-user control of site navigation via the Notes application.

Consultant

PSR Software, Inc. (Atlanta, GA, USA)
March 1998 - November 1999

I was employed by PSR to perform pre-sales marketing and demonstrations, post-sales implementation, project management, installation, training and support for the software products that PSR develops and distributes.

Other duties included developing Domino-based e-commerce web sites for customers and performing ongoing Notes/Domino development and maintenance tasks for internal and external customers.

Projects:

  • JustWin Technologies: JustWin is an Australian software vendor that markets a Lotus Domino-based production support system for the apparel industry. I was responsible for pre-sales activities such as consulting and demonstrations, and post-sales infrastructure design, implementation and training. Implementation of the JustWin system included gathering requirements from the system’s users, and working with the vendor to design and implement customisations as required.

  • Visual Impact: PSR markets a Domino-based web query tool for relational databases, called Visual Impact. As well as providing implementation and user support, I spent several months updating and enhancing the product to streamline the user interface, utilise new features provided by Domino R5, and ensure Year 2000 readiness.

  • Write “cookbooks” on use of the DB2 LSX to access DB2 data from Notes and Domino applications.

  • Update existing Notes applications to ensure Year 2000 readiness.

Senior Consultant

Software Spectrum Inc. (Melbourne, VIC, Australia)
March 1997 - March 1998

  • Design and implement Lotus Notes network architectures

  • Design, develop and implement Lotus Notes applications

  • Perform analysis and design phases of projects

  • Manage small to medium size projects

  • Pre-sales consultation and support for the sales organisation

  • Write project definitions, scopes and statements of work

  • Write reports and documentation

Projects:

  • While at Software Spectrum, I planned for and designed an enterprise Lotus Notes email infrastructure for a large department of the Victorian State Government. This included developing standards documents and administration guides, overseeing the initial roll-out of the environment, and providing administrator and user support. As a result of the new infrastructure, the Department was able to consolidate multiple disparate email programs and systems, integrate with the rest of the Victorian Government’s Notes systems and take advantage of Notes’ calendaring and scheduling capabilities.

  • In another project, I contributed as assistant project manager for a project to implement Microsoft SMS for a major international chemical company. This project involved working with the customer’s project team to define application requirements and installation procedures, then building and testing SMS installation scripts to support these requirements.

Systems Engineer, Senior Systems Engineer

Business Computers of Australia (Melbourne, VIC, Australia)
May 1993 - February 1997

  • Design and implement Lotus Notes systems

  • Design and implement LANs (Novell Netware, OS/2 LAN Server, SCO Unix)

  • Design and implement LAN and WAN communication solutions

  • Plan and manage upgrades of operating system & application software

  • Pre-sales consulting in above areas

  • Problem resolution and technical support

  • Lotus Notes, LAN and systems support

  • 2nd level support for other engineers

  • Maintenance and support of internal Lotus Notes systems

Professional Memberships

  • Association for Computing Machinery
  • Institute of Electrical and Electronic Engineers
  • IEEE Computer Society

Education

Higher School Certificate, 1986 Banyule High School