Category Archives: Week-2

AHK as a Developer Tool

AutoHotKey Scripting Software

AutoHotkey (AHK) is a powerful and versatile free, open source software and scripting language for Windows operating systems exclusively. It provides an environment where users can create custom scripts to automate repetitive and/or menial tasks, create custom GUI’s, manipulate windows, files and applications, and create custom hotkeys, macros, and key-rebinds. Users can quickly create and tailor scripts toward specific tasks they face to significantly improve their overall efficiency and minimize errors. In essence, AHK can be used to automate and otherwise enhance users’ ability to perform software development and other processes from start to finish.

Upon downloading AHK, the main Dashboard GUI has several useful features to help users get started and in general as they create scripts, including a compiler, link to Help Files, Settings, and a Window Spy tool to extract application window data. Using Window Spy, users can easily identify and access a window’s “ahk id” to hook into and directly input to that window using AHK methods, such as ControlClick, which sends mouse inputs to a given client at a specified x-y mouse coordinate. Conveniently, the Window Spy tool also provides functionality to easily identify the on-screen/client x-y coordinates of a given mouse position. There are similar functions for directly inputting strings (rather than clicks).

One of the most intriguing features of AHK which led me to pursue learning it on a deeper level is its capacity to directly interact with application client windows and any separate application GUI’s (including mouse and key inputs, minimizing/maximizing, setting window focus, and more) without focusing on them and interrupting other active processes. This is extremely beneficial for testing, data collection/recording and more – for example testing may be run in the background with the results recorded to an output file whilst the user is actively working on other tasks independently. Furthermore, AHK scripts can easily be set to repeat at a specified time period; the previously mentioned background testing/recording can be called upon to execute every X minutes with zero input from the user or interference on their tasks. Increased convenience and efficiency with less human error or interaction!

Some other functions in AHK which I have read or seen videos about and hope to start implementing soon include PixelSearch and ImageSearch. PixelSearch is a versatile tool of the form: 

PixelSearch, &OutputVarX, &OutputVarY, X1, Y1, X2, Y2, ColorID , Variation

Searching for a specified hexadecimal ColorID within the specified screen space and returning output variables containing the coordinates of the first found pixel of that color. The outputs can easily then be used in other functions, and this method synergizes well with other tools that may identify certain occurrences with a color highlight or other marker. The ImageSearch function works similarly, but takes an Image input (easily generated with the Window Spy tool) and searches for an occurrence of the input within the search coordinate range. An interesting component of both PixelSearch and ImageSearch is the Variation parameter visible above near the end of the PixelSearch skeleton. This variable allows variance in the color/image which is being searched for to increase the likelihood of finding the target even if minor screen/image shifts have occurred, which can be common depending on the application or instance.

There are countless other features and functions in AHK which I have not yet gotten a chance to learn about. If you or a friend/colleague have experience with AHK functions, feel free to reach out with questions/discussion/advice to my email at jelbirt@worcester.edu !

Information/Source Links:

Post discussing use of AHK for coding: https://python.plainenglish.io/coding-faster-with-autohotkey-453a2face9af
AHK Home site: https://www.autohotkey.com/
AHK Method Documentation –
ControlSend: https://www.autohotkey.com/docs/v2/lib/ControlSend.htm
ControlClick: https://www.autohotkey.com/docs/v2/lib/ControlClick.htm
PixelSearch: https://www.autohotkey.com/docs/v2/lib/PixelSearch.htm
ImageSearch: https://www.autohotkey.com/docs/v2/lib/ImageSearch.htm

From the blog CS@Worcester – Tech. Worth Talking About by jelbirt and used with permission of the author. All other rights reserved by the author.

Cs-348, Cs @ Worcester Week 2

Normal 0 false false false EN-US X-NONE X-NONE

 

The contents that I have been learning in week 2 are git, GitHub and FOSS communities. First, we focused on FOSS communities, git and GitHub work together to allow this communities to share their work. We also have focus on working in your local repository using branches and commits and then upstreaming your changes using a pull request. Then we learned how to keep the local and origin repositories synchronized with the project’s upstream repo.

I found this blog giving the general definition about the upstream which relates to a content that I have learned in CS-348 class this week.

URL:
https://www.redhat.com/en/blog/what-open-source-upstream

In this blog, they talk about what an upstream is, how it relates to enterprise open-source products, and how they matter to your organization.

What is an upstream?
Upstream refers to the flow of data within information technology, particularly
in open-source projects. It serves as the precursor to other projects and
products, with contributions flowing from upstream to downstream. Users may
receive releases or code directly from the upstream. So, why are upstreams
important?
They are important because that’s where the source contribution comes from.
Each upstream is unique, but generally the upstream is where decisions are
made, the contribution happens, and where the community for a project comes
together to collaborate for the benefit of all parties. Work done at the
upstream might flow out to many other open source projects. The upstream is the
focal point where collaborators do the work. It is so much better if all the
contributors work together.

 

From the blog CS@Worcester – Hong Huynh-CS348-WSU by hhuynh3 and used with permission of the author. All other rights reserved by the author.

week-2 from the book

 Hello, a blog for the second week; it seems nice and claims a little bit. I’m starting to read chapter 2 for apprenticeship patterns. While reading, I found one of the helpful patterns was “Record What You Learn.” It is nice to look back at the progress from the start and end with some struggles for learning something every day to help keep track of things that progress to improve at working efficiently. There is another pattern I would like to disagree with my opinions is “Reflect as You Work”; because it made me have doubts like “why didn’t I do this earlier or how couldn’t I think of it.” regardless, it is nice to see what you have to learn, and done for this to work.

Has the practice caused you to change how you think about your intended profession or how you think you will work?

For developers of these practices, it helps for using the patterns from this book can have several benefits. One of the benefits was to advance their understanding and proficiency in software engineering, and lifelong learning helps keep up to date on software engineering trends and technologies. It was even helping to gain more self-assurance in their skills by offering developers a collection of best practices and productivity-boosting strategies.

Those who want to become experts in software development can prepare to devote themselves to continuous learning and practice because the industry is challenged and undergoing rapid change. In this process, focused practice and reflection are both essential steps. Reflection entails taking time to pause and think about one’s knowledge and practice, evaluating what one already knows and what one may do to improve on a crucial stage in acquiring mastery since it enables the person to assess their abilities and pinpoint areas for development.

Purposeful practice and reflection lay the groundwork for domination in software development since they both emphasize enhancing knowledge and skills over time. On the other hand, deliberate practice is setting aside time to practice and hone abilities, gradually increasing over time. To attain mastery, one must engage in this kind of exercise since it makes the person pay attention to their areas of weakness and invest the time to strengthen them.

From the blog Andrew Lam’s little blog by Andrew Lam and used with permission of the author. All other rights reserved by the author.

week-2 from the book

 Hello, a blog for the second week; it seems nice and claims a little bit. I’m starting to read chapter 2 for apprenticeship patterns. While reading, I found one of the helpful patterns was “Record What You Learn.” It is nice to look back at the progress from the start and end with some struggles for learning something every day to help keep track of things that progress to improve at working efficiently. There is another pattern I would like to disagree with my opinions is “Reflect as You Work”; because it made me have doubts like “why didn’t I do this earlier or how couldn’t I think of it.” regardless, it is nice to see what you have to learn, and done for this to work.

Has the practice caused you to change how you think about your intended profession or how you think you will work?

For developers of these practices, it helps for using the patterns from this book can have several benefits. One of the benefits was to advance their understanding and proficiency in software engineering, and lifelong learning helps keep up to date on software engineering trends and technologies. It was even helping to gain more self-assurance in their skills by offering developers a collection of best practices and productivity-boosting strategies.

Those who want to become experts in software development can prepare to devote themselves to continuous learning and practice because the industry is challenged and undergoing rapid change. In this process, focused practice and reflection are both essential steps. Reflection entails taking time to pause and think about one’s knowledge and practice, evaluating what one already knows and what one may do to improve on a crucial stage in acquiring mastery since it enables the person to assess their abilities and pinpoint areas for development.

Purposeful practice and reflection lay the groundwork for domination in software development since they both emphasize enhancing knowledge and skills over time. On the other hand, deliberate practice is setting aside time to practice and hone abilities, gradually increasing over time. To attain mastery, one must engage in this kind of exercise since it makes the person pay attention to their areas of weakness and invest the time to strengthen them.

From the blog Andrew Lam’s little blog by Andrew Lam and used with permission of the author. All other rights reserved by the author.

week-2 from the book

 Hello, a blog for the second week; it seems nice and claims a little bit. I’m starting to read chapter 2 for apprenticeship patterns. While reading, I found one of the helpful patterns was “Record What You Learn.” It is nice to look back at the progress from the start and end with some struggles for learning something every day to help keep track of things that progress to improve at working efficiently. There is another pattern I would like to disagree with my opinions is “Reflect as You Work”; because it made me have doubts like “why didn’t I do this earlier or how couldn’t I think of it.” regardless, it is nice to see what you have to learn, and done for this to work.

Has the practice caused you to change how you think about your intended profession or how you think you will work?

For developers of these practices, it helps for using the patterns from this book can have several benefits. One of the benefits was to advance their understanding and proficiency in software engineering, and lifelong learning helps keep up to date on software engineering trends and technologies. It was even helping to gain more self-assurance in their skills by offering developers a collection of best practices and productivity-boosting strategies.

Those who want to become experts in software development can prepare to devote themselves to continuous learning and practice because the industry is challenged and undergoing rapid change. In this process, focused practice and reflection are both essential steps. Reflection entails taking time to pause and think about one’s knowledge and practice, evaluating what one already knows and what one may do to improve on a crucial stage in acquiring mastery since it enables the person to assess their abilities and pinpoint areas for development.

Purposeful practice and reflection lay the groundwork for domination in software development since they both emphasize enhancing knowledge and skills over time. On the other hand, deliberate practice is setting aside time to practice and hone abilities, gradually increasing over time. To attain mastery, one must engage in this kind of exercise since it makes the person pay attention to their areas of weakness and invest the time to strengthen them.

From the blog Andrew Lam’s little blog by Andrew Lam and used with permission of the author. All other rights reserved by the author.

week-2 from the book

 Hello, a blog for the second week; it seems nice and claims a little bit. I’m starting to read chapter 2 for apprenticeship patterns. While reading, I found one of the helpful patterns was “Record What You Learn.” It is nice to look back at the progress from the start and end with some struggles for learning something every day to help keep track of things that progress to improve at working efficiently. There is another pattern I would like to disagree with my opinions is “Reflect as You Work”; because it made me have doubts like “why didn’t I do this earlier or how couldn’t I think of it.” regardless, it is nice to see what you have to learn, and done for this to work.

Has the practice caused you to change how you think about your intended profession or how you think you will work?

For developers of these practices, it helps for using the patterns from this book can have several benefits. One of the benefits was to advance their understanding and proficiency in software engineering, and lifelong learning helps keep up to date on software engineering trends and technologies. It was even helping to gain more self-assurance in their skills by offering developers a collection of best practices and productivity-boosting strategies.

Those who want to become experts in software development can prepare to devote themselves to continuous learning and practice because the industry is challenged and undergoing rapid change. In this process, focused practice and reflection are both essential steps. Reflection entails taking time to pause and think about one’s knowledge and practice, evaluating what one already knows and what one may do to improve on a crucial stage in acquiring mastery since it enables the person to assess their abilities and pinpoint areas for development.

Purposeful practice and reflection lay the groundwork for domination in software development since they both emphasize enhancing knowledge and skills over time. On the other hand, deliberate practice is setting aside time to practice and hone abilities, gradually increasing over time. To attain mastery, one must engage in this kind of exercise since it makes the person pay attention to their areas of weakness and invest the time to strengthen them.

From the blog Andrew Lam’s little blog by Andrew Lam and used with permission of the author. All other rights reserved by the author.

week-2 from the book

 Hello, a blog for the second week; it seems nice and claims a little bit. I’m starting to read chapter 2 for apprenticeship patterns. While reading, I found one of the helpful patterns was “Record What You Learn.” It is nice to look back at the progress from the start and end with some struggles for learning something every day to help keep track of things that progress to improve at working efficiently. There is another pattern I would like to disagree with my opinions is “Reflect as You Work”; because it made me have doubts like “why didn’t I do this earlier or how couldn’t I think of it.” regardless, it is nice to see what you have to learn, and done for this to work.

Has the practice caused you to change how you think about your intended profession or how you think you will work?

For developers of these practices, it helps for using the patterns from this book can have several benefits. One of the benefits was to advance their understanding and proficiency in software engineering, and lifelong learning helps keep up to date on software engineering trends and technologies. It was even helping to gain more self-assurance in their skills by offering developers a collection of best practices and productivity-boosting strategies.

Those who want to become experts in software development can prepare to devote themselves to continuous learning and practice because the industry is challenged and undergoing rapid change. In this process, focused practice and reflection are both essential steps. Reflection entails taking time to pause and think about one’s knowledge and practice, evaluating what one already knows and what one may do to improve on a crucial stage in acquiring mastery since it enables the person to assess their abilities and pinpoint areas for development.

Purposeful practice and reflection lay the groundwork for domination in software development since they both emphasize enhancing knowledge and skills over time. On the other hand, deliberate practice is setting aside time to practice and hone abilities, gradually increasing over time. To attain mastery, one must engage in this kind of exercise since it makes the person pay attention to their areas of weakness and invest the time to strengthen them.

From the blog Andrew Lam’s little blog by Andrew Lam and used with permission of the author. All other rights reserved by the author.

week-2 from the book

 Hello, a blog for the second week; it seems nice and claims a little bit. I’m starting to read chapter 2 for apprenticeship patterns. While reading, I found one of the helpful patterns was “Record What You Learn.” It is nice to look back at the progress from the start and end with some struggles for learning something every day to help keep track of things that progress to improve at working efficiently. There is another pattern I would like to disagree with my opinions is “Reflect as You Work”; because it made me have doubts like “why didn’t I do this earlier or how couldn’t I think of it.” regardless, it is nice to see what you have to learn, and done for this to work.

Has the practice caused you to change how you think about your intended profession or how you think you will work?

For developers of these practices, it helps for using the patterns from this book can have several benefits. One of the benefits was to advance their understanding and proficiency in software engineering, and lifelong learning helps keep up to date on software engineering trends and technologies. It was even helping to gain more self-assurance in their skills by offering developers a collection of best practices and productivity-boosting strategies.

Those who want to become experts in software development can prepare to devote themselves to continuous learning and practice because the industry is challenged and undergoing rapid change. In this process, focused practice and reflection are both essential steps. Reflection entails taking time to pause and think about one’s knowledge and practice, evaluating what one already knows and what one may do to improve on a crucial stage in acquiring mastery since it enables the person to assess their abilities and pinpoint areas for development.

Purposeful practice and reflection lay the groundwork for domination in software development since they both emphasize enhancing knowledge and skills over time. On the other hand, deliberate practice is setting aside time to practice and hone abilities, gradually increasing over time. To attain mastery, one must engage in this kind of exercise since it makes the person pay attention to their areas of weakness and invest the time to strengthen them.

From the blog Andrew Lam’s little blog by Andrew Lam and used with permission of the author. All other rights reserved by the author.

week-2 from the book

 Hello, a blog for the second week; it seems nice and claims a little bit. I’m starting to read chapter 2 for apprenticeship patterns. While reading, I found one of the helpful patterns was “Record What You Learn.” It is nice to look back at the progress from the start and end with some struggles for learning something every day to help keep track of things that progress to improve at working efficiently. There is another pattern I would like to disagree with my opinions is “Reflect as You Work”; because it made me have doubts like “why didn’t I do this earlier or how couldn’t I think of it.” regardless, it is nice to see what you have to learn, and done for this to work.

Has the practice caused you to change how you think about your intended profession or how you think you will work?

For developers of these practices, it helps for using the patterns from this book can have several benefits. One of the benefits was to advance their understanding and proficiency in software engineering, and lifelong learning helps keep up to date on software engineering trends and technologies. It was even helping to gain more self-assurance in their skills by offering developers a collection of best practices and productivity-boosting strategies.

Those who want to become experts in software development can prepare to devote themselves to continuous learning and practice because the industry is challenged and undergoing rapid change. In this process, focused practice and reflection are both essential steps. Reflection entails taking time to pause and think about one’s knowledge and practice, evaluating what one already knows and what one may do to improve on a crucial stage in acquiring mastery since it enables the person to assess their abilities and pinpoint areas for development.

Purposeful practice and reflection lay the groundwork for domination in software development since they both emphasize enhancing knowledge and skills over time. On the other hand, deliberate practice is setting aside time to practice and hone abilities, gradually increasing over time. To attain mastery, one must engage in this kind of exercise since it makes the person pay attention to their areas of weakness and invest the time to strengthen them.

From the blog Andrew Lam’s little blog by Andrew Lam and used with permission of the author. All other rights reserved by the author.

week-2 from the book

 Hello, a blog for the second week; it seems nice and claims a little bit. I’m starting to read chapter 2 for apprenticeship patterns. While reading, I found one of the helpful patterns was “Record What You Learn.” It is nice to look back at the progress from the start and end with some struggles for learning something every day to help keep track of things that progress to improve at working efficiently. There is another pattern I would like to disagree with my opinions is “Reflect as You Work”; because it made me have doubts like “why didn’t I do this earlier or how couldn’t I think of it.” regardless, it is nice to see what you have to learn, and done for this to work.

Has the practice caused you to change how you think about your intended profession or how you think you will work?

For developers of these practices, it helps for using the patterns from this book can have several benefits. One of the benefits was to advance their understanding and proficiency in software engineering, and lifelong learning helps keep up to date on software engineering trends and technologies. It was even helping to gain more self-assurance in their skills by offering developers a collection of best practices and productivity-boosting strategies.

Those who want to become experts in software development can prepare to devote themselves to continuous learning and practice because the industry is challenged and undergoing rapid change. In this process, focused practice and reflection are both essential steps. Reflection entails taking time to pause and think about one’s knowledge and practice, evaluating what one already knows and what one may do to improve on a crucial stage in acquiring mastery since it enables the person to assess their abilities and pinpoint areas for development.

Purposeful practice and reflection lay the groundwork for domination in software development since they both emphasize enhancing knowledge and skills over time. On the other hand, deliberate practice is setting aside time to practice and hone abilities, gradually increasing over time. To attain mastery, one must engage in this kind of exercise since it makes the person pay attention to their areas of weakness and invest the time to strengthen them.

From the blog Andrew Lam’s little blog by Andrew Lam and used with permission of the author. All other rights reserved by the author.