Category: Uncategorized

  • Graphics Goals

    I may not have time to work on my programming until I’m moved but I come up with quick ideas all the time. I’m thinking of using languages such as Java and C# to write conversion programs for my image formats. I have basic experience with Java and have read much about C#. These languages already have support for popular image formats like PNG and JPEG as part of their standard libraries. They could be used as a quick method of having a conversion program that people could use until I learn more C tricks to enable me to convert between my BBM, BGM, and BPM formats.

    Though I’m not sure if anyone actually cares enough about the image formats I’m creating. But even if not, it’s a great way to learn more programming.

    That’s because graphics programming is a little bit different than writing text based utilities or video games. It requires enough understanding of a language to know how to read and write files and to seek to specific offsets to get and set the various variables needed to read, write, or display an image.

    What all graphics files seem to have in common is the width, height, and bits per pixel. In addition to this they may differ slightly in what bits and bytes represent. They may be Red, Green, and Blue(RGB) in that order or they could have the primary colors arranged in some other order such as BGR or GBR.

    And monochrome images may have zero represent black and one represent white, or they may have it just the opposite. Interestingly the BMP and TIFF formats can do either.

    I’ve got so much knowledge about computer graphics in my head that I could easily give a speech on the pros and cons of the most popular formats used on the internet today and which types of compression they allow.

  • Perfectionism

    Perfectionism

    One of my biggest flaws is that I’m a perfectionist. I always try to do things right and get heartbroken when I inevitable fail.

    The benefit is that whatever I do I try a lot harder than other people. I have greater motivation than other people and it’s terribly obvious in all things. Whether at work, playing video games, computer programming, or considering important life decisions, I want everything to be the best.

    And people can argue forever about the concept of perfect and whether it even exists, but I personally think it does. It only makes sense in the context of a certain goal which must be achieved.

    If there is a task that must be done or that you want to do, then you do it, then perfection is achieved.

    However there is a dangerous trap that I fall into. Comparing myself to others who can do something faster than me or who can achieve things that I currently cannot.

    And many times I have made this mistake. Comparing myself to coworkers, other programmers, other vegan activists, and also humans both men and women but in different ways.

    And what people don’t realize is that I’m incredibly self aware. Only I know my thoughts and feelings about things. But what I’ve learned is that comparing myself to others is a great flaw in itself that does not actually help me achieve things but only makes me feel bad.

    So if you ever see me comparing myself to other people, kindly remind me of what I have said here. I don’t wish to spend my life worrying about whether I’m as good as someone else. It’s irrelevant because I will never be them, I can only be myself.

  • BBM update

    Recently I created a project on sourceforge about my Binary Bit Map library. My project includes several goals.

    0. Create my own image format.
    1. Create useful functions to allow me to draw pixels and basic patterns to my images.
    2. Write a conversion tool that non programmers could still use that converts between my format and others.

    As far as goal 0, I did previously create my own image format and even wrote a very large text file detailing it. However I ran into some problems.

    First, I tried to save space by not adding any padding at the end of a row of pixels. This meant that my files were smaller than other uncompressed formats but the space saving was such a small difference that it added tons of complexity for saving a few bytes. It wasn’t worth writing a totally different function. I may consider changing this.

    As far as goal 1, I already have many good functions I’ve written and have the means to draw pixels anywhere and save the arrays to several popular image formats. However I’m lacking a few things. I don’t yet have a way to drawn text, lines, or polygons on them. Previously I did so using SDL or Allegro but I really don’t want my code to depend on the overly complicated libraries that change and are not easy to install and set up. It defeats the purpose of trying to write my own graphics library.

    And for goal 2, there is much work to be done before I can consider my own format to be final and write viewers or converters for it. However it occurred to me that when that time comes, I could try writing them using other libraries or even other programming languages. It may be the subject of a book.

    I also created a logo for my project. It’s not fancy but it gets the point across of what it’s about.

    BBM_logo
    My focus has been on monochrome Bitmaps because of their simplicity and beauty. Some images fit into my project well and others don’t. It’s an art form of itself trying to see what can be created in the limitations of black and white.

    Here is the animated version.

    BBM_logo_roll_left

  • Hypocrite

    To the people who are considering going vegan to reduce the destruction of the Amazon forest, don’t bother because that’s just going into it with a selfish mindset. Only when humans become concerned about what happens to them because of climate change and environmental issues do they take action.

    If you didn’t care about the billions of animals artificially bred just to spend their lives in crowded prisons before being killed because you don’t bother to eat plants like the horses, gorillas, and elephants having been doing, don’t pretend to care about the destruction of all life on the planet.

    Sooner or later it will happen. Yeah the trees will be destroyed and we’ll run out of oxygen or perhaps the bees will go extinct and most crops that depend on them will disappear too. At the rate humans are destroying and polluting things, I highly doubt that even if all the humans magically all changed and did everything right, it’s probably too late to reverse the damage. We’ve already gone too far and there are too many humans all playing their part in the destruction.

    And hey I’m not here to pretend that vegans don’t also damage the environment in certain ways. I personally do the best I can to avoid damage. Aside from not buying animal products, I also use reusable bags and I am moving to independence so that I don’t even have to rely on cars from Uber and Lyft. But even I have to pee and poop and it all goes who knows where. We all produce waste and we are all forced through taxation to pay for things our governments decide to do which further pollute or cause the deaths of plants and animals. Vegans do the best we can but nobody can cause zero harm. The point never was perfection. We just do the best we can and improve as we learn more.

    No, the point of veganism was to do the best that we can to avoid causing the unnecessary pain or death of the animals that are obviously suffering similarly to how we would if we were in their place. And yes we should care about the ecosystem as a whole and the plants that are required for all animals to live.

    I try to make this point clear but I KNOW I am not a good communicator. There are others much better than I and I know some of them can be more helpful for those of you who are transitioning to veganism.

    All I ask is that you do your own searching on google,amazon, or whatever other method you prefer to learn why people go vegan. Don’t take my word for it, because honestly I don’t want to explain it. I want to go on to other things and enjoy my short life, however long it may be before either I die or we all die together after the world is destroyed.

    And I can tell you, although I have little time to say much of anything, I will continue to promote veganism in my own way. Not because I’m any good at it but because I’m apparently the only one in this whole damn town who cares enough. My online Vegan friends are the only people I trust anymore.

    But the rest of the people just accuse me of being preachy, annoying, judgemental, or elitist. And I want to put these rumors to rest, they are true.

    Yes at times I am all these things. But today I’ll tell you that I am ok with that because the alternative is to be a liar. I cannot pretend to be one of those people who kisses your ass and tells you that I fully accept your actions. Do I accept you as a person? Yes. Do I accept your actions which are harmful? No. Learn the difference.

    If you followed me for a good length of time you’ll know that I do my best to follow the Golden rule and treat others the way I want to be treated.

    And when I tell you that you are a hypocrite for grieving over the death of other humans or your pet dogs or cats while you stuff murdered cow, pig, and chicken into your face, I’m only telling you what someone once told me.

    They told me I was a hypocrite because I was against abortion unless I was also vegan. And they were right. I couldn’t argue against that one nor could I find a reason to say it’s ok to kill one type of animal but not another. That person changed my life and set off a chain of events that forced me to rethink my entire life and ethics.

    I became Vegan and also rejected the immoral religion of Christianity in which people are cruel but believe themselves good people because they have the right beliefs based on ancient books. These steps also helped me think clearly and realize my identity as an asexual transgender woman, which affects me in minor ways but is not important when compared to the ethical standards of why I am vegan.

    I came to see that we are all of equal value. The color of our skin, our genitals, or our species have nothing to do with the value of our lives. We should not discriminate because someone looks different and decide to kill them. Racism, sexism, and speciesism must end. I reject them because they are all the same thing.

    And if I offend you with something I said, then I hope it leads you on a similar journey to improve. So go home and rethink your life, hypocrite.

  • WBMP

    “6.3 Header Data Structure 6.3.1 Multi-byte Integer format The WBMP image encoding uses a multi-byte representation for integer values. A multi-byte integer consists of a series of octets, where the most significant bit is the continuation flag, and the remaining seven bits are a scalar value. The continuation flag is used to indicate that an octet is not the end of the multi-byte sequence. A single integer value is encoded into a sequence of N octets. The first N-1 octets have the continuation flag set to a value of one (1). The final octet in the series has a continuation flag value of zero. The remaining seven bits in each octet are encoded in a big-endian order, ie, most significant bit first. The octets are arranged in a big-endian order, ie, the most significant seven bits are transmitted first. In the situation where the initial octet has less than seven bits of value, all unused bits must be set to zero (0). For example, the integer value 0xA0 would be encoded with the two-byte sequence 0x81 0x20. The integer value 0x60 would be encoded with the one-byte sequence 0x60.”

    Example:

    Hex A0

    Bin 10100000

    Hex 81 20

    Flags and seven bit groups

    1 0000001

    0 0100000

    The two groups of seven bits

    0000001 0100000

    The lower eight bits of that fourteen bit group.

    10100000

    Which in fact is the original binary!

    The quote above is from the documentation about an old monochrome image format known as WBMP. It is used in many older cell phones.

    With a full understanding of this format I could even write it with my own C code.

    The pixel data itself is stored the exact same way that PBM files have except that in this case bits of 0 are black and bits of 1 are white. I already have code that does this that I use for the BMP and TIFF formats.

    The multibyte integer format is only required in the header. It seems that it’s an escape from having to decide how many bytes must be used to represent the width and height.