All newer versions of Domino has an API endpoint for the Domino Rest API. If you have a domino server that you do not want to expose this endpoint on you can create some webserver redirections to turn this off. This is how you do it, first create a substitution rule to another location in this cased api2 and after that a redirection rule.
And after that create an redirection rule to you preferred destination
If you are getting all attachment filenames in lowercase in Domino 12.02 then that is because there is an option to normalize attachment filenames that if I’m guessing enabled by default in some fixpacks. The default behavior is changed in FP6 back to how it was before
SPR# MDLSDCSMFV – Programmability – LotusScript – Attachments – Fixed an issue where the internal attachment filenames were being changed to lowercase/half pitch to fix an issue in TMAICWHDAY. This was resulting in applications that used LotusScript EmbeddedObjects.Name property to show attachment names in lowercase/half pitch – note that EmbeddedOjbect.Source property contains the user friendly name. To fix this, the fix for TMAICWHDAY is now off by default – set AttachNamesNormalize=1 to enable the fix for TMAICWHDAY. This regression was introduced in 11.0.1 FP9, 12.0.2 FP4 and 14.0 FP2.
I have seen a problem with getting data using XPages or agents from Amazon hosted services because they now are using a Amazon Trusted Root. But it can be others poping up also in the future.
Some error messages that you might see on the console javax.net.ssl.SSLHandshakeException java.security.cert.CertificateException startHandshake com.ibm.domino.napi.ssl.DominoX509TrustManager checkServerTrusted DominoX509TrustManager
Check out Certinfo a small tool that I’ve created to help with getting enddates from certificates
As I think many of you have done is to install the new IF mail fixpack on you servers. One important note regarding IF fixpacks is that they are usually not recognized by ordinary fixpacks and needs to be uninstalled before applying newer Fixpacks.
So to avoid problems and extra work in the future, always keep the latest Fixpack and IF packs stored on the server so I can uninstall and reinstall them easy.
HCL got a big Friday the 13:th problem, due to a bug created back in early days of the Domino server when no one saw anything beyond 5 years ahead as a potential problem. Simplified what I’ve read is that a limit in an calculation formula for epoch dates created this problem that made the function return -1 instead of an incremental number, a complete writeup will come later from HCL in the technote. This makes the mail routing to stop working if you have more than one mailbox, routing between servers to get to the internet. Read the technote here it’s updated continuously and if you can apply the hotfixes do so. https://support.hcl-software.com/csm?id=kb_article&sysparm_article=KB0118192
HCL is as always quick on the problem and did within 24 hours identify the problem and did release fixes for the domino versions that is active in maintenance now. A big shoutout to all developers that has worked to getting this out so fast for version 11,12 and 14 (Fixes is uploaded where you can download other fixes), if you still are on version 9 or 10 you could get a fix if you are on an extended support plan by opening a support ticket. So for most companies that has servers that is on any earlier version than 11 might have potential problems with mail routing and server mail rules. My initial findings is that if you only have one server, one mail.box no mail rules you are not affectedby mail deliver problems, it could be other things that stops working other than mail rules because the problem makes settings not being loaded from the config. NO PANIC FOR ADMINS with the above config regarding mail delivery (comment if you have found something)
I usually like to try checking out if there is an workaround, I started to check if there was a notes.ini parameter to set Max mail hops but I couldn’t find that one.
Then I switch over to check what the problem was and found that removing all extra mail.box databases so you only have one (mail.box). This makes the emails being sent out if you run the send agent on that server, that fixes some of the problems.
Emails being routed from other servers only routes one server from the sent server and then gets stuck. But if I use release held email they are being routed. Hmmm, so I created an scheduled agent in another database and check for emails in the mail.box that has the specific attributes and the field $hops set to 0. That actually releases and sends the emails in my environment, It doesn’t solve problems with mail rules and potential everything but some is my findings. It needs to be on all servers that get emails from other servers sent to them to be routed.
Of course the hotfixes from HCL is always the best to apply but if you don’t have the possibility this might help you temporary to get this working with mail routing without the hotfixes for a while, until you can upgrade the server.
Another this that has come up is that because the problem makes the server go back to 1 mailbox and the fix is using the correct number again. Remember that emails can then be stuck in mail.box that you need to copy over to one of the active boxes after the patch. Also you need to have “Hold undeliverable mail” set to enable
This is the code I have in the extra database with the scheduled agent. ( You can’t add it to mail.box ) This code is used a your own risk, without any HCL support and it will NOT fix all problems related to this bug.
Dim session As New NotesSession
Dim mailboxdb As New NotesDatabase(session.Currentdatabase.server,"mail.box")
Dim v As NotesView
Dim doc As notesdocument
If mailboxdb.Isopen Then
Set v=mailboxdb.Getview("mail")
Call v.Refresh()
v.Autoupdate=false
Set doc=v.Getfirstdocument()
Do While Not doc Is Nothing
If Not doc.hasitem("hopsretry") Then
If doc.Getitemvalue("RoutingState")(0)="HOLD" Then
If CStr(doc.Getitemvalue("$hops")(0))="0" then
Call doc.Replaceitemvalue("RoutingState","")
Call doc.Removeitem("SaveOptions")
If doc.Hasitem("RoutingState") And
Not doc.getitemvalue("RoutingState")(0)="" Then
'Keep Form
Else
If doc.Hasitem("MailSavedForm") And
Not doc.getitemvalue("MailSavedForm")(0)="" Then
Call doc.Replaceitemvalue("Form",doc.Getitemvalue("MailSavedForm"))
ElseIf doc.Hasitem("AppointmentType") Then
Call doc.Replaceitemvalue("Form","Notice")
Else
Call doc.Replaceitemvalue("Form","Memo")
End If
End If
Call doc.Replaceitemvalue("$Hops",25)
Call doc.Removeitem("RoutingStateBy")
Call doc.Replaceitemvalue("hopsretry",1)
Call doc.save(True,False)
End if
End If
End If
Set doc=v.Getnextdocument(doc)
Loop
End if
If you are using the new Domino Backup solution or another backup method to restore a database for partial data retrieval, there are a few important considerations to keep in mind.
DAOS Configuration: If DAOS (Domino Attachment and Object Service) is enabled, you must perform the restore on the server. This is because attachments are stored separately from the database.
Disable All Agents: When placing the restored database on the server, make sure to disable all agents to prevent them from running unintentionally.
Secure the Database ACL: Lock down the Access Control List (ACL) of the database to ensure it remains secure during the restoration process.
Change the Replica ID: If you are restoring the database to a different location than the original file path, it is crucial to change the replica ID.
This last step is particularly important. Failure to change the replica ID can lead to serious issues on the server. The Domino server identifies databases using their replica IDs, and having duplicate IDs may cause the server or client to access the wrong database. In the best case, this might result in an “You are not authorized” error; in the worst case, it could cause unexpected and confusing behavior.
Always remember: When restoring a database for partial information retrieval or to inspect data from old backups, make sure to change the replica ID to avoid these problems.
In today’s fast-paced digital world, developers are at the forefront of innovation and technology. However, with this role comes the inevitable challenge of information overload. This phenomenon, where the volume of information exceeds an individual’s ability to process it effectively, has become a significant concern for developers, affecting their productivity, decision-making, and overall well-being. In this article, we will explore the causes of information overload among developers, its impact, and strategies to manage and mitigate its effects.
The Causes of Information Overload
The rapid advancement of technology has led to an unprecedented explosion of information. For developers, this translates into an overwhelming amount of data, tools, frameworks, languages, and methodologies that they must keep up with. Several factors contribute to this overload:
Rapid Technological Evolution: The pace at which new technologies, programming languages, and frameworks are introduced is staggering. For example, in the web development world, the emergence of new JavaScript frameworks like React, Angular, and Vue.js, each with its unique ecosystem, can be overwhelming. Developers are often pressured to learn and master these new tools to stay competitive.
Vast Amount of Documentation: Comprehensive documentation is essential for developers to understand and implement new technologies. However, the sheer volume of documentation available for each tool or language can be daunting. Navigating through extensive manuals, tutorials, and API references requires time and mental energy, leading to cognitive overload.
Multiple Communication Channels: Developers today are bombarded with information from various communication channels, including emails, instant messaging apps, project management tools, and social media platforms like GitHub, Stack Overflow, and Twitter. While these channels are valuable for collaboration and learning, they also contribute to the constant influx of information, making it challenging to focus.
High Expectations and Pressure: The demand for developers to deliver high-quality, efficient, and innovative solutions in short timeframes adds to the pressure. They are expected to be experts in multiple domains, from frontend to backend development, DevOps, and cybersecurity. This expectation drives the need to continuously consume and process large amounts of information, leading to burnout.
Open-Source Contributions and Community Engagement: The open-source movement has empowered developers to contribute to and leverage community-driven projects. However, participating in these communities often requires staying updated with the latest developments, contributing code, and engaging in discussions, all of which add to the information load.
System Migrations and Database Structure Changes: Another significant source of information overload for developers is the need to migrate from old systems to new ones or modify database structures to accommodate new functionalities. In legacy systems, data and architecture are often deeply entrenched, requiring careful planning and execution to migrate without causing disruptions. Understanding the intricacies of both the old and new systems, ensuring data integrity, and adapting to new database paradigms—whether it’s shifting from a relational database to a NoSQL system or vice versa—can be overwhelming. Each of these transitions involves an influx of new knowledge, detailed documentation, and unforeseen challenges that add to the already considerable cognitive burden on developers.
The Impact of Information Overload on Developers
Information overload can have significant consequences for developers, affecting both their professional and personal lives. Some of the key impacts include:
Reduced Productivity: When overwhelmed with information, developers may struggle to prioritize tasks, leading to decreased productivity. The constant need to switch between tasks and absorb new information can result in fragmented focus, making it difficult to complete projects efficiently. For instance, during a system migration, developers might be inundated with details about both the legacy system and the new architecture, making it challenging to focus on the actual migration process.
Decision Paralysis: With so much information to process, developers may experience decision paralysis, where they find it difficult to make choices. This is especially true in situations where they must decide between multiple technologies, tools, or methodologies. The fear of making the wrong decision can lead to delays and missed opportunities.
Increased Errors: The cognitive overload caused by processing vast amounts of information can lead to increased errors in code and system design. In complex tasks like changing database structures or migrating data, even small mistakes can have significant repercussions, leading to system outages, data loss, or compromised functionality.
Burnout: The constant pressure to stay updated, coupled with the need to handle multiple projects simultaneously, can lead to burnout. Developers may feel mentally and physically exhausted, which can impact their health, job satisfaction, and overall quality of life.
Decreased Creativity and Innovation: Information overload can stifle creativity and innovation. When developers are constantly bombarded with information, they may find it challenging to think outside the box or come up with novel solutions to problems. The mental fatigue caused by information overload can inhibit the ability to engage in deep, reflective thinking, which is crucial for innovation.
Strategies to Manage and Mitigate Information Overload
While information overload is a significant challenge for developers, several strategies can help manage and mitigate its effects. By adopting these approaches, developers can improve their productivity, reduce stress, and maintain a healthy work-life balance.
Prioritization and Focus: One of the most effective ways to combat information overload is by prioritizing tasks, splitting tasks into smaller tasks and maintaining focus. Developers should identify the most critical tasks and focus on completing them before moving on to less important ones. Techniques like the Eisenhower Matrix, which categorizes tasks based on their urgency and importance, can help developers prioritize effectively.
Continuous Learning with a Focus on Essentials: While it’s essential to stay updated with the latest technologies, developers should focus on mastering the core concepts that are most relevant to their work. This involves being selective about the information they consume and concentrating on learning materials that directly impact their current projects or long-term career goals. For example, when migrating systems or modifying database structures, developers should focus on understanding the specific tools and methodologies relevant to the task rather than trying to learn every possible option available.
Effective Use of Documentation: Developers can manage information overload by using documentation more effectively. Instead of trying to read through entire manuals or tutorials, they should use targeted searches to find specific information when needed. Additionally, creating personal notes or summaries can help consolidate knowledge and make it easier to reference later.
Limit Distractions and Manage Communication Channels: To reduce the constant influx of information, developers should limit distractions by managing their communication channels effectively. This could involve setting specific times for checking emails or messages, using tools that aggregate communication into a single platform, or turning off notifications during deep work sessions. By controlling the flow of information, developers can maintain better focus and reduce cognitive load.
Leverage Automation and Tools: Automation can significantly reduce the burden of repetitive tasks and help manage information overload. Developers should utilize tools that automate code deployment, testing, and monitoring, freeing up mental space to focus on more complex problems. In the context of system migrations, automation tools can help streamline data transfers and minimize manual intervention, reducing the risk of errors and the amount of information developers need to process.
Adopt Incremental Approaches for System Migrations: When dealing with system migrations or database structure changes, adopting an incremental approach can help manage the influx of new information. Breaking down the migration process into smaller, manageable phases allows developers to focus on one aspect at a time, reducing the cognitive load. Additionally, this approach helps in identifying and resolving issues early in the process, preventing information overload from spiraling out of control.
Collaboration and Delegation: Developers should not hesitate to collaborate with their peers or delegate tasks when necessary. Sharing the workload can help distribute the cognitive load and bring in different perspectives, making it easier to handle complex tasks like system migrations or database restructuring. Collaboration tools and platforms can also facilitate better communication and knowledge sharing, reducing the individual burden of processing large amounts of information.
Mindfulness and Mental Health Practices: Finally, developers should prioritize their mental health by incorporating mindfulness practices into their daily routine. Techniques such as meditation, deep breathing exercises, and regular breaks can help reduce stress and improve focus. By taking care of their mental well-being, developers can build resilience against information overload and maintain a healthy balance between work and personal life.
Conclusion
Information overload is a pervasive challenge in the life of a developer, exacerbated by the rapid pace of technological change, the need to migrate systems, and the constant influx of data from multiple sources. However, by understanding the causes and impacts of information overload and adopting effective strategies to manage it, developers can navigate the digital deluge more effectively. Prioritization, continuous learning with a focus on essentials, automation, incremental approaches, collaboration, and mindfulness are all key tools in a developer’s arsenal to combat information overload and maintain productivity, creativity, and well-being in an increasingly complex technological landscape.
The Eisenhower Matrix – Explained
The Eisenhower Matrix, also known as the Urgent-Important Matrix, is a simple yet effective time management tool that helps individuals prioritize tasks based on their urgency and importance. It was named after Dwight D. Eisenhower, the 34th President of the United States, who was known for his effective decision-making and time management skills.
Structure of the Eisenhower Matrix
The matrix is divided into four quadrants:
Quadrant 1: Urgent and Important (Do First)
Description: This quadrant contains tasks that are both urgent and important. These tasks require immediate attention and have significant consequences if not completed promptly.
Examples:
Handling a critical project deadline
Responding to a crisis or emergency situation
Addressing an urgent issue that affects the success of a major goal
Action: Tasks in this quadrant should be done immediately. These are the top priority tasks that cannot be postponed.
Quadrant 2: Not Urgent but Important (Schedule)
Description: Tasks in this quadrant are important but not urgent. They contribute to long-term goals, personal development, or major projects, but do not require immediate action.
Examples:
Planning and strategizing for future projects
Engaging in professional development or learning new skills
Building relationships and networking
Action: These tasks should be scheduled for a specific time in the future. By focusing on these tasks, you can prevent them from becoming urgent crises later on.
Quadrant 3: Urgent but Not Important (Delegate)
Description: This quadrant includes tasks that are urgent but not necessarily important. These tasks often require immediate attention but do not contribute significantly to your long-term goals.
Examples:
Answering non-critical emails
Attending meetings that do not directly impact your work
Handling interruptions or distractions that demand immediate response
Action: Tasks in this quadrant should be delegated to others if possible. By delegating, you free up your time to focus on more important tasks.
Quadrant 4: Not Urgent and Not Important (Eliminate)
Description: This quadrant consists of tasks that are neither urgent nor important. These activities are often time-wasters and do not contribute to your goals or productivity.
Examples:
Excessive browsing on social media
Engaging in unnecessary or trivial activities
Watching television or other passive entertainment
Action: Tasks in this quadrant should be minimized or eliminated altogether. They do not add value and can distract you from more important activities.
How to Use the Eisenhower Matrix
List Your Tasks: Start by listing all the tasks you need to complete, including both professional and personal responsibilities.
Categorize Tasks: Assign each task to one of the four quadrants based on its urgency and importance.
Prioritize and Act: Focus on tasks in Quadrant 1 first, as they are both urgent and important. Then, schedule time for tasks in Quadrant 2. Delegate tasks in Quadrant 3 to others, and try to eliminate or reduce time spent on tasks in Quadrant 4.
Review and Adjust: Regularly review your matrix to ensure that you are staying on track with your priorities. As new tasks come up, add them to the appropriate quadrant.
Benefits of the Eisenhower Matrix
Improved Focus: By categorizing tasks, you can focus on what truly matters and avoid getting bogged down by less important tasks.
Better Time Management: The matrix helps you allocate your time more effectively, ensuring that important tasks are completed on time.
Reduced Stress: Prioritizing tasks can reduce the feeling of being overwhelmed by too many things to do.
Enhanced Productivity: By focusing on important tasks and minimizing distractions, you can increase your overall productivity.
The Eisenhower Matrix is a practical tool that helps you make better decisions about how to spend your time, leading to improved efficiency and effectiveness in both your professional and personal life.
When hosting Windows 2022 in a virtual environment and you would like to resize a disk. That is quite difficult now because of a recovery partition that is added by default. But I found a good write up about how to remove it and recreate it after the resize.
The integration of generative AI into software development heralds a new era of efficiency, creativity, and collaboration. ChatGPT, Blackbox.ai, and CodeSnippets.ai exemplify how AI can transform traditional development practices, offering solutions that automate mundane tasks, enhance code quality, and foster innovation. As these tools evolve, they will continue to unlock new possibilities, making software development more accessible, efficient, and enjoyable.
However, the rise of generative AI in software development also poses challenges, including the need for rigorous testing of AI-generated code, ethical considerations, and the potential for job displacement. As the industry navigates these challenges, the focus must remain on leveraging AI to augment human capabilities, ensuring that these technologies contribute positively to the development ecosystem.
In conclusion, generative AI is redefining the landscape of software development. Platforms like ChatGPT, Blackbox.ai, and CodeSnippets.ai are at the forefront of this transformation, offering tools that automate, enhance, and innovate the way we create software. As we look to the future, the potential of generative AI in software development is boundless, promising a world where developers can achieve more with less effort and greater creativity.
Blackbox.ai: Automating Software Testing and Quality Assurance
Blackbox.ai emerges as a game-changer in software testing and quality assurance. Leveraging generative AI, Blackbox.ai aims to simplify and automate the creation of test cases, making software testing faster and more efficient. It can generate comprehensive test suites based on the application’s requirements and use cases, ensuring thorough coverage and identifying potential issues early in the development cycle. This not only reduces the time and effort spent on testing but also significantly improves the quality and reliability of software products. Blackbox.ai is particularly valuable for Agile and DevOps teams, where rapid iteration and continuous integration/continuous deployment (CI/CD) practices demand quick and effective testing solutions.
CodeSnippets.ai: Enhancing Code Reuse and Collaboration
CodeSnippets.ai focuses on maximizing code reuse and facilitating collaboration among developers. It offers a platform where developers can find, share, and manage code snippets efficiently. By using generative AI, CodeSnippets.ai can suggest relevant snippets based on the developer’s current project context or coding patterns, streamlining the development process and reducing the need to write repetitive code. This not only boosts productivity but also encourages best practices and knowledge sharing within the development community. The platform’s intelligent search capabilities and personalized recommendations make it easier for developers to discover and integrate code snippets, fostering innovation and collaboration.
How to implement AI for your next project
Planning and Design: Laying the Groundwork with AI
The initial stages of software development set the foundation for the project’s success. Here, ChatGPT can be a game-changer by generating comprehensive project documentation, drafting design specifications, and suggesting architectural patterns tailored to the project’s goals. This application of AI not only accelerates the planning phase but also ensures a unified understanding of the project objectives and design across the team.
Development: Boosting Productivity with Code Snippets
As we move into the development phase, CodeSnippets.ai becomes an essential tool, that could provide your developers with a treasure trove of code snippets to reuse. This facilitates rapid coding, encourages the reuse of proven code, and minimizes the risk of bugs. Simultaneously, ChatGPT, codesnippets and Blackbox.ai can offer real-time coding assistance, simplifying complex algorithm explanations and streamlining the debugging process, which significantly enhances developer productivity and project momentum.
Testing and Quality Assurance: Ensuring Excellence with Automated Testing
In the realm of testing and quality assurance, Blackbox.ai emerges as a vital ally. Its ability to automate the creation of detailed test cases and suites guarantees comprehensive coverage and early detection of potential issues, streamlining the testing process while elevating the software’s overall quality. This automation is particularly beneficial for teams adopting Agile and DevOps methodologies, facilitating rapid iterations and high-quality outputs.
Integration and Deployment: Smoothing the Path with AI-Generated Scripts
The integration and deployment stages benefit immensely from generative AI through the creation of scripts for continuous integration (CI) and continuous deployment (CD). ChatGPT’s capacity to generate these scripts ensures that code changes are efficiently tested and deployed, aligning perfectly with Agile and DevOps practices for faster and more reliable software releases.
Maintenance and Updates: Continuous Improvement through AI
Lastly, in the maintenance and update phases, generative AI tools shine by identifying optimization or refactoring opportunities. All three options will assist you in making your code more efficient finding bugs faster and facilitating a cycle of continuous improvement and keeping the software robust and up-to-date with the latest practices.
Best Practices for Integrating Generative AI
To effectively integrate generative AI into the software development cycle, it’s crucial to:
Start Small: Introduce AI tools into smaller, non-critical tasks to gauge their impact and refine your approach.
Educate Your Team: Ensure your team is well-versed in the capabilities and limitations of the AI tools to maximize their potential.
Iterate and Adapt: Use feedback from each phase to tweak and optimize the use of AI tools in your workflow.
By incorporating generative AI tools into the software development cycle, teams can not only streamline their workflows but also unlock new levels of creativity and innovation. As these tools continue to evolve, they promise to further revolutionize the field of software development, making it more efficient, enjoyable, and boundless in its potential.
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duration
Description
cookielawinfo-checbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.